您好,欢迎访问三七文档
数据结构与算法设计课程设计【设计题目】航空公司订票系统【问题描述】编写一个咸阳航空公司订票大厅的一个订票系统,可以在系统中录入并修改各个航班的具体情况,帮助乘客准确的查询各航班的最新信息(包括航班号、航班的起始时间和地点、票价)和各项业务的及时办理(包括订票、退票等)。该系统用可以用C++的类编写。【软件功能】1.输入航班信息并保存到磁盘2.浏览航班信息3.修改航班信息并保存到磁盘4.查找航班5.删除航班信息6.订票7.退票【算法思想】1先定义一个乘客基本信息的类包含乘客的姓名、证件号、订票数量及所乘的航班号(注:每个航班有固定的人数限制,若满额则提示其他可供选择的航班。2建立一个功能类,包括对航班信息和乘客订票信息的录入及修改的函数,其中订票信息采用单链表的顺序存储方式存储。另外还包括对信息的查询和修改的功能函数,乘客退票的函数。并将最终的改动结果通过i/O流写入磁盘文件保存。3编写主函数,对编写的航班系统进行全面测试,对用户界面采用人性化的菜单方式。【类的设计】定义一个航班的类classplane{friendclasscustomer;//友元类public:voidinput();//插入航班信息voidprint();//打印航班信息voidsave();//保存航班信息voidread();//读取航班信息voidsearch();//查找航班信息voidDelete();//删除航班信息voidbook();//订票voidback();//退票voidxiugai();//修改航班信息private:intnum;//航班号charstart_place[20];//起点站chararrive_place[20];//终点站chartime[10];//起降时间intcount;//机票数量}];定义一个顾客信息的类classcustomer{friendclassplane;//友元类protected:Intid;//身份证号charname[10];//姓名intcustomer_num;//订票数量public:voidread1();//读取数据voidsave1();//保存数据};【存储结构设计】采用顺序存储结构,利用动态申请空间实现信息的存储。【模块划分及调用关系】定义了两个类classplane和classcustomer,分别实现顾客及航班的信息操作。在两个类的后面分别定义了类中的各个函数。另外在主函数中分别调用函数,实现各个功能。【模块流程图】1.主函数main()2.voidsearch()//查询函数输入航班信息浏览航班信息修改航班信息查找航班删除航班订票退票主函数选择主要功能3.voidbook()//订票函数航班不存在无效航班号存在有效4.voidback()//退票函数进入查询航班信息函数按航班查找按终点站查找按航线查找是否继续,若是进入订票系统输入姓名、ID及要订航班的航班号请输入您要订的票数若票数有效,显示订票成功不存在该用户存在【界面设计】采用人性化的菜单提示语,让用户很容易的操作;【用户手册】用户只需要在vc环境下就可以操作,具体步骤可见菜单提示就可以顺利操作。另外,再加入、删除、修改航班信息时必须以管理员的身份进去,所以必须要有密码,在这里初始密码事:xinxi0701.谢谢您的使用!!1、程序上机调试报告【语法错误及其排除】两个类的公有函数中,在循环嵌套调用时总是受阻,不能执行。所以我把两个类都定义为相互的有元类。这样问题就解决了。【算法错误及其排除】在订票与退票函数中,要核对用户信息如姓名、ID等,开始是自己定义一个函数进行字符间的比较,在调用时总是出现语法错误,最后想到可以用一个函数库中的函数strcmp(char,char).把问题简单化,而且语法错误也解决了。输入您的姓名、ID、要退票数提示:退票成功进入退票系统2、程序测试结果【测试数据】说明:测试数据都是输入数据,见输出结果。【输出结果】【程序性能评价】该程序可以查询航班的信息、修改信息,查询顾客的信息,订票、退票等,界面采用人性化的提示,可以让用户很容易的操作。另外在修改信息、添加航班信息时必须要以管理员的身份进入即必须要有密码才能进入。保证了系统的安全。【性能改进方向】该系统在操作中要是不按照菜单的有关提示操作,而进行非法操作,可能会导致系统的死循环。在这点该系统还有待改进。【收获及体会】事实总比想象的难,刚开始编写这个程序的时候思路比较清晰。可是编写的时候遇到了很多难题,譬如将顾客的信息及航班的信息保存到文件中,不知道用那种方式更简便,最后仔细思考,阅读课本资料,选择了用流的形式输出到文件中,感觉用起来特别方便简洁。完成了程序的编写后又对该程序进行了大量的修改,调试,使程序更加简明,并添加了不少提示用户操作的语句,使用户使用该系统时更加方便。对自己的这个程序还是比较满意的,可以说已经超出了自己当初的设想。从编写这个程序的过程中不但发现了许多自己没学明白的地方,而且锻炼了自己的耐心。刚调试时有很多错误,我逐个仔细的修改、排除,最终成功的完成了调试。进过这次实习,我更加深刻的体会到,作任何事情要仔细,要静下心来认真思考,只要努力了,必定会有回报。3、源程序代码#includeiostream.h#includestring.h#includestdio.h#includeiomanip.h#includestdlib.h#defineN1000//宏定义classcustomer;//申明顾客信息类//---------定义航班信息类----------------classplane{friendclasscustomer;//有元类public:voidinsert();//加入航班信息voidprint();//输出航班信息voidsave();//保存航班信息voidread();//读取航班信息voidsearch();//查找航班信息voidDelete();//删除航班信息voidbook();//订票voidback();//退票voidxiugai();//修改航班信息private:intnum;//航班号charstart[10];//起点站chararrive[10];//终点站chartime[20];//起降时间intplane_num;//机票数量}s[N];//------定义顾客信息类---------------------------classcustomer{friendclassplane;//有元类protected:intid;//身份证号charname[20];//姓名intpshu;//用户订票数量public:voidread1();//读取数据voidsave1();//保存数据}yh[N];inti,j;//全局变量intm=0,y=0;//宏定义一个输出#definePRINTs[i].numsetw(13)s[i].startsetw(13)s[i].arrivesetw(13)s[i].timesetw(13)s[i].plane_numendl//定义输出格式//-------------主函数------------voidmain(){planeabc;//定义一个航班类的对象intj;do{cout管理员密码:xinxi0701endl;coutendl;cout-----------欢迎进入航空订票菜单------------endl;//主界面cout|============================================|endl;cout|1.新增航班|endl;cout|2.浏览航班信息|endl;cout|3.修改航班信息|endl;cout|4.查找航班信息|endl;cout|5.删除航班|endl;cout|6.订票|endl;cout|7.退票|endl;cout|0.退出|endl;cout|=====================================|endl;cout请选择(0~7):;cinj;switch(j){case1:abc.insert();//调用插入函数break;case2:abc.print();//调用打印函数break;case3:abc.xiugai();//调用修改函数break;case4:abc.search();//调用查找函数break;case5:abc.Delete();//调用删除函数break;case6:abc.book();//调用订票函数break;case7:abc.back();//调用退票函数break;case0:;break;}}while(j!=0);//判断结束cout谢谢使用,再见!\n;}//--------------主函数结束---------------//定义类中各个函数voidplane::insert()//打印函数{charf[]=xinxi701;//设置密码chary;cout请输入密码:;cinf;//读取密码if(strcmp(f,xinxi0701)==0){cout--------------------------------------------------------------------------\n;for(i=0;iN;i++){cout航班号出发地点到达地点起降时间满载人数endl;cout|-------------------------------------------------|endl;cins[i].nums[i].starts[i].arrives[i].times[i].plane_num;cout|-------------------------------------------------|endl;m++;cout第m个信息已经输入,是否继续(y/n)?;ciny;coutendl;if(y=='y')continue;else{save();//将结构体信息存盘cout刚刚存盘的信息是:endl;print();//输出输入的航班信息break;}}}elsecout密码错误,您不能使用此项功能,强制推出!!!endl;}voidplane::save()//保存函数{FILE*fp,*fp1;//定义文件指针if((fp=fopen(chen.txt,wb))==NULL)//打开文件并判断是否出错{cout创建文件失败!endl;//出错提示getchar();return;}if((fp1=fopen(hao.txt,wb))==NULL)//打开文件并判断是否出错{cout创建文件失败!endl;//出错提示getchar();return;}for(i=0;im;i++)if(fwrite(&s[i],sizeof(classplane),1,fp)==0)//向文件写入数据,并判断是否出错cout向文件输入数据失败!endl;fprintf(fp1,%d,m);fclose(fp);//关闭文件fclose(fp1);//关闭文件}//-------------------------------------------voidplane::read()//从文件读取信息{FILE*fp,*fp1;//定义文件指针if((fp=fopen(chen.txt,rb))==NULL)//打开文件,并判断是否出错{cout出现错误,请检查文件是否存在!!;//出错提示getchar();}if((fp1=fopen(ha
本文标题:航空公司订票系统
链接地址:https://www.777doc.com/doc-4843189 .html