c--课程设计-复数类的设计-课程设计论文.doc
内蒙古科技大学 信息工程学院 通信工程 <<C+课程设计>>内蒙古科技大学本科生课程设计论文题 目:C+课程设计复数类的设计姓 名:汤晓峰学 号:1167119202专 业:通信工程班 级: 通信11-2班指导教师: 刘立新老师目 录目录1前言2第一章 C+简介3 第二章 需求分析4第三章 设计分析7 2.1 功能模块82.2 流程图8第四章 运行及测试结果10第五章 课程设计总结14附录(程序源代码)15参考文献40前言 随着科技的发展和人们生活水平的日益提高,人们在不断追求更加快捷的交通方式以满足人们快节奏的生活方式,航空系统在交通系统中已扮演着一个越来越重要的角色,那么航空售票系统还能像以前一样人工管理吗?我们可以想象那将是一项多么烦重的任务,因此人们会寻求一种更加便捷、高效的方法,这时我们的计算机就会显的格外重要了!当然也离不开计算机语言的编写。随着计算机技术的飞速发展和普及,人们的生活方式也发生了巨大的改变,计算机在代替和延伸我们的脑力劳动方面发挥着越来越重要的作用。在交通系统中,有大量的数据需要被处理,而这些工作如果由人来完成几乎是不可能的,但交给计算机处理,就可以既快捷,又高效的完成我们所期待的任务了。航空售票管理系统可以根据乘客和管理人员的要求,进行方便快捷的信息保存、查询、以及购票、退票和管理等工作。本文主要介绍了简易航空售票管理系统用C+程序设计语言进行编写和实现的过程。第一章 C+简介 C+是一种使用非常广泛的电脑程序设计语言。它是一种静态数据类型检查的,支持多范型的通用程序设计语言。C+支持过程化程序设计、数据抽象化、面向对象程序设计、范型程序设计、基于原则设计等多种程序设计风格。C+语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C+语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C+中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C+受到了一定的冲击;第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C+出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C+已经成为当今主流程序设计语言中最复杂的一员。第二章 需求分析<一>要实现的功能1.1该航空售票管理系统必须用C+语言进行设计,要能体现C+语言的特性。1.2该系统至少要能提供下列服务:(1) 录入航班信息,格式为:航班号起始终点起飞时间经济舱票价剩余座位mu2164包头北京20:3061087可不定时地增加航班数据。(2)浏览航班信息:可显示出所有航班,如果当前系统时间超过了某航班的起飞时间,则显示“此次航班已发出”的提示信息。(3)查询航班信息:可按航班编号查询,可按起始站,终点站查询。 (4)订票和退票功能A:查询航班编号或站点。当剩余座位数大于0,并且当前系统时间小于起飞时间时才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的班次,当本班航班未发出时才能退票,退票后自动更新剩余座位数。<二>设计思路 分析其功能要求,该系统主要要实现四个功能,即航班信息输入功能、浏览航班信息功能、查询航班信息功能、订票和退票功能。那么我应该定义一个航班系统类(flight_system),该类的应该成员函数应该包含航班所有的信息,因此我要定义的成员函数:航班信息航班号(hangban)、时间(time)、起始站(start)、终点站(end)、票价(price)、剩余票数(leftseat),这些信息的录入函数都定义好后,那么我就要定义主函数了,主函数应该要声明这四项功能,然后再分别编写功能函数,比如定义航班信息输入功能函数,我就可以调用类中的成员函数来实现,同理浏览航班信息的功能函数也应调用类的成员函数来进行信息的输出,这样就可以达到简易的航空售票系统基本要求了,即当我把信息录入成功以后,就可以进行信息的浏览,信息的查询以及订票的售票的简单操作了,所以我首先应该做的就是编写成员函数,那么接下来的工作就会很容易的解决了!课程名称C+语言课程设计设计题目航空售票管理系统的设计指导教师余金林老师时间2011-2012春学期 第17、18周一、设计资料及参数用C+设计一个系统,能提供下列服务:(1)录入航班信息,格式为:航班号起飞时间起始终点经济舱票价剩余座位mu216420:30包头北京61087可不定时地增加航班数据。(2)浏览航班信息,可显示出所有航班,如果当前系统时间超过了某航班的起飞时间,则显示“此次航班已发出”的提示信息。(3)查询路线:可按航班编号查询,可按起始站,终点站查询(4)售票和退票功能A:查询航班编号或站点。当剩余座位数大于0,并且当前系统时间小于起飞时间时才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的航班编号和数量,当本班航班未发出时才能退票,退票后自动更新剩余座位数。二、设计要求及成果根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和力一法);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)提交课程设计报告:完成系统总结报告以及系统使用说明书第三章 设计分析主菜单显示函数的设计分析 通过分析问题需求,那么主菜单须显示如下 1.管理航班信息2. 浏览航班信息 3. 查找航班信息4. 订票退票信息5. 刷新系统信息0.退出系统,但如果是要进行信息的管理,就必须要通过密码的认证。其分析框图如下: 信息管理的操作主函数选择功能1密码验证未通过认证通过删除信息选择功能按提示选择录入信息返回主菜单如果信息都保存好,要进行信息浏览和信息查询操作 ,则可以直接进入其相应的操作界面。其分析框图如下:主函数主函数选择功能选择功能查询信息信息浏览选择查询方式调用信息输出函数显示所有航班信息航班号查询按站点查询调用信息输出函数显示所有航班信息返回主菜单如果想进行订票和退票的操作,即可直接选择相应的功能序号就可以进入操作界面了,其设计流程图如下:主函数选择功能 进入订票退票界面进行退票操作继续选择功能进行订票操作返回主菜单刷新系统时间操作,进入操作系统后,直接选择相应功能序号即可执行该操作了,退出系统也是一样的,按数字0后系统会提醒按任意退出。以上就是设计航空售票系统简易程框图,有了设计流程图就可以根据流程图一步步编写程序,思路将会非常清晰。 第四章 运行及测试结果返回主菜单界面当进入系统后,会看到如下界面:首先演示功能一(管理航班信息):输入数字1,系统会提示你输入密码,默认密码为1234,如果密码输入错误也会有提示,输入密码后,即进入了管理界面如下界面:当进入这一界面,你可以选择添加航班信息和删除航班信息,根据界面提示,可以选择响应的功能,这里不再演示。信息浏览功能:在主界面中,输入数字2,即进入该功能界面,如下图:信息查询功能:同理进入主菜单后,输入数字3,即可进入该功能界面,进入后系统会提示你选择查询的方式,先演示按航班号查询的方式,输入数字2,即可进入如下界面:订票退票操作:和如上操作一样,在主菜单界面输入数字4,进入该界面,系统会提示你如何显示信息,然后询问你是订票还是退票操作,从而完成你想要的功能,如下图:同理退票也是一样,如下:如果没有信息的录入,当输入功能序号时,会出现如下提示:第五章 课程设计总结此课程设计我完成了对航线查询、订票、退票及删除等功能的设计操作,此课程设计还包含了提示功能以及退出功能。对程序在运行时输入错误操作的修改,提供了一定的方便条件,基本上能安全的运行,自我感觉能够符合题目的要求。程序写的还算简练,结构清晰,各个模块的分工和功能明确。通过两周的C+课程设计,使我对C+程序设计有了更全面的认识,让我感觉到将课堂上老师讲的知识运用到实际操作中的重要性(即动手的能力)。我这次课程设计的题目是航空订票系统,在开始阶段,根本无从下手,后来通过老师的耐心讲解和自己查阅有关资料,最终成功完成整个程序的设计。在这次课程设计中我对C+语言中的类的定义、成员函数的调用等知识有了进一步的理解,对流程图的画法更加熟练,对程序的开发思路有了一定的理解,我想这在以后的学习和工作中都会有帮助的,因为当今世界是离不开计算机的,用计算机会节省我们很多时间的,同时也使我意识到了学习C+语言的重要性。在调试程序的过程中,让我感觉到不管做什么事情,我们都应该有耐心,不能知难而退,如果老是半途而废的话,我们将一事无成,当然在调试过程中使我的读程序能力,纠错能力都有了提高,我将继续努力,争取会有更大的进步!附录(源程序代码)#include"iostream.h" #include"string.h"#include<time.h>static int num=0; /定义全局变量控制航班总数class flight_system private : char hangban10; char start10; char end10; /定义航班属性 int timehour; int timeminiute; int price; int leftseat; public : void hangban_output()/输出航班信息 cout<<hangban; void start_output()/输出起始站 cout<<start; void end_output()/输出终点站 cout<<end; int timehour_output()/输出时 return(timehour); int timeminiute_output()/输出分 return(timeminiute); int price_output()/输出票价 return(price); int leftseat_output()/输出剩余票数 return(leftseat); int qishi_return(char *p)/找出符合条件的起始站 int i; i=strcmp(p,start); return(i); int zhongdian_return(char *p)/找出符合条件的终点站 int i; i=strcmp(p,end); return(i); int hangban_return(char *p)/找出符合条件的航班 int i; i=strcmp(p,hangban); return(i); void hangban_input()/录入航班 cin>>hangban; void start_input()/录入起始站 cin>>start; void end_input()/录入终点站 cin>>end; void timehour_input()/录入时 cout<<"时:" cin>>timehour; void timeminiute_input()/录入分 cout<<"t 分:" cin>>timeminiute; void price_input()/录入票价 cin>>price; void leftseat_input()/录入剩余座位数 cin>>leftseat; void shou()/售票后剩余票数自动减一 leftseat=leftseat-1; void tui()/退票后剩余票数自动加一 leftseat=leftseat+1; ;flight_system *hangkong=new flight_system15; /分配动态存储空间void main() void foundation_1(); void foundation_2(); void foundation_3(); /声明基础功能模块 void foundation_4(); void foundation_5();while(1) struct tm *local; char s1128; time_t t; /获取系统时间 t=time(NULL); local=localtime(&t); strftime(s1,128,"%Y-%m-%d %H:%M ",local);cout<<" *>>>>>>>>>>>> 欢迎进入航空票务系统 <<<<<<<<<<<<<* "<<endl; cout<<" -"<<endl; cout<< " * 1.管理航班信息 * 2.浏览航班信息 "<<endl<<endl << " * 3.查找航班信息 * 4.订票退票信息 "<<endl<<endl << " * 5.刷新系统信息 * 0.退出系统 "<<endl<<endl << " -"<<endl << " 当前时间:"<<s1<<endl; cout<<" -"<<endl; cout<< "请选择您要操作的编号(选择05):" int n; cin >>n; while(!(n = 1 | n = 2 | n = 3 | n = 4 | n = 5|n = 0) cout << "请输入正确编号(05):" cin >>n; switch(n) case 1 :foundation_1();break; case 2 :foundation_2();break; /功能选择模块 case 3 :foundation_3();break; case 4 :foundation_4();break; case 5 :foundation_5();break; case 0 :return ;break; /*功能模块一*/void foundation_1()cout<<"-欢迎进入信息管理系统-"<<endl; int mima=1234; int miyue=0; cout<<endl<<"请输入密码:" /管理员控制权限 cin>>miyue;if(miyue!=mima)cout<<endl<<"密码错误!请重新输入!"<<endl; if(miyue=mima) cout<<endl<<"密码正确!"<<endl<<endl<<"请输入操作编号,添加请按-1,删除请按-2,退出请按-3"<<'n' int n; cin>>n; while(!(n=1|n=2|n=3) cout <<"请输入正确编号(13):" cin>>n; switch(n) case 3:return ;break; case 1:cout<<"请输入航班号:" hangkongnum.hangban_input(); cout<<"请输入起始站点:" hangkongnum.start_input(); cout<<"请输入终点站:" hangkongnum.end_input(); cout<<"请输入时间:" hangkongnum.timehour_input(); hangkongnum.timeminiute_input(); /航班信息录入 cout<<"请输入票价:" hangkongnum.price_input(); cout<<"请输入座位数:" hangkongnum.leftseat_input(); cout<<"信息录入成功!"<<endl; num+; cout<<"继续请按-1,退出请按-2"<<'n' int x; cin>>x; while(!(x=1|x=2) cout <<"请输入正确编号(12):" cin >>x; /实现循环操作 switch(x) case 1: foundation_1();break;/递归调用实现循环 case 2: return ;break;break; case 2: cout<<"请输入要删除的航班号!" char x10; int s; cin>>x; int t=0,y; for(t=0;t<num;t+) y=hangkongt.hangban_return(x); if(y=0) cout<<"确认删除-1,退出请按-2"<<endl; cin>>s; while(!(s!=1|s!=2) cout <<"请输入正确编号(12):"<<endl; cin >>s; /实现循环操作 switch(s) case 1:hangkongt=hangkongt-1;num-; cout<<"删除成功!" break; /递归调用实现循环 case 2: return ;break; if(y!=0) cout<<endl<<"没有此航班信息,不能删除!"<<endl; cout<<endl<<"继续请按-1,退出请按-2"<<endl; int s; cin>>s; while(!(s!=1|s!=2) cout <<"请输入正确编号(12):" cin >>s; /实现循环操作 switch(s) case 1: foundation_1();break;/递归调用实现循环 case 2: return ;break; cout<<endl<<"继续请按-1,退出请按-2"<<'n' cin>>s; while(!(s!=1|s!=2) cout <<"请输入正确编号(12):" cin >>s; /实现循环操作 switch(s) case 1: foundation_1();break;/递归调用实现循环 case 2: return ;break; ;break; else foundation_1(); /*/*功能模块二*/void foundation_2() cout<<endl<<"*欢迎进入信息浏览系统*"<<endl; int x; char a; if (num=0) cout<<endl<<"当前航班信息不存在,请您稍后再试! "<<endl <<endl<<"-感谢您的使用-"<<endl; cout<<endl<<"按任意字母退出!" cin>>a; return ; if (num>0) cout<<"航班基本信息如下:" for(x=0;x<num;x+) cout<<endl<<endl<<"航班号 起飞时间 起点站 终点站 经济舱票价 剩余票数"<<endl; cout<<" " hangkongx.hangban_output();cout<<" " cout<<hangkongx.timehour_output();cout<<"时" cout<<hangkongx.timeminiute_output();cout<<"分"cout<<" " hangkongx.start_output(); cout<<" " /信息输出模块 hangkongx.end_output();cout<<" " cout<<hangkongx.price_output();cout<<" " cout<<hangkongx.leftseat_output(); cout<<endl<<"-感谢您的使用-"<<endl; cout<<endl<<"按任意字母退出!" cin>>a; return ;/*功能模块三*/void foundation_3()cout<<endl<<"*欢迎进入信息查询系统!*"<<endl; if (num=0) cout<<endl<<"当前航班信息不存在,请您稍后再试! "<<endl <<endl<<"-感谢您的使用-"<<endl; cout<<endl<<"按任意字母退出!" char a; cin>>a; return ; if(num>0) cout<<endl<<"请输入查询方式,按站点查询请输入-1,按航班号查询请按-2,返回主菜单请按-3"<<endl; int a,b; cin>>a; /选择查询方式 while(!(a=1|a=2|a=3)cout << "请输入正确编号(13):" cin >>a; /*按车次检索*/ switch(a) case 3:break; case 2:cout<<"请输入航班号:" char x10; int y,t; cin>>x; for(t=0;t<num;t+) y=hangkongt.hangban_return(x); if(y=0) cout<<"航班号 起飞时间 起点站 终点站 经济舱票价 剩余票数"<<endl; hangkongt.hangban_output();cout<<" " cout<<hangkongt.timehour_output();cout<<"点" cout<<hangkongt.timeminiute_output();cout<<"分"cout<<" " hangkongt.start_output(); cout<<" " hangkongt.end_output();cout<<" " cout<<hangkongt.price_output();cout<<" " cout<<hangkongt.leftseat_output(); else cout<<"当前航班信息不存在,请稍后再试!" cout<<endl<<"-感谢您的使用-"<<endl; cout<<endl<<"继续请按-1,退出请按-2"<<endl; cin>>b; while(!(b=1|b=2)