航空订票系统课程设计Word文档格式.docx
《航空订票系统课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《航空订票系统课程设计Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
charid[20];
//身份证号
intcount;
//数量
charp[20];
//航班号
}GUEST;
charnum[20];
chardepart[30];
//出发城市
chararrive[30];
//到达城市
charstart[20];
//起飞时间
charend[20];
//到达时间
intprice;
//价格
intdiscount;
//折扣率(%)
inttotal;
//总票数
intrest;
//剩余票数
intt;
//订单数
GUESTguest[20];
//乘客
}PLANE;
PLANEplane[20];
intn;
//n为航班数
voidinputplane()//输入航班
voidlist()//显示
voidsearch1()//按航班号查询
voidsearch2()//按起飞抵达城市查询
voidbook()//订票
voidquit()//退票
voidchange()//修改
程序调用关系如下:
12345678
详细设计
#include<
stdio.h>
stdlib.h>
string.h>
voidinputplane(){//输入航班
inti;
printf("
输入总航班数:
"
);
scanf("
%d"
&
n);
输入航班信息:
\n"
航班号出发城市到达城市起飞时间到达时间价格折扣率总票数剩余票数\n"
for(i=0;
i<
n;
i++)
%s%s%s%s%s%d%d%d%d"
plane[i].num,plane[i].depart,plane[i].arrive,plane[i].start,plane[i].end,&
plane[i].price,&
plane[i].discount,&
plane[i].total,&
plane[i].rest);
}
voidlist(){//显示
printf("
%s%s%s%s\t%s\t%d%d\t%d\t%d\n"
plane[i].num,plane[i].depart,plane[i].arrive,plane[i].start,plane[i].end,plane[i].price,plane[i].discount,plane[i].total,plane[i].rest);
voidsearch1(){//按航班号查询
输入你查询的航班号:
%s"
num);
{
if(strcmp(num,plane[i].num)==0)
{
printf("
break;
}
}
if(i==n)
没有此航班!
voidsearch2(){//按起飞抵达城市查询
chara[50],b[50];
输入起飞城市和到达城市:
%s%s"
a,b);
if((strcmp(a,plane[i].depart)==0)&
&
(strcmp(b,plane[i].arrive)==0))
voidbook(){//订票
charname[20],p[20],id[20];
inti,j,k,y,count;
plane[i].t=0;
do
输入订单信息:
订单编号姓名身份证号订票数航班号\n"
scanf("
%d%s%s%d%s"
number,name,id,&
count,p);
for(i=0;
if(strcmp(p,plane[i].num)==0)
break;
if(i==n)
没有此航班\n"
else
{
if(plane[i].rest>
=count)
{
j=plane[i].t;
plane[i].guest[j].number=number;
strcpy(plane[i].guest[j].name,name);
strcpy(plane[i].guest[j].id,id);
plane[i].guest[j].count=count;
strcpy(plane[i].guest[j].p,p);
plane[i].rest-=count;
plane[i].t++;
}
else
printf("
很抱歉,该航班剩余票数为%d张\n"
plane[i].rest);
for(k=0;
k<
k++)
{
if((strcmp(plane[i].depart,plane[k].depart)==0)&
(strcmp(plane[i].depart,plane[k].depart)==0))
break;
}
if(k==n)
printf("
没有其他从%s到%s的航班\n"
plane[i].depart,plane[i].arrive);
else
从%s到%s还有%s航班\n\n"
plane[k].depart,plane[k].arrive,plane[k].num);
plane[k].num,plane[k].depart,plane[k].arrive,plane[k].start,plane[k].end,plane[k].price,plane[k].discount,plane[k].total,plane[k].rest);
}
是否继续订票,“是”输入1,“否”输入0\n"
y);
}while(y);
voidquit(){//退票
inti,j,temp,k,y;
temp=0;
请输入您的订单编号:
number);
请输入您的身份证:
id);
for(j=0;
j<
plane[i].t;
j++)
if(number==plane[i].guest[j].number&
(strcmp(id,plane[i].guest[j].id)==0))
temp=1;
break;
if(temp==1)
没有此订单!
else
%d"
plane[i].guest[j].number);
%s"
plane[i].guest[j].name);
plane[i].guest[j].id);
plane[i].guest[j].count);
%s\n"
plane[i].guest[j].p);
您是否确认删除(1/0)\n"
if(y==1)
plane[i].rest+=plane[i].guest[j].count;
for(k=j+1;
plane[i].guest[k-1].number=plane[i].guest[k].number;
strcpy(plane[i].guest[k-1].name,plane[i].guest[k].name);
strcpy(plane[i].guest[k-1].id,plane[i].guest[k].id);
plane[i].guest[k-1].count=plane[i].guest[k].count;
strcpy(plane[i].guest[k-1].p,plane[i].guest[k].p);
plane[i].t--;
退票成功!
!
{
chara[20];
请输入你要修改的航班号:
a);
if(strcmp(a,plane[i].num)==0)
原信息:
请输入修改后的信息:
voidmain()
{
inta,b;
{
system("
cls"
for(a=0;
a<
50;
a++)
*"
\t\t1:
输入航班信息\n"
\t\t2:
列出航班信息\n"
\t\t3:
按航班号查询航班信息\n"
\t\t4:
按出发到达城市查询航班信息\n"
\t\t5:
订票\n"
\t\t6:
退票\n"
\t\t7:
修改航班信息\n"
\t\t8:
退出程序\n"
请输入功能选项1-8):
b);
switch(b)
{
case1:
inputplane();
pause"
case2:
list();
system("
case3:
search1();
case4:
search2();
case5:
book();
case6:
quit();
case7:
change();
case8:
}
}while
(1);
调试分析
a.在做“退票”函数(即voidquit())时,系统总是显示没有此订票,最后发现没有跳出其中的一个这个双层for循环,现在通过调试,解决了这个问题。
b.调试后程序会自动判断输入的数字的有效性。
用户手册
(1)演示程序的运行环境为WindowsVista系统,MicrosoftVisualStudio6.0中的MicrosoftVisualC++6.0中运行。
执行文件为:
航空订票系统.exe
(2)进入演示程序后即显示DOS形式的界面:
(3)输入航班信息。
(4)由用户在菜单页面选择需要执行的功能,系统会显示相关信息
测试结果
(1)输入航班信息
(2)列出航班信息
(3)按航班号查询航班信息
(4)按出发到达城市查询航班信息
(5)订票
显示退票后航班信息:
(6)退票
(7)修改:
修改后显示航班信息
对于特殊情况的处理
(1)输入不存在的航班号进行查询
(2)输入不存在的出发到达城市进行查询
(3)剩余票数不足
(4)修改时输入不存在的航班号