数据结构课程设计飞机订票系统_第1页
数据结构课程设计飞机订票系统_第2页
数据结构课程设计飞机订票系统_第3页
数据结构课程设计飞机订票系统_第4页
数据结构课程设计飞机订票系统_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、河南城建学院 数据结构程序设计 软件工程目录一. 设计目的3二. 设计内容3三概要设计31功能模块图32各个模块详细的功能描述4四详细设计51各功能函数的数据流程图52重点设计及编码8五使用说明101主界面102机票信息管理(保存)103订票系统使用124退票系统13六调试情况,设计技巧及体会131、调试情况132.对设计及调试过程的心得体会:14七参考文献14八附录:源代码15一. 设计目的课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。数据结构课程设计是专为学习了第一门计算机高

2、级语言的学生设立的,安排该课程设计的目的,就是要通过一次集中的强化训练,使学生能及时地巩固已学的知识,补充未学的但又是必需的内容,进一步提高程序设计的能力。进一步巩固、加深学生所学专业课程数据结构的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。本课程设计将以学生上机进行程序设计为主,教师的适当讲授为辅。利用学到的编程知识和编程技巧,通过布置具有一定难度的程序设计题目,帮助学生熟悉程序编写,及时查究错误,独立完成。二. 设计内容飞机订票系统通过此系统可以实现如下功能:(1)录入:可以录入航

3、班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;(4)退票: 可退票,退票后修改相关数据文件;根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。三概要设计1功能模块图 订票输入航班号查询所有航班输入旅客信息 全部显示 航班号 出发地飞机订票系统 目的地姓名 退票查询所有航班退证件号航班信息和

4、旅客信息输入航班号密码查询 机票信息录入 查询所有机票录票 修改机票删除机票信息图1系统总体结构图2各个模块详细的功能描述本程序能输入最多1000个机票信息,管理员在保存功能中通过密码验证输入机票信息,可以对机票信息进行查询;修改;删除等功能。一般用户可以使用订票;显示;退票等功能,在订票时用户输入密码在退票时通过验证后成功退票。具体功能如下:第一部分:保存模块 1机票信息录入;2查询所有机票;3修改机票信息;4删除机票信息有机票信息的管理,对机票信息输入,查询,修改,删除。第二部分:订票模块:当有机票信息后可以订票,订票时输入航班号(进入时有可以查询所有机票信息)出现航班信息,确定订票后输入

5、个人信息:姓名,性别,证件号,联系电话,密码(退票时用)。出现您的个人信息,确定后回车订票结束。第三部分:显示模块:1全部;2航班号;3出发地;4目的地按上述方式查看机票信息第四部分:退票模块:(可以选择查看航班信息)证件号(或姓名)当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,当密码正确时会显示您的个人信息,回车再是否确定退票。第五部分: 查询模块:(输入管理密码)输入航班号,显示航班信息 和所有乘客个人信息四 详细设计1各功能函数的数据流程图(1)该模块包括密码的输入并验证,修改密码。算法如下:密码模块函数 void checkcode()流程图(2)机票信息录入void in

6、putinfo()流程图(3)订票系统void bookticket()流程图在有航班信息的情况下可以进行订票操作(4)显示模块void display()流程图(5)退票系统void returnticket()流程图2重点设计及编码3.1程序的模块(1) 保存模块:含有机票信息的管理,对机票信息输入,查询,修改,删除。(2)订票模块:当有机票信息后可以订票,订票时输入航班号(进入时有可以查询所有机票信息)出现航班信息,确定订票后输入个人信息:姓名,性别,证件号,联系电话,密码(退票时用)。出现您的个人信息,确定后回车订票结束。(3)显示模块:含全部;航班号;出发地;目的地等方式查询所有机票

7、信息。(4)退票模块:当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,当密码正确时会显示您的个人信息,回车再是否确定退票。(5) 查询模块:(输入管理密码)输入航班号,显示航班信息 和所有乘客个人信息3.2结构体struct travellerinfo/旅客信息结构char fightnum 10;/航班号char name 10; /姓名char sex 5; /性别char idnum 20;/证件号码char password 10;/密码char poto 12; /联系电话;struct fightinfo/机票信息结构体char fightnum 10;/航班号char

