数据结构大作业航空公司订票系统
航空公司订票系统数据库结构

登录用户修改密码功能流程
1、判断确认密码是否正确 2、不正确重新输入 3、正确的话读取后台数据库该用户记录 4、修改数据库密码字段的值为文本框的值 5、调用Update方法更新到数据源 6、当前窗台隐藏
添加用户功能模块流程
1、判断用户名是否为空 2、不为空的话,读取后台数据库, 检测用户名是否已经存在 3、继续判断确认密码是否正确 4、以上皆成功的话,调用 RecordSet.AddNew方法,用户名、 密码、权限从相应控件值读取 5、 RecordSet.Update更新到数据 源 6、当前窗体隐藏
Public Function ExecuteSQL(ByVal sql As String, MsgString As String) As ADODB.Recordset 'executes SQL and returns Recordset Dim cnn As ADODB.Connection: Dim rst As ADODB.Recordset: Dim sTokens() As String On Error GoTo ExecuteSQL_Error
添加工具条(图像列表、文本对齐、按钮索引关键字、样式5种、 响应事件buttonclick集中处理所有按钮敲击事件)
添加侧边栏(侧边栏由picturbox包容label、button、treeview 构成、显示位臵大小打开关闭由picturebox的事件过程控制、 picturebox 放臵时设臵Align属性、 picturebox _Resize事件过程) TreeView操作(选择样式是否带图片链接线展开符号等、图像 列表、 TreeView.Nodes.Add方法、 TreeView _NodeClick事件 过程)
(完整word版)航空公司订票系统

