C课程设计长途客运售票管理系统_第1页
C课程设计长途客运售票管理系统_第2页
C课程设计长途客运售票管理系统_第3页
C课程设计长途客运售票管理系统_第4页
C课程设计长途客运售票管理系统_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、 C+程序设计课程设计说明书题 目 长途客运售票管理系统的设计 学号姓名 指导教师 日期内蒙古科技大学课程设计任务书课程名称面向对象程序设计 A 课程设计设计题目长途客运售票管理系统的设计指导教师时间一、教学要求1. 巩固和加深学生对 C+语言课程的基本知识的理解和掌握2. 掌握 C+语言编程和程序调试的基本技能3. 利用 C+语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用 C+语言解决实际问题的能力 二、设计资料及参数用 C+ 设计一个系统,能提供下列服务:( 1)录入车次信息,格式为:车次开车时间起始终点票价剩余座22120:30包头北京31087可不定时地增加车

2、次数据。(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此 班车已发出”的提示信息。(3)查询路线:可按车次编号查询,可按起始站,终点站查询( 4)售票和退票功能A :查询车次编号或站点。当剩余座位数大于0,并且当前系统时间小于开车时间时才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的车次,当本班车未发出时才能退票,退票后自动更新剩余座位数。 三、设计要求及成果根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;( 3)完成类层次中各个类的描述 (包括属性和方法

3、);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)提交课程设计报告:完成系统总结报告以及系统使用说明书第 1 章 需求分析第 2 章 总体设计第 3 章 类的设计3.1 ××类的设计3.2 ××类的设计第 4 章 详细设计4.1 工程视图 4.2 类图视图 4.3 函数的调用关系4.4 主程序流程图 4.5 主要算法的流程图第 5 章 测试第 6 章 总结目录错误 ! 未指定书签。错误 ! 未指定书签。错误 ! 未指定书签。错误 ! 未指定书签。 错误 ! 未指定书签。错误 ! 未指定书签。错误 ! 未指定书签。 错误

