数据结构课程设计飞机订票系统.docx
- 文档编号:3643528
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:61
- 大小:584.52KB
数据结构课程设计飞机订票系统.docx
《数据结构课程设计飞机订票系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计飞机订票系统.docx(61页珍藏版)》请在冰豆网上搜索。
数据结构课程设计飞机订票系统
一.设计目的
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
数据结构课程设计是专为学习了第一门计算机高级语言的学生设立的,安排该课程设计的目的,就是要通过一次集中的强化训练,使学生能及时地巩固已学的知识,补充未学的但又是必需的内容,进一步提高程序设计的能力。
进一步巩固、加深学生所学专业课程《数据结构》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
本课程设计将以学生上机进行程序设计为主,教师的适当讲授为辅。
利用学到的编程知识和编程技巧,通过布置具有一定难度的程序设计题目,帮助学生熟悉程序编写,及时查究错误,独立完成。
二.设计内容
飞机订票系统
通过此系统可以实现如下功能:
(1)录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
(2)查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
(3)订票:
(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;
(4)退票:
可退票,退票后修改相关数据文件;
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
三.概要设计
1.功能模块图
退
图1系统总体结构图
2.各个模块详细的功能描述
本程序能输入最多1000个机票信息,管理员在保存功能中通过密码验证输入机票信息,可以对机票信息进行查询;修改;删除等功能。
一般用户可以使用订票;显示;退票等功能,在订票时用户输入密码在退票时通过验证后成功退票。
具体功能如下:
第一部分:
保存模块1机票信息录入;2查询所有机票;3修改机票信息;4删除机票信息
有机票信息的管理,对机票信息输入,查询,修改,删除。
第二部分:
订票模块:
当有机票信息后可以订票,订票时输入航班号(进入时有可以查询所有机票信息)出现航班信息,确定订票后输入个人信息:
姓名,性别,证件号,联系电话,密码(退票时用)。
出现您的个人信息,确定后回车订票结束。
第三部分:
显示模块:
1全部;2航班号;3出发地;4目的地
按上述方式查看机票信息
第四部分:
退票模块:
(可以选择查看航班信息)证件号(或姓名)
当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,当密码正确时会显示您的个人信息,回车再是否确定退票。
第五部分:
查询模块:
(输入管理密码)输入航班号,显示航班信息和所有乘客个人信息
四.详细设计
1.各功能函数的数据流程图
(1)该模块包括密码的输入并验证,修改密码。
算法如下:
密码模块函数voidcheckcode()流程图
(2)机票信息录入voidinputinfo()流程图
(3)订票系统voidbookticket()流程图
在有航班信息的情况下可以进行订票操作
(4)显示模块voiddisplay()流程图
(5)退票系统voidreturnticket()流程图
2.重点设计及编码
3.1程序的模块
(1)保存模块:
含有机票信息的管理,对机票信息输入,查询,修改,删除。
(2)订票模块:
当有机票信息后可以订票,订票时输入航班号(进入时有可以查询所有机票信息)出现航班信息,确定订票后输入个人信息:
姓名,性别,证件号,联系电话,密码(退票时用)。
出现您的个人信息,确定后回车订票结束。
(3)显示模块:
含全部;航班号;出发地;目的地等方式查询所有机票信息。
(4)退票模块:
当输入姓名或证件号后会显示您定的航班信息,再要求输入密码,当密码正确时会显示您的个人信息,回车再是否确定退票。
(5)查询模块:
(输入管理密码)输入航班号,显示航班信息和所有乘客个人信息
3.2结构体
structtravellerinfo//旅客信息结构
{
charfightnum[10];//航班号
charname[10];//姓名
charsex[5];//性别
charidnum[20];//证件号码
charpassword[10];//密码
charpoto[12];//联系电话
};
structfightinfo//机票信息结构体
{
charfightnum[10];//航班号
charstart[8];//出发地
chardestination[8];//目的地
unsignedintprice;//价格
unsignedintgoyear;//出发时间年
unsignedintgomoth;//月
unsignedintgoday;//日
unsignedintgohour;//时
unsignedintgominute;//分
unsignedintarryear;//到达时间年
unsignedintarrmoth;//月
unsignedintarrday;//日
unsignedintarrhour;//时
unsignedintarrminute;//分
unsignedintrebate;//折扣
unsignedintallsticket;//总票数
unsignedintsurplusticket;//剩余票数
};
structallfightinfo//机票全部结构
{
structtravellerinfofight;//旅客信息结构
structfightinfofight1;//机票信息结构体
};
3.3文件的定义
FILE*travellerfile=NULL;//存旅客信息数据文件
FILE*fightfile=NULL;//存机票信息数据文件
charfilename[]="旅客信息信息登记.dat";//记录旅客信息登记
charfilename1[]="机票信息.dat";//记录机票信息
五.使用说明
1.主界面
1、程序欢迎界面(对系统的说明,及程序分组名单)停留3s
5-1
2、程序主界面(按数字1---5再回车)进入其他功能
5-2
2.机票信息管理(保存)
1、输入密码(第一次设置密码1234)机票信息管理
5-3
2、选1进入机票信息录入
5-4
3、选2查询所有航班信息
5-5
4、选3修改航班信息,确定后进入查询所有航班
5-6
5、输入航班号显示航班信息要求输入修改信息
5-7
6、删除请谨慎,全部删除会删除所有文件
5-8
3.订票系统使用
1、定票时查询所有的航班信息
5-8
2、输入正确的航班号
5-9
3、订票时输入个人信息
5-10
4.退票系统
1、进入退票系统是否查询所有机票信息
5-11
2、选择输入信息输入的方式并输入
5-12
3、退票时的信息显示然后确定
5-13
六.调试情况,设计技巧及体会
1、调试情况
在订票系统中我们发现,在订票时我们的把机票信息中的剩余票数要减少一个,而在退票时我们的把剩余票数加以个,由于在文件的定义时不好把机票信息文件和旅客信息文件放一起,所以在修改机票剩余票数的是侯的打开两个文件然后得对两个文件进行修改。
在保存模块需要把机票的信息录入进去,所以有很多部分都得写,像机票信息的录入,修改,删除,这样一来就像是写一个机票信息管理系统一样,这样一来导致这个文件会很大,很繁琐。
但是还好c语言是面向过程的导致很多的程序代码重复,这样就在写好一部分代码以后就可以进行复制,然后进行修改就行,总体来说工作量还不是很大。
2.对设计及调试过程的心得体会:
通过本次课程设计,发现平时在数据结构学习中的不足:
基础知识不够扎实;对某些函数的作用了解的不清,导致在做设计时,不知该怎么运用;做题时思路不清晰,那道题总是想着怎么写代码,没有真正从宏观的角度分析问题,不能把握大局,好好的去设计程序。
说句实话,我觉得本次课程设计的题目对我来说有些勉强,刚开始可以说是毫无头绪,查了很多资料,采取的一些小的进展,幸幸苦苦把程序分析出来,还没来得及高兴,又遇上了作程序框图,然后在网上找了很久的作图软件,摸索着做出了几张图,感觉还是不满意,以后在学习中多多练习,多实践。
从这次课程设计真的学到了很多,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时也感觉到自己专业知识掌握的不够,在设计中走了很多弯路,刚开始是根本无从下手,不知道要干嘛,如果平时课余时间多加强对这些专业知识的学习,那么在这次课程设计中将会少走很多的弯路。
虽然我的设计报告并不是很完美,但是是我努力的结果,还是很欣慰的。
七.参考文献
[1]杨文君,杨柳.C语言程序设计教程[M].清华大学出版社.2010.03
[2]谭浩强.C语言程序设计教程[M].清华大学出版社.2005.07
[3]谭浩强.C程序设计教程.北京:
清华大学出版社.2007.07
[4]王岳斌等编著.C程序设计案例教程.北京:
清华大学出版社.2006.10
八.附录:
源代码
#include
#include
#include
#include
#include
#include
#defineflightMAX1000
voidinputinfo(structallflightinfo*);//机票信息录入
voidfilename1read(structallflightinfo*);//旅客信息信息读取
voidallabout(structallflightinfo*);//查询所有信息
voidmofinfo(structallflightinfo*);//修改机票信息
voidpassword();//密码验证
intcheckcode();//身份验证
voidmodifycode();//修改登陆密码
voiddelinfo(structallflightinfo*);//删除
voidflightcontrol(structallflightinfo*);//机票管理模块
voidbookticket(structallflightinfo*p_flight);//订票系统
voiddisplay(structallflightinfo*p_flight);//显示模块
voidreturnticket(structallflightinfo*p_flight);//退票
voidenquiry(structallflightinfo*p_flight);//查询模块
voidwelcome();//欢迎
intsubmeun();
structtravellerinfo//旅客信息结构
{
charflightnum[10];//航班号
charname[10];//姓名
charsex[5];//性别
charidnum[20];//证件号码
charpassword[10];//密码
charpoto[12];//联系电话
};
structflightinfo//机票信息结构体
{
charflightnum[10];//航班号
charstart[8];//出发地
chardestination[8];//目的地
unsignedintprice;//价格
unsignedintgoyear;//出发时间年
unsignedintgomoth;//月
unsignedintgoday;//日
unsignedintgohour;//时
unsignedintgominute;//分
unsignedintarryear;//到达时间年
unsignedintarrmoth;//月
unsignedintarrday;//日
unsignedintarrhour;//时
unsignedintarrminute;//分
unsignedintrebate;//折扣
unsignedintallsticket;//总票数
unsignedintsurplusticket;//剩余票数
};
structallflightinfo//机票全部结构
{
structtravellerinfoflight;//旅客信息结构
structflightinfoflight1;//机票信息结构体
};
typedefstructorderInfo
{
charflightnum[10];
intid;
};
FILE*travellerfile=NULL;//存旅客信息数据文件
FILE*flightfile=NULL;//存机票信息数据文件
charfilename[]="旅客信息信息登记.dat";//记录旅客信息登记
charfilename1[]="机票信息.dat";//记录机票信息
intmain()
{
SetConsoleTitle("飞机订票系统");
intin;
time_tstart,end;
structallflightinfoflightmax[flightMAX];//最大机票数
structallflightinfo*p_flight;//指向结构指针
p_flight=flightmax;
welcome();
system("cls");
do
{
system("cls");
in=submeun();
switch(in)
{
case1:
bookticket(p_flight);//订票
break;
case2:
display(p_flight);//显示
break;
case3:
returnticket(p_flight);//退票
break;
case4:
enquiry(p_flight);//查询
break;
case5:
flightcontrol(p_flight);//修改
break;
case6:
system("cls");
printf("\n\n\n\n\n\n\t\t\t\t暂时没有此模块!
");//systemhelp();//帮助
getch();break;
case7:
break;
}
}while(in!
=7);
printf("\n\n\n\t\t\t感谢使用本系统!
!
");
start=time(NULL);
end=time(NULL);
while(end-start<1.5)
end=time(NULL);
return0;
}
/***********************显示子菜单*************************/
intsubmeun()
{
intin;
charch;
system("cls");
system("color07");
printf("\a\n\t\t★---您好,欢迎进入中国民航飞机订票系统!
---★\n");
printf("\n\n\n");
printf("\t\t╭----------------------------------------------╮\n");
printf("\t\t| 飞机订票系统 |\n");
printf("\t\t|----------------------------------------------|\n");
printf("\t\t| 1.订票 |\n");
printf("\t\t| |\n");
printf("\t\t| 2.显示 |\n");
printf("\t\t| |\n");
printf("\t\t| 3.退票 |\n");
printf("\t\t| |\n");
printf("\t\t| 4.查询 |\n");
printf("\t\t| |\n");
printf("\t\t| 5.录票 |\n");
printf("\t\t| |\n");
printf("\t\t| 6.帮助 |\n");
printf("\t\t| |\n");
printf("\t\t| 7.退出系统 |\n");
printf("\t\t╰----------------------------------------------╯\n");
printf("\t\t请您正确选择:
");
while(scanf("%d",&in)!
=1||(!
(0 { while((ch=getchar())! ='\n') putchar(ch); } fflush(stdin); returnin; } voidwelcome() { time_tstart,end; system("color06"); printf("\n\n\n"); printf("\t\t\t欢迎使用飞机订票系统! "); start=time(NULL); end=time(NULL); while(end-start<1) end=time(NULL); } /*********************************查询模块*******************************/ voidenquiry(structallflightinfo*p_flight) { intcount,count1,i,in,j; charch,ch1; char*temp=NULL; password(); system("cls"); if((travellerfile=fopen(filename,"r"))==NULL) { printf("不能打开文件,请确认磁盘已满或旅客信息.dat文件没有损坏"); getch(); exit (1); } rewind(travellerfile);//定位文件头开始读取 for(count1=0;fread(&p_flight[count1].flight,sizeof(structtravellerinfo),1,travellerfile)==1;count1++) continue; fclose(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_flight[count].flight1,sizeof(structflightinfo),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("\n\n\t★请输入你查询的航班号: "); while(gets(temp)! =NULL&&temp[0]! ='\0') { system("cls"); for(i=0;i { if(! strcmp(temp,p_flight[i].flight1.flightnum)) { printf("\n\t\t\t*★*您要找的航班信息*★\n"); printf("航班号|出发地|目的地|价格|发月-日|时-分|到月-日|时-分|折扣|总票|余票\n"); printf("*********★**★*********************★************************★**★*********\n"); printf("%10s|%6s|%6s|%4d|%2d-%2d|%2d: %2d||",p_flight[i].flight1.flightnum,p_flight[i].flight1.start,p_flight[i].flight1.destination,p_flight[i].flight1.price,p_flight[i].flight1.gomoth,p_flight[i].flight1.goday,p_flight[i].flight1.gohour,p_flight[i].flight1.gominute); printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 飞机 订票 系统