8、start 8;/出发地char destination 8;/目的地unsigned int price;/价格unsigned int goyear;/出发时间 年unsigned int gomoth;/月unsigned int goday;/日unsigned int gohour;/时unsigned int gominute;/分unsigned int arryear;/到达时间 年unsigned int arrmoth;/月unsigned int arrday;/日unsigned int arrhour;/时unsigned int arrminute;/分unsign

9、ed int rebate;/折扣unsigned int allsticket;/总票数unsigned int surplusticket;/剩余票数;struct allfightinfo /机票全部结构struct travellerinfo fight;/旅客信息结构struct fightinfo fight1;/机票信息结构体;3.3文件的定义FILE *travellerfile=NULL; /存旅客信息数据文件FILE *fightfile=NULL; /存机票信息数据文件char filename="旅客信息信息登记.dat" /记录旅客信息登记char

10、 filename1="机票信息.dat" /记录机票信息五使用说明1主界面1、程序欢迎界面(对系统的说明,及程序分组名单)停留3s5-12、程序主界面(按数字1-5 再回车)进入其他功能5-22机票信息管理(保存)1、输入密码(第一次设置密码1234)机票信息管理5-32、选1进入机票信息录入5-43、选2查询所有航班信息5-54、选3修改航班信息,确定后进入查询所有航班5-65、输入航班号 显示航班信息 要求输入修改信息5-7 6、删除请谨慎,全部删除会删除所有文件5-83订票系统使用1、定票时查询所有的航班信息5-82、输入正确的航班号5-93、订票时输入个人信息5-

11、104退票系统1、进入退票系统是否查询所有机票信息5-112、选择输入信息输入的方式并输入5-123、退票时的信息显示然后确定5-13六调试情况,设计技巧及体会1、调试情况在订票系统中我们发现,在订票时我们的把机票信息中的剩余票数要减少一个,而在退票时我们的把剩余票数加以个,由于在文件的定义时不好把机票信息文件和旅客信息文件放一起,所以在修改机票剩余票数的是侯的打开两个文件然后得对两个文件进行修改。在保存模块需要把机票的信息录入进去,所以有很多部分都得写,像机票信息的录入,修改,删除,这样一来就像是写一个机票信息管理系统一样,这样一来导致这个文件会很大,很繁琐。但是还好c语言是面向过程的导致很

12、多的程序代码重复,这样就在写好一部分代码以后就可以进行复制,然后进行修改就行,总体来说工作量还不是很大。2.对设计及调试过程的心得体会:通过本次课程设计,发现平时在数据结构学习中的不足:基础知识不够扎实;对某些函数的作用了解的不清,导致在做设计时,不知该怎么运用;做题时思路不清晰,那道题总是想着怎么写代码,没有真正从宏观的角度分析问题,不能把握大局,好好的去设计程序。说句实话,我觉得本次课程设计的题目对我来说有些勉强,刚开始可以说是毫无头绪,查了很多资料,采取的一些小的进展,幸幸苦苦把程序分析出来,还没来得及高兴,又遇上了作程序框图,然后在网上找了很久的作图软件,摸索着做出了几张图,感觉还是不

13、满意,以后在学习中多多练习,多实践。从这次课程设计真的学到了很多,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时也感觉到自己专业知识掌握的不够,在设计中走了很多弯路,刚开始是根本无从下手,不知道要干嘛,如果平时课余时间多加强对这些专业知识的学习,那么在这次课程设计中将会少走很多的弯路。虽然我的设计报

14、告并不是很完美,但是是我努力的结果,还是很欣慰的。七参考文献1 杨文君,杨柳.C语言程序设计教程M.清华大学出版社. 2010.032 谭浩强. C语言程序设计教程M. 清华大学出版社. 2005.073 谭浩强.C程序设计教程.北京:清华大学出版社.2007.074 王岳斌等编著.C程序设计案例教程.北京:清华大学出版社.2006.10八附录:源代码#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>#include<windows.h>#inc

15、lude<time.h>#define flightMAX 1000void inputinfo(struct allflightinfo *);/机票信息录入void filename1read (struct allflightinfo *);/旅客信息信息读取void allabout(struct allflightinfo *); /查询所有信息void mofinfo(struct allflightinfo *);/修改机票信息void password();/密码验证int checkcode();/身份验证void modifycode();/修改登陆密码void

