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

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

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

Студворк — интернет-сервис помощи студентам
Здраствуйте,нужно было написать простую БД
В меню 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.06.2011, 17:29
Ответы с готовыми решениями:

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

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

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

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

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  [ТС]
спасибо,кажется то,что надо
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
23.06.2011, 10:16
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  [ТС]
Цитата Сообщение от 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
Цитата Сообщение от 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  [ТС]
Цитата Сообщение от 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
в самом верху
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  [ТС]
Сделал,но при выполнении любого одного пункта закрывает программу((

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
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  [ТС]
Спасибо!!!программа пошла

А если я захочу,чтоб программа была полноценной базой с записями и удалять их и редактировать,нужно только через структуры?
0
2 / 2 / 0
Регистрация: 18.01.2010
Сообщений: 23
24.06.2011, 19:25
Цитата Сообщение от Blacccatt Посмотреть сообщение
а как сделать,чтоб при выполнении всех пунктов программа сама закрывалась?
Вообще есть библиотечная функция exit(0), а так можно просто при нужной команде сделать выход из цикла
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
25.06.2011, 05:45
Цитата Сообщение от 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  [ТС]
Спасиб,мужики,контрольную засчитали
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.06.2011, 12:27
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru