Программа на Си база данных "касса автовокзала" - C (СИ)
Формулировка задачи:
Пожалуйста помогите с программой. Нужно создать базу данных касса автовокзала. В основном меню которого должно быть: 1)расписание автобусов(номер рейса,конечный промежуточный пункты,время отправления),2)количество свободных мест на каждом рейсе,3)ведомость(она включает в себя расписание автобусов,бронирование места по фамилии и по №места),
4)предворительная продажа и возврат билетов,5)удаление(удаление рейса и фамилии из бронированных),6)поиск(поиск по фамилии,поиск ближайшего рейса до заданного пункта при наличии свободных мест,по номеру рейса,по количеству свободных мест) 7)функция бронирования мест.Должна быть обязательно написана на СИ.
Есть небольшие нароботки:
Листинг программы
- #include <stdio.h>
- #include <string.h>
- struct record
- {int n;
- int num;
- char kon;
- char nach;
- char prom;
- struct surname
- {char name[15];
- int u;}sur[50];
- char bron[15];
- char prod[15];
- char time[5];
- int free;
- }reis[20];
- int lastreis(void);
- int lastmest(void);
- int save(void);
- int raspisanie(void);
- int vedomost(void);
- int input(void);
- int redakt(void);
- int udalenie(void);
- int poisk(void);
- int nom, i,k,l,m,j;
- char pust[15];
- FILE *nach, *kon, *prom, *time, *free, *prod, *bron, *n, *num, *name;
- void main()
- {while(1)
- {clrscr();
- printf("1-ђ*бЇЁб**ЁҐ *ўв®Ўгб®ў\n");
- printf("2-‚Ґ¤®¬®бвм\n");
- printf("3-„®Ў*ў«Ґ*ЁҐ\n");
- printf("4-ђҐ¤*ЄвЁа®ў**ЁҐ ўҐ¤®¬®бвЁ\n");
- printf("5-“¤*«Ґ*ЁҐ\n");
- printf("6-Ѓ«Ё¦*©иЁ© ३б\n");
- printf("7-Џ®ЁбЄ\n");
- printf("8-‚л室\n");
- scanf("%d",&i);
- switch(i)
- {case 1:raspisanie();break;
- case 2:vedomost();break;
- case 3:input();break;
- case 4:redakt();break;
- case 5:udalenie();break;
- case 6:blizh();break;
- case 7: poisk();break;
- case 8: return;
- default: printf("ЌҐўҐа*® ўлЎа**® ¤Ґ©бвўЁҐ\n");
- }
- getch();
- }}
- lastreis()
- {for(i=20;i>=0;i--)if(reis[i].n==0)k=i;}
- lastmest()
- {for(i=50;i>=0;i--)if(reis[nom].sur[i].n==0)l=i; }
- raspisanie()
- {printf("ђ*бЇЁб**ЁҐ *ўв®Ўгб®ў\n");
- lastreis();
- i=0;
- while(i<k)
- {printf(" ђ*бЇЁб**ЁҐ *ўв®Ўгб®ў\n\n");
- printf("ЙНННЛНННННННННННЛННННННННННННННННННННЛНННННННННННННННННННЛННННННННННННННЛНННННННН»\n");
- printf("є N є*®¬Ґа ३б*є Џг*Єв ®вЇа*ў«Ґ*Ёп єЏа®¬Ґ¦гв®з*л© Їг*ЄвєЉ®*Ґз*л© Їг*Євє ‚аҐ¬п є\n");
- printf("МНННОНННННННННННОННННННННННННННННННННОНННННННННННННННННННОННННННННННННННОНННННННН№\n");
- printf("%d %d %s %s %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time);
- i++;
- }
- getch();
- }
- vedomost()
- {printf("‚Ґ¤®¬®бвм\n");
- lastreis();
- i=0;
- while(i<k)
- {printf(" ‚Ґ¤®¬®бвм\n\n");
- printf("ЙНННЛНННННННННННЛННННННННННННННННННННЛНННННННННННННННННННЛННННННННННННННЛННННННННЛННННННННННННННННННННННЛНННННННННННЛННННННННННННННН»\n");
- printf("є N є*®¬Ґа ३б*є Џг*Єв ®вЇа*ў«Ґ*Ёп єЏа®¬Ґ¦гв®з*л© Їг*ЄвєЉ®*Ґз*л© Їг*Євє ‚аҐ¬п є Љ®«-ў® бў®Ў®¤*ле ¬Ґбвє ”*¬Ё«Ёп є Ѓа®*Ёа®ў**ЁҐ є\n");
- printf("МНННОНННННННННННОННННННННННННННННННННОНННННННННННННННННННОННННННННННННННОННННННННОННННННННННННННННННННННОНННННННННННОННННННННННННННН№\n");
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- lastmest();
- nom=i;
- m=0;
- while(m<l)
- {printf("%d - %s", reis[nom].sur[m].n, reis[nom].sur[m].name);
- m++;}
- i++;
- }
- getch();}
- save()
- {lastreis();
- clrscr();
- printf("‘®еа**Ґ*®\n");
- n=fopen("C:\\TC\\n.txt","wt");
- num=fopen("C:\\TC\\num.txt","wt");
- kon=fopen("C\\TC\\kon.txt","wt");
- nach=fopen("C\\TC\\nach.txt", "wt");
- prom=fopen("C:\\TC\\prom.txt","wt");
- time=fopen("C:\\TC\\time.txt","wt");
- free=fopen("C:\\TC\\free.txt","wt");
- bron=fopen("C:\\TC\\bron.txt","wt");
- name=fopen("C:\\TC\\name.txt","wt");
- fprintf(num,"%d\n", reis[i].num);
- fprintf(kon,"%s\n", reis[i].kon);
- fprintf(nach,"%s\n", reis[i].nach);
- fprintf(prom,"%s\n", reis[i].prom);
- fprintf(time,"%d\n", reis[i].time);
- fprintf(free,"%d\n", reis[i].free);
- fprintf(bron,"%s\n", reis[i].bron);
- fprintf(prod,"%s\n", reis[i].prod);
- fprintf(name,"%s\n", reis[i].name);
- fclose(FILE *n);
- fclose(FILE *num);
- fclose(FILE *kon);
- fclose(FILE *nach, *prom, *time, *free, *bron, *name);
- getch();
- }
- input()
- {clrscr();
- lastreis();
- reis[k].n=reis[k-1].n+1; for(i=0;i<=k;i++)printf("*ҐўҐа*® §*¤** *®¬Ґа");
- METKA1:
- printf("‚ўҐ¤ЁвҐ *®¬Ґа ३б*\n");
- scanf("%d",&reis[k].num);
- if(reis[i].num==reis[k].num||reis[k].num<0){printf("ЌҐўҐа*л© *®¬Ґа ३б*\n"); goto METKA1;}
- printf("‚ўҐ¤ЁвҐ Їг*Єв ®вЇа*ў«Ґ*Ёп");
- scanf("%s",&reis[k].nach);
- printf("‚ўҐ¤ЁвҐ Їа®¬Ґ¦гв®з*л© Їг*Єв");
- scanf("%s",&reis[k].prom);
- printf("‚ўҐ¤ЁвҐ Є®*Ґз*л© Їг*Єв");
- scanf("%s",&reis[k].kon);
- METKA2:
- j=0;
- printf("‚ўҐ¤ЁвҐ ўаҐ¬п(а*§¤Ґ«пп ':')");
- scanf("%s",&reis[k].time);
- if(reis[k].time[0]!='0'&&reis[k].time[0]!='1'&&reis[k].time[0]!='2')goto METKA2;
- if(reis[k].time[0]=='0'||reis[k].time[0]=='1')
- {if(reis[k].time[1]!='0'&&reis[k].time[1]!='1'&&reis[k].time[1]!='2'&&reis[k].time[1]!='3'&&reis[k].time[1]!='4'&&reis[k].time[1]!='5'&&reis[k].time[1]!='6'&&reis[k].time[1]!='7'&&reis[k].time[1]!='8'&&reis[k].time[1]!='9')goto METKA2;}
- if(reis[k].time[0]=='2')
- {if(reis[k].time[1]!='0'&&reis[k].time[1]!='1'&&reis[k].time[1]!='2'&&reis[k].time[1]!='3')goto METKA2;}
- if(reis[k].time[2]!=':')goto METKA2;
- if(reis[k].time[3]!='0'&&reis[k].time[3]!='1'&&reis[k].time[3]!='2'&&reis[k].time[3]!='3'&&reis[k].time[3]!='4'&&reis[k].time[3]!='5')goto METKA2;
- if(reis[k].time[4]!='0'&&reis[k].time[4]!='1'&&reis[k].time[4]!='2'&&reis[k].time[4]!='3'&&reis[k].time[4]!='4'&&reis[k].time[4]!='5'&&reis[k].time[4]!='6'&&reis[k].time[4]!='7'&&reis[k].time[4]!='8'&&reis[k].time[4]!='9')goto METKA2;
- METKA3:
- printf ("‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® бў®Ў®¤*ле ¬Ґбв");
- scanf("%d",&reis[k].free);
- if(reis[k].free<0){printf("‡*¤**® *ҐўҐа*®Ґ Є®«ЁзҐбвў® бў®Ў®¤*ле ¬Ґбв\n");goto METKA3;}
- printf("Ѓа®*Ёа®ў*вм «Ё ¬Ґбв®?");
- scanf("%s",&reis[k].bron);
- nom=k;
- l=0;
- lastmest();
- reis[k].sur[l].n=reis[k].sur[l-1].n+1;}
- udalenie()
- {lastreis();
- clrscr();
- printf("vvedite nomer reisa");
- scanf("%d",&i);
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- printf("‚л ¤Ґ©б⢨⥫м*® е®вЁвҐ г¤*«Ёвм нв®в аҐ©б Ё§ бЇЁбЄ*? „*(1), ЌҐв(2)\n");
- scanf("%d",&l);
- switch(l)
- {case 1:
- for(n=i;n<k;n++)
- {strcpy(reis[n].time,pust);
- strcpy(reis[n].nach,reis[n+1].nach);
- strcpy(reis[n].prom,reis[n+1].prom);
- strcpy(reis[n].kon,reis[n+1].kon);
- strcpy(reis[n].bron,reis[n+1].bron);
- reis[n].free=reis[n+1].free;
- reis[n].num=reis[n+1].num;
- reis[n].n=reis[n+1].n;
- for(l=0;l<50;l++)
- {reis[n].sur[l].n=reis[n+1].sur[l].n;
- strcpy(reis[n].sur[l].name,reis[n+1].sur[l].name);
- }
- }
- case 2:
- return 0;
- default:
- printf("ЌҐўҐа*® гЄ*§** *®¬Ґа ¤Ґ©бвўЁп\n");
- }
- printf("“¤*«Ґ*®\n");
- getch();
- }
- poisk()
- {char str[15];
- lastreis();
- clrscr();
- printf("by:\n *®¬Ґа ३б*(1), д*¬Ё«Ёп(2),ўаҐ¬п(3),**з*«м*л© Їг*Єв(4), Їа®¬Ґ¦гв®з*л© Їг*Єв(5), Є®*Ґз*л© Їг*Єв(6), бў®Ў®¤*ле ¬Ґбв(7),Ўа®*Ёа®ў**ЁҐ(8)\n");
- scanf("%d",&l);
- switch(l)
- {case 1:
- {printf("*®¬Ґа ३б* "); scanf("%d",&m);
- for(i=0;i<k;i++)
- if(reis[i].num==m)
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- break;}
- case 2:
- {printf("”*¬Ё«Ёп: "); gets(str);
- for(i=0;i<k;i++)
- for(l=0;l<50;l++)
- if(strcmp(reis[i].sur[l].name,str)==0)
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- break; }
- case 3:
- {printf("ўаҐ¬п: "); gets(str);
- for(i=0;i<k;i++)
- if(strcmp(reis[i].time,str)==0)
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- break;}
- case 4:
- {printf("**з*«м*л© Їг*Єв: "); gets(str);
- for(i=0;i<k;i++)
- if(strcmp(reis[i].nach,str)==0)
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- break;}
- case 5:
- {printf("Їа®¬Ґ¦гв®з*л© Їг*Єв: "); gets(str);
- for(i=0;i<k;i++)
- if(strcmp(reis[i].prom,str)==0)
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- break;}
- case 6:
- {printf("Є®*Ґз*л© Їг*Єв: "); gets(str);
- for(i=0;i<k;i++)
- if(strcmp(reis[i].kon,str)==0)
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- break;}
- case 7:
- {printf("бў®Ў®¤*лҐ ¬Ґбв*: "); scanf("%d",&l);
- for(i=0;i<k;i++)
- if(reis[i].free==l)
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- break;}
- case 8:
- {printf("Ўа®*Ёа®ў**ЁҐ: "); gets(str);
- for(i=0;i<k;i++)
- if(strcmp(reis[i].bron,str)==0)
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- break;}
- case 9:
- return 0;
- default:
- printf("ЌҐўҐа*® гЄ*§** *®¬Ґа ¤Ґ©бвўЁп\n");
- }
- getch();
- }
- redakt()
- {char str[15];
- clrscr();
- printf("number reisa");
- scanf("%d",&i);
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- printf("familia(1), nach(2), kon(3), prom(4), time(5),free(6), bron(7),exit(8)\n");
- scanf("%d",&l);
- switch(l)
- {case 1:
- lastmest();
- printf("press old surname"); gets(str);
- for(j=0;j<l;j++)if(strcmp(reis[i].sur[j].name,str)==0)k=j;
- printf("press new surname\n"); gets(str);
- strcpy(reis[i].sur[j].name,pust);
- strcpy(reis[i].sur[j].name,str);
- case 2:
- printf("nach reis "); gets(str);
- strcpy(reis[i].nach,pust);
- strcpy(reis[i].nach,str);
- case 3:
- printf("prom reis"); gets(str);
- strcpy(reis[i].prom,pust);
- strcpy(reis[i].prom,str);
- case 4:
- printf("kon reis"); gets(str);
- strcpy(reis[i].kon,pust);
- strcpy(reis[i].kon,str);
- case 5:
- printf("time"); gets(str);
- strcpy(reis[i].time,pust);
- strcpy(reis[i].time,str);
- case 6:
- printf("free"); scanf("%d",&reis[i].free);
- case 7:
- printf("bron"); gets(str);
- strcpy(reis[i].bron,pust);
- strcpy(reis[i].bron,str);
- case 8:
- return 0;
- default:
- printf("ЌҐўҐа*® гЄ*§** *®¬Ґа ¤Ґ©бвўЁп\n");
- }
- printf("%d %d %s %s %s %s %d %s %s",reis[i].n, reis[i].num, reis[i].nach, reis[i].prom, reis[i].kon, reis[i].time, reis[i].free, reis[i].bron, reis[i].name);
- getch();
- }
Решение задачи: «Программа на Си база данных "касса автовокзала"»
textual
Листинг программы
- lastreis()
- {for(i=20;i>=0;i--)if(reis[i].n==0)k=i;}
Объяснение кода листинга программы
В данном коде выполняется поиск последнего элемента массива, у которого значение поля n
равно нулю.
Список действий:
- lastreis() - вызывает функцию с именем
lastreis
. - for(i=20;i>=0;i--) - начинается цикл, который выполняется от i=20 до i=0 (в обратном порядке).
- if(reis[i].n==0) - выполняется проверка, равно ли значение поля
n
у элемента массива с индексом i нулю. - k=i; - если условие выполняется, то переменной
k
присваивается значение i. В итоге, после выполнения всего цикла, в переменнойk
будет храниться индекс последнего элемента массива, у которого значение поляn
равно нулю.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д