4、 ! 未指定书签。 错误 ! 未指定书签。 错误 ! 未指定书签。 错误 ! 未指定书签。错误 ! 未指定书签。错误 ! 未指定书签。附录: 程序代码 错误 ! 未指定书签。第1章 需求分析1.1 设计资料及参数用 C+ 设计一个系统,能提供下列服务:1)录入车次信息,格式为:车次发车时间起始终点硬座票价剩余座位k26420:30包头北京110200可不定时地增加车次数据。(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此 班列车已发出”的提示信息。(3)查询路线:可按车次编号查询,可按起始站,终点站查询( 4)售票和退票功能A :查询车次或站点。当剩余座

5、位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。第 2章 总体设计2.1用结构框图表示各个功能之间的关系2.2 将框图中系统的各个功能用文字详细的描述。1.铁路售票管理系统理解: 系统中必须有车次信息,车次信息应该是由管理员录入,可由管理员或者乘客查看,定退票及其他操 作。其中要注意的是录入信息必须是由管理员完成的,所以我会创建一个乘客类,然后创建管理员类继承 乘客类,进而继承乘客的所有功能,并添加录入信息的功能。信息的载体可以使链表,也可以是数组,因为我更加熟悉数组,所以我用对象数

6、组。 (为了熟悉链表, 课下自己还建立了以链表存放数据的系统)系统录入信息的操作非常枯燥,所以我创建了一个文件,把每次录入的信息保存入文件,在下一次进 入系统是,它会默认读取文件原有的信息,当然也可以随时添加录入车次信息。然后系统的各个功能仅仅是通过查询找到具体对象的具体数据进行操作。2.基本功能 : 录入 次、始发站、终点站、开车时间(小时、分钟) 、票价、剩余票数等信息。 浏览车次 查看所有的录入车次其中开车时间小于当前时间的车次则输出车次已发出。查询车次 通过搜索车次或站点来快速的查看车辆的信息。定退票 车时间大于当前系统时间的前提下才可退票并且在票数大于零的前提下才可定票, 票数更新。

7、文件的存储 存储录入的车次信息以便下次访问。文件的读取 读取文件内的信息方便操作以上的各项功能; 。第3章 类的设计3.1 service 类的设计(第一个类)1.画出类图2.对类的函数成员的说明定义了一个 service 类,类中包括以下几部分: 公有继承了 user 类私有段: 定义车辆的车次、开车时间(小时、分钟)、始发站、终点站、票价、票数。 公有段依次为输入函数、输出函数、定票函数、退票函数。添加设定信息函数。 友元函数查询函数、浏览函数、文件存储函数、文件读取函数。添加输入函数。3.2 user 类的设计(第二个类)1.画出类图2.对类的函数成员的说明定义了一个 user 类,类中

8、包括以下几部分 : 私有段: 定义车辆的车次、开车时间(小时、分钟)、始发站、终点站、票价、票数。 公有段依次为输出函数、定票函数、退票函数。友元函数 查询函数、浏览函数、文件存储函数、文件读取函数。3.3 全局变量,重要形式参数、局部变量等等,它们的命名及用途解释g-num:确定数组对象的个数,也是控制循环的条件。ticketj: 代表具体的某个对象。A : bool 型,判断使用者身份。B : bool 型,判断是否退出程序。t: long 型,获得当前距 1970 年秒数。pt: tm 指向类的对象的指针,指向当前时间。Functionnumber :整型,选择功能。第4章 详细设计4.

9、1 工程视图说明有几个源代码文件,可以截取工程文件视图表示4.2 类图视图4.3 主程序流程图4.4主要算法的流程图第 5章 测试5.1 验证身份后登陆5.2 录入信息并保存5.3 验证身份5.4 查询车次5.5 查询子菜单5.6 退、订票第 6章 总结 课程设计旨在锻炼学生的实际动手能力和解决真实问题的能力。并在其中掌握和熟练所学的知识,并 能够运用所学知识解决比较简单的现实模拟问题。在为期两周的 C+ 课程设计中,我体会颇多,学到了很多东西。我加强了对C+程序设计这门课程的认识,并且复习了以前学到的知识。这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这 次课程设计,我收获颇丰,

10、相信会为自己以后的学习和工作带来很大的好处。课程设计,有些问题并不是 只靠课本的哪些知识就可以轻易解决的。所以,它不仅锻炼了我们挑战自己的决心,学会用已掌握的知识 去解决我们看似不能解决的问题,同时进一步培养了我们独立思考问题和解决问题的能力。特别是在 C+ 中如何调试程序的方法。当然,老师的指导以及同学的帮助是不可忽视的,他们给了我提示和帮助,教会 了我编译复杂程序的方法。虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得不管咋样来说,对我们学生都是一个 挑战和锻炼。我很欣赏自己能在程序中加入自己的想法和有关程序的内容,将它进行一番改进,感觉收获 很大。总之,这次的 C+ 课程设计让我

11、有了一些新的收获,让我对计算机语言有了更深体会,祝自己在以后 的学习中更上一层楼。附录: 程序代码#include <iostream>#include <iomanip>#include <stdlib.h>#include<string.h>#include <fstream>#include <ctime>using namespace std;const int N=10;bool A=false,B=true;long t = time(0);tm * pt = localtime(&t);void ma

12、inmenu();struct Timeint hour;int minute;class user friend void save ();friend void sure_message();friend void browse();friend void ticketmenu();friend void search_train();friend void search_station();protected:char train10;Time time;char start_station20;char end_station20;int ticket_price;int remain

13、d_seats;public:void display()cout<<train<<"t"<<""<<setfill('0')<<setw(2)<<time.hour<<":"<<setw(2)<<time.minute<<"tt"<<""<<end_station<<"t"<<" &

14、quot;<<ticket_price<<"t"<<" "<<remaind_seats<<"t"t = :time(NULL);tm * pt = localtime(&t);if(time.hour<pt->tm_hour)cout<<" 此班列车已发出 "else if(time.hour=pt->tm_hour&&time.minute<=pt->tm_min)cout<<

15、;" 此班列车已发出 "else cout<<"t 正常 "cout<<endl;void order()if(time.hour<pt->tm_hour)cout<<" 此班列车已发出 ,不能订票,退出! "else if(time.hour=pt->tm_hour&&time.minute<=pt->tm_min)cout<<" 此班列车已发出 ,不能订票,退出! "else if ( remaind_seats =

16、0 )cout << " 此班列车已没票,不能订票,退出!" << endl;elseremaind_seats = remaind_seats - 1;cout <<train<<" 次列车 "<< "售票一次,现存票量为: " <<"<<start_station<<"t"<<"remaind_seats << endl;void Delete()if(time.hour&

17、lt;pt->tm_hour)cout<<" 此班列车已发出 ,不能退票,退出! "else if(time.hour=pt->tm_hour&&time.minute<=pt->tm_min)cout<<" 此班列车已发出 ,不能退票,退出! "else remaind_seats = remaind_seats + 1;cout <<train<<" 次列车 "<< " 退票一次,现存票量为: " <<

18、; remaind_seats << endl; ;class service :public userfriend void input();public:void setinfo (char* c, int h, int m, char* q, char* z, int p, int s)strcpy(train,c);time.hour=h;time.minute=m;strcpy(start_station,q);strcpy(end_station,z);ticket_price=p;remaind_seats=s;service ticketN; static int

19、g_num= void save ()ofstream file(" 数据 .txt",ios:out);for(int j=0;j<=g_num;j+)file<<ticketj.train<<" " file<<ticketj.time.hour <<" " file<<ticketj.time.minute<<" " file<<ticketj.start_station <<" " fi

20、le<<ticketj.end_station <<" " file<<ticketj.ticket_price<<" " file<<ticketj.remaind_seats <<endl;file.close();cout<<" 信息已存入文件 "<<endl;void input()g_num+;char c10;int h;int m;char q20;char z20;int p;int s;cout<<"

21、 车次 :"cin>>c;cout<<" 开车时间 hour:"cin>>h;cout<<" 开车时间 minute:"cin>>m;cout<<" 起始 :"cin>>q;cout<<" 终点 :"cin>>z;cout<<" 票价 :"cin>>p;cout<<" 剩余座位 :"cin>>s;ticketg_

22、num.setinfo (c, h, m, q, z, p, s);save ();void browse()int j;t = time(NULL);tm * pt = localtime(&t);cout<<" 当前时间: "<<setfill('0')<<setw(2)<<pt->tm_hour<<':' cout<<setw(2)<<pt->tm_min<<':'cout<<setw(2)&l

23、t;<pt->tm_sec<<endl<<endl;cout<<" 现存车次信息如下: "<<endl<<endl;cout<<" 车次t"<<" 开车时间 t"<<" 起始t"<<" 终点t"<<" 票价t"<<" 剩余座位 t"<<" 状态t"<<endl; for(

24、 j=0;j<=g_num;j+)ticketj.display();void search_train()char train10;cout<<" 输入你要查询的车次: "cin>>train;cout<<endl<<endl;for(int j=0;j<=g_num;j+)if(strcmp(train,ticketj.train)=0)cout<<" 查询结果: "<<endl;cout<<" 车次 t"<<"

25、开车时间 t"<<" 起始 t"<<" 终点 t"<<" 票价 t"<<"剩余座位 t"<<" 状态 t"<<endl; ticketj.display();break;if(j>g_num)cout<<" 对不起,没有这趟车次信息! "void search_station()char station20;cout<<" 输入你要查询的站点: "

26、;cin>>station;cout<<endl<<endl;for(int j=0;j<=g_num;j+) if(strcmp(station,ticketj.start_station)=0)|(strcmp(station,ticketj.end_station)=0) cout<<" 查询结果: "<<endl;cout<<" 车次 t"<<" 开车时间 t"<<" 起始 t"<<"

27、 终点 t"<<" 票价 t"<<" 剩余座位t"<<endl;ticketj.display();break;if(j>g_num)cout<<" 对不起,没有有关此站点的车次信息!"void ticketmenu()long t = time(0);tm * pt = localtime(&t);int functionNumber;int j;cout<<" >>>>>> 票务菜单 <<&

28、lt;<<<char train10;char station20;cout<<" 可按站点或车次查询订票( 1.按站点, 2.按车次) "<<endl;cout<<" 选择你需要的功能 :"cin>>functionNumber;getchar();for(;functionNumber!=1&&functionNumber!=2;)t"<<" 状态n"cout<<" 指令错误!请重新输入! "&l

29、t;<endl;cin>>functionNumber;cout<<endl<<endl;if (functionNumber=1)cout<<" 输入你要订票或退票的站点: "cin>>station;cout<<endl<<endl;for( j=0;j<=g_num;j+) if(strcmp(station,ticketj.start_station)=0)|(strcmp(station,ticketj.end_station)=0)cout<<"

30、 本车次现存信息 :"<<endl;cout<<" 车次 t"<<" 开车时间 t"<<" 起始 t"<<" 终点 t"<<" 票价 t"<<" 剩余座位 t"<<" 状 态t"<<endl;ticketj.display();break;if(j>g_num)cout<<" 对不起,没有这趟车次信息! ,无法订

31、退票! "if (functionNumber=2)cout<<" 输入你要订票或退票的车次: "cin>>train;cout<<endl<<endl;for( j=0;j<=g_num;j+)if(strcmp(train,ticketj.train)=0)cout<<" 本车次现存信息 :"<<endl;cout<<" 车次 t"<<" 开车时间 t"<<" 起始 t"

32、;<<" 终点 t"<<" 票价 t"<<" 剩余座位 t"<<" 状态t"<<endl;ticketj.display();break;if(j>g_num)cout<<" 对不起,没有有关此站点的车次信息!无法订退票! if(ticketj.time.hour<pt->tm_hour)cout<<" 此班列车已发出 ,不能订退票! "else if(ticketj.time.hou

33、r=pt->tm_hour&&ticketj.time.minute<=pt->tm_min)cout<<" 此班列车已发出 ,不能订退票! "elsecout<<"n"cout<<"1.订票n"cout<<"2.退票n"cout<<"3.返回主菜单n"cout<<"n"cout<<" 选择你需要的功能 :"cin>>funct