16、 delinfo(struct allflightinfo *);/删除void flightcontrol(struct allflightinfo *);/机票管理模块void bookticket(struct allflightinfo *p_flight);/订票系统void display(struct allflightinfo *p_flight);/显示模块void returnticket(struct allflightinfo *p_flight);/退票void enquiry(struct allflightinfo *p_flight);/查询模块void wel

17、come();/欢迎int submeun();struct travellerinfo/旅客信息结构char flightnum 10;/航班号char name 10; /姓名char sex 5; /性别char idnum 20;/证件号码char password 10;/密码char poto 12; /联系电话;struct flightinfo/机票信息结构体char flightnum 10;/航班号char start 8;/出发地char destination 8;/目的地unsigned int price;/价格unsigned int goyear;/出发时间 年

18、unsigned int gomoth;/月unsigned int goday;/日unsigned int gohour;/时unsigned int gominute;/分unsigned int arryear;/到达时间 年unsigned int arrmoth;/月unsigned int arrday;/日unsigned int arrhour;/时unsigned int arrminute;/分unsigned int rebate;/折扣unsigned int allsticket;/总票数unsigned int surplusticket;/剩余票数;struct

19、 allflightinfo /机票全部结构struct travellerinfo flight;/旅客信息结构struct flightinfo flight1;/机票信息结构体;typedef struct orderInfo char flightnum10; int id;FILE *travellerfile=NULL; /存旅客信息数据文件FILE *flightfile=NULL; /存机票信息数据文件char filename="旅客信息信息登记.dat" /记录旅客信息登记char filename1="机票信息.dat" /记录机票

20、信息int main()SetConsoleTitle("飞机订票系统");int in;time_t start,end;struct allflightinfo flightmaxflightMAX; /最大机票数struct allflightinfo *p_flight; /指向结构指针p_flight=flightmax;welcome();system("cls");dosystem("cls");in=submeun();switch(in)case 1:bookticket(p_flight);/订票break;cas

