2022年车站票务管理系统程序设计报告 .pdf
《2022年车站票务管理系统程序设计报告 .pdf》由会员分享,可在线阅读,更多相关《2022年车站票务管理系统程序设计报告 .pdf(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-程序设计报告(2012 /2013 学年 第 一 学期)题目:车站票务管理系统专业学生姓名班级学号指导教师指导单位计算机系统与网络教学中心日期 2012.11.02 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 30 页 -评分细则评分项优秀良好中等差遵守机房规章制度上机时的表现学习态度程序准备情况程序设计能力团队合作精神课题功能实现情况算法设计合理性用户界面设计报告书写认真程度内容详实程度文字表达熟练程度回答问题准确度简短评语教师签名:年月日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 30 页 -车
2、站票务管理系统一、课题内容和要求【问题描述】一车站每天有 n 个发车班次,每个班次都有一班次号(1、2、3,n),固定的发车时间,固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量,票价,如:班次发车时间起点站终点站行车时间额定载量已定票人数余票票价1 8:00 南京苏州 2 45 30 15 100 2 6:30 南京扬州 1.5 40 40 0 56 3 7:00 南京镇江 1 40 20 20 32,该系统要求完成车票管理系统,能对车站的发车班次进行查询、实现买票、退票功能。通过此课题,熟练掌握数组、文件、结构体、指针的各种操作,以及一些算法思想的应用。【功能要求】(1)用户
3、需要输入口令进入车站票务管理系统;(2)录入汽车班次信息(信息用文件保存),可不定时地增加班次数据;(3)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息);(4)查询路线:可按班次号查询,可按终点站查询;(5)售票和退票功能当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数。退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数;(6)界面友好,输入信息符合逻辑如额定载量不为负数等。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 30 页 -二、需求分析售票系统要求存
4、储当天各个车次售票情况,所以程序需要定义结构体变量存储售票情况。系统的整体功能通过记录当天各个车次了解售票情况。编程时采取模块化设计思想,设计主函数,通过主函数中的switch分支选择调用各子函数以实现该系统的各种功能。然后设计相应的子函数来执行系统的各种功能,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。1、经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是密码验证、班次的增加和修改、查询班次信息、卖票函数、退票函数。1)密码验证:要求验证密码正确时才能进入系统。2)班次的增加修改:要求能
5、够申请空间增加班次并修改班次的信息。3)查询班次:要求能够通过班次,终点站,始发站等信息查询到班次的全部信息。4)买票:要求买票量不能超出余票量,同时车开出后不再售票。5)退票:要求退票量不能超出额定票量。2、增强了程序的实用性,使系统用户界面友好、功能明确、操作方便,应采取直接在界面上输出可供用户选择的菜单。据此应该能够很好的完成要求三、概要设计(1)类:#include#include#include#include class Ticket char no9;/车次char name_b10;/起点站char name_a10;/终点站Time time_o;/发车时间int time;
6、/行车时间名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 30 页 -int price;/车票价格int load;/额定数量int remainder;/余票数量public:void sell(fstream&f);/售票功能void back(fstream&f);/退票功能void searchbynumber(fstream&f);/按车次查询void searchbybeginplace(fstream&f);/按起点站查询void searchbyendplace(fstream&f);/按终点站查询void insert(fstream&f);/录入车次信息vo
7、id disp(fstream&f);/浏览班次void order(fstream&f);/时间表排序friend ostream&operator(ostream&out,const Ticket&t);/定义重载输出运算符的友元函数bool findno(char n)/用于判断输入的字符串是否与查找区域中的某个字符串一致 if(strcmp(no,n)=0)return true;else return false;bool findname_b(char n)if(strcmp(name_b,n)=0)return true;else return false;bool findna
8、me_e(char n)if(strcmp(name_e,n)=0)return true;else return false;(2)主要函数流程图:浏览班次信息:显示所有的班次信息,并标记已发出的车次。按班次号查询路线:根据用户输入的班次号查找匹配项的班次信息。按起点站查询路线:根据用户输入的起点站查找匹配项的班次信息。按终点站查询路线:根据用户输入的终点站查找匹配项的班次信息。排列发车时间表:利用冒泡法按照发车时间的升序排列车次信息名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 30 页 -售票:用户输入指定的班次和售票数目进行售票退票:用户输入指定的班次和售票数目进行售票开
9、始开始打开文件打开文件输入售票数目输入退票数目输入班次号是否输入班次号车是否已发出?余 票数 目是 否为零票已售完否是售票此车已发出结束是否找到?是是否找到?否未 找 到 该车次信息是否未 找 到 该车次信息!退票结束名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 30 页 -四、源程序代码#include#include#include#include#include#include#include#include class Time;class Ticket;void CreatFile(char*);void ChangNo(Ticket*p,int*number);vo
10、id AddNo(Ticket*p,int*number);void NewNo(Ticket*p,int*number);void ShowTrain(Ticket*p,int*number);int FindTrain(Ticket*p,int*number,int*,int*);int FindNoTrain(Ticket*p,int*,int*,int*);int FindaTrain(Ticket*p,int*,int*,int*);void ShowTimeTrain(Ticket*p,int*number);void SellReturnTicket(Ticket*p,int*n
11、umber,int i,int j);void SellTicket(Ticket*p,int*number,int i,int j);void ReturnTicket(Ticket*p,int*number,int i,int j);void checkpassword();/定义时间类class Time private:int hour;int minute;public:Time(int h=0,int m=0)hour=h;minute=m;void SetTime()/设置时间 int i=0;cout请输入发车时间(小时):hour;cout 请输入发车时间(分钟):minut
12、e;do 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 30 页 -if(i!=0)cout 输入错误,请重新输入!endl;cout 请输入发车时间(小时):hour;cout 请输入发车时间(分钟):minute;i+;while(hour24|hour60|minute0);/判断时间是否符合逻辑 void PrintTime()/显示时间 if(minute=0)coutsetw(8)hour:00;else coutsetw(8)hour:setw(2)minute;int GetHour()/获得时 return hour;int GetMinute()/获得分钟
13、return minute;void ChangTime(int h,int m)/修改时间 hour=h;minute=m;/定义车次类class Ticket private:char no9;/车次char name_b10;/起点站char name_a10;/终点站Time time_o;/发车时间int load;/额定载量int reminder;/余票数量int time;/行车时间名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 30 页 -int price;/车票价格public:Ticket(char*No,int h,int m,char*Name_b,c
14、har*Name_a,int t,int Load,int Reminder,int Price):time_o(h,m)strcpy(no,No);strcpy(name_b,Name_b);strcpy(name_a,Name_a);time=t;load=Load;reminder=Reminder;price=Price;Ticket()void SetTicket()/设置票务 cout 请输入车次:no;time_o.SetTime();cout 请输入起点站:name_b;cout 请输入终点站:name_a;cout 请输入行车时间:time;int i=0;do if(i!=
15、0)cout 行车时间必须为正数!请重新输入行车时间:time;i+;while(time0);/行车时间必须为正数 cout 请输入额定售票量:load;int i=0;do if(i!=0)cout 额定售票必须为正数!请重新输入额定售票:load;i+;while(load=0);/额定售票必须为正数 cout 请输入余票数量:reminder;int i=0;do if(i!=0)if(reminder0)cout 余票数量必须少于载定数量!请重新输入余票数量:endl;cout 目前载定数量为:loadreminder;else cout 余票数量必须为正数!请重新输入余票数量:re
16、minder;i+;while(reminderload);/余票必须为正数并且余票不能大于载定数量 cout 请输入车票价格:price;int i=0;do if(i!=0)cout 车票价格必须为正数!请重新输入车票价格:price;i+;while(price=0);/车票价格必须为正数 void ChangTicket(Ticket ticket)/修改车次信息 strcpy(no,ticket.GetNo();strcpy(name_b,ticket.GetName_b();名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 30 页 -strcpy(name_a,ti
17、cket.GetName_a();time=ticket.Gettime();load=ticket.GetLoad();reminder=ticket.GetReminder();price=ticket.GetPrice();time_o.ChangTime(ticket.time_o).GetHour(),(ticket.time_o).GetMinute();void PrintTicket()/显示车次信息 cout setw(4)no;time_o.PrintTime();coutsetw(6)name_b setw(8)name_a setw(8)time setw(8)load
18、 setw(8)reminder setw(8)price endl;cout|*|*|*|*|*|*|*|*|endl;friend void AddReminder(Ticket&,int n);/定义添加余票数为类的友元函数friend void MinReminder(Ticket&,int n);/定义减少余票数为类的友元函数char*GetNo()/获得车次 return no;char*GetName_b()/获得起始站 return name_b;char*GetName_a()/获得终点站 return name_a;int Gettime()/获得时间 return tim
19、e;int GetLoad()/获得额定售票量 return load;int GetReminder()/获得余票数 return reminder;int GetTimeHour()/获得小时名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 30 页 -return time_o.GetHour();int GetTimeMinute()/获得分钟数 return time_o.GetMinute();int GetPrice()/获得价格 return price;void MinReminder(Ticket&t,int n)/定义减少余票数 t.reminder=t.r
20、eminder-n;void AddReminder(Ticket&t,int n)/定义添加余票数 t.reminder=t.reminder+n;int count=0;/定义全局变量用来统计指针数组的长度int main()coutendlendl;cout*endlendl;cout#请输入密码#endlendl;cout*endlendl;checkpassword();/密码验证模块CreatFile(车票信息.dat);/ofstream outf(车票信息.dat);/第一次以后使用CreatFile(sort.dat);/ofstream outf(sort.dat);/第一
21、次以后使用int choice;int flag=1;int i,j;int number100;/用来存每个指针中元素的个数Ticket*p100;/定义指针数组coutendlendl;cout*endlendl;cout#欢迎使用车站票务管理系统#endlendl;cout*endlendl;coutendl;while(flag)/菜单控制 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 30 页 -cout*菜单选择*endlendl;cout*1.修改车次信息*endl;cout*2.浏览车次信息*endl;cout*3.票务查询*endl;cout*4.显示时间表
22、*endl;cout*5.售票退票*endl;cout*6.退出系统*endlendl;cout*endlendlendl;cout 请选择您要进行的业务:choice;if(cin.fail()/如果输入不匹配,fail()会返回真 cinchoice;cout 非法选择,请重新输入:endl;cin.clear();/清除 fail 状态cin.ignore();/清除缓冲区continue;else break;switch(choice)case 1:system(cls);coutendlendlendl;ChangNo(p,number);break;case 2:system(c
23、ls);coutendlendlendl;ShowTrain(p,number);break;case 3:system(cls);名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 30 页 -coutendlendlendl;FindTrain(p,number,&i,&j);break;case 4:system(cls);coutendlendlendl;ShowTimeTrain(p,number);break;case 5:system(cls);coutendlendlendl;SellReturnTicket(p,number,i,j);break;case 6:f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年车站票务管理系统程序设计报告 2022 车站 管理 系统 程序设计 报告
限制150内