34、ionNumber;for(;functionNumber!=1&&functionNumber!=2&&functionNumber!=3;)cout<<" 指令错误!请重新输入! "<<endl;cin>>functionNumber;cout<<endl<<endl;switch(functionNumber)case 1:ticketj.order();save ();break;case 2:ticketj.Delete();save ();break;case 3:mai

35、nmenu();break;/switch endsvoid search_menu()int functionNumber;cout<<">>>>>> 查询子菜单 <<<<<<ncout<<endl;cout<<"1.按班次查询n"cout<<"2.按站点查询n"cout<<"3.返回主菜单n"cout<<endl;cout<<" 请选择你所需要的功能 :&q

36、uot;cin>>functionNumber;cout<<endl<<endl;for(;functionNumber!=1&&functionNumber!=2&&functionNumber!=3;)cout<<" 指令错误!请重新输入! "<<endl;cin>>functionNumber; cout<<endl<<endl;switch(functionNumber)case 1:search_train();break;case 2:

37、search_station();break;case 3:system("cls");mainmenu();void mainmenu()int functionNumber;cout<<" >>>>>> 欢迎使用车票管理系统 <<<<<< n" cout<<endl;cout<<"1.录入班次信息n"cout<<"2.浏览班次信息n"cout<<"3.查询行车路线n&qu