数据结构与算法设计课程设计【设计题目】航空公司订票系统【问题描述】编写一个咸阳航空公司订票大厅的一个订票系统,可以在系统中录入并修改各个航班的具体情况,帮助乘客准确的查询各航班的最新信息(包括航班号、航班的起始时间和地点、票价)和各项业务的及时办理(包括订票、退票等)。
该系统用可以用C++的类编写。
【软件功能】1.输入航班信息并保存到磁盘2.浏览航班信息3.修改航班信息并保存到磁盘4.查找航班5.删除航班信息6.订票7.退票【算法思想】1先定义一个乘客基本信息的类包含乘客的姓名、证件号、订票数量及所乘的航班号(注:每个航班有固定的人数限制,若满额则提示其他可供选择的航班。
2建立一个功能类,包括对航班信息和乘客订票信息的录入及修改的函数,其中订票信息采用单链表的顺序存储方式存储。
另外还包括对信息的查询和修改的功能函数,乘客退票的函数。
并将最终的改动结果通过i/O流写入磁盘文件保存。
3编写主函数,对编写的航班系统进行全面测试,对用户界面采用人性化的菜单方式。
【类的设计】定义一个航班的类class plane{friend class customer;//友元类public:void input(); //插入航班信息void print(); //打印航班信息void save(); //保存航班信息void read(); //读取航班信息void search(); //查找航班信息void Delete(); //删除航班信息void book(); //订票void back(); //退票void xiugai(); //修改航班信息private:int num;//航班号char start_place[20];//起点站char arrive_place[20];//终点站char time[10];//起降时间int count;//机票数量}];定义一个顾客信息的类class customer{friend class plane;//友元类protected:I nt id;//身份证号char name[10];//姓名int customer_num;//订票数量public:void read1();//读取数据void save1();//保存数据};【存储结构设计】采用顺序存储结构,利用动态申请空间实现信息的存储。
实验3 数据结构C++写 航空订票系统

#include <stdlib.h>#include <string.h>#include <conio.h> /*通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作*/#include <iomanip.h>#include <iostream.h>#define MAXSIZE 5 /*定义航线数量,可修改*/typedef struct wat_ros /*单链队列存储等候替补的客户信息*/{char name[10]; /*姓名*/int req_amt; /*订票量*/struct wat_ros *next;}qnode,*qptr;typedef struct pqueue /*等候替补的客户名单*/{qptr front; /*等候替补客户名单域的队头指针*/qptr rear; /*等候替补客户名单域的队尾指针*/}linkqueue;typedef struct ord_ros /*乘员名单*/{char name[10]; /*客户姓名*/int ord_amt; /*订票量*/int grade; /*舱位等级*/struct ord_ros *next;}linklist;struct airline{char ter_name[10]; /*抵达城市*/char air_num[10]; /*航班号*/char time[10]; /*飞机时间*/char pri[7]; /*票价*/int tkt_amt; /*乘员定额*/int tkt_sur; /*余票量*/linklist *order; /*乘员名单域,指向乘员名单链表的头指针*/linkqueue wait; /*等候替补的客户名单域,分别指向排队等候名单队头队尾的指针*/}lineinfo;struct airline *start;void display(struct airline *info) /*打印每条航线的基本信息*/{cout<<info->ter_name<<setw(5)<<info->air_num<<"\t"<<setw(5)<<info->time<<"\t"<<s etw(5)<<info->pri<<"\t"<<setw(5)<<info->tkt_amt<<"\t"<<setw(5)<<info->tkt_sur<<e ndl;}void list() /*打印全部航线信息*/{struct airline *info;int i=0;info=start;cout<<"终点站名"<<" "<<"航班号"<<" "<<"飞行时间"<<" "<<"票价"<<" "<<"乘员定额"<<" "<<"余票量"<<endl;while(i<MAXSIZE){display(info); /*调用display函数来输出*/info++;i++;}cout<<endl;}void search() /*根据客户提出的终点站名输出航线信息*/{struct airline *info,*find();char name[10]; /*要抵达的城市名称*/int i=0;info=start;cout<<"请输入要抵达城市的名称:";cin>>name;while(i<MAXSIZE){if(!strcmp(name,info->ter_name)) //有该站名strcmp则返回,if(!0)即break,字符串比较函数搜索{break;}info++;i++;}if(i>=MAXSIZE) /*没有匹配的航线*/{cout<<"对不起,没有这条航线!"<<endl;}{cout<<"终点站名"<<" "<<"航班号"<<" "<<"飞行时间"<<" "<<"票价"<<" "<<"乘员定额"<<" "<<"余票量"<<endl;display(info); /*调用display函数输出航线信息*/}}struct airline *find() /*根据系统提出的航班号查询并以指针形式返回*/{struct airline *info;char number[10]; /*查询的航班号*/int i=0;info=start;cout<<"请输入航班号:";cin>>number;while(i<MAXSIZE){if(!strcmp(number,info->air_num)) /*有匹配航班*/{return info;}info++;i++;} /*无匹配航班*/cout<<"对不起,没有这条航线!"<<endl;return NULL;}void prtlink() /*打印订票乘员名单域的客户名单信息*/{linklist *p;struct airline *info;info=find();p=info->order;if(p!=NULL) /*按顺序输出客户信息链表*/{cout<<"客户姓名订票数额舱位等级"<<endl;while(p){cout<<p->name<<"\t"<<setw(7)<<p->ord_amt<<"\t"<<setw(8)<<p->grade<<endl;p=p->next;}else /*没有人订这个航班*/cout<<"该航线没有客户信息!"<<endl;}linklist *insertlink(linklist *head,int amount,char name[],int grade) /*增加订票乘员名单域的客户信息*/{linklist *p1,*new1;p1=head;new1=new linklist();if(!new1) /*存储空间不足*/{cout<<"\nOut of memory!!"<<endl;return NULL;}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;return head;}linkqueue appendqueue(linkqueue q,char name[],int amount) /*增加排队等候的客户名单域*/{qptr new1;new1=new 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;return q;}void order() /*办理订票业务*/{struct airline *info;int amount,grade; /*订票数量,舱位等级*/char name[10]; /*要订的航班号*/info=start;if(!(info=find())) /*根据客户提供的航班号进行查询,如为空,退出该模块*/ {return;}cout<<"请输入您需要的票数:";cin>>amount;if(amount>info->tkt_amt) /*若客户订票额超过乘员定票总额,退出*/ {cout<<"对不起,您输入票数已经超过乘员定额!"<<endl;return;}if(amount<=info->tkt_sur) /*若客户订票额末超过余票量,订票成功并等记信息*/{int i;cout<<"请输入您的姓名:";cin>>name;cout<<"请输入您需要的舱位等级(1,2或):";cin>>grade;info->order=insertlink(info->order,amount,name,grade); /*在订票乘员名单域中添加客户信息*/for(i=0;i<amount;i++) /*依次输出该订票客户的座位号*/{//printf("%s的座位号是:%d\n",name,info->tkt_amt-info->tkt_sur+i+1); cout<<name<<"的座位号是:"<<info->tkt_amt-info->tkt_sur+i+1<<endl;}info->tkt_sur-=amount; /*该航线的余票量应减掉该客户的订票量*/ cout<<"祝您乘坐愉快!";}else /*若满员或余票额少于订票额,询问客户是否需要进行排队等候*/{char r;cout<<"没有这么多票了,您需要排队等候吗?(Y/N)"<<endl;r=getch();cout<<r;if(r=='Y'||r=='y'){cout<<"\n请输入您的姓名:"<<endl;cin>>name;info->wait=appendqueue(info->wait,name,amount); /*在排队等候乘员名单域中添加客户信息*/cout<<"\n注册排队成功!"<<endl;}else{cout<<"\n欢迎您再次订购!"<<endl;}}}void return_tkt() //退票模块{struct airline *info;qnode *t,*back,*f,*r;int grade;linklist *p1,*p2,*head;char cusname[10];if(!(info=find())) //调用查询函数,根据客户提供的航线进行搜索{return;}head=info->order;p1=head;cout<<"请输入你的姓名:"<<endl;cin>>cusname;while(p1!=NULL) //根据客户提供的姓名到订票客户名单域进行查询{if(!strcmp(cusname,p1->name)){break;p2=p1;p1=p1->next;}if(p1==NULL) //若未找到,退出本模块{cout<<"对不起,您没有订过票!"<<endl;return;}else //若信息查询成功,删除订票客户名单域中的信息{if(p1==head){head=p1->next;}else{p2->next=p1->next;}info->tkt_sur+=p1->ord_amt;grade=p1->grade;cout<<"退票成功!"<<p1->name<<endl;delete p1;}info->order=head; //重新将航线名单域指向订票单链表的头指针f=(info->wait).front; //f指向排队等候名单队列的头结点r=(info->wait).rear; //r指向排队等候名单队列的尾结点t=f; //t为当前满点条件的排队候补名单域while(t){if(info->tkt_sur>=info->wait.front->req_amt) //若满足条件者为头结点{int i;info->wait.front=t->next;cout<<"订票成功!"<<t->name<<endl;for(i=0;i<t->req_amt;i++) //输出座位号{cout<<"的座位号是:"<<t->name<<info->tkt_sur-i<<endl;}info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);//插入到订票客户名单链表中delete t;break;back=t;t=t->next;if((info->tkt_sur)>=(t->req_amt)&&t!=NULL)//若满足条件者不为头结点{int i;back->next=t->next;cout<<"订票成功!"<<t->name<<endl;for(i=0;i<t->req_amt;i++) // 输出座位号{//printf("<%s>'s seat number is:%d\n",t->name,(info->tkt_sur)-i); cout<<"seat number is:"<<t->name<<info->tkt_sur-i<<endl;}info->tkt_sur-=t->req_amt;info->order=insertlink(info->order,t->req_amt,t->name,grade);//插入到订票客户名单链表中delete t;break;}if(f==r){break;}}}int menu_select() /*菜单界面*/{int c;char s[20];cout<<"订票系统"<<endl;cout<<"******************************"<<endl;cout<<"1.查看航线信息"<<endl;cout<<"2.查看已订票客户信息"<<endl;cout<<"3.查询航线"<<endl;cout<<"4.办理订票业务"<<endl;cout<<"5.办理退票业务"<<endl;cout<<"6.退出系统"<<endl;cout<<"******************************"<<endl;do{cout<<"请选择(1-6):"<<endl;cin>>s;c=atoi(s); // 将字符串转换成一个整数并返回结果,需要导入头文件#include <stdlib.h>}while(c<1||c>6);return c;}void main(){struct airline air[MAXSIZE]= /*初始化航线信息*/{{"Beijing","1","1200","860",30,30},{"Shanghai","2","1000","770",20,20},{"Nanjing","3","1330","960",10,10},{"London","4","1700","760",50,50},{"dalian","5","1400","550",40,40}};start=air;for(;;) /*无限循环(除非用户选择.退出)*/ {//system("cls"); /*清空屏幕*/switch(menu_select()){case 1:list(); /*打印全部航线信息*/break;case 2:prtlink(); /*浏览已订票客户信息*/break;case 3:search(); /*查询航线*/break;case 4:order(); /*订票*/break;case 5:return_tkt(); /*退票*/break;case 6:cout<<"感谢您的使用,再见!"<<endl; /*退出系统*/exit(0); /*正常退出程序*/}cout<<"任意键继续..."<<endl;getch(); /*任意键继续*/}}。
航空订票系统 数据结构

一、设计课题:我们设计的程序有三个,分别是:航空订票系统、24点游戏、旅游交通查询系统,为了用户的方便和更能体现C语言的模块化理念,我们把三个程序放到一个系统中去实现了。
二、设计内容1、需求分析:在完成课程设计的过程中,我们组合作为主,欧阳锦林主要负责程序设计与调试,王峰和段静缘主要负责资料收集与文档输入。
设计完成后交流了各人收获与体会。
(1)、航空订票系统:通过此系统可以实现如下功能:1) 录入航线信息每条航线信息包括航班号、飞机号、目的地、订票数、余票数共5项。
假设现在有3条航线, 目的地分别是北京, 上海, 广州, 飞机上可乘坐100人( 即初始订票数为0, 余票数为100) , 将这3条航线信息存入文件“airline.dat”中。
2) 订票业务客户信息包括姓名, 航班号, 座位号(初始为0), 假设已有3个客户信息存入文件“customer.dat”中。
有新客户订票时, 先输入客户的姓名和他提出的航班号, 查询该航线的订票情况, 若有余票, 则为客户办理订票手续, 分配给客户一个座位号, 然后将新客户的信息添加到文件“customer.dat”中, 并修改文件“airline.dat”中该航线的订票数和余票数。
若无余票, 则输出客满信息。
进一步可实现如果该航班已经无票,可以提供相关可选择航班信息。
3) 退票业务根据客户提出的航班号, 办理退票, 从文件“customer.dat”中删除该客户的信息, 并修改文件“airline.dat”中相应航线的订票数和余票数。
4) 修改航班信息:当航班信息改变可以修改航班数据文件。
5) 输出全部航线信息和全部客户信息。
6) 退出系统。
(2)、24点游戏:基本要求及步骤:1)随机产生四个1-13的数,分别代表13张牌。
2)提示玩家输入算式。
3)判断玩家输入的表达式是否合法,其中算式中的四个数字只能是程序所给的四个数字,非法则回到1)。
4)如果玩家认为这四张牌算不出24点(如:1,1,1,1),可只输入?,程序将判断这四张牌是否能得出24点,如果能,则程序将给出算式,如果不能,说明不能,并回到1)。
数据结构:航空客运订票系统

课程设计报告课程名称:数据结构设计题目:航空客运订票系统院系:班级:设计者:学号:指导教师:课程设计报告一、题目分析主要功能包括:1、录入:可以录入航班情况(如:输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数)。
2、查询:可以查询某个航线的情况(如:输入航班号,飞机编号,查询起降时间,起飞抵达城市,剩余的票数);可以输入降落城市及航班号,查询飞机航班情况。
3、订票:根据客户要求(航班号、订票数量)查询该航班的余票数情况,若有余票,则可以订票;若余票数不足,则需要重新询问客户要求,否则不能完成订票。
4、退票:可退票,根据客户的姓名,订票数量查询是否为真实信息,为客户办理退票。
5、退出系统。
二、总体设计拿到课程设计题目后,经过仔细的研究,还是决定做航空客运订票系统,它可以使自己很好的巩固在数据结构当中所学到的知识以及各算法,做到学以致用,并在运用的基础上,进一步去创新。
1、主程序流程图及其说明主程序的流程图如下图所示:利用switch语句,用户只需根据自己的需要,输入相应的命令即可达到效果。
例如,若需要查询航班信息时,则输入2;需要为客户预定机票时,则输入4;若需要退出系统,则输入5即可。
2、子程序流程图及其说明⑴、录入航班信息的流程图及其说明:主要功能是将新的航班信息写入新建链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新航班的增加。
录入航班信息的流程图如下图所示:⑵、查询航班信息流程图及其说明:先输入所要查找的航班,可通过降落城市查询或根据航班号查询。
然后判断该航班是否存在,若存在,则输出相关的航班信息;若不存在,则提示该航班不存在。
查询航班信息的流程图如下图所示:⑶、订票、退票流程图及其说明:订票说明:先输入降落城市,找到该航班并显示该航班信息,若找不到则提示不存在该航班。
再通过需要订票的数量来判断余票量是否足够。
若足够则录入客户姓名,完成订票;若余票不足,则提示是否要取消并重新订票。
数据结构课程设计《订票系统(航空)》报告+源代码

数据结构课程设计——《订票系统》目录一、设计任务与要求 (2)1。
1 总体目标与任务要求 (2)1。
2 题目选择与目的意义 (2)1.3 所选题目的主要工作 (2)二、需求分析 (3)2.1 用户需求分析 (3)2.2 功能需求分析 (3)2。
3 系统需求分析 (3)三、概要设计 (4)3.1 各模块的算法设计说明 (4)3.2 存储结构设计说明 (9)四、详细设计 (11)五、源代码 (12)六、运行结果分析 (23)七、收获与体会 (30)八、主要参考资料 (30)一、设计任务与要求1。
1 总体目标与任务要求制作一个订票系统,通过此系统可以实现如下功能:1)录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定).2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况。
3)订票:可以订票,如果该航班已经无票,可以提供相关可选择航班(订票情况可以存在一个数据文件中,结构自己设定)。
4)退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
5)修改航班信息:当航班信息改变可以修改航班数据文件。
根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。
1.2 题目选择与目的意义选择这个题目的原因是,订票系统在现实生活中应用很广泛,通过这个系统可以使订票、退票等变得简便。
与传统的人工用纸、笔来记录办理订票、退票等相比,使用这个系统也会增加工作效率。
这个题目做出来的系统还是比较实用的,所以我选择了订票系统这个题目.完成此系统,需要综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
数据结构课程设计航空订票系统

航空客运订票系统的设计与实现一、设计目的:设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力。
二、问题的描述:航空客运订票的业务包括查询航线和客票预定的信、客票预定和办理退票等,设计一个程序以使上述任务借助计算机完成。
三、数据结构的设计://航线结构struct airline{char cityname[15]; //终点站char airnum[15]; //航班号char planenum[15]; //飞机号char qjtime[15]; //起降时间int price; //价格int disc; //折扣int num; //总座位数int rempla; //剩余位置(票数)linklist *order;linkqueue wait;}line;//定义链表队列typedef struct wait{char name[6];int ordnum;struct wait *next;} qnode,*qptr;//无票时其余等候买票队列typedef struct listqueue{qptr front; //对头qptr rear; //队尾}linkqueue;typedef struct order{char name[15]; //客户姓名char crenum[15]; //证件号char airnum[15]; //航班号char planenum[15]; //飞机号int ordnum; //订票数量int rempla; //剩余位置int num; //总座位数char qjtime[15]; //起降时间struct order *next;}linklist;建立了航班的终点站,航班号,飞机号,起降时间,价格,折扣,总座位数,剩余位置,指向客户信息truct order指针,等候买票的队列的结构体信息。
建立了客户的客户姓名,证件号,航班号,飞机号,订票数量,剩余位置,总座位数,起降时间,链接下一位的指针的结构体信息。
数据结构课程设计---航空订票系统

