Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 37
1

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

20.06.2011, 17:29. Показов 1777. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здраствуйте,нужно было написать простую БД
В меню 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";
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2011, 17:29
Ответы с готовыми решениями:

Простенькая БД
Нужно создать БД &quot;Аптека&quot;, которая будет включать хранение, реализацию и поставку. Очень нужно,...

Простенькая БД
Помогите пожалуйста, кому не сложно. Имеется база данных. Как бы готова она полностью. Прикрепил...

Простенькая БД
В универе дали задание сделать БД. А объяснить ничего не объяснили... Вот сейчас сижу голову...

Простенькая задача
Не могу понять в чем ошибка. &lt;html&gt; &lt;head&gt; &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot;...

16
0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 37
23.06.2011, 05:41  [ТС] 2
подскажите пожалуйста
0
2 / 2 / 0
Регистрация: 18.01.2010
Сообщений: 23
23.06.2011, 09:30 3
ну мы при похожих заданиях описывали функции в глобалке, до main, а в меню потом их просто вызываешь с нужными аргументами. а так по коду понять что-то не реально. БД через список надо делать или через простой массив?
0
0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 37
23.06.2011, 09:44  [ТС] 4
через список...можете выложить ваш вариант...мне нужна любая программа,не обязательно как я написал
0
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");
}
1
0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 37
23.06.2011, 10:09  [ТС] 6
спасибо,кажется то,что надо
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
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;
1
0 / 0 / 1
Регистрация: 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 нужно же как - то описать вначале(((
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
23.06.2011, 10:59 9
Цитата Сообщение от Blacccatt
delete_file нужно же как - то описать вначале(((
C++
1
2
3
4
5
void delete_file()
{
    cout << "func: delete file" << endl;
    // continue
}
вообще, функция не должна ничего выводить, вывод ты пишешь для того, чтобы видеть, где происходит запуск, пока ты её не написал
1
0 / 0 / 1
Регистрация: 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";
 
}
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
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]));
0
0 / 0 / 1
Регистрация: 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";    }
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
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
1
0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 37
24.06.2011, 11:14  [ТС] 14
Спасибо!!!программа пошла

А если я захочу,чтоб программа была полноценной базой с записями и удалять их и редактировать,нужно только через структуры?
0
2 / 2 / 0
Регистрация: 18.01.2010
Сообщений: 23
24.06.2011, 19:25 15
Цитата Сообщение от Blacccatt Посмотреть сообщение
а как сделать,чтоб при выполнении всех пунктов программа сама закрывалась?
Вообще есть библиотечная функция exit(0), а так можно просто при нужной команде сделать выход из цикла
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
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
и удалять их и редактировать,нужно только через структуры?
одна запись базы данных хранится в структуре, тогда можно сделать массив структур, где каждый элемент является отдельной записью
его потом можно передавать в функции
1
0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 37
25.06.2011, 12:27  [ТС] 17
Спасиб,мужики,контрольную засчитали
0
25.06.2011, 12:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2011, 12:27
Помогаю со студенческими работами здесь

Простенькая задача по JS
Я что-то не пойму, как сделать этот код еще короче? for (i=1; i&lt;=20; i++){ if ((i%3)+(i%5) ===...

Простенькая гостевая
Доброго времени суток проблемка с гостевой книгой, а именно с дублированием сообщений. &lt;?php...

Простенькая процедура
// Вторая лаба.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot;...

Простенькая Задачка
Вводятся числа a и b. Найти количество таких чисел в диапазоне , которые не принадлежат отрезку .


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru