学校数据结构的小作业,没啥技术含量的东西被我写的贼麻烦,先把代码贴上,以后会改进的

飞机售票系统
系统一共由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.退出系统