21、e 2:display(p_flight);/显示break;case 3:returnticket(p_flight);/退票break;case 4:enquiry(p_flight);/查询break;case 5:flightcontrol(p_flight);/修改break;case 6:system("cls");printf("nnnnnntttt暂时没有此模块!");/systemhelp();/帮助getch(); break;case 7:break;while(in!=7);printf("nnnttt感 谢 使 用 本

22、 系 统 ! ! ");start=time(NULL);end=time(NULL);while(end-start<1.5)end=time(NULL);return 0;/*显示子菜单*/int submeun()int in;char ch;system("cls");system("color 07");printf("antt-您好,欢迎进入中国民航飞机订票系统!-n");printf("nnn");printf("tt-n");printf("tt 飞 机

23、 订 票 系 统 n");printf("tt-n");printf("tt1. 订 票 n");printf("ttn");printf("tt2. 显 示 n");printf("ttn");printf("tt3. 退 票 n");printf("ttn");printf("tt4. 查 询 n");printf("ttn");printf("tt5. 录 票 n");printf

24、("ttn");printf("tt6. 帮 助 n");printf("ttn");printf("tt7. 退出系统 n");printf("tt-n");printf("tt 请您正确选择:");while(scanf("%d",&in)!=1|(!(0<in&&in<8)while(ch=getchar()!='n')putchar(ch);fflush(stdin);return in;void

25、 welcome()time_t start,end;system("color 06");printf("nnn");printf("ttt欢 迎 使 用 飞 机 订 票 系 统!");start=time(NULL);end=time(NULL);while(end-start<1)end=time(NULL);/*查询模块*/void enquiry(struct allflightinfo *p_flight)int count,count1,i,in,j;char ch,ch1;char *temp=NULL;pass

26、word();system("cls"); if(travellerfile=fopen(filename,"r")=NULL) printf("不能打开文件,请确认磁盘已满或 旅客信息.dat文件没有损坏"); getch(); exit(1); rewind(travellerfile); /定位文件头开始读取for(count1=0;fread(&p_flightcount1.flight,sizeof(struct travellerinfo),1,travellerfile)=1;count1+)continue;f

27、close(travellerfile);if(!count1)printf("不能读取数据,请确定文件是否存在或已经成功录入数据!");getch();system("cls");return ; /返回重新操作if(flightfile=fopen(filename1,"r")=NULL)printf("不能打开文件,请确认磁盘已满或机票信息.dat文件没有损坏");getch();exit(1);rewind(flightfile); /定位文件头开始读取for(count=0;fread(&p_fl

28、ightcount.flight1,sizeof(struct flightinfo),1,flightfile)=1;count+)continue;fclose(flightfile); /读完后关闭文件if(!count)printf("不能读取数据,请确定文件是否存在或已经成功录入数据!");getch();system("cls");return ; /返回重新操作temp=(char*)malloc(20*sizeof(char); /分配内存system("cls");fflush(stdin);printf("

29、;nnt请输入你查询的航班号:");while(gets(temp)!=NULL&&temp0!='0')system("cls");for(i=0;i<count;i+)if(!strcmp(temp,p_flighti.flight1.flightnum)printf("nttt*您要找的航班信息*n"); printf(" 航班号|出发地|目的地| 价格|发月-日| 时-分|到月-日| 时-分|折扣| 总票|余票n"); printf(" *n"); print

30、f("%10s|%6s|%6s| %4d| %2d-%2d| %2d:%2d|",p_flighti.flight1.flightnum,p_flighti.flight1.start,p_flighti.flight1.destination,p_flighti.flight1.price,p_flighti.flight1.gomoth,p_flighti.flight1.goday,p_flighti.flight1.gohour,p_flighti.flight1.gominute); printf(" %2d-%2d| %2d:%2d| %2d| %2d

31、| %2d|",p_flighti.flight1.arrmoth,p_flighti.flight1.arrday,p_flighti.flight1.arrhour,p_flighti.flight1.arrminute,p_flighti.flight1.rebate,p_flighti.flight1.allsticket,p_flighti.flight1.surplusticket); printf("nnttt*您找的该航班旅客信息*"); printf("n 航班号 | 姓名 | 性别| 证件号 | 联系电话 "); print

32、f("n *");for(j=0;j<count1;j+)if(!strcmp(p_flighti.flight1.flightnum,p_flightj.flight.flightnum)printf("n%10s |%10s |%4s |%20s |%12s |",p_flightj.flight.flightnum,p_,p_flightj.flight.sex,p_flightj.flight.idnum,p_flightj.flight.poto);if(i>count) printf(&quo

33、t;你要找的航班信息不存在!");free(temp);printf("继续请按任意键!");getch();system("cls");return ;/*退票系统*/void returnticket(struct allflightinfo *p_flight)int count,count1,i,j,tmp,in;char ch,ch1;orderInfo ord10=0;staticchar *temp=NULL;char *newtemp=NULL;time_t start,end;system("cls");i

34、f(flightfile=fopen(filename1,"rb")=NULL)printf("不能打开文件,请确认磁盘已满或 机票信息.dat文件没有损坏");getch();exit(1);rewind(flightfile); /定位文件头开始读取for(count=0;fread(&p_flightcount.flight1,sizeof(struct flightinfo),1,flightfile)=1;count+)continue;fclose(flightfile);if(!count)printf("找不到个人数据,

35、请确定文件存在和已经成功录入!");getch();system("cls");return;if(travellerfile=fopen(filename,"a+b")=NULL)printf("不能打开文件,请确认磁盘已满或 旅客信息.dat文件没有损坏");getch();exit(1);rewind(travellerfile); /定位文件头开始读取for(count1=0;fread(&p_flightcount1.flight,sizeof(struct travellerinfo),1,travell

36、erfile)=1;count1+)continue;fclose(travellerfile);printf("ntt-您好,欢迎进入中国民航飞机退票系统!-n");printf("-nn");printf("是否要查询所有飞机票信息(y/n)");/ch=getch();if(ch='y'|ch='Y')allabout(p_flight);system("cls");fflush(stdin);printf("nnnn");printf("tn&q

37、uot;);printf("t 退 票 选 择 n");printf("t-n");printf("tt 1. 证 件 号 n");printf("tn");printf("tt 2. 返 回 n");printf("tn");printf("t n");printf("t 请您正确选择:");while(scanf("%d",&in)!=1|(!(0<in&&in<=2)whil

38、e(ch=getchar()!='n')putchar(ch);fflush(stdin);if(in=2)return;temp=(char*)malloc(20*sizeof(char); /分配内存newtemp=(char *)malloc(10*sizeof(char);printf("n请输入你的姓名或证件号:");while(gets(temp)!=NULL&&temp0!='0') int countx=0;system("cls");printf("nttt*您订的航班信息*n&

39、quot;); printf(" 航班号 |出发地|目的地| 价格|发月-日| 时-分|到月-日| 时-分|折扣| 总票|余票n");for(i=0;i<count1;i+)if(in=1&&!strcmp(temp,p_flighti.flight.idnum)for(j=0;j<count;j+)if(!strcmp(p_flighti.flight.flightnum,p_flightj.flight1.flightnum)printf(" *n");printf("%10s|%6s|%6s| %4d| %2d

40、-%2d| %2d:%2d|",p_flightj.flight1.flightnum,p_flightj.flight1.start,p_flightj.flight1.destination,p_flightj.flight1.price,p_flightj.flight1.gomoth,p_flightj.flight1.goday,p_flightj.flight1.gohour,p_flightj.flight1.gominute);printf(" %2d-%2d| %2d:%2d| %2d| %2d| %2d|",p_flightj.flight1.

41、arrmoth,p_flightj.flight1.arrday,p_flightj.flight1.arrhour,p_flightj.flight1.arrminute,p_flightj.flight1.rebate,p_flightj.flight1.allsticket,p_flightj.flight1.surplusticket);p_flightj.flight1.surplusticket+;strcpy(ordcountx.flightnum,p_flighti.flight.flightnum);ordcountx.id=i;countx+;printf("请输

42、入您的密码!");gets(newtemp);if(!strcmp(newtemp,p_flighti.flight.password)printf("n 航班号 | 姓名 | 性别| 证件号 | 联系电话 ");printf("n *");printf("n%10s |%10s |%4s |%20s |%12s |n",p_flighti.flight.flightnum,p_,p_flighti.flight.sex,p_flighti.flight.idnum,p_flighti.

43、flight.poto);elseprintf("nnttt您的密码错误!");start=time(NULL);end=time(NULL);while(end-start<1.5)end=time(NULL);return;printf("请输入你要退的航班号:");char flightid10;fflush(stdin);scanf("%s",flightid);/fflush(stdin);for(int k=0; k<countx; k+) if(!strcmp(ordk.flightnum,flightid)

44、 i=ordk.id; break; p_flighti.flight1.surplusticket+;for(;i<count1;i+)p_flighti.flight=p_flighti+1.flight;count1-; /删除一个信息printf("按任意键继续!");if(countx=0) printf("nn没有您的订票信息!"); return; printf("annnnnntt 确定要退票吗?(y/n)");ch=getch();if(ch='n'|ch='N')system(

45、"cls");printf("nnnnnntt 该操作已取消.请按任意键返回!");getch();system("cls");return ;if(travellerfile=fopen(filename,"w+b")=NULL) /重新打开文件更新free(temp);printf("不能打开文件,请确认磁盘已满或文件是否存在");getch();exit(1);for(i=0;i<count1;i+)/更新文件if(fwrite(&p_flightcount1.flight,

46、sizeof(struct travellerinfo),1,travellerfile)!=1)break;free(temp); /释放内存fclose(travellerfile);system("cls");printf("nnnnnntt 已成功删除该项目信息.n");printf("ntt要删除下一个项目信息请重新选择!");start=time(NULL);end=time(NULL);flightfile=fopen(filename1,"w+b"); /重新写入文件for(i=0;i<cou

47、nt;i+)if(fwrite(&p_flighti.flight1,sizeof(struct flightinfo),1,flightfile)=1)continue;elsefclose(flightfile);printf("修改失败,返回重新操作.");getch();free(temp);system("cls");return ;fclose(flightfile);system("cls"); /清屏printf("nnnnttta恭喜!您已经退票票成功!");start=time(NULL

48、);end=time(NULL);while(end-start<1.5)end=time(NULL);return;/*显示模块*/void display(struct allflightinfo *p_flight)int count,i,in,t=0;char ch,ch1;char *temp=NULL;system("cls");if(flightfile=fopen(filename1,"r")=NULL)printf("不能打开文件,请确认磁盘已满或 机票信息.dat文件没有损坏");getch();exit(1);rewind(flightfile); /定位文件头开始读取for(count

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论