面向对象程序设计_第1页
面向对象程序设计_第2页
面向对象程序设计_第3页
面向对象程序设计_第4页
面向对象程序设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计课程设计任务书一、课程设计任务及要求:任务:针对小型信息管理系统或若干综合性设计题目,选择一种软件开发模型,完成从需求分析、系统设计、系统实现,软件测试的全过程。要求:(1)根据软件系统开发的一般原则,完成相应系统的功能设计,完成主要功能模块的程序实现并进行测试训练,给出代码运行结果和相应的设计文档。可以分组进行,但所有学生必须经历整个系统的开发全过程,以便加深对系统开发全过程的认识。(2)提交课程设计报告。(3)指标: 要求完成课程设计报告3000字以上(约二十页);完成所设计的题目,设计题目的语句行数的和在200行语句以上。二、工作量2周(10个工作日)时间三、计划安排第1

2、个工作日第2个工作日:查找相关资料、书籍,阅读示例文档;设计程序结构、模块图、完成类的设计。第3个工作日第7个工作日:完成程序的编码,并且自己调试、测试。穿插进行项目文档的撰写。第8个工作日第9个工作日:撰写和整理项目文档。第10个工作日:由教师检查软件测试效果、项目文档,给出学生本课程成绩。指导教师签字:2014年12月29日目录题目:11.需求分析12.概要设计23.详细设计34.编码75.调试分析116.测试结果及运行效果127.系统开发所用到的技术168.课程设计总结17参考文献18附录 全部代码19题目:飞机航班订票系统1. 需求分析 1 每条航线所涉及的信息有:终点站名、航班号、飞

3、机号、飞行日(星期几)、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名、所需票量); 2 全部数据可以只放在内存中; 3 系统能实现的操作和功能如下: a) 查询航线: 根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额; b) 承办订票业务: 根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续, 输出座位号;若已满员或余票额少于定票额,则需重新询问客户要求。若需要,可登记排队候补; c) 退票业务: 根据客户提供的情况(日期、航班),为客户办理退票手续,

4、然后查询该航班是否有人排队候补,首先询 问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。 2. 概要设计1系统结构图(功能模块图)主函数浏览航线信息浏览已订票客户信息查询航线办理订票业务办理退票业务退出系统按剩余票数排序图2-1 系统功能图2功能模块说明(1)显示已初始化的全部航线信息(2)浏览已订票客户信息(3)根据客户提出的终点站名,调用find()函数寻找航线信息,调用list()函数输出航线信息(4)办理订票业务:根据客户提供的航班号进行查询航线信息,若客户订票额超过乘员定票总额,退出,若客户订票额末超过余票量,订票成功并登记信息,在订票

5、乘员名单域中添加客户信息;如果暂时没有票,询问客户是否要排队等侯,如果是,则在等候队列增加该客户的订票信息。(5)办理退票业务:调用查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询。退票成功后,重新将航线名单域指向订票单链表的头指针。根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息插入到乘客信息链表中。(6)退出本系统3.详细设计系统各个模块流程图,(1)显示已初始化的全部航线信息图3-1全部航线信息(2)浏览已订票客户信息图3-2 订票客户信息(3)查询航线图3-3 航班查询(4) 办理订票业务图3-4 办理订票业务(5)办理退票业务开始调用

6、find函对航线搜索数p1!=NULLp1!=NULL删除客户信息重新将航线名单域指向订票单链表的头指针,重新将航线名单域指向订票单链表的头指针,r指向排队等候名单队列的尾结点t不为空将客户信息插到订票客户名单链表头结点将客户信息插到订票客户名单链表结束图3-4 办理退票业务4. 编码(1)航班信息录入函数:void enter()int i,n;printf("How many flights do you want input? : bb");scanf("%d",&n);printf("n Enter data nownn&quo

7、t;);for(i=0;i<n;i+)printf("n Input %dth float record.n",i+1);input(i);printf_back();输入信息文件打开否 输入信息是否继续将信息输出到磁盘调用printf_back()函数结束开始输出错误信息图4-1 航班信息录入(2) 航班信息浏览函数: void Browse()int i,n;n=load();printf_face();for(i=0;i<n;i+)if(i%10=0)printf("nPress any key to contiune .");getc

8、har();puts("nn");puts("nn");printf_oneflight(i);printf("tThere are %d record.n",n);printf("nPress any key to back .n");getchar();menu();开始文件打开查找航班信息是否查找到输入信息是否继续结束输出错误信息删除操作 图4-2航班信息浏览(3)查询模块:void Search()int m,i,flight_no,flag=0;printf("Please input flig

9、ht_no:n");scanf("%d",&flight_no);m=load();for(i=0;i<m;i+)if(flight_no=flyi.flight_no)flag=1;printf("nThe flight message is:n");printf_oneflight(i);if(flag=1)printf("Found!");elseprintf("Not Found!");printf_back();开始文件打开查询方式是否继续结束输出错误信息航班号此处可以完善其它查询

10、方式图4-3查询模块5.调试分析 航空订票系统的功能:此系统功能分为管理员模块和前台票务员模块;管理员模块主要负责航班信息管理,包括增加新航班、修改原有航班、删除航班的功能;前台票务员模块包括乘客信息管理、订票管理、航班查询的工能。性能:能够高效而且快速的管理航班信息及订票功能,航班查询可在较短时间内完成,数据能够实时反映到终端,以确保信息查询的准确性,方便乘客订票,减少系统错误。 在订票系统中我们发现,在订票时我们的把机票信息中的剩余票数要减少一个,而在退票时我们的把剩余票数加以个,由于在文件的定义时不好把机票信息文件和旅客信息文件放一起,所以在修改机票剩余票数的是侯的打开两个文件然后得对两

11、个文件进行修改。再保存模块得把机票的信息录入进去,所以有很多不分都得写,像机票信息的录入,修改,删除,这样一来就像是写一个机票信息管理系统一样,这样一来导致这个文件会很大,很繁琐。但是还好c语言是面向过程的导致很多的程序代码重复,这样就在写好一部分代码以后就可以进行复制,然后进行修改就行,总体来说工作量还不是很大。6.测试结果及运行效果(1)程序运行时,则主界面显示如图6-1所示:系统启动时通过输入航班信息来增加乘客的选择范围图6-1程序主界面的显示效果(2) 当选择功能1时,进入增加航班模块图6-2 选择功能1的界面(3) 当选择功能2时,进入浏览航班信息模块图6-3 选择功能2的界面(4)

12、 当选择功能3时,进入查找航班信息模块图6-4 选择功能3的界面(5) 当选择功能4时,进入航班排序模块,有两种选择一是从航班号从大到小,二是从航班号从小到大图6-5 选择功能4的界面(6)当需要订票时,可以选择功能5进入订票模块,图6-6选择功能5的界面(7)当有的乘客需要退票时也可以进入退票模块图6-7乘客退票的界面7.系统开发所用到的技术 Visual C+ 6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,

13、随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0不仅是一个C+ 编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWiz

14、ard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。VC+是Windows平台上的C+编程环境,学习VC要了解很多Windows平台的特性,并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。VC是一个主流的开发平台, VC+不是一门语言,可以把C+看作为一种“工业标准”

15、,而VC+则是某种操作系统平台下的“厂商标准”,而“厂商标准”是在遵循“工业标准”的前提下扩展而来的。 VC+是在Windows平台下开发VC+应用程序,VC+应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式,传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势,但为了对WINDOWS开发有一个较为全面细致的认识,笔者在这里还是以讲解WIN API的相关内容为主线。8.课程设计总结 在这次程序编制的过程中出现了很多问题,主要原因是自己以

16、前接触的关于编制程序的知识的缺乏,通过飞机航班订票系统的开发让我知道了自己的不足和缺点,写出一个好的程序需要合作精神,一个人的力量毕竟是有限的团队力量才是无穷的。一个好的程序员一定是从程序堆里走出来的,只有通过参与具体程序的开发才知道自己知识的有限,才会学会具体的分析问题,是自己的逻辑性和层次性得到良好的锻炼, 课程设计是一门专业课,给我很多专业知识以及专业技能上了提升,同时又是一门思辨课,让我感触很深,是我对抽象的理论有了具体的认识,在这次课程设计中知道了以前没有接触过的很多函数,C+语言中的文件部分因为种种原因都没有得到及时的学习,以前很多东西都没有学好,在以后的学习中自己要加强程序的锻炼

17、,多参考好的程序和各种各样的函数,建立起自己的函数库,为以后学习打下良好的基础。 编译和调试工具:选择Visual C+6.0,该工具稳定,其中有一个强大的调试工具,但我不是熟悉。还需要进一步的练习。在一周半的时间里,不断地对程序及各模块进行修改、编译、调试、运行,其间遇到很多问题:因本人能力有限,在编写的时候只使用了相对较为简单的基础语言 ,代替了相对较为复杂的语言,降低了运行效率。程序在起初设计的时候,经常出现溢出错误,而且不只一处。为了修正这些溢出错误,耗费了大量的时间,修正解释之后再看源程序,才发现原来只是因为开始的函数定义的数据类型出现了问题,对函数的定义不清楚,字符的不正确定义造成

18、了后期大量的纠错工作, 由于忘记了一些c语言的规范使得在调试过程中一些错误没有发现。例如,调用函数时,数组只需要传递数组名即可;字符0和整形的0是不同的文明不可以直接对其画等号。测试用例具有一定的广泛性。运行程序时输入了多种不同字符信息,经过多次修改结果达到了预期效果。说明程序具有一定的可靠性和稳定性。 参考文献1严蔚敏、吴为民.数据结构(C语言版).北京:清华大学出版社.20072周二强.新编C程序设计.北京:清华大学出版社.20113钱能.C+程序设计教程.北京.清华大学出版社.19994邓文华.数据结构实验和实训教程.北京.清华大学出版社.2011附录 全部代码#include<s

19、tdio.h>#include<string.h>#include<process.h>#define N 9999/定义最多的航班数#define PRINT "%dtt%stt%stt星期%stt%dn ",si.num,si.start,si.over,si.time,si.count /宏定义输出格式struct air /定义结构体数组int num;char start20;char over20;char time10;int count;sN;int i,m=0;/定义全局变量char ii10;void add();/函数声明

20、增加航班信息函数void print(); /显示航班信息void search();/查找航班信息void dingpiao();/订票业务void tuipiao();/退票void read();/读取文件void save();/保存文件void output();/输出格式void paixu();/航班排序void chushihua();/系统初始化void build();/建立数据文件void paixu1();/按航班号从小到大排序void paixu2();/从大到小void main()/主函数int j; chushihua();/系统初始化判断是否存在原始数据文件p

21、rintf(" 欢迎使用飞机订票系统n");do printf("= "); printf("1.增加航班信息n" "t2.浏览航班信息n" "tt3.查找航班信息(按航班号)tt(_)n" "ttt4.航班排序(按航班号)n" "tttt5.订票业务n" "to()ottt6.退票业务n" "tttttt0.退出n");printf("= "); printf("请在0-6中选择以回车

22、键结束: ");scanf("%d",&j);fflush(stdin);switch(j)case 1: add();break;case 2:print();break;case 3:search();break;case 4:paixu();break;case 5:dingpiao();break;case 6:tuipiao();break; case 0:save();printf("谢谢使用,再见! ");break;default:printf("您输入不合法,请按回车键继续");getchar();

23、 while(j!=0);/判断是否调用其他函数 void chushihua()/定义系统初始化函数if(access("hangban.dat",0)build();elseread();void build()/定义建立数据文件函数FILE *fp;/定义文件指针if(fp=fopen("hangban.dat","wb")=NULL)/打开文件并判定是否出错 printf("创建文件失败! ");getchar();return;printf("请依次输入航班信息(以回车键结束):n")

24、; printf("- n");for(i=0;i<N;i+)printf("请输入航班号: "); scanf("%d",&si.num);printf("请输入起始站: ");scanf("%s",si.start);printf("请输入终点站: ");scanf("%s",si.over);printf("请输入时间(星期几): ");scanf("%s",si.time);printf(&qu

25、ot;请输入机票数: ");scanf("%d",&si.count);fwrite(&si,sizeof(struct air),1,fp);m+;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);if(strcmp(ii,"y")!=0)/判断是否继续添加航班信息fclose(fp);/关闭文件return;void read()/定义读取文件函数FILE *fp;if(fp=fopen("hangban.dat"

26、,"r")=NULL)printf("创建文件失败! ");getchar();return;i=0;while(!feof(fp)fread(&si,sizeof(struct air),1,fp);/逐块读取数据i+;m+;/计算存在航班数m-;fclose(fp);void save()/定义保存函数FILE *fp;if(fp=fopen("hangban.dat","wb")=NULL) printf("创建文件失败! ");getchar();return;for(i=0;i

27、<m;i+)/逐块保存数据fwrite(&si,sizeof(struct air),1,fp);fclose(fp);void add()/定义增加航班信息函数doprintf("请依次输入您要增加的航班信息(以回车键结束): n"); /打印提示信息printf("- n");printf("请输入航班号: "); scanf("%d",&sm.num);printf("请输入起始站: ");scanf("%s",sm.start);printf(&

28、quot;请输入终点站: ");scanf("%s",sm.over);printf("请输入时间: ");scanf("%s",sm.time);printf("请输入机票数: ");scanf("%d",&sm.count);m+;printf("添加完毕,是否继续添加?请键入y或n以回车键结束:");scanf("%s",ii);while(!strcmp(ii,"y");/判断是否继续添加void output

29、()/定义输出格式函数printf("航班号tt起始站tt终点站tt时间tt机票数n"); for(i=0;i<m;i+)printf(PRINT);/打印出信息void print()/定义显示航班信息函数printf("n目前我们有如下航班:n");output();/调用输出格式函数printf("n请按回车键返回上层菜单 ");getchar();getchar(); void search()/定义查询函数int n;doprintf("n请输入航班号: ");scanf("%d"

30、;,&n);/输入查询的航班号for(i=0;i<m;i+) if(si.num=n)/按航班号判定输出条件 printf("n您所查找的航班信息为:n ");printf("航班号tt起始站tt终点站tt时间tt机票数 nn");printf(PRINT);/显示信息 printf("n查询完毕,按回车键继续");getchar();getchar();return;printf("n对不起,没有您需要的信息!n ");printf("是否重新查找?请键入y或n以回车键结束 ")

31、;scanf("%s",ii);while(!strcmp(ii,"y");/判定是否重新查找 void dingpiao()/定义订票业务函数int n;char a10="y"dosearch();/调用查询模块if(!strcmp(ii,"n")printf("对不起!没有找到您所需要的航班,所以不能订票。n");printf("n请按回车键返回上层菜单 ");getchar();getchar();strcpy(ii,"n");break;dopr

32、intf("请输入您要订的机票数(以回车键结束): ");scanf("%d",&n);if(n<=0)/判定机票数是否出错printf("输入错误!至少需订1张机票。n");else if(si.count=0)/判定机票是否售完printf("对不起,你所选择的航班的机票已售完!n");break;else if(si.count!=0&&si.count>=n)/判定机票数是否大于等于订票数si.count=si.count-n;printf("订票成功! &qu

33、ot;);break;else if(si.count<n)/判定机票数是否小于订票数 printf("对不起,你所选择的航班只剩 %d张机票n", si.count);printf("是否需要重新输入机票数?请输入y或n以回车键结束: ");/判定是否重新输入订票数scanf("%s",a);while(!strcmp(a,"y");printf("是否需要订其他航班的机票?请输入y或n以回车键结束: ");scanf("%s",a);while(!strcmp(a,"y");/判定是否继续订票void tuipiao()/定义退票函数int n;char a10;dosearch();/调用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论