学校数据结构的小作业,没啥技术含量的东西被我写的贼麻烦,先把代码贴上,以后会改进的
飞机售票系统
系统一共由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.退出系统