当前位置:文档之家› 长途客运售票管理系统的课程设计说明书模板

长途客运售票管理系统的课程设计说明书模板

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

(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班车已发出”的提示信息。

(3)查询路线:可按车次编号查询,可按起始站,终点站查询(4)售票和退票功能A:查询车次编号或站点。

当剩余座位数大于0,并且当前系统时间小于开车时间时才能售票,售票后自动更新剩余座位数。

B:退票时,输入退票的车次,当本班车未发出时才能退票,退票后自动更新剩余座位数。

三、设计要求及成果根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述(包括属性和方法);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)提交课程设计报告:完成系统总结报告以及系统使用说明书..目录第1章需求分析 ..................................................................... ........................................................................ ........ 4 第2章总体设计 ..................................................................... ........................................................................ ........ 4 第3章类的设计 ..................................................................... ........................................................................ ........ 5 第4章详细设计 ..................................................................... ........................................................................ ........ 6 第5章测试 ..................................................................... ........................................................................ ................ 8 第6章总结 ..................................................................... ........................................................................ .............. 14 附录:程序代码 ..................................................................... ........................................................................ .. (15)..第1章需求分析用C++设计一个系统,能提供下列服务:(1)录入车次信息,格式为:车次发车时间起始终点硬座票价剩余座位k264 110 200 20:30 包头北京可不定时地增加车次数据。

(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班列车已发出”的提示信息。

(3)查询路线:可按车次编号查询,可按起始站,终点站查询4)售票和退票功能 (A:查询车次或站点。

当剩余座位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。

B:退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。

第2章总体设计1.用结构框图表示各个功能之间的关系。

..2. 将框图中系统的各个功能用文字详细的描述。

基本功能:录入——次、始发站、终点站、开车时间(小时、分钟)、票价、剩余票数等信息。

浏览车次——查看所有的录入车次其中开车时间小于当前时间的车次则输出车次已发出。

查询车次——通过搜索车次或站点来快速的查看车辆的信息。

定退票——车时间大于当前系统时间的前提下才可退票并且在票数大于零的前提下才可定票,票数更新。

文件的存储——存储录入的车次信息以便下次访问。

文件的读取——读取文件内的信息方便操作以上的各项功能;。

第3章类的设计 3.1 相关数据结构的说明车次:变量 train 定义为字符型。

发车时间:time 结构体。

始发站:变量 star-station 字符型。

终点站:变量end-station 字符型。

开车的间: :变量 time 整型、变量 time1 整型。

票价 :变量 ticket-price 实型。

剩余票数 :变量remaind_seats 整型。

3.2 类的设计定义了一个user 类,类中包括以下几部分:私有段: 私有段:定义车辆的车次、开车时间(小时、分钟)、始发站、终点站、票价、票数。

定义车辆的车次、开车时间(小时、分钟)、始发站、终点站、票价、票数。

公有段公有段依次为输出函数、定票函数、退票函数。

友元函数..查询函数、浏览函数、文件存储函数、文件读取函数。

定义了一个service 类,类中包括以下几部分:公有继承了user类私有段: 私有段:定义车辆的车次、开车时间(小时、分钟)、始发站、终点站、票价、票数。

定义车辆的车次、开车时间(小时、分钟)、始发站、终点站、票价、票数。

公有段公有段依次为输入函数、输出函数、定票函数、退票函数。

添加设定信息函数。

友元函数查询函数、浏览函数、文件存储函数、文件读取函数。

添加输入函数。

3.3全局变量,重要形式参数、局部变量等等,它们的命名及用途解释g-num:确定数组对象的个数,也是控制循环的条件。

ticket[j]:代表具体的某个对象。

A: bool型,判断使用者身份。

B: bool型,判断是否退出程序。

t: long型,获得当前距1970年秒数。

pt: tm 指向类的对象的指针,指向当前时间。

Functionnumber:整型,选择功能。

第4章详细设计 4.1 工程视图说明有几个源代码文件,可以截取工程文件视图表示4.2 类图视图每个文件包含哪些类和函数,可以截图说明..4.3 主程序流程图 ..第5章测试程序的运行结果截图。

1验证身份..2管理员登陆..3录入信息并保存.. 4浏览5不是管理员,不能录入信息.. 5查询子菜单6查询车次..7订票8退票9退出..第6章总结经历过基本几天都在看程序的时间,我发现我懂的太少,要学的太多。

原以为会很轻松,但还是遇到很多问题,以前上课时从未想到过。

对文件的操作我一直都没注意,现在才发现其乐无穷,学习与实践果然是不可分割的。

发现水平还是不够,同学可以编出一个比较漂亮的界面,还可以随意调用文件操作,实在让人赞叹不已。

课程设计旨在锻炼学生的实际动手能力和解决真实问题的能力。

并在其中掌握和熟练所学的知识,并能够运用所学知识解决比较简单的现实模拟问题。

本次课程设计在老师的帮助和自己的努力下终于能够成功运行,使我感到非常高兴以及提高了自己的编程信心,虽然这次课程设计的题目实现比较简单和不实用但毕竟是自己将近两个星期的努力地结果。

在期间我对编程的理念理解又加深了一点,他是我明白好的算法或者是好的逻辑思维对编程的重要性,在..调试期间我自卑过、高兴过、平静过。

可以说是我经历了比较大的情感波动。

当费很大劲才把程序调运行的时候那种感觉实在是太好了。

在本次课程设计活动中,我明显的感觉到自己知识的欠缺和实际动手能的差劲。

尤其是在传值传参的函数调用时更体现的非常明显,感觉自己的书本学的不透、学的不扎实。

有些地方更本就不会,不如说文件的操作,比如说系统时间的获取等以前在上课或作习题时更本就不会考虑的问题在课程设计当中完全暴露出来。

此次实习加强了我的理解,很多以前迷糊的概念得到了明确,亦让我感到计算机语言的强大之处。

一句诗概括此次实践,“山重水复疑无路,柳暗花明又一村”;如今实践已然结束,但是对于计算机语言的学习决不能放松,“雄关漫道真如铁,而今迈。

现在的世界是信息化的,路漫漫其修远兮,吾将上下而求索。

步从头越”感谢老师抽出时间的指导,同时亦感谢大家这些天来的支持与帮助。

附录:程序代码#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 mainmenu();struct Time{int 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 train[10];Time time;char start_station[20];char end_station[20];int ticket_price;int remaind_seats;public:void display(){cout<<train<<"\t"<<" "<<setfill('0')<<setw(2)<<time.hour<<":" <<setw(2)<<time.minute<<"\t\t"<<" "<<start_station<<"\t"<<" "<<end_station<<"\t"<<" "<<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<<" 此班列车已发出";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 == 0 )cout << "此班列车已没票,不能订票,退出~" << endl;else{remaind_seats = remaind_seats - 1;cout <<train<<"次列车 "<< "售票一次,现存票量为:" << remaind_seats <<endl;..}}void Delete(){if(time.hour<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<<"次列车 "<< "退票一次,现存票量为:" << remaind_seats <<endl;}}} ;class service :public user{friend 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 ticket[N];static int g_num=-1;void save (){ofstream file("数据.txt",ios::out);for(int j=0;j<=g_num;j++){file<<ticket[j].train<<" ";file<<ticket[j].time.hour <<" ";file<<ticket[j].time.minute<<" ";file<<ticket[j].start_station <<" "; file<<ticket[j].end_station <<" "; . .file<<ticket[j].ticket_price<<" "; file<<ticket[j].remaind_seats <<endl; }file.close();cout<<"信息已存入文件"<<endl;}void input(){g_num++;char c[10];int h;int m;char q[20];char z[20];int p;int s;cout<<"车次:";cin>>c;cout<<"开车时间hour:";cin>>h;cout<<"开车时间minute:";cin>>m;cout<<"起始:";cin>>q;cout<<"终点:";cin>>z;cout<<"票价:";cin>>p;cout<<"剩余座位:";cin>>s;ticket[g_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)<<pt->tm_sec<<endl<<endl;cout<<"现存车次信息如下:"<<endl<<endl;cout<<"车次\t"<<"开车时间\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"剩余座位\t"<<"状..态\t"<<endl;for( j=0;j<=g_num;j++)ticket[j].display(); }void search_train(){char train[10];cout<<"输入你要查询的车次:";cin>>train;cout<<endl<<endl;for(int j=0;j<=g_num;j++)if(strcmp(train,ticket[j].train)==0){cout<<"查询结果:"<<endl;cout<<"车次\t"<<"开车时间\t"<<"起始\t"<<"终点\t"<<"票价\t" <<"剩余座位\t"<<"状态\t"<<endl;ticket[j].display();break;}if(j>g_num)cout<<"对不起,没有这趟车次信息~";}void search_station(){char station[20];cout<<"输入你要查询的站点:";cin>>station;cout<<endl<<endl;for(int j=0;j<=g_num;j++)if((strcmp(station,ticket[j].start_station)==0)||(strcmp(station,tic ket[j].end_station)==0)){cout<<"查询结果:"<<endl;cout<<"车次\t"<<"开车时间\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"剩余座位\t"<<"状态\t"<<endl;ticket[j].display();break;}if(j>g_num)cout<<"对不起,没有有关此站点的车次信息~"; }void ticketmenu(){long t = time(0);tm * pt = localtime(&t);int functionNumber;int j; ..cout<<" >>>>>> 票务菜单 <<<<<<\n";char train[10];char station[20];cout<<"可按站点或车次查询订票(1.按站点,2.按车次)"<<endl;cout<<"选择你需要的功能:";cin>>functionNumber;getchar();for(;functionNumber!=1&&functionNumber!=2;){cout<<"指令错误~请重新输入~"<<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,ticket[j].start_station)==0)||(strcmp(station,tic ket[j].end_station)==0)){cout<<"本车次现存信息:"<<endl;cout<<"车次\t"<<"开车时间\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"剩余座位\t"<<"状态\t"<<endl;ticket[j].display();break;}if(j>g_num)cout<<"对不起,没有这趟车次信息~,无法订退票~";}if (functionNumber==2){cout<<"输入你要订票或退票的车次:";cin>>train;cout<<endl<<endl;for( j=0;j<=g_num;j++)if(strcmp(train,ticket[j].train)==0){cout<<"本车次现存信息:"<<endl;cout<<"车次\t"<<"开车时间\t"<<"起始\t"<<"终点\t"<<"票价\t"<<"剩余座位\t"<<"状态\t"<<endl;ticket[j].display();break;}if(j>g_num)cout<<"对不起,没有有关此站点的车次信息~无法订退票~"; ..}if(ticket[j].time.hour<pt->tm_hour)cout<<"此班列车已发出,不能订退票~";else if(ticket[j].time.hour==pt->tm_hour&&ticket[j].time.minute<=pt->tm_min)cout<<"此班列车已发出,不能订退票~";else{cout<<"\n";cout<<" 1.订票 \n";cout<<" 2.退票 \n";cout<<" 3.返回主菜单 \n";cout<<"\n";cout<<"选择你需要的功能:";cin>>functionNumber;for(;functionNumber!=1&&functionNumber!=2&&functionNumber!=3;) {cout<<"指令错误~请重新输入~"<<endl;cin>>functionNumber;}cout<<endl<<endl;switch(functionNumber){case 1:ticket[j].order();save ();break;case 2:ticket[j].Delete();save ();break;case 3:mainmenu();break;}//switch ends}}void search_menu(){int functionNumber;cout<<" >>>>>> 查询子菜单 <<<<<< \n";cout<<endl;cout<<" 1.按班次查询 \n";cout<<" 2.按站点查询 \n";cout<<" 3.返回主菜单 \n";..cout<<endl;cout<<"请选择你所需要的功能:";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: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";cout<<" 4.售票与退票系统\n";cout<<" 5.退出系统\n";cout<<endl;cout<<"请选择你所需要的功能:";cin>>functionNumber;cout<<endl<<endl;switch(functionNumber){case 1:{ char c;if (A){do..{input();cout<<"已录入"<<g_num+1<<"条航班信息(包括已从文件中读取的),想继续录入吗(y/n)"<<endl;cin>>c;for(;c!='y'&&c!='n';){cout<<"指令错误~请重新输入~"<<endl;cin>>c;}} while (c=='y');}else cout<<"对不起,您不是管理员不能进行这项操作~";cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("cls");}break;case 2:{browse();cout<<endl<<endl<<endl<<"按任意键回主菜单......"<<endl; getchar();getchar();system("cls");}break;case 3:{search_menu();cout<<endl<<"按任意键回主菜单......"<<endl;getchar();getchar();system("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<<" >>>>>> 谢谢使用车票管理系统 <<<<<<\n";B=false;}break;default:{cout<<"输入错误,请确保你的输入为1--5"<<endl;cout<<"按任意键回主菜单......"<<endl;getchar();system("cls");}}//switch ends}void sure_message(){cout<<" >>>>>> 欢迎使用车票管理系统 <<<<<<\n"<<endl<<endl;ifstream file ( "数据.txt" ,ios::in) ;if ( !file ){if (A){cout << "从没录入过信息,请您先录入信息" <<endl;input();cout<<endl<<"按任意键回主菜单......"<<endl;getchar();system("cls");mainmenu();}else cout<<"对不起,系统还没录入过任何信息,请提示管理员录入信息~"; }else{cout<<"本次运行尚未录入信息,默认读取已存信息\n";cout<<"按任意键读取......\n";getchar();getchar();while( !file.eof()){g_num++;file>>ticket[g_num].train;file>>ticket[g_num].time.hour ;file>>ticket[g_num].time.minute; ..file>>ticket[g_num].start_station;file>>ticket[g_num].end_station;file>>ticket[g_num].ticket_price;file>>ticket[g_num].remaind_seats;}g_num--;file .close();cout<<"读取完毕~"<<endl;}}void main(){int functionNumber,code;cout<<"请输入您的身份(1.管理员,2.乘客)"<<endl; cout<<"您的身份:";cin>>functionNumber;for(;functionNumber!=1&&functionNumber!=2;) {cout<<"指令错误~请重新输入~"<<endl;cin>>functionNumber;}if (functionNumber==1){cout<<"请输入密码:";cin>>code;for(;code!=112233;){cout<<"指令错误~请重新输入~"<<endl; cin>>code;}A=true;}sure_message();do mainmenu();while(B);}.。

相关主题