数据结构课程设计报告1.航空订票系统1.需求分析试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。
采用链式存储结构。
系统能实现的操作和功能如下:(1)航班信息管理。
(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。
(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。
若需要,可登记排队候补。
(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。
2.设计2.1 设计思想(1)数据结构设计typedefstruct keHu//客¨户信息{char nameofKeHu[20];//客户名字int numofPiao;//客¨户需要票的数量int type;//仓位等级1:头等Ì舱2:公务舱3:经济舱struct keHu* next;/下个客户};typedefstruct hangBan{int numofHangBan;//航班号char typeofHB[20];//航班机型¨char startFly[20];//起飞¦机场char endFly[20];//降¦落机场char DataofHB[20];//日期格式为(20120312星期¨一)char startTime[20];//起飞¦时间char endTime[20];//到达时À间float flyTime;//飞行时长float prise;//价格int largeNum;//成员定额int leaveNum;//余票数量keHu *custemer;//乘客信息名单keHu *orderofKeHu;//替补客户};typedefstruct Node{hangBan *exam;//航班信?息¡éint numofN;//航班数量struct Node *next;};(2)算法设计总体设计:在Fly.h文件中设计舱位的信息处理以及订票退票和对舱位信息的管理方面的功能然后在main,h中设计用户界面功能部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
航空公司订票系统
一、我的认识和设计思路
1.我充分利用数据结构课程设计,利用几种典型数据结构(链表,队列,线性表等结构),结合上学期学习的程序设计语言(C/C++语言),链表是实现存储空间动态管理的链式存储结方式,而队是一种操作受限的线性表。
使用大量指针,来实现一个比较完整的应用系统的设计与开发。
2.我通过课程设计一些程序的调试(比如背包问题,病人看病模拟程序,停车场管理程序),通过比较系统的分析、编程和不断调试,进一步理解和掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
基本上达到了复习的要求。
3.我将知识应用于实际的方法,联想到售票系统的使用,也可以提高综合能力。
所以我选择了航空订票系统,也可以应用于其他售票系统。
航空空订票系统所涉及的知识:
(1)熟练掌握链表存储结构及其建立过程和常用操作;
(2)熟练掌握队列的建立过程和常用操作;
(3)学会自己调试程序。
4. 通过上网查询和结合实际可知,航空客运订票的业务活动包括:查询航线、客票预订和办理退票等等。
设计了一个航空公司订票系统,以使上述业务可以借助计算机来完成。
下面是一些程序功能设想:
1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量);
2.全部数据可以只放在内存中;
3.系统能实现的操作和功能如下:
a) 查询航线:
根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;
b) 承办订票业务:
根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,
输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。
若需要,可登记排队候补;
c) 退票业务:
根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。
功能系统图:
实现的功能模块说明
(1)显示全部航线的信息;
(2)查询订票客户的信息;
(3)根据客户提供的终点站,调用find()函数进行查找,调用list()函数输出航线信息;
(4)办理订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额超过乘员定票总额,退出,若客户订票额末超过余票量,订票成功并登记信息,在订票乘员名单域中添加客户信息;如果暂时没有票,询问客户是否要排队等侯,如果是,则在等候队列增加该客户的订票信息。
(5)办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询。
退票成功后,重新将航线名单域指向订票单链表的头指针。
根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息插入到乘客信息链表中。
(6)退出本系统
二、我进行了以下改进:
(1)主函数的表达方式。
菜单界面的的改进:
三、详细设计及运行结果(1)显示已初始化的全部航线信息
(2)浏览已订票客户信息
(4)办理订票业务
(5)办理退票业务
四、改进后的运行结果:(窗口反而变得简单,明了)
1、浏览航线信息:
2、查询航线:
3、办理退票手续:
4办理订票和查询客户信息:
五、总结和体会
总体的思路和过程
我在编译和调试的时候,选择Visual C++6.0,因为实验室的工具有些欠缺,通过上网和同学交流,进行了改进,在自己的计算机上更改了入径之后,该工具比较稳定,在使用调试这个强大工具时才发现上学期的遗留问题,还不是很熟悉。
这需要今后进一步的练习。
验证了一句话:代码是敲出来的,不是看出来的。
在一周半的时间里,我不断地对程序各模块进行修改、编译、调试、运行,其间遇到很多问题:在编写的时候我只会使用相对较为简单的基础语言,凭借C语言的基础,代替了相对较为复杂的语言,降低了运行效率。
其中在程序的主函数switch语句的使用中得到验证。
不同的表示会有不同的效果。
源程序会经常出现溢出错误,而且不只一处。
比如队空队满的判断,函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成了一些不必要的错误。
而我又认识了几种函数应用,比如:(1)getch()和getchar()在使用是功能相同的,但getch()并非标准C中的函数,不存在C语言中,它所在头文件是conio.h。
所以在使用的时候要注意程序的可移植性。
也只有国内C语言新手常常使用getch();来暂停程序且不知道此函数来源,建议使用getchar();在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n).用getch();会等待你按下任意键,再继续执行下面的语句;(2)也知道了exit(0)://正常结束程序运行【exit(非0):非正常结束程序运行】(3)函数strcpy(lnew->name,name); 是把name指向的字符串复制给lnew->name中去;strcmp(name,info->ter_name)// 比较字符串name和
info->ter_name的大小(4)
测试用例具有一定的广泛性。
运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。
说明程序具有一定的可靠性和稳定性,可以应用于其他一些系统中。
加深了自己对c语言的规范使用。
例如,调用函数时,数组只需要传递数组名即可;字符‘0’和整形的0是不同的文明不可以直接对其画等号。
并且在调试的过程中,我也发现使用结构体数组来存储存编译的字符,编译代码时通过结构体数组来实现要优于使用链表。
学习体会
这次的大作业,是我更加认识了数据结构,对调试掌握的也更加熟练了一些,改变了过去只调试不知道如何对照程序语言修改程序的坏习惯,对调试也有了新的认识,理解了调试的目的和意义,意识到了程序语言的规范性以及我们在编程时要耐心,要严谨,同时在写程序时多多加些注释,既增加了程序的可读性,也可以使自己在读程序时更容易,更清楚。
可以说在这次实践中我对c语言又进行了一次重温,对认识了一些函数
库,利用互联网,我找出了他们的真正妙处,当然结构是让人很兴奋的。
我也觉得原来大作业的意义是让我们真正认识了程序,对程序有了新的感觉。
虽然课结束了,可知识永无止境的,相信自己的认识也得到了提高。