1、铁路售票管理系统C+程序设计课程设计说明书题 目铁路售票系统学 号姓 名指导教师日 期内蒙古科技大学课程设计任务书课程名称面向对象程序设计A课程设计设计题目铁路售票管理系统的设计指导教师周李涌时间2013-2014秋学期 第17、18周一、教学要求1. 巩固和加深学生对C+语言课程的基本知识的理解和掌握2. 掌握C+语言编程和程序调试的基本技能3. 利用C+语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C+语言解决实际问题的能力二、设计资料及参数用C+设计一个系统,能提供下列服务:(1)录入车次信息,格式为:车次发车时间起始终点硬座票价剩余座位k26420:30包头北
2、京110200可不定时地增加车次数据。(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班列车已发出”的提示信息。(3)查询路线:可按车次编号查询,可按起始站,终点站查询(4)售票和退票功能A:查询车次或站点。当剩余座位数大于0,并且当前系统时间小于发车时间时才能售票,售票后自动更新剩余座位数。B:退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。三、设计要求及成果根据系统功能要求,可以将问题解决分为以下步骤:(1)分析系统中的各个实体之间的关系及其属性和行为;(2)根据问题描述,设计系统的类层次;(3)完成类层次中各个类的描述
3、(包括属性和力一法);(4)完成类中各个成员函数的定义;(5)完成系统的应用模块;(6)功能调试;(7)提交课程设计报告:完成系统总结报告以及系统使用说明书第1章 需求分析用C+设计一个系统,能提供下列服务:(1)录入车次信息,格式为:车次发车时间起始终点硬座票价剩余座位k26420:30包头北京110200可不定时地增加车次数据。(2)浏览车次信息,可显示出所有车次,如果当前系统时间超过了某车次的发车时间,则显示“此班列车已发出”的提示信息。(3)查询路线:可按车次编号查询,可按起始站,终点站查询(4)售票和退票功能A:查询车次或站点。当剩余座位数大于0,并且当前系统时间小于发车时间时才能售
4、票,售票后自动更新剩余座位数。B:退票时,输入退票的车次,当本班列车未发出时才能退票,退票后自动更新剩余座位数。第2章 总体设计1.用结构框图表示各个功能之间的关系。2. 将框图中系统的各个功能用文字详细的描述。 1)初始化:在未添加过列车信息的情况下,管理员进入系统初次录入列车信息。 2)添加:管理员添加列车信息。 3)浏览:浏览列车信息,显示车次、发车时间、起始站、终点站、硬座票价、剩余座位、列车是否发出。 4)查找:查找列车信息(分别为按车次、起始站、终点站)。 5)订票:订购车票;已发出的列车不能订票。 6)退票:退还车票;已发出的列车不能退票。第3章 类的设计3.1 user类的设计
5、(第一个类)1.画出类图User数据成员 struct Time int hour; int minute; ; char num10; Time time; char start20; char end20; int price; int count;函数成员 void print(); void search(); void dingpiao(); void tuipiao(); 2.对类的函数成员的说明 在第一个类中定义了浏览函数、查找函数、订票函数、退票函数 函数的首部: 1)浏览函数: 输入了当地时间、车次、列车发出时间、起始站、终点站、剩余车票; 进行了选择对象与输出流操作; 输出
6、了当地时间,不同车次的车次编号、列车发出时间、起始站、终点 站、剩余车票、列车状态; 2)查找函数: 输入了车次(或起始站或终点站)。 进行输入车次(或起始站或终点站)与数据库内的车票信息的匹配。 输出了相匹配的车次的信息。 3)订票函数: 输入了车次(或起始站或终点站)。 进行输入车次(或起始站或终点站)与数据库内的车票信息的匹配。判断是否允许 被购买,然后进行是否购买。 刷新车票。 输出车票已订购。 4)退票函数: 输入了车次(或起始站或终点站)。 进行输入车次(或起始站或终点站)与数据库内的车票信息的匹配。判断是否允许 被退票,然后进行是否退票。 刷新车票。 输出车票已退还。3.2 se
7、rvice类的设计(第二个类)1. 画出类图service 数据成员: struct Time int hour; int minute; ; char num10; Time time; char start20; char end20; int price; int count;函数成员:void chushihua(); void add(); 友元函数: friend void ckym(); friend void glyym(); friend void sfyz(); friend void save (); friend void read(); friend void inp
8、ut(); friend void display(int j); friend void search_CC(); friend void search_QS(); friend void search_ZD();2. 对类的函数成员的说明 1)初始化函数:输入了初次对象的车次、列车发出时间、起始站、终点站、剩余车票数。进行了车票信息的储存。结果将车票信息保存在了ticket.txt。 2)增添函数:输入了不同对象的车次、列车发出时间、起始站、终点站、剩余车票数。进行了车票信息的储存。结果将车票信息保存在了ticket.txt。第4章 详细设计4.1 工程视图 4.2 类图视图 4.3 主程
9、序流程图 Y N N Y 0 N 1-6 Y 0 1-44.4 主要算法的流程图 初始化函数: Y N 添加模块: Y N 查询模块: 1 2 3 订票函数: N Y Y N 退票函数: N Y Y N第5章 测试程序的运行结果截图:第6章 总结感谢老师的辛苦教学与悉心指导,通过本次课程设计,让我更加深刻的理解到了C+得运用,这门语言的奥妙之处。相信这次实训会让我在今后的学习中受益匪浅。附录:程序代码#include#include#include/清屏文件的声明#include/获取时间的文件的声明#include#include const int N=10;static int g_nu
10、m=-1;int j;int a=0;char ii10;long t = time(0);class userprotected: struct Time int hour; int minute; ; char num10; Time time; char start20; char end20; int price; int count;public: void print(); void search(); void dingpiao(); void tuipiao(); ;class service:public userpublic: void chushihua(); void
11、add(); friend void ckym(); friend void glyym(); friend void sfyz(); friend void save (); friend void read(); friend void input(); friend void display(int j); friend void search_CC(); friend void search_QS(); friend void search_ZD(); ;service ticket10;void input() g_num+; cout请输入车次:ticketg_num.num; c
12、out请输入起始站:ticketg_num.start; cout请输入终点站:ticketg_num.end; cout请输入时间(时):ticketg_num.time.hour; cout请输入时间(分):ticketg_num.time.minute; cout请输入票价:ticketg_num.price; cout请输入车票数:ticketg_num.count; save (); void save () ofstream file(ticket.txt,ios:in); for(int j=0;j=g_num;j+) fileticketj.num ; fileticketj.
13、time.hour ; fileticketj.time.minute ; fileticketj.start ; fileticketj.end ; fileticketj.price ; fileticketj.countendl; file.close(); cout信息已存入文件ticketg_num.num; fileticketg_num.time.hour; fileticketg_num.time.minute; fileticketg_num.start; fileticketg_num.end; fileticketg_num.price; fileticketg_num.
14、count; g_num-; file.close(); cout读取完毕!endl;void display(int j) coutticketj.numtticketj.startt ticketj.endt ticketj.time.hour: ticketj.time.minutettticketj.pricet ticketj.counttt; t = :time(NULL); tm * pt = localtime(&t); if(ticketj.time.hourtm_hour) couttm_hour&ticketj.time.minutetm_min) cout此班列车已发出
15、; else cout正常; coutendl; void output() /输出列车信息 int j; t = time(NULL); tm * pt = localtime(&t); cout当前时间:ttm_hour:tm_min:; couttm_secendl; cout车次信息如下:endl; cout车次t起始站t终点站t发车时间t票价t剩余票数t状态endl; for( j=0;j=g_num;j+) display(j); /*订票模块*/void user:dingpiao() /订票函数 system(cls); tm * pt = localtime(&t); int
16、 n; char a10 = y; do search(); if (!strcmp(ii, n) cout对不起!没有找到您所需要的列车信息,不能订票。endl; cout请按回车键返回上层菜单endl; getchar(); strcpy(ii, n); return; if(ticketj.time.hour tm_hour) cout此班列车已发出,不能订票!; cout请按回车键返回上层菜单tm_hour&ticketj.time.minute tm_min) cout此班列车已发出,不能订票!; getchar(); strcpy(ii, n); break; do coutn;
17、if (n = 0) cout输入错误!至少需订1张车票。= n) ticketj.count = ticketj.count - n; cout订票成功!; break; else if (ticketj.count = 0) cout对不起,你所选择的列车的车票已售完!endl; break; else if (ticketj.countn) cout对不起,你所选择的列车只剩余ticketj.count张车票endl; couta; while (!strcmp(a, y); couta; while (!strcmp(a, y); /*退票模块*/void user:tuipiao()
18、 system(cls); tm * pt = localtime(&t); int n; char a10; do search(); if (!strcmp(ii, n) cout对不起!没有找到您所需要的列车,所以不能退票。endl; cout请按回车键返回上层菜单endl; strcpy(ii, n); getchar(); return; if(ticketj.time.hourtm_hour) cout此班列车已发出,不能退票!!tm_hour&ticketj.time.minutetm_min) cout此班列车已发出,不能退票!endl; strcpy(ii, n); getc
19、har(); break; cout请输入您要退的车票数:n; if (n = 0) cout输入错误!至少需退1张车票。endl; else ticketj.count = ticketj.count + n; cout退票成功!; cout是否继续?请键入y或n以回车键结束:a; while (!strcmp(a, y); /*查询模块*/void user:search() /按查找列车信息方式选择函数 system(cls); int n; cout1.按车次查询endl t2.按起始站查询endltt3.按终点站查询endl; coutn; for(;n!=1&n!=2&n!=3;)
20、 cout指令错误!请重新输入!n; switch (n) case 1:search_CC(); break; case 2:search_QS(); break; case 3:search_ZD(); break; void search_CC() /按列车号查找 system(cls); char t10; do coutendl请输入车次:t; for (j=0;j=g_num;j+) if (strcmp(t,ticketj.num)=0) cout你所要查询的列车信息为:endl; cout车次t起始站t终点站t发车时间t票价t剩余票数t状态endl; display(j); c
21、outn查询完毕,按回车键继续endl; strcpy(ii, y); getchar(); return; coutn对不起,没有您需要的信息!endl; coutii; while (!strcmp(ii, y); void search_QS() /按列车号查找 system(cls); char q20; do coutendl请输入起始站:q; for ( j=0;j=g_num;j+) if (strcmp(q,ticketj.start)=0) cout你所要查询的列车信息为:endl; cout车次t开车时间t起始t终点t票价t 剩余座位t状态tendl; display(j); coutn查询完毕,按回车键继续endl; strcpy(ii, y); getchar(); return; coutn对不起,没有您需要的信息!endl; cout是否重新查找?请键入y或n以回车键结束;