Форум программистов, компьютерный форум CyberForum.ru

Простенькая БД на С++ - C++

Восстановить пароль Регистрация
 
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
20.06.2011, 17:29     Простенькая БД на С++ #1
Здраствуйте,нужно было написать простую БД
В меню 4 пункта,допустим выбираем пункт 2 " 2. Udalenie " << endl;,обращаемся к функции... вот вопрос ,как функцию описать и куда?

Вот,что написал

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
 
 using namespace std;
 
 int main ()     {
     char e,t; // создаём символы
        
     do {
                         
            system ("cls");
cout << "     *************   Menu    *************** " << endl << endl<< endl;
  
  cout << "_____________________________" << endl;
  cout <<  " 1. Sozdanie " <<   endl ;
    cout <<   " 2. Udalenie "  << endl;
      cout << " 3 .Redaktirovanie " <<endl;
        cout << " 4 .Peremeshenie" << endl;
        
        cout << "__________________________" << endl<< endl<< endl<< endl<< endl;
        cout <<" " << endl<< endl<< endl<< endl<< endl<< endl<< endl;
cin>> e;
 
 
 switch (e)
 {
      case '1' :
       
       
        cout << "Sozdayu fail..."<< endl ;
  
         system ("cls");
               cout << "fail sozdan" << endl;
 break;
 
          case '2' :
    cout << "Udalayu fail..." << endl;
    
       system ("cls");
    cout << "fail udalen" << endl;
 break;
 
  
               case '3' :
    cout << "Redaktiruyu fail..." << endl;
    
       system ("cls");
    cout << "Redaktirovanie Zaversheno" << endl;
 break;
 
  
                    case '4' :
    cout << "Peremeshayu fail..." << endl;
   
      system ("cls");
    cout << "Peremeshenie  Zaversheno" << endl;
 break;
 
 default : // остальные символы
     system ("cls");
    cout << "takogo punkta ne sushestvuet..." << endl;
   
 }
cout << " Prodolzit (y/n)" ;
 cin>>t ;
 
}while (t== 'y') ;
 
cout << "Konec";
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2011, 17:29     Простенькая БД на С++
Посмотрите здесь:

C++ Простенькая задачка
Вроде простенькая C++
Простенькая задача C++
Простенькая Задачка C++
простенькая задача C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
23.06.2011, 05:41  [ТС]     Простенькая БД на С++ #2
подскажите пожалуйста
zaxi
2 / 2 / 0
Регистрация: 18.01.2010
Сообщений: 23
23.06.2011, 09:30     Простенькая БД на С++ #3
ну мы при похожих заданиях описывали функции в глобалке, до main, а в меню потом их просто вызываешь с нужными аргументами. а так по коду понять что-то не реально. БД через список надо делать или через простой массив?
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
23.06.2011, 09:44  [ТС]     Простенькая БД на С++ #4
через список...можете выложить ваш вариант...мне нужна любая программа,не обязательно как я написал
zaxi
2 / 2 / 0
Регистрация: 18.01.2010
Сообщений: 23
23.06.2011, 10:02     Простенькая БД на С++ #5
есть без записи в файл и удаления, но вообще это делается так же, как с масивом - из оперативной памяти запись списка в файл и обратно при необходимости. лучше делать две функции - загрузка в файл и выгрузка. редактирование - найти нужный элемент по люболму полю, а потом последовательно переписать записи

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
#include "stdafx.h"
#include <string.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<malloc.h>
#include<conio.h>
struct avto
{char name[10];
char fam[10];
int num;
struct avto *next,*prev;};
struct avto *first,*cut,*temp,*p1,*p2,*p3,*p4,*p5, *lst,*p;
 
void Insert( )
{
system("cls");
 if ((temp=(struct avto*)malloc(sizeof(struct avto)))==NULL)exit(1);
 printf("Enter name: ");
 gets((*temp).name);
 printf("Enter surname: ");
 gets((*temp).fam);
 printf("Enter the number of car: ");
 scanf("%d",&(*temp).num);
 if (first==NULL)
  {
   (*temp).next=NULL;
   (*temp).prev=NULL;
   first=temp;
   cut=temp;
  }
  else
   {
    (*temp).next=NULL;
    (*temp).prev=cut;
    (*cut).next=temp;
    cut=temp;
   }
 system("cls");
}
void Delete (int key)
{system("cls");
struct avto  *p, *q, *r, *h;
 char fcon[10];
void clrscr();
 if (first==NULL) printf("The list is empty\n");
 else
 {
 
 h=first;
        while (h!=NULL)
        {
            p=h;
            if ((*p).num==key)
            {
                if((p->prev!=NULL)&&(p->next!=NULL))
                {
                    q=p->prev;
                    r=p->next;
                    q->next=r;
                    r->prev=q;
                    free(p);
                }
                if ((p->prev==NULL)&&(p->next!=NULL))
                {
                    q=p->next;
                    q->prev=NULL;
                    free(p);
                    first=q;
                }
 
                if((p->next==NULL)&&(p->prev!=NULL))
                {
                    q=p->prev;
                    q->next=NULL;
                    free(p);
                }
                break;
            }
            h=h->next;
        }
 
}
}
void Searsh()
{char s[15]; 
int key;
int key1;
system("cls");
void clrscr();
if (first==NULL) printf("The list is empty");
else
{printf("Enter the number of machines: ");
scanf("%d", &key1);
temp=first;
while(temp!=NULL)
    {
        if ((*temp).num==key1)
        {
             printf("\n|----------------------------|\n");
             printf("| Name     | Surname | Number|");
             printf("\n|----------------------------|");
             printf("\n|%10s|%9s|%-7d|",(*temp).name,(*temp).fam,(*temp).num);
             printf("\n|----------------------------|");
             temp=(*temp).next;
        }
        else temp=(*temp).next;
    }
printf("\nDelete? 1 - Yes or 2 - No: ");
scanf("%d",&key);
getchar();
switch(key)
    {
    case    1: Delete(key1);
    case    2: system("cls");
    }
 
}
 
}
void List ( )
{system("cls");
void clrscr();
 if (first==NULL) printf("The list is empty");
  else
  {
   printf("\n|--------------------------------|\n");
   printf("| Name     | Surname | Number      |");
   printf("\n|--------------------------------|");
   temp=first;
   do
   {
    printf("\n|%10s|%9s|%-11d|",(*temp).name,(*temp).fam,(*temp).num);
    printf("\n|--------------------------------|");
    temp=(*temp).next;
   }
   while (temp!=NULL);
  }
 
 getchar();
 getchar();
 
  system("cls");
}
void sort(void)
{p=first;
system("cls");
while(p!=NULL)
    {p1=p;
    p2=p;
    while(p1!=NULL)
        {if(p1->num<p2->num)
            {p2=p1;}
        p1=p1->next;}
    if(p!=p2)
    {if(p->next==p2)
        {if(p->prev!=NULL)
            {p1=p->prev;
            p2->prev=p1;
            p1->next=p2;}
        else
            {p2->prev=NULL;
            first=p2;}
        if(p2->next!=NULL)
            {p1=p2->next;
            p->next=p1;
            p1->prev=p;}
        else
            {p->next=NULL;}
        p->prev=p2;
        p2->next=p;
        }
    else
        {p1=p->prev;
        p3=p->next;
        p4=p2->prev;
        p5=p2->next;
        if(p1!=NULL)
            {p1->next=p2;
            p2->prev=p1;}
        else
            {p2->prev=NULL;
            first=p2;}
        if(p3!=NULL)
            {p3->prev=p2;
            p2->next=p3;}
        else
            {p2->next=NULL;}
        if(p4!=NULL)
            {p4->next=p;
            p->prev=p4;}
        else
            {p->prev=NULL;}
        if(p5!=NULL)
            {p5->prev=p;
            p->next=p5;}
        else
            {p->next=NULL;}
        }
    p=p2->next;}
    else 
    {p=p->next;}
    }
 
}
void main()
{ system("chcp 1251");
 system("cls");
 char key;
 first=NULL;
 while(1)
 {
    void   clrscr();
    printf("\t\tMenu:\n1 - Add record\n");
  printf("2 - View complete list\n3 - Searsh\n4 - Sorting \n0 - Exit\n");
  printf("Your action: ");
  scanf("%d",&key);
  getchar();
   switch(key)
   {
    case 1:Insert();break;
    case 2:List();break;  
    case 3:Searsh();break;
    case 4:sort();break;
    case 0:exit(0);  
   } 
 }
system("cls");
}
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
23.06.2011, 10:09  [ТС]     Простенькая БД на С++ #6
спасибо,кажется то,что надо
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.06.2011, 10:16     Простенькая БД на С++ #7
C++
1
2
3
4
5
6
    case '2' :
        cout << "Udalayu fail..." << endl;
        system ("cls");
        delete_file();
        cout << "fail udalen" << endl;
        break;
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
23.06.2011, 10:56  [ТС]     Простенькая БД на С++ #8
Цитата Сообщение от accept Посмотреть сообщение
C++
1
2
3
4
5
6
    case '2' :
        cout << "Udalayu fail..." << endl;
        system ("cls");
        delete_file();
        cout << "fail udalen" << endl;
        break;

delete_file нужно же как - то описать вначале(((
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
23.06.2011, 10:59     Простенькая БД на С++ #9
Цитата Сообщение от Blacccatt
delete_file нужно же как - то описать вначале(((
C++
1
2
3
4
5
void delete_file()
{
    cout << "func: delete file" << endl;
    // continue
}
вообще, функция не должна ничего выводить, вывод ты пишешь для того, чтобы видеть, где происходит запуск, пока ты её не написал
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
23.06.2011, 11:19  [ТС]     Простенькая БД на С++ #10
Цитата Сообщение от zaxi Посмотреть сообщение
ну мы при похожих заданиях...

а как сделать,чтоб при выполнении всех пунктов программа сама закрывалась?

Добавлено через 10 минут
Цитата Сообщение от accept Посмотреть сообщение
C++
1
2
3
4
5
void delete_file()
{
    cout << "func: delete file" << endl;
    // continue
}
вообще, функция не должна ничего выводить, вывод ты пишешь для того, чтобы видеть, где происходит запуск, пока ты её не написал
Вот написал текст,ничего не упустил?...и ещё нужно,чтоб только при выполнении всех пунктов программа сама закрывалась

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
 
 using namespace std;
 
 void delete_file()
{
    cout << "func: delete file" << endl;
      
}
 
void create_fail(){
    
    cout << "func: create file" << endl;
}
 
void  edit_fail()
 {  cout << "func: edit file" << endl;
}
void    cut_fail ()
{   cout << "func: cut file" << endl;   
}
 
int main ()
{
 
     char e,t; // создаём символы
   
     do {
                         
            system ("cls");
cout << "     *************   Menu    *************** " << endl << endl<< endl;
  
  cout << "_____________________________" << endl;
  cout <<  " 1. Sozdanie " <<   endl ;
    cout <<   " 2. Udalenie "  << endl;
      cout << " 3 .Redaktirovanie " <<endl;
        cout << " 4 .Peremeshenie" << endl;
        
        cout << "__________________________" << endl<< endl<< endl<< endl<< endl;
        cout <<" " << endl<< endl<< endl<< endl<< endl<< endl<< endl;
cin>> e;
 
 
 switch (e)
 {
      case '1' :
       
       
        cout << "Sozdayu fail..."<< endl ;
           system ("cls");
             create_fail();
               cout << "fail sozdan" << endl;
 break;
 
          case '2' :
        cout << "Udalayu fail..." << endl;
        system ("cls");
        delete_file();
        cout << "fail udalen" << endl;
        break;
 
  
               case '3' :
    cout << "Redaktiruyu fail..." << endl;
           system ("cls");
           edit_fail();
    cout << "Redaktirovanie Zaversheno" << endl;
 break;
 
  
                    case '4' :
    cout << "Peremeshayu fail..." << endl;
      system ("cls");
         cut_fail ();
    cout << "Peremeshenie  Zaversheno" << endl;
 break;
 
 default : // остальные символы
     system ("cls");
    cout << "takogo punkta ne sushestvuet..." << endl;
   
 }
cout << " Prodolzit (y/n)" ;
 cin>>t ;
 
}while (t== 'y') ;
 
cout << "Konec";
 
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.06.2011, 02:22     Простенькая БД на С++ #11
в самом верху
C++
1
bool menu_flags[4] = { false };
изменения в цикле
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    case '1' :
        cout << "Sozdayu fail..."<< endl ;
        system ("cls");
        create_fail();
        cout << "fail sozdan" << endl;
        flags[0] = true;
        break;
 
...
 
    while (t == 'y'
        && !(menu_flags[0]
          && menu_flags[1]
          && menu_flags[2]
          && menu_flags[3]));
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
24.06.2011, 07:11  [ТС]     Простенькая БД на С++ #12
Сделал,но при выполнении любого одного пункта закрывает программу((

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
 
 using namespace std;
 
 bool flags[4] = { false };
 void delete_file()
{
    cout << "func: delete file" << endl;
    }
 
void create_fail(){
    
    cout << "func: create file" << endl;
}
 
void  edit_fail()
 {  cout << "func: edit file" << endl;
}
void    look_fail ()
{   cout << "func: look file" << endl;   
}
 
int main ()
{
              char e,t,h; // создаём символы
   
     do {
                         
            system ("cls");
cout << "     *************   Menu    *************** " << endl << endl<< endl;
  
  cout << "_____________________________" << endl;
  cout <<  " 1. Sozdanie " <<   endl ;
    cout <<   " 2. Udalenie "  << endl;
      cout << " 3 .Redaktirovanie " <<endl;
        cout << " 4 .Prosmotr" << endl;
        
        cout << "__________________________" << endl<< endl<< endl<< endl<< endl;
        cout <<" " << endl<< endl<< endl<< endl<< endl<< endl<< endl;
cin>> e;
  
 switch (e)
 {
      case '1' :
       
       
        cout << "Sozdayu fail..."<< endl ;
           system ("cls");
             create_fail();
               cout << "fail sozdan" << endl;
                flags[0] = true;
 break;
 
          case '2' :
        cout << "Udalayu fail..." << endl;
        system ("cls");
        delete_file();
        cout << "fail udalen" << endl;
         flags[1] = true;
        break;
          
               case '3' :
    cout << "Redaktiruyu fail..." << endl;
           system ("cls");
           edit_fail();
    cout << "Redaktirovanie Zaversheno" << endl;
     flags[2] = true;
 break;
 
                      case '4' :
    cout << "view fail..." << endl;
      system ("cls");
         look_fail ();
    cout << "prosmotr  Zavershen" << endl;
     flags[3] = true;
 break;
 
 default : // остальные символы
     system ("cls");
    cout << "takogo punkta ne sushestvuet..." << endl;
    }
cout << " Prodolzit (y/n)" ;
 cin>>t ;
 
}while (t== 'y'
 && !(flags[0]
          && flags[1]  && flags[2]  && flags[3] 
          ));
    cout << "Konec";    }
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.06.2011, 09:36     Простенькая БД на С++ #13
C++
1
bool flags[4] = { false };
массив флагов должен быть в main() возле e, t, h

C++
1
cout << flags[0] << flags[1] << flags[2] << flags[3] << t << endl;
напиши после cin >> t перед while
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
24.06.2011, 11:14  [ТС]     Простенькая БД на С++ #14
Спасибо!!!программа пошла

А если я захочу,чтоб программа была полноценной базой с записями и удалять их и редактировать,нужно только через структуры?
zaxi
2 / 2 / 0
Регистрация: 18.01.2010
Сообщений: 23
24.06.2011, 19:25     Простенькая БД на С++ #15
Цитата Сообщение от Blacccatt Посмотреть сообщение
а как сделать,чтоб при выполнении всех пунктов программа сама закрывалась?
Вообще есть библиотечная функция exit(0), а так можно просто при нужной команде сделать выход из цикла
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.06.2011, 05:45     Простенькая БД на С++ #16
Цитата Сообщение от Blacccatt
А если я захочу,чтоб программа была полноценной базой с записями
нужно избегать глобальных переменных
функции без аргументов подразумевают работу с глобальными переменными

C++
1
2
3
4
void delete_file(const char *fname)
{
    cout << "func: delete file" << endl;
}
в main() наверху определяешь имя файла, которое потом передаёшь в функции

Цитата Сообщение от Blacccatt
и удалять их и редактировать,нужно только через структуры?
одна запись базы данных хранится в структуре, тогда можно сделать массив структур, где каждый элемент является отдельной записью
его потом можно передавать в функции
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2011, 12:27     Простенькая БД на С++
Еще ссылки по теме:

Простенькая процедура C++
C++ простенькая задачка
Простенькая структура C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Blacccatt
0 / 0 / 0
Регистрация: 13.02.2011
Сообщений: 37
25.06.2011, 12:27  [ТС]     Простенькая БД на С++ #17
Спасиб,мужики,контрольную засчитали
Yandex
Объявления
25.06.2011, 12:27     Простенькая БД на С++
Ответ Создать тему
Опции темы

Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru