完整word版飞机订票系统.docx
《完整word版飞机订票系统.docx》由会员分享,可在线阅读,更多相关《完整word版飞机订票系统.docx(15页珍藏版)》请在冰豆网上搜索。
完整word版飞机订票系统
课程设计任务书
设计题目
飞机订票系统
学生姓名
所在院部
计算机科学与信息工程学院
专业、班级
设计要求:
设计一个飞机订票系统,具体要求如下:
1。
航班信息(包括航班号,起点站,终点站,机票数等)
2.航班信息浏览
3。
按航班号排序
4。
查询航线:
按航班号查询
5。
承办订票和退票业务
7.保存到文件
8.退出
学生应完成的工作:
1.学生应认真学习参考程序,理解每个文件、每个函数以及各个变量的作用和意义.在此基础上进一步改进程序,最后正确地运行程序。
2.对程序进行测试,设计详细的测试计划,然后根据测试计划设计测试用例,对程序进行测试。
测试时应注意对各种边缘情况进行测试。
3.完成课程设计报告。
参考文献:
1。
梁旭等C程序设计课程设计电子工业出版社2011
2.谭浩强C程序设计(第四版)清华大学出版社2010
工作计划:
1。
小组审题,查阅资料,进行设计前的必要资料准备(3天).
2.把程序完整运行出来(4天)。
3。
增加改进程序(3天)。
4。
写课程设计报告(3天)。
5.提交课程设计报告及答辩(1天)
任务下达日期:
2013年6月10日
任务完成日期:
2013年6月23日
指导教师(签名):
学生(签名):
飞机订票系统
1前言
编写一个程序来完成航班订票.通过程序来完成航班信息录入功能(航班信息用文件保存),其中包括航班号、起始站、重点站、机票数等;航班信息浏览功能;按航班号排序;查询航线:
按航班号查询;承办订票和退票业务。
2需求分析
2.1要求
(1)用C语言实现程序设计;
(2)利用结构体、共用体进行相关信息处理;
(3)画出查询模块的流程图;
(4)系统的各个功能模块要求用函数的形式实现;
(5)界面友好(良好的人机互交),程序要有注释。
2。
2任务
(1)定义一个结构体类型数组,包括航班号,起点站,终点站,机票数等;
(2)输入航班号进行查询;
(3)画出部分模块的流程图;
(4)编写代码;
(5)程序分析与调试。
2。
3运行环境
(1)WINDOWS2000/XP系统
(2)C++6.0编译环境
2。
4开发工具
C语言
3概要设计
3。
1系统流程图
飞机
订票
系统
系统
初始化
增加
航班
信息
航班
信息
浏览
航班
排序
订票
业务
退票
业务
建立
新数据
文件
从已有的数据文件读取
按航班号从小到大排序
按航班号从大到小排序
查找
航班
信息
按
航班号查找
退出并保存
3.2查询函数流程图
数据文件
是否存在
输入航班信息并建立新数据文件保存下来
从已有的数据文件读取已有的航班信息
Y
初始化
结束
N
4详细设计
在程序的开头部分定义了结构替类型,用来存放按钮信息
通过这些为形成整个界面提供了大的前提.
structairline*start;
structairlineair[MAXSIZE]={
{”beijing”,”1”,"B8571","SUN”,3,1},
{"shanghai”,"2”,”S1002",”MON",2,5},
{”london”,"3”,"L1003","FRI”,1,3}
};;
voiddisplay(structairline*info)
{
printf("%8s\t%3s\t%s\t%4s\t\%d\t\%d\t\n”,info-〉ter_name,info->air_num,info—〉plane_num,info-〉date,info—〉tkt_amt,info->tkt_sur);
}
/*浏览航线信息函数*/
voidlist()
{
structairline*info;
inti=0;
info=start;
printf("终点站名\t航班号\t飞机号\t飞行日期””乘员定额"”余票量\n”);
while(i〈MAXSIZE){
display(info);
info++;
i++;
}
printf("\n\n");
}
voidsearch()
{
structairline*info,*find();
charname[10];
inti=0;
info=start;
printf(”请输入终点站名:
”);
scanf(”%s",name);
while(i〈MAXSIZE)
{
if(!
strcmp(name,info—〉ter_name))break;
info++;
i++;
}
if(i〉=MAXSIZE)
printf("对不起,该航线未找到!
\n”);
else
{
printf("终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n”);
display(info);
}
}
structairline*find()
{
structairline*info;
charnumber[10];
inti=0;
info=start;
printf("请输入航班号:
");
scanf("%s",number);
while(i{
if(!
strcmp(number,info-〉air_num))returninfo;
info++;
i++;
}
printf(”对不起,该航线末找到!
\n");
returnNULL;
}
/*浏览已订票客户信息*/
voidprtlink()
{
linklist*p;
structairline*info;
info=find();
p=info-〉order;
if(p!
=NULL){
printf("客户姓名订票数额舱位等级\n”);
while(p){
printf("%s\t\t%d\t%d\n",p->name,p—>ord_amt,p-〉grade);
p=p—〉next;
}
}
else
printf(”该航线没有客户信息!
!
\n");
}
linklist*insertlink(linklist*head,intamount,charname[],intgrade)
{linklist*p1,*new1;
p1=head;
new1=(linklist*)malloc(sizeof(linklist));
if(!
new1){printf(”\nOutofmemory!
!
\n");returnNULL;}
strcpy(new1—>name,name);
new1—〉ord_amt=amount;
new1-〉grade=grade;
new1->next=NULL;
if(head==NULL)
{head=new1;new1—>next=NULL;}
else
head=new1;
new1-〉next=p1;
returnhead;
}
linkqueueappendqueue(linkqueueq,charname[],intamount)
{qptrnew1;
new1=(qptr)malloc(sizeof(qnode));
strcpy(new1-〉name,name);
new1—>req_amt=amount;
new1—>next=NULL;
if(q.front==NULL)
q。
front=new1;
else
q.rear->next=new1;
q。
rear=new1;
returnq;
}
voidorder()
{structairline*info;
intamount,grade;
charname[10];
info=start;
if(!
(info=find()))return;
printf(”请输入你订票所需要的数量:
");
scanf(”%d”,&amount);
if(amount>info-〉tkt_amt)
{printf("\n对不起,您输入的票的数量已经超过乘员定额!
");
return;
}
if(amount〈=info->tkt_sur)
{
inti;
printf("请输入您的姓名(订票客户):
");
scanf("%s",name);
printf(”请输入%s票的舱位等级:
",name);
scanf("%d”,&grade);
info-〉order=insertlink(info—〉order,amount,name,grade);
for(i=0;iprintf(”%s的座位号是:
%d\n",name,info—>tkt_amt-info->tkt_sur+i+1);
info-〉tkt_sur—=amount;
printf("\n祝您乘坐愉快!
\n");
}
else
{charr;
printf(”\n已经没有更多的票,您需要排队等候吗?
(Y/N)”);
//r=getch();
//printf(”%c”,r);
scanf("回车继续等待%c”,&r);
if(r==’Y’||r==’y’)
{printf("\n请输入您的姓名(排队订票客户):
");
scanf(”%s”,name);
info->wait=appendqueue(info—〉wait,name,amount);
printf("\n注册成功!
\n”);
}
elseprintf("\n欢迎您下次再次订购!
\n");
}
}
voidreturn_tkt()
{structairline*info;
qnode*t,*back,*f,*r;
intgrade;
linklist*p1,*p2,*head;
charcusname[10];
if(!
(info=find()))return;
head=info—>order;
p1=head;
printf("请输入你的姓名(退票客户):
");
scanf("%s”,cusname);
while(p1!
=NULL){
if(!
strcmp(cusname,p1—>name))break;
p2=p1;p1=p1-〉next;
}
if(p1==NULL){printf("对不起,你没有订过票!
\n”);return;}
else
{
if(p1==head)head=p1—〉next;
elsep2->next=p1->next;
info—>tkt_sur+=p1—〉ord_amt;
grade=p1—〉grade;
printf("%s成功退票!
\n”,p1—>name);
free(p1);
}
info->order=head;
f=(info—〉wait)。
front;
r=(info—>wait)。
rear;
t=f;
while(t)
{
if((info-〉tkt_sur=info—>wait。
front—>req_amt))
{
inti;
info-〉wait.front=t->next;
printf(”%s订票成功!
\n",t—>name);
for(i=0;i〈t—>req_amt;i++)
printf(”%s的座位号是:
%d\n”,t->name,(info—>tkt_sur)-i);
info—〉tkt_sur-=t—>req_amt;
info—>order=insertlink(info—〉order,t—〉req_amt,t—>name,grade);
free(t);
break;
}
back=t;t=t->next;
if((info—〉tkt_sur)〉=(t—>req_amt)&&t!
=NULL)
{inti;
back->next=t—〉next;
printf("%s订票成功!
\n”,t—>name);
for(i=0;iprintf(”<%s>’sseatnumberis:
%d\n”,t->name,(info—〉tkt_sur)-i);
info—>tkt_sur—=t—>req_amt;
info—〉order=insertlink(info->order,t—〉req_amt,t—〉name,grade);
free(t);break;
}
if(f==r)break;
}
}
voidsort_tkt()
{
intj;
structairlinet,*info,*p,*q;
p=info=air;
for(p=info;(p+1)—〉tkt_sur;p++)
for(q=p+1;q-〉tkt_sur;q++)
{
if(p—>tkt_sur〈q->tkt_sur)
{
t=*p;
*p=*q;
*q=t;
}
}
printf("终点站名\t航班号\t飞机号\t飞行日期\t乘员定额\t余票量\n");
for(j=0;j〈MAXSIZE;j++)
{
display(info);
info++;
}
}
intmenu_select()
{
intc;
chars[20];
printf(”\n\t\t航空客运订票系统(byzjhxmjl)\n");
printf("******************************************\n");
printf(”**1。
浏览航线信息**\n");
printf("**2。
浏览已订票客户信息**\n");
printf("**3。
查询航线**\n");
printf(”**4.办理订票业务**\n");
printf("**5.办理退票业务**\n”);
printf(”**6。
查看剩余票数并排序**\n");
printf(”**0。
退出系统**\n”);
printf(”*******************************************\n");
do
{
printf("请选择:
”);
scanf("%s”,s);
c=atoi(s);/*atoi将字符串转换为整型*/
}while(c〈0||c>7);
returnc;
}
intmain()
{
start=air;
for(;;)
{
switch(menu_select())
{
case1:
list();break;
case2:
prtlink();break;
case3:
search();break;
case4:
order();break;
case5:
return_tkt();break;
case6:
sort_tkt();break;
case0:
printf("\n欢迎使用本系统,再见!
\n");exit(0);
}
printf(”\nPressanykeytocontinue!
\n”);
getchar();
}
return0;
}
通过调用上面定义的函数实现了飞机订票整个功能.
5改进或增加功能模块说明
6程序测试
(1).测试系统能否正确显示菜单选项
执行程序后,显示本系统的菜单选项界面,如图6-1所示.
图6—1飞机订票系统主界面
(2).测试系统能否正确显示机票信息
输入如下数据:
终点站名航班号飞机号飞行日期成员定额余票量
Beijing1B8571SUN31
Shanghai2S1002MON25
London3L1003FRI13
进入主菜单界面后,输入数字1进入浏览航线信息,根据提示输入你要进行的操作的序号,就能完成你要进行的操作。
图6—2输入浏览航线信息界面
7课程设计总结
本程序在刚开始调试时有许多错误,但在我的努力及同学的帮助下都被一一克服,现在在操作本程序时,可根据提示运行本程序,得到结果。
8参考文献
[1]张福祥.C语言程序设计[M]。
辽宁大学出版社,2008。
1
[2]张福祥,王萌.C语言程序设计习题解答与实验实训[M].沈阳:
辽宁大学出版社,2008.
[3]牛莉,刘远军等.计算机等级考试辅导教程[M].北京:
中国铁道出版社,2008.
9致谢