学校数据结构的小作业,没啥技术含量的东西被我写的贼麻烦,先把代码贴上,以后会改进的
飞机售票系统
系统一共由5大部分构成,分别是查看航班,订票,售票信息,退票和退出系统
可以一次性完成多次购票,退票,查看订票信息和阅览航班
整个系统大部分都是用链表写的
首先看到的界面部分是由jiemian()函数打印出来的。
第一部分:阅览航班,这个部分的功能是显示出航班的序号,起飞时间,起飞地点,目的地,航班票数和价格
是由一个固定的链表Flight构成,由jianliFlight()函数建立,由outputFlight()函数所打印出来的
第二部分:订票,订票部分功能为你输入起飞地,目的地,然后如果没有这趟航班,就输出没有,如果有的话,输出这趟航班的情况,然后输入你的姓名,身份证和手机号,会提示你是否购票,是的话输入y或者Y,极为购票成功
这部分是链表H1,相关函数是panduan()函数,功能为判断你输入的起飞地和目的地有这趟航班,有的话返回1,没有的话返回0, creat()函数是创建订单节点的函数
第三部分:售票信息,打印出来一共出售了多少张票,还有购票人的姓名手机号,航班,起飞地,目的地和起飞时间。
这个功能都是在主函数里面完成的,就是遍历了一下H1的link1链表。
第四部分:退票,功能是你输入你的姓名,身份证,手机号,如果你有订票的话会显示出来你定了多少票,你输入票的编码就可以退票。主要有tuipiao()函数来完成删除H1的link1链表的节点。
第五部分:退出系统
PS:在测试系统的时候注意给你的选项,尽量避免摁错,因为选项的功能规定了,如果摁错会导致系统关闭。
还有就是多次操作均不要退出系统,如果退出系统的话会导致数据清零。
1 /**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//*
2 飞机票售票系统
3 一共5个功能:
4 1.查看有多少航班
5 2.订票
6 3.查看购票信息
7 4. 退票
8 5.退出程序
9 /**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**//**/
10 #include<time.h>
11 #include<stdio.h>
12 #include<stdlib.h>
13 #include<string.h>
14
15 char mu[10];
16 char da[10];
17 int lll=0;
18 int llll=0;
19 int abc=0;
20 //***************
21 time_t timep;
22 /*******定义航班链表*******/
23 struct Flight
24 {
25 int bianhao; //航班编号
26 int piao; //飞机票数
27 int piaojiao; //票价
28 char shijian[20]; //起飞时间
29 char qifei[20]; //起飞地点
30 char mudidi[20]; //飞机目的地
31 char feiji[40]; //飞机名称
32 Flight* next;
33 };
34 /*******航班链表*******/
35 struct H1
36 {
37 int hangban;
38 char id[20];
39 char name[20];
40 char mudidi[20];
41 char qifei[20];
42 char qifeishijian[20];
43 char feijiname[20];
44 char goushijian[50];
45 char shoujihao[20];
46 H1* next1;
47 };
48 /********功能**********/
49 void gongneng(void)
50 {
51 printf("\t\t ┌ ────────────────── ┐\n");
52 printf("\t\t │ 1. 阅 览 航 班 2. 订 票 │\n");
53 printf("\t\t │ │\n");
54 printf("\t\t │ 3. 售 票 信 息 4. 退 票 │\n");
55 printf("\t\t │ │\n");
56 printf("\t\t │ 5. 退 出 系 统 │\n");
57 printf("\t\t │ │\n");
58 printf("\t\t └ ────────────────── ┘\n");
59 }
60
61 /*********服务1***********/
62 int fuwu1(void)
63 {
64 printf("请问您需要什么服务?(1-5)\n");
65 for(int i=0;i<=38;i++)
66 {
67 printf(" ");
68 }
69 int num;
70 scanf("%d",&num);
71 return num;
72 }
73 /*********界面1**********/
74 void jiemian1(void)
75 {
76 int j,i;
77 for(j=0;j<80;j++)
78 printf("*");
79 for(i=0;i<2;i++)
80 printf("\n");
81 for(i=0;i<=25;i++)
82 printf(" ");
83 printf("欢迎来到升达航空公司!\n");
84 time(&timep);
85 printf(" %s\n",ctime(&timep));
86 for(j=0;j<80;j++)
87 printf("*");
88 printf("\n");
89 }
90 /**********界面2**************/
91 void jiemian2(void)
92 {
93 int i;
94 for(i=0;i<1;i++)
95 printf("\n");
96 for(i=0;i<80;i++)
97 printf("*");
98 printf("\n\n");
99 for(i=0;i<=30;i++)
100 printf(" ");
101 }
102 /**********界面*****************/
103 Flight* link;
104 int jiemian()
105 {
106 int i,j,kk;
107 /***********标题*************/
108 jiemian1();
109 /***********功能*************/
110 gongneng();
111 /*********用户选项************/
112 jiemian2();
113 kk=fuwu1();
114 return kk;
115 }
116 /*******创建航班信息*******/
117 void jianliFlight(Flight* &link)
118 {
119 link=new Flight;
120 link->bianhao=0;
121
122 Flight* p=new Flight;
123 p->bianhao=5;strcpy(p->shijian,"11时26分");
124 strcpy(p->qifei,"佛山");strcpy(p->mudidi,"苏州");
125 strcpy(p->feiji,"波音737-800(中型)");p->piao=160;p->piaojiao=432;
126 p->next=link->next;link->next=p;link->bianhao++;
127 p=new Flight;
128 p->bianhao=4;strcpy(p->shijian,"06时26分");
129 strcpy(p->qifei,"四平");strcpy(p->mudidi,"十堰");
130 strcpy(p->feiji,"波音737-800(中型)");p->piao=187;p->piaojiao=758;
131 p->next=link->next;link->next=p;link->bianhao++;
132 p=new Flight;
133 p->bianhao=3;strcpy(p->shijian,"04时26分");
134 strcpy(p->qifei,"通化");strcpy(p->mudidi,"武汉");
135 strcpy(p->feiji,"空中客车A320(中型)");p->piao=260;p->piaojiao=498;
136 p->next=link->next;link->next=p;link->bianhao++;
137 p=new Flight;
138 p->bianhao=2;strcpy(p->shijian,"02时26分");
139 strcpy(p->qifei,"合肥");strcpy(p->mudidi,"台湾");
140 strcpy(p->feiji,"波音737-900ER(中型)");p->piao=156;p->piaojiao=723;
141 p->next=link->next;link->next=p;link->bianhao++;
142 p=new Flight;
143 p->bianhao=1;strcpy(p->shijian,"00时45分");
144 strcpy(p->qifei,"天津");strcpy(p->mudidi,"杭州");
145 strcpy(p->feiji,"空中客车A320(中型)");p->piao=165;p->piaojiao=215;
146 p->next=link->next;link->next=p;link->bianhao++;
147 }
148 /*****判断是否有这趟航班*******/
149 int panduan(Flight* link,char a[],char b[])
150 {
151 Flight* p=link->next;
152 int f=0;
153 for(int i=0;i<5;i++)
154 {
155 if(strcmp(a,p->qifei)==0)
156 {
157 if(strcmp(b,p->mudidi)==0)
158 {
159 f=1;
160 lll=p->bianhao;
161 }
162 }
163 if(f==1)
164 return 1;
165 p=p->next;
166 }
167 return 0;
168 }
169 /***********输出1****************/
170
171 /*********创建订票***********/
172 H1* link1;
173 void creat(H1* &link1,Flight * &link,int lll)
174 {
175 int j=0;
176 Flight* p=link->next;
177 for(int i=0;i<5;i++)
178 {
179 j++;
180
181 if(j==lll)
182 {
183 printf("序号\t时间\t 起飞地\t目的地\t飞机航班\t 经济舱 \t金额\n");
184 printf("%02d\t",p->bianhao);printf("%s\t",p->shijian);
185 printf("%s\t",p->qifei);printf("%s\t",p->mudidi);
186 printf("%s\t",p->feiji);printf("%d张\t",p->piao);
187 printf("%d元\n\n\n",p->piaojiao);
188 break;
189
190 }
191 p=p->next;
192 }
193 printf("请输入您的个人信息(带星号的请务必填写):\n");
194
195 H1* p1=new H1;
196 printf("* 姓名:");
197 scanf("%s",p1->name);
198 printf("* 身份证:");
199 scanf("%s",p1->id);
200 strcpy(p1->mudidi,p->mudidi);
201 strcpy(p1->qifei,p->qifei);
202 strcpy(p1->feijiname,p->feiji);
203 strcpy(p1->qifeishijian,p->shijian);
204 printf("* 手机号:");
205 scanf("%s",p1->shoujihao);
206 printf("姓名:%s\t身份证:%s\t手机号:%s\n起飞地:%s\t目的地:%s\t",p1->name,p1->id,p1->shoujihao,p1->qifei,p1->mudidi,p1->feijiname,p1->qifeishijian,p->piaojiao,p->piao);
207 printf("飞机航班:%s\n起飞时间:%s\n票价:%d\t剩余票数:%d\n\n",p1->feijiname,p1->qifeishijian,p->piaojiao,p->piao);
208
209 printf("是否购买飞机票(Y/N)");
210 char pp;
211 getchar();
212 scanf("%c",&pp);
213 if(pp=='Y'||pp=='y')
214 {
215 printf("*******************恭喜你购票成功,祝你旅行愉快!************************\n");
216 p1->next1=link1->next1;
217 link1->next1=p1;
218 p->piao--;
219 llll++;
220 abc++;
221 p1->hangban=abc;
222 time(&timep);
223 strcpy(p1->goushijian,ctime(&timep));
224 printf("\t\t %s",p1->goushijian);
225 }
226 else
227 {
228 printf("\n******************欢迎您下次继续选择升达航空公司***********************\n");
229 }
230 }
231 /************退票***********/
232 void tuipiao(Flight* link,H1* &link1,int acc)
233 {
234 Flight* p=link->next;
235
236 H1* l2=link1;
237 int f=0;
238 char x[30],z[30];
239 while(l2->next1!=NULL)
240 {
241 if(acc==l2->next1->hangban)
242 {
243 strcpy(x,l2->qifei);
244 strcpy(z,l2->mudidi);
245 l2->next1=l2->next1->next1;
246 f=1;
247 continue;
248 }
249 l2=l2->next1;
250 }
251 /* while(p!=NULL)
252 {
253 if(strcmp(p->mudidi,l2->mudidi)==0&&strcmp(p->qifei,l2->qifei)==0)
254 {
255 p->piao++;
256 break;
257 }
258 p=p->next;
259 }*/
260 if(f==1)
261 {
262 printf("退票成功!\n");
263 }
264
265 }
266 /*******输出航班信息*******/
267 void outputFlight(Flight* link)
268 {
269 printf(" 今天一共%d趟航班\n",link->bianhao);
270 for(int i=0;i<80;i++)
271 {
272 printf("*");
273 }
274 printf("\n");
275 Flight* p=link->next;
276 printf("序号\t时间\t 起飞地\t目的地\t飞机航班\t 经济舱 \t金额\n");
277 for(int j=0;j<5;j++)
278 {
279 printf("%02d\t",p->bianhao);printf("%s\t",p->shijian);
280 printf("%s\t",p->qifei);printf("%s\t",p->mudidi);
281 printf("%s\t",p->feiji);printf("%d张\t",p->piao);
282 printf("%d元\n",p->piaojiao);
283 p=p->next;
284 }
285
286 time(&timep);
287 printf("\n %s\n",ctime(&timep));
288
289 }
290 /********主函数*********/
291 int main()
292 {
293 int i;
294 jianliFlight(link);
295 link1=new H1;
296 memset(link1,0,sizeof(H1));
297 JIN:i=jiemian();
298 //llll=0;
299 if(i==1)
300 {
301
302 system("cls"); //清空屏幕
303 outputFlight(link);
304 printf("\n1.返回到首界面\n2.退出系统\n");
305 int x;
306 scanf("%d",&x);
307 if(x==1)
308 {
309 system("cls");
310 goto JIN;
311 }
312 else
313 {
314 goto LIN;
315 }
316 }
317 else if(i==2)
318 {
319 int j;
320 system("cls");
321 //j=dingpiao();
322 printf("\t\t欢迎订票,请输入您的所在地和所想到达目的地:\n\n");
323
324 printf("\t 所在地:");scanf("%s",da);
325 printf("\n\t 目的地:");scanf("%s",mu);
326 printf("\n");
327 int s;
328 s=panduan(link,da,mu);
329 if(s==0)
330 {
331 printf("***************对不起,没有这趟航班*****************\n\n");
332 }
333 else
334 {
335 creat(link1,link,lll);
336 }
337 printf("\n1.返回到首界面\n2.退出系统\n");
338 int x;
339 scanf("%d",&x);
340 if(x==1)
341 {
342 system("cls");
343 goto JIN;
344 }
345 else
346 {
347 goto LIN;
348 }
349 }
350 else if(i==3)
351 {
352 system("cls");
353 H1* q;
354
355 if(link1->next1==NULL)
356 {
357 printf("***************对不起,暂时没有售票信息********************\n\n");
358 }
359 else
360 {
361 // q=new H1;
362 q=link1->next1;
363 printf("\t/*********************一共售出%d张票*********************/\n\n",llll);
364 while(q!=NULL)
365 {
366 int l1,l2;
367 l1=strlen(q->name);
368 l2=strlen(q->shoujihao);
369 printf("姓名:%c%c*",q->name[0],q->name[1]);
370 printf("%c%c\t",q->name[l1-2],q->name[l1-1]);
371 printf("手机号:%c",q->shoujihao[0]);
372 printf("%c",q->shoujihao[1]);
373 printf("%c**",q->shoujihao[2]);
374 printf("%c",q->shoujihao[l2-3]);
375 printf("%c",q->shoujihao[l2-2]);
376 printf("%c\n",q->shoujihao[l2-1]);
377 printf("航班:%s\t",q->feijiname);
378 printf("起飞地:%s\t",q->qifei);
379 printf("目的地:%s\t",q->mudidi);
380 printf("起飞时间%s\n\n",q->qifeishijian);
381 q=q->next1;
382 }
383 }
384 printf("\n1.返回到首界面\n2.退出系统\n");
385 int x;
386 scanf("%d",&x);
387 if(x==1)
388 {
389 system("cls");
390 goto JIN;
391 }
392 else
393 {
394 goto LIN;
395 }
396 }
397 else if(i==4)
398 {
399 system("cls");
400 char aaa[50],bbb[50],ccc[50];
401 printf("\t/**********************欢迎使用退票系统***********************/\n");
402 printf("请输入您的姓名:");
403 scanf("%s",aaa);
404 printf("请输入您的身份证号:");
405 scanf("%s",bbb);
406 printf("请输入您的手机号:");
407 scanf("%s",ccc);
408 H1* q1;
409 int flag=0;
410 q1=link1->next1;
411 while(q1!=NULL)
412 {
413 if(strcmp(aaa,q1->name)==0&&strcmp(bbb,q1->id)==0&&strcmp(ccc,q1->shoujihao)==0)
414 {
415 flag++;
416 printf("%d ",q1->hangban);
417 int l1,l2;
418 l1=strlen(q1->name);
419 l2=strlen(q1->shoujihao);
420 printf("姓名:%c%c*",q1->name[0],q1->name[1]);
421 printf("%c%c\t",q1->name[l1-2],q1->name[l1-1]);
422 printf("手机号:%c",q1->shoujihao[0]);
423 printf("%c",q1->shoujihao[1]);
424 printf("%c**",q1->shoujihao[2]);
425 printf("%c",q1->shoujihao[l2-3]);
426 printf("%c",q1->shoujihao[l2-2]);
427 printf("%c\n",q1->shoujihao[l2-1]);
428 printf("航班:%s\t",q1->feijiname);
429 printf("起飞地:%s\t",q1->qifei);
430 printf("目的地:%s\n",q1->mudidi);
431 }
432 q1=q1->next1;
433 }
434 if(flag==0)
435 {
436 printf("\n\t您没有订过机票\n");
437 }
438 else
439 {
440 int acc;
441 printf("您想要退那趟航班?(输入航班序号):\n");
442 scanf("%d",&acc);
443 if(acc<=abc)
444 {
445 tuipiao(link,link1,acc);
446 }
447 }
448
449 printf("\n1.返回到首界面\n2.退出系统\n");
450 int x;
451 scanf("%d",&x);
452 if(x==1)
453 {
454 system("cls");
455 goto JIN;
456 }
457 else
458 {
459 goto LIN;
460 }
461 }
462 else if(i==5)
463 {
464 LIN: printf("\n*******************欢迎您下次继续选择升达航空公司,祝你旅行愉快******************\n");
465
466 }
467 else
468 {
469 system("cls");
470 printf("\n\n 服务代码错误:请重新输入\n\n");
471 goto JIN;
472 }
473
474 return 0;
475 }
效果演示:
1.阅览航班
2.订票
3.售票信息
4.退票
5.退出系统