数据结构课程设计飞机订票系统Word下载.docx
《数据结构课程设计飞机订票系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计飞机订票系统Word下载.docx(61页珍藏版)》请在冰豆网上搜索。
第二部分:
订票模块:
当有机票信息后可以订票,订票时输入航班号(进入时有可以查询所有机票信息)出现航班信息,确定订票后输入个人信息:
姓名,性别,证件号,联系电话,密码(退票时用)。
出现您的个人信息,确定后回车订票结束。
第三部分:
显示模块:
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//机票信息结构体
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、定票时查询所有的航班信息
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<
stdio.h>
stdlib.h>
string.h>
conio.h>
windows.h>
time.h>
#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();
charflightnum[10];
structflightinfo//机票信息结构体
structallflightinfo//机票全部结构
structtravellerinfoflight;
structflightinfoflight1;
typedefstructorderInfo
charflightnum[10];
intid;
FILE*flightfile=NULL;
intmain()
SetConsoleTitle("
飞机订票系统"
);
intin;
time_tstart,end;
structallflightinfoflightmax[flightMAX];
//最大机票数
structallflightinfo*p_flight;
//指向结构指针
p_flight=flightmax;
welcome();
system("
cls"
do
{
system("
in=submeun();
switch(in)
{
case1:
bookticket(p_flight);
//订票
break;
case2:
display(p_flight);
//显示
case3:
returnticket(p_flight);
case4:
enquiry(p_flight);
//查询
case5:
flightcontrol(p_flight);
//修改
case6:
system("
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()
charch;
color07"
\a\n\t\t★---您好,欢迎进入中国民航飞机订票系统!
---★\n"
\n\n\n"
\t\t╭----------------------------------------------╮\n"
\t\t| 飞机订票系统 |\n"
\t\t|----------------------------------------------|\n"
\t\t| 1.订票 |\n"
\t\t| |\n"
\t\t| 2.显示 |\n"
\t\t| 3.退票 |\n"
\t\t| 4.查询 |\n"
\t\t| 5.录票 |\n"
\t\t| 6.帮助 |\n"
\t\t| 7.退出系统 |\n"
\t\t╰----------------------------------------------╯\n"
\t\t请您正确选择:
while(scanf("
%d"
&
in)!
=1||(!
(0<
in&
&
in<
8)))
while((ch=getchar())!
='
\n'
)
putchar(ch);
}
fflush(stdin);
returnin;
voidwelcome()
color06"
\t\t\t欢迎使用飞机订票系统!
1)
/*********************************查询模块*******************************/
voidenquiry(structallflightinfo*p_flight)
intcount,count1,i,in,j;
charch,ch1;
char*temp=NULL;
password();
if((travellerfile=fopen(filename,"
r"
))==NULL)
不能打开文件,请确认磁盘已满或旅客信息.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();
return;
//返回重新操作
if((flightfile=fopen(filename1,"
不能打开文件,请确认磁盘已满或机票信息.dat文件没有损坏"
exit
(1);
rewind(flightfile);
for(count=0;
p_flight[count].flight1,sizeof(structflightinfo),1,flightfile)==1;
count++)
fclose(flightfile);
//读完后关闭文件
count)
temp=(char*)malloc(20*sizeof(char));
//分配内存
\n\n\t★请输入你查询的航班号:
while(gets(temp)!
=NULL&
temp[0]!
\0'
for(i=0;
i<
count;
i++)
if(!
strcmp(temp,p_flight[i].flight1.flightnum))
{
printf("
\n\t\t\t*★*您要找的航班信息*★\n"
航班号|出发地|目的地|价格|发月-日|时-分|到月-日|时-分|折扣|总票|余票\n"
*********★**★*********************★************************★**★*********\n"
%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(