38、ot;cout<<"4.售票与退票系统n"cout<<"5.退出系统n"cout<<endl;cout<<" 请选择你所需要的功能 :"cin>>functionNumber;cout<<endl<<endl;switch(functionNumber)case 1: char c;if (A)doinput();cout<<" 已录入 "<<g_num+1<<" 条航班信息(包括已从文

39、件中读取的) ,想继续录入吗 (y/n)"<<endl;cin>>c;for(;c!='y'&&c!='n')cout<<" 指令错误!请重新输入! "<<endl;cin>>c; while (c='y');else cout<<" 对不起,您不是管理员不能进行这项操作! "cout<<endl<<" 按任意键回主菜单 "<<endl;getchar()

40、;getchar();system("cls");break;case 2:browse();"<<endl;cout<<endl<<endl<<endl<<" 按任意键回主菜单getchar();getchar();system("cls");break;case 3:search_menu();cout<<endl<<" 按任意键回主菜单 "<<endl;getchar();getchar();system(&quo

41、t;cls");break;case 4:ticketmenu();cout<<endl<<" 按任意键回主菜单 "<<endl;getchar();getchar();system("cls");break;case 5:t = time(NULL);tm* pt = localtime(&t);system("cls");cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl;cout<<" >>>>>> 谢谢使用车票管理系统 <<<<<< B=false;break;default:cout<<" 输入错误 ,请确保你的输入为 1-5"<<endl;cout<<" 按任意键回主菜单 "<<endl;getcha

温馨提示

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

评论

0/150

提交评论