c课程设计航空订票系统.docx
《c课程设计航空订票系统.docx》由会员分享,可在线阅读,更多相关《c课程设计航空订票系统.docx(35页珍藏版)》请在冰豆网上搜索。
c课程设计航空订票系统
自己的课程设计-航空订票系统(已重新编辑)
这个是上学期数据结构的课程设计特提供出来供编程初学者参考
重要说明:
本程序的由我跟我的另两个搭档完成主要代码由本人网名帅得不敢出门完成美化部分是网上找的只供交流用请匆当作自己的课程设计应付了事谢谢!
把实验报告的大部分都传上来了希望能让大家看的更明了
一.课程设计目的
通过一周的课程设计,我们小组了解并掌握数据结构与算法的设计方法,具备了初步的独立分析和设计能力和初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
在整个设计过程中,我们小组的成员们互相帮助,不理解代码的多向知道的人提问,最后使每个人都理解和掌握代码,提高了自己综合运用所学的理论知识和方法独立分析和解决问题的能力,训练用系统的观点和软件开发一般规范进行软件开发,为进一步的应用开发打好基础。
二.问题描述:
:
(1)录入:
可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
(2)查询:
可以查询某个航线的情况(如,输入航班号,查询起降时间,抵达城市,航班票价,确定航班是否满仓);
可以输入起飞抵达城市,查询飞机航班情况;
(3)订票:
(订票情况可以存在一个数据文件中,结构自己设定)
可以订票,如果该航班已经无票,可以提供相关可选择航班;
(4)退票:
可退票,退票后修改相关数据文件;
客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
(5)修改航班信息:
当航班信息改变可以修改航班数据文件
三.需求分析
该程序是一个航空订票系统的软件,为航空管理员提供方便,为旅客提供航空定票录入.查询.咨询.订票.退票.修改航班信息等功能。
此程序规定:
一:
输入订票数,座位号,乘员定额时需输入一个整型数据;输入飞机飞行周日里应该输入1到7的数;在选择功能时,应输入与所选功能对应的一个整型数据。
二:
程序的输出信息主要:
一):
启动界面。
二):
订票系统菜单主界面:
1.航线管理
2.订票办理
3.退票办理
4.乘客管理
5.系统离开
三):
航线管理信息包括:
1.航线增设
2.航线查看
3.航线修改
4.返回主菜单
四):
订票办理信息包括:
_转到定票界面
五):
退票办理信息包括:
_转到退票界面
六):
乘客管理信息包括:
_可以查询到乘客预定过的票的信息
七):
系统离开信息包括:
_结束此次的操作.
四.概要设计
(一):
系统用到的抽象数据类型定义:
实现函数的具体功能:
(引用结构数组来快速实现客户端订票,退票的功能。
先创建二结构数组,通过对添加和删除来使之实现上述功能)
1、Cover();{启动画面函数}
2、ModelMenu();{菜单模板函数}
3、MainMenu();{主菜单函数}
4、Continue();{是否继续函数}
5、ErrorMess();{操作出错函数}
6ExitSystem();{系统退出}
7prefix();{操作提示函数}
8save();{保存航班信息}
9read();{从文件读取航班信息模块}
10save2();{客户信息保存模块程序}
11read2();{从文件读取客户信息模块}
12Line_Add();{航线添加函数}
13Empty_Flight();{航线是否为空函数}
14Line_See();{航线查看函数}
15Line_Edit();{航线修改}
16Sub1Menu();{航线管理}
17Sub2Menu();{订票办理}
18Display_Reserve();{订票乘客信息}
19Sub3Menu();{退票操作}
20Sub4Menu();{乘客管理}
(二):
本系统要用到的库函数:
#include
#include
#include
#include
#include
(三):
本系统的结构体是:
structCustomer//已定票乘客信息
{
charName[20];//姓名
intAmount;//定票数
charbianhao[20];//证件号
charFlight_No[20];//航班号
charRank;//舱位等级
intSeat_No;//所订票座位号
//intSeat_End_No;//所订的票的最后一个座位号
charDes_Name[20];//终点站名
charPlane_No[20];//飞机号
intFist_Seat;//一人所订票的第一座位号
intLast_Seat;//一人所订票的最后一座位号
}c[N];
structFlight//航线信息
{
charDes_Name[20];//终点站名
charFlight_No[20];//航班号
charPlane_No[20];//飞机号
charWeek_Day;//飞行周日
intCustomer_Amount;//乘员定额
intFree_Amount;//剩余票数
floatPrice[3];//舱位等级的价格
}f[N];
五.详细设计
创建订算法的伪码描述如下:
#include
#include
#include
#include
#include
#include
usingnamespacestd;
#defineMAX50
#defineNULL0
#defineN100
#defineNULL0
inti=0;
intm=0;
intk=0;
intn=0;
intj=0;
intadd_m=0;
FILE*fp,*fp1;
structCustomer//已定票乘客信息
{
charName[20];//姓名
intAmount;//定票数
charbianhao[20];//证件号
charFlight_No[20];//航班号
charRank;//舱位等级
intSeat_No;//所订票座位号
//intSeat_End_No;//所订的票的最后一个座位号
charDes_Name[20];//终点站名
charPlane_No[20];//飞机号
intFist_Seat;//一人所订票的第一座位号
intLast_Seat;//一人所订票的最后一座位号
}c[N];
structFlight//航线信息
{
charDes_Name[20];//终点站名
charFlight_No[20];//航班号
charPlane_No[20];//飞机号
charWeek_Day;//飞行周日
intCustomer_Amount;//乘员定额
intFree_Amount;//剩余票数
floatPrice[3];//舱位等级的价格
}f[N];
intCustomer_Count=0;//所有航线的定票乘客总数
intIsEmpty=1;//是否有定票乘客当其值等于0时有
intFlight_Count=0;//航班总数
#include"head.h"
//-------启动画面函数----------
voidCover()
{
charline[]={"程序读取中 请耐心等待..."};
charbar[]={"...."};
inti,j,k=0,x=0,y=0;
for(i=1;i<=strlen(line)/2;)
{
system("cls");
for(j=0;j<9;j)//改变行坐标
cout<for(j=0;j<(75-strlen(line))/2;j)//改变列坐标
cout<<"";
for(j=1;j<=i;j)//进度显示器
cout<<"■";
for(x=strlen(line)/2;x>i;x--)
cout<<"□";
if(k==4)
i;
cout<for(j=0;j<(75-strlen(line))/2;j)//行坐标定位
cout<<"";
cout<cout<for(j=0;j<(65-strlen(bar))/2;j)
cout<<"";
cout<<(i-1)*10<<"%Loading";
cout.write(bar,k);
cout<for(j=0;j<10;j)
cout<for(j=0;j<24;j)
cout<<"";
cout<<"程序设计:
05计本一班曾鸣 李展 赖梁琳"<for(j=0;j<24;j)
cout<<"";
for(j=0;j<=18;j)
cout<<"─";
cout<for(j=0;j<10000000;j);//延时效果
k;
if(k>4)
k=0;
}
}
//---------------菜单模板函数---------------
charModelMenu(char*s[],intItemcount)
{
inti;
charanswer;
system("cls");
cout<<"\n\n";
cout<<"\t\t\t┌──────────────┐"<cout<<"\t\t\t"<
cout<<"\t\t\t├──────────────┤"<cout<<"\t\t\t│ │"<cout<<"\t\t\t│ ┌──────────┐ │"<for(i=1;i{
cout<<"\t\t\t"<
if(i1!
=Itemcount)
cout<<"\t\t\t│ ├──────────┤ │"<}
cout<<"\t\t\t│ └──────────┘ │"<cout<<"\t\t\t└──────────────┘"<cout<<"\t\t\t请输入菜单项前的操作代码:
";
cin>>answer;
returnanswer;
}
//---------------主菜单函数---------------
charMainMenu()
{
char*MenuItem[]={"│ 航空客运订票系统菜单 │","│ │[1].航线管理│ │",\
"│ │[2].订票办理│ │","│ │[3].退票办理│ │","│ │[4].乘客管理│ │",\
"│ │[5].系统离开│ │"};
returnModelMenu(MenuItem,6);
}
//---------------是否继续函数---------------
charContinue()
{
inti;
charanswer;
while
(1)
{
cout<<"\n\t\t";
for(i=0;i<15;i)
cout<<"─";
cout<<"\n\t\t\t是否继续(Y/N)?
";
cin>>answer;
if(answer=='y'||answer=='Y')
return'y';
elseif(answer=='n'||answer=='N')
return'n';
else
cout<<"\t\t\t输入错误,请重新输入!
"<}
}
//---------------操作出错函数---------------
voidErrorMess()
{
cout<<"\n\t\t\t对不起,没有相关菜单项,按任意键继续..."<getch();
}
//-----------------系统退出-----------------
intExitSystem()
{
charanswer;
cout<<"\n\t\t\t你确定是否真要离开系统吗(Y/N)?
";
cin>>answer;
if(answer=='y'||answer=='Y')
{
charline[]={"友情提示 不要熬夜 请注意休息..."};
charbar[]={"...."};
inti,j,k=0,x=0,y=0;
for(i=1;i<=strlen(line)/2;)
{
system("cls");
for(j=0;j<9;j)//改变行坐标
cout<for(j=0;j<(75-strlen(line))/2;j)//改变列坐标
cout<<"";
for(j=1;j<=i;j)//进度显示器
cout<<"■";
for(x=strlen(line)/2;x>i;x--)
cout<<"□";
if(k==4)
i;
cout<for(j=0;j<(75-strlen(line))/2;j)//行坐标定位
cout<<"";
cout<cout<for(j=0;j<(65-strlen(bar))/2;j)
cout<<"";
cout<<(i-1)*10<<"%Loading";
cout.write(bar,k);
cout<for(j=0;j<10;j)
cout<for(j=0;j<24;j)
cout<<"";
cout<<"XXXXXXXX这里的真实姓名就不说了"<for(j=0;j<24;j)
cout<<"";
for(j=0;j<=16;j)
cout<<"─";
cout<for(j=0;j<10000000;j);//延时效果
k;
if(k>4)
k=0;
}
return1;}
//return1;
else
return0;
}
//--------------操作提示函数-------------
voidprefix(char*Item)
{
inti;
system("cls");
cout<<"\n\n\t\t\t当前操作:
"<cout<<"\n\t\t";
for(i=0;i<15;i)
cout<<"─";
cout<}
voidsave()//保存航班信息
{
FILE*fp,*fp1;//定义文件指针
if((fp=fopen("flight.text","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!
\n\n");//打印出错提示
getchar();
return;
}
if((fp1=fopen("m.text","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!
\n\n");//打印出错提示
getchar();
return;
}
for(i=0;iif(fwrite(&f,sizeof(structFlight),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!
\n\n");
if(add_m)m=Flight_Count;
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
//从文件读取航班信息模块
voidread()
{
FILE*fp,*fp1;//定义文件指针
if((fp=fopen("flight.text","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在");//打印出错提示
getchar();
}
if((fp1=fopen("m.text","rb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败按任意键返回住菜单\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i{
fread(&f,sizeof(structFlight),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
//客户信息保存模块程序
voidsave2()
{
FILE*fp3,*fp4;//定义文件指针
if((fp3=fopen("customer.text","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!
\n\n");//打印出错提示
getchar();
return;
}
if((fp4=fopen("n.text","wb"))==NULL)//打开文件并判断是否出错
{
printf("创建文件失败!
\n\n");//打印出错提示
getchar();
return;
}
for(j=0;jif(fwrite(&c[j],sizeof(structCustomer),1,fp3)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!
\n\n");
fprintf(fp4,"%d",n);
fclose(fp3);//关闭文件
fclose(fp4);//关闭文件
}
//从文件读取客户信息模块
voidread2()
{
FILE*fp3,*fp4;//定义文件指针
if((fp3=fopen("customer.text","rb"))==NULL)//打开文件,并判断是否出错
{
printf("出错,请检查文件是否存在");//打印出错提示
getchar();
}
if((fp4=fopen("n.text","rb"))==NULL)//打开文件并判断是否出错
{
printf("打开文件失败按任意键返回住菜单\n\n");//打印出错提示
getchar();
return;
}
fscanf(fp4,"%d",&n);
fclose(fp4);//关闭文件
for(j=0;j{
fread(&c[j],sizeof(structCustomer),1,fp3);//从文件中读取信息
}
fclose(fp3);//关闭文件
}
//-----------------航线添加函数-------------
voidLine_Add()
{
intadd_m=1;
prefix("总航线情况");
cout<<"\t\t\t请输入要添加的航班总数:
";
cin>>m;
for(i=Flight_Count;i<(Flight_Countm);i)
{
cout<cout<<"\t\t----------------------------------"<cout<<"\t\t\t请输入终点站名:
";
cin>>f.Des_Name;
cout<<"\n\t\t\t请输入航班号(唯一):
";
cin>>f.Flight_No;
cout<<"\n\t\t\t请输入飞机号:
";
cin>>f.Plane_No;
while
(1)
{
cout<<"\n\t\t\t请输入飞行周日(1-7):
";
cin>>f.Week_Day;
if(f.Week_Day<'1'||f.Week_Day>'7')
{
cout<<"\n\t\t数据输入错误,按任意键继续输入."<getch();
}
else
break;
}
cout<<"\n\t\t\t请输入乘员定额:
";
cin>>f.Customer_Amount;
cout<<"\n\t\t\t请输入头等舱票价:
";
cin>>f.Price[0];
cout<<"\n\t\t\t请输入普通舱票价:
";
cin>>f.Price[1];
cout<<"\n\t\t\t请输入经济舱票价:
";
cin>>f.Price[2];
f.Free_Amount=f.Customer_Amount;//剩余票数与乘员定额相同
}
Flight_Count=m;
save();
if(Continue()=='n')
return;
}
//------------航线是否为空函数-------------
intEmpty_Flight()
{read();
if(m==0)
{cout<system("cls");
cout<<"\n\n\n\n\n\n\n\n\t\t对不起,没有相关航线。
按任意键返回..."<getch();
return1;
}
else
return0;
}
//------------航线查看函数-----------------
voidLine_See()
{
if(Empty_Flight())//航班线为空
return;
prefix("航班查看");
cout<<"┌────┬───┬───┬────┬────┬────┬────────┐"<cou