1、面向对象课程设计民航订票系统面向对象程序设计课程设计报告题目:民航订票系统班级:学号: 姓名:指导老师:时间:15-16周 / 2015年12月7日至2015年12月18日成绩等级:一、 需求分析设计一个民航订票系统,实现如下功能:(1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定);(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关提示信息;(4)退票
2、: 可退票,退票后修改相关数据文件;(5)客户资料:有姓名,证件号,订票数量及航班情况,订单要有编号;(6)修改航班信息:当航班信息改变可以修改航班数据文件。二、对每个类的说明,包括数据成员、成员函数的含义与功能本程序中所用到的数据类型有:int ,chat,结构,指针数据结构有链表,其中链表的数据域是结构。结构等数据的定义如下:typedef struct Customer /已定票乘客信息 char Name7; /姓名 int Amount; /定票数 char Rank; /舱位等级 int Seat_No; /座位号 struct Customer *Next;Customer;ty
3、pedef struct Replace /替补乘客信息 char Name7; /姓名 int Amount; /定票数 char Rank; /舱位等级 char Seat_No; /座位号 struct Replace *Next;Replace,*PReplace; typedef struct Flight /航线信息 char Des_Name10; /终点站名 char Flight_No6; /航班号 char Plane_No6; /飞机号 char Week_Day; /飞行周日 int Customer_Amount; /乘员定额 int Free_Amount; /剩余
4、票数 float Price3; /舱位等级的价格 Replace *ReplName; /该航班的候补乘客名单 Customer *CustName; /该航班的已定票乘客名单 struct Flight *Next; /指示下一航线结点Flight,*PFlight;int Customer_Count=0; /所有航线的定票乘客总数Flight *Head; /航线头指针Flight *p2; /航线结点指针Customer *Custp1MAX; /各条航线乘客结点指针Replace *Replp1MAX; /各条航线候补结点指针int IsEmpty=1; /是否有定票乘客int I
5、sReplace=1; /是否有候补乘客Customer *prior; /满足要求的定票乘客的前结点,以作删除操作三、系统框架图四、调试分析 在调试过程中,由于没有做出界面而是在DOS环境下实现的,所以要想得到比较友好的DOS界面必须耐心地调整.。在密码登陆时,输入密码出现实心黑圆点也是通过循环语句多次慢慢调试出的。在分析实现时,首先想到的是用链表来存放记录,但每个记录包括的许多信息最好是存放在结构中,故选取以结构为链表信息域的数据结构来实现。改进之处:1用可视化做出界面,让程序实现起来更加好看。2用文件实现数据信息的存取,本题中可以通过改动来增加此项功能。3退票时,若乘客定的是多票,则出现
6、询问其退几张票。五、用户手册编绎连接得到EXE文件,运行程序,出现如下密码登陆界面(以lyh为密码)输入lyh,按下回车接着出现选取1,按下回车选取1,按下回车按提示输入并按回车,最后出现如下界面:按Y或y继续录入航班信息,输入N或n退回。输入Y继续输入一些信息.(;输入的航班号若不唯一则出现提示信息,并要求重新输入)输入N,回车,返回航线管理子菜单输入2,回车查看航线信息按下任意键返回航线管理子菜单输入3对航线进个修改;输入4返回主菜单,输入2,回车,进入订票办理界面如下:若输入的航班号有误,则出现如下提示界面:按下Y,继续按提示一步步输入,直到输入完毕,出现如下界面由于本人比较懒,所以没有
7、在订票人所定票数为所有时显示”包机” 0.0输入y,继续定票,输入N返回主菜单若余票不足,则出现如下界面:输入N出现是否退出“订票办理”的提示信息,输入Y出现:按提示,输入信息,直至出下如下界面:输入Y继续订票,输入N返回主菜单界面输入4,查看乘客信息,界面如下:输入1,回车按下任意键,返回乘客管理子菜单输入2,回车,查看候补乘客信息:按下任意键返回乘客管理子菜单输入3返回主菜单输入3,回车,进入退票办理界面按提示一步步输入(本系统只有“一退全光”的效果 -凡提示输入Y或N时不分大小写2在主菜单及子菜单界面时,若输入的菜单项不存在,则出现(以主界面为例)按下任意键返回主菜单界面,可以继续输入菜
8、单项六、附录#include #include #include #include #include #include #define MAX 50#define NULL 0typedef struct Customer /已定票乘客信息 char Name7; /姓名 int Amount; /定票数 char Rank; /舱位等级 int Seat_No; /座位号 struct Customer *Next;Customer;typedef struct Replace /替补乘客信息 char Name7; /姓名 int Amount; /定票数 char Rank; /舱位等级
9、 char Seat_No; /座位号 struct Replace *Next;Replace,*PReplace; typedef struct Flight /航线信息 char Des_Name10; /终点站名 char Flight_No6; /航班号 char Plane_No6; /飞机号 char Week_Day; /飞行周日 int Customer_Amount; /乘员定额 int Free_Amount; /剩余票数 float Price3; /舱位等级的价格 Replace *ReplName; /该航班的候补乘客名单 Customer *CustName; /
10、该航班的已定票乘客名单 struct Flight *Next; /指示下一航线结点Flight,*PFlight;int Customer_Count=0; /所有航线的定票乘客总数Flight *Head; /航线头指针Flight *p2; /航线结点指针Customer *Custp1MAX; /各条航线乘客结点指针Replace *Replp1MAX; /各条航线候补结点指针int IsEmpty=1; /是否有定票乘客int IsReplace=1; /是否有候补乘客Customer *prior; /满足要求的定票乘客的前结点,以作删除操作/-密码登入窗口函数-int Code_
11、Verify() char b10; char c10=lyh;/已经进行简单加密 char a; int i=0,j,k=1,x; / system(cls); / coutnnnnnnnnnttt请输入系统密码:; while(1) system(cls); coutnnnnnnnnnttt请输入系统密码:; for(j=0;ji;j+) cout; coutendl; a=getch(); if(int(a)!=8|int(a)!=13)/不等于回车或退格键 bi=a; if(int(a)=8) i-=2; system(cls); coutnnnnnnnnnttt请输入系统密码:; f
12、or(j=0;ji;j+) cout; coutendl; if(int(a)=13) bi=0; if(strcmp(c,b)=0) return 0; else if(k=3) while (!kbhit() system(cls); for(x=0;x100000000;x+); coutnnnnnnnntt 你无权使用本系统,任意键退出系统.endl; for(x=0;x100000000;x+); return 1; coutntt 密码错误,你还有3-k次机会.请按任意键,重新输入.endl; k+; getch(); i=-1; i+; /-启动画面函数-void Cover()
13、 char line=; char bar=.; int i,j,k=0,x=0,y=0; for(i=1;i=strlen(line)/2;) system(cls); for(j=0;j9;j+) /改变行坐标 coutendl; for(j=0;j(75-strlen(line)/2;j+) /改变列坐标 cout ; for(j=1;j=i;j+) /进度显示器 couti;x-) cout; if(k=4) i+; coutendl; for(j=0;j(75-strlen(line)/2;j+) /行坐标定位 cout ; coutline; /输出线条 coutendl; for(j=0;j(65-strlen(bar)/2;j+) cout ; cout(i-1)*10% Loading;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1