Программа на Си база данных "касса автовокзала" - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пожалуйста помогите с программой. Нужно создать базу данных касса автовокзала. В основном меню которого должно быть: 1)расписание автобусов(номер рейса,конечный промежуточный пункты,время отправления),2)количество свободных мест на каждом рейсе,3)ведомость(она включает в себя расписание автобусов,бронирование места по фамилии и по №места), 4)предворительная продажа и возврат билетов,5)удаление(удаление рейса и фамилии из бронированных),6)поиск(поиск по фамилии,поиск ближайшего рейса до заданного пункта при наличии свободных мест,по номеру рейса,по количеству свободных мест) 7)функция бронирования мест.Должна быть обязательно написана на СИ. Есть небольшие нароботки:
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. struct record
  4. {int n;
  5. int num;
  6. char kon;
  7. char nach;
  8. char prom;
  9. struct surname
  10. {char name[15];
  11. int u;}sur[50];
  12. char bron[15];
  13. char prod[15];
  14. char time[5];
  15. int free;
  16. }reis[20];
  17. int lastreis(void);
  18. int lastmest(void);
  19. int save(void);
  20. int raspisanie(void);
  21. int vedomost(void);
  22. int input(void);
  23. int redakt(void);
  24. int udalenie(void);
  25. int poisk(void);
  26. int nom, i,k,l,m,j;
  27. char pust[15];
  28. FILE *nach, *kon, *prom, *time, *free, *prod, *bron, *n, *num, *name;
  29. void main()
  30. {while(1)
  31. {clrscr();
  32. printf("1-ђ*бЇЁб**ЁҐ *ўв®Ўгб®ў\n");
  33. printf("2-‚Ґ¤®¬®бвм\n");
  34. printf("3-„®Ў*ў«Ґ*ЁҐ\n");
  35. printf("4-ђҐ¤*ЄвЁа®ў**ЁҐ ўҐ¤®¬®бвЁ\n");
  36. printf("5-“¤*«Ґ*ЁҐ\n");
  37. printf("6-Ѓ«Ё¦*©иЁ© ३б\n");
  38. printf("7-Џ®ЁбЄ\n");
  39. printf("8-‚л室\n");
  40. scanf("%d",&i);
  41. switch(i)
  42. {case 1:raspisanie();break;
  43. case 2:vedomost();break;
  44. case 3:input();break;
  45. case 4:redakt();break;
  46. case 5:udalenie();break;
  47. case 6:blizh();break;
  48. case 7: poisk();break;
  49. case 8: return;
  50. default: printf("ЌҐўҐа*® ўлЎа**® ¤Ґ©бвўЁҐ\n");
  51. }
  52. getch();
  53. }}
  54. lastreis()
  55. {for(i=20;i>=0;i--)if(reis[i].n==0)k=i;}
  56. lastmest()
  57. {for(i=50;i>=0;i--)if(reis[nom].sur[i].n==0)l=i; }
  58.  
  59. raspisanie()
  60. {printf("ђ*бЇЁб**ЁҐ *ўв®Ўгб®ў\n");
  61. lastreis();
  62. i=0;
  63. while(i<k)
  64. {printf(" ђ*бЇЁб**ЁҐ *ўв®Ўгб®ў\n\n");
  65. printf("ЙНННЛНННННННННННЛННННННННННННННННННННЛНННННННННННННННННННЛННННННННННННННЛНННННННН»\n");
  66. printf("є N є*®¬Ґа ३б*є Џг*Єв ®вЇа*ў«Ґ*Ёп єЏа®¬Ґ¦гв®з*л© Їг*ЄвєЉ®*Ґз*л© Їг*Євє ‚аҐ¬п є\n");
  67. printf("МНННОНННННННННННОННННННННННННННННННННОНННННННННННННННННННОННННННННННННННОНННННННН№\n");
  68. 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);
  69. i++;
  70. }
  71. getch();
  72. }
  73. vedomost()
  74. {printf("‚Ґ¤®¬®бвм\n");
  75. lastreis();
  76. i=0;
  77. while(i<k)
  78. {printf(" ‚Ґ¤®¬®бвм\n\n");
  79. printf("ЙНННЛНННННННННННЛННННННННННННННННННННЛНННННННННННННННННННЛННННННННННННННЛННННННННЛННННННННННННННННННННННЛНННННННННННЛННННННННННННННН»\n");
  80. printf("є N є*®¬Ґа ३б*є Џг*Єв ®вЇа*ў«Ґ*Ёп єЏа®¬Ґ¦гв®з*л© Їг*ЄвєЉ®*Ґз*л© Їг*Євє ‚аҐ¬п є Љ®«-ў® бў®Ў®¤*ле ¬Ґбвє ”*¬Ё«Ёп є Ѓа®*Ёа®ў**ЁҐ є\n");
  81. printf("МНННОНННННННННННОННННННННННННННННННННОНННННННННННННННННННОННННННННННННННОННННННННОННННННННННННННННННННННОНННННННННННОННННННННННННННН№\n");
  82. 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);
  83. lastmest();
  84. nom=i;
  85. m=0;
  86. while(m<l)
  87. {printf("%d - %s", reis[nom].sur[m].n, reis[nom].sur[m].name);
  88. m++;}
  89. i++;
  90. }
  91. getch();}
  92. save()
  93. {lastreis();
  94. clrscr();
  95. printf("‘®еа**Ґ*®\n");
  96. n=fopen("C:\\TC\\n.txt","wt");
  97. num=fopen("C:\\TC\\num.txt","wt");
  98. kon=fopen("C\\TC\\kon.txt","wt");
  99. nach=fopen("C\\TC\\nach.txt", "wt");
  100. prom=fopen("C:\\TC\\prom.txt","wt");
  101. time=fopen("C:\\TC\\time.txt","wt");
  102. free=fopen("C:\\TC\\free.txt","wt");
  103. bron=fopen("C:\\TC\\bron.txt","wt");
  104. name=fopen("C:\\TC\\name.txt","wt");
  105. fprintf(num,"%d\n", reis[i].num);
  106. fprintf(kon,"%s\n", reis[i].kon);
  107. fprintf(nach,"%s\n", reis[i].nach);
  108. fprintf(prom,"%s\n", reis[i].prom);
  109. fprintf(time,"%d\n", reis[i].time);
  110. fprintf(free,"%d\n", reis[i].free);
  111. fprintf(bron,"%s\n", reis[i].bron);
  112. fprintf(prod,"%s\n", reis[i].prod);
  113. fprintf(name,"%s\n", reis[i].name);
  114. fclose(FILE *n);
  115. fclose(FILE *num);
  116. fclose(FILE *kon);
  117. fclose(FILE *nach, *prom, *time, *free, *bron, *name);
  118.  
  119. getch();
  120. }
  121. input()
  122. {clrscr();
  123. lastreis();
  124. reis[k].n=reis[k-1].n+1; for(i=0;i<=k;i++)printf("*ҐўҐа*® §*¤** *®¬Ґа");
  125. METKA1:
  126. printf("‚ўҐ¤ЁвҐ *®¬Ґа ३б*\n");
  127. scanf("%d",&reis[k].num);
  128. if(reis[i].num==reis[k].num||reis[k].num<0){printf("ЌҐўҐа*л© *®¬Ґа ३б*\n"); goto METKA1;}
  129. printf("‚ўҐ¤ЁвҐ Їг*Єв ®вЇа*ў«Ґ*Ёп");
  130. scanf("%s",&reis[k].nach);
  131. printf("‚ўҐ¤ЁвҐ Їа®¬Ґ¦гв®з*л© Їг*Єв");
  132. scanf("%s",&reis[k].prom);
  133. printf("‚ўҐ¤ЁвҐ Є®*Ґз*л© Їг*Єв");
  134. scanf("%s",&reis[k].kon);
  135. METKA2:
  136. j=0;
  137. printf("‚ўҐ¤ЁвҐ ўаҐ¬п(а*§¤Ґ«пп ':')");
  138. scanf("%s",&reis[k].time);
  139. if(reis[k].time[0]!='0'&&reis[k].time[0]!='1'&&reis[k].time[0]!='2')goto METKA2;
  140. if(reis[k].time[0]=='0'||reis[k].time[0]=='1')
  141. {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;}
  142. if(reis[k].time[0]=='2')
  143. {if(reis[k].time[1]!='0'&&reis[k].time[1]!='1'&&reis[k].time[1]!='2'&&reis[k].time[1]!='3')goto METKA2;}
  144. if(reis[k].time[2]!=':')goto METKA2;
  145. 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;
  146. 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;
  147.  
  148. METKA3:
  149. printf ("‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® бў®Ў®¤*ле ¬Ґбв");
  150. scanf("%d",&reis[k].free);
  151. if(reis[k].free<0){printf("‡*¤**® *ҐўҐа*®Ґ Є®«ЁзҐбвў® бў®Ў®¤*ле ¬Ґбв\n");goto METKA3;}
  152. printf("Ѓа®*Ёа®ў*вм «Ё ¬Ґбв®?");
  153. scanf("%s",&reis[k].bron);
  154. nom=k;
  155. l=0;
  156. lastmest();
  157. reis[k].sur[l].n=reis[k].sur[l-1].n+1;}
  158.  
  159. udalenie()
  160. {lastreis();
  161. clrscr();
  162. printf("vvedite nomer reisa");
  163. scanf("%d",&i);
  164. 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);
  165. printf("‚л ¤Ґ©б⢨⥫м*® е®вЁвҐ г¤*«Ёвм нв®в аҐ©б Ё§ бЇЁбЄ*? „*(1), ЌҐв(2)\n");
  166. scanf("%d",&l);
  167. switch(l)
  168. {case 1:
  169. for(n=i;n<k;n++)
  170. {strcpy(reis[n].time,pust);
  171. strcpy(reis[n].nach,reis[n+1].nach);
  172. strcpy(reis[n].prom,reis[n+1].prom);
  173. strcpy(reis[n].kon,reis[n+1].kon);
  174. strcpy(reis[n].bron,reis[n+1].bron);
  175. reis[n].free=reis[n+1].free;
  176. reis[n].num=reis[n+1].num;
  177. reis[n].n=reis[n+1].n;
  178. for(l=0;l<50;l++)
  179. {reis[n].sur[l].n=reis[n+1].sur[l].n;
  180. strcpy(reis[n].sur[l].name,reis[n+1].sur[l].name);
  181. }
  182. }
  183. case 2:
  184. return 0;
  185. default:
  186. printf("ЌҐўҐа*® гЄ*§** *®¬Ґа ¤Ґ©бвўЁп\n");
  187. }
  188. printf("“¤*«Ґ*®\n");
  189. getch();
  190. }
  191. poisk()
  192. {char str[15];
  193. lastreis();
  194. clrscr();
  195. printf("by:\n *®¬Ґа ३б*(1), д*¬Ё«Ёп(2),ўаҐ¬п(3),**з*«м*л© Їг*Єв(4), Їа®¬Ґ¦гв®з*л© Їг*Єв(5), Є®*Ґз*л© Їг*Єв(6), бў®Ў®¤*ле ¬Ґбв(7),Ўа®*Ёа®ў**ЁҐ(8)\n");
  196. scanf("%d",&l);
  197. switch(l)
  198. {case 1:
  199. {printf("*®¬Ґа ३б* "); scanf("%d",&m);
  200. for(i=0;i<k;i++)
  201. if(reis[i].num==m)
  202. 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);
  203. break;}
  204. case 2:
  205. {printf("”*¬Ё«Ёп: "); gets(str);
  206. for(i=0;i<k;i++)
  207. for(l=0;l<50;l++)
  208. if(strcmp(reis[i].sur[l].name,str)==0)
  209. 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);
  210. break; }
  211. case 3:
  212. {printf("ўаҐ¬п: "); gets(str);
  213. for(i=0;i<k;i++)
  214. if(strcmp(reis[i].time,str)==0)
  215. 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);
  216. break;}
  217. case 4:
  218. {printf("**з*«м*л© Їг*Єв: "); gets(str);
  219. for(i=0;i<k;i++)
  220. if(strcmp(reis[i].nach,str)==0)
  221. 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);
  222. break;}
  223. case 5:
  224. {printf("Їа®¬Ґ¦гв®з*л© Їг*Єв: "); gets(str);
  225. for(i=0;i<k;i++)
  226. if(strcmp(reis[i].prom,str)==0)
  227. 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);
  228. break;}
  229. case 6:
  230. {printf("Є®*Ґз*л© Їг*Єв: "); gets(str);
  231. for(i=0;i<k;i++)
  232. if(strcmp(reis[i].kon,str)==0)
  233. 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);
  234. break;}
  235. case 7:
  236. {printf("бў®Ў®¤*лҐ ¬Ґбв*: "); scanf("%d",&l);
  237. for(i=0;i<k;i++)
  238. if(reis[i].free==l)
  239. 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);
  240. break;}
  241. case 8:
  242. {printf("Ўа®*Ёа®ў**ЁҐ: "); gets(str);
  243. for(i=0;i<k;i++)
  244. if(strcmp(reis[i].bron,str)==0)
  245. 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);
  246. break;}
  247. case 9:
  248. return 0;
  249. default:
  250. printf("ЌҐўҐа*® гЄ*§** *®¬Ґа ¤Ґ©бвўЁп\n");
  251. }
  252. getch();
  253. }
  254. redakt()
  255. {char str[15];
  256. clrscr();
  257. printf("number reisa");
  258. scanf("%d",&i);
  259. 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);
  260. printf("familia(1), nach(2), kon(3), prom(4), time(5),free(6), bron(7),exit(8)\n");
  261. scanf("%d",&l);
  262. switch(l)
  263. {case 1:
  264. lastmest();
  265. printf("press old surname"); gets(str);
  266. for(j=0;j<l;j++)if(strcmp(reis[i].sur[j].name,str)==0)k=j;
  267. printf("press new surname\n"); gets(str);
  268. strcpy(reis[i].sur[j].name,pust);
  269. strcpy(reis[i].sur[j].name,str);
  270. case 2:
  271. printf("nach reis "); gets(str);
  272. strcpy(reis[i].nach,pust);
  273. strcpy(reis[i].nach,str);
  274. case 3:
  275. printf("prom reis"); gets(str);
  276. strcpy(reis[i].prom,pust);
  277. strcpy(reis[i].prom,str);
  278. case 4:
  279. printf("kon reis"); gets(str);
  280. strcpy(reis[i].kon,pust);
  281. strcpy(reis[i].kon,str);
  282.  
  283. case 5:
  284. printf("time"); gets(str);
  285. strcpy(reis[i].time,pust);
  286. strcpy(reis[i].time,str);
  287.  
  288. case 6:
  289. printf("free"); scanf("%d",&reis[i].free);
  290. case 7:
  291. printf("bron"); gets(str);
  292. strcpy(reis[i].bron,pust);
  293. strcpy(reis[i].bron,str);
  294. case 8:
  295. return 0;
  296. default:
  297. printf("ЌҐўҐа*® гЄ*§** *®¬Ґа ¤Ґ©бвўЁп\n");
  298. }
  299. 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);
  300. getch();
  301. }

Решение задачи: «Программа на Си база данных "касса автовокзала"»

textual
Листинг программы
  1. lastreis()
  2. {for(i=20;i>=0;i--)if(reis[i].n==0)k=i;}

Объяснение кода листинга программы

В данном коде выполняется поиск последнего элемента массива, у которого значение поля n равно нулю. Список действий:

  1. lastreis() - вызывает функцию с именем lastreis.
  2. for(i=20;i>=0;i--) - начинается цикл, который выполняется от i=20 до i=0 (в обратном порядке).
  3. if(reis[i].n==0) - выполняется проверка, равно ли значение поля n у элемента массива с индексом i нулю.
  4. k=i; - если условие выполняется, то переменной k присваивается значение i. В итоге, после выполнения всего цикла, в переменной k будет храниться индекс последнего элемента массива, у которого значение поля n равно нулю.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут