火车票管理系统课程设计报告

上传人:shug****ng1 文档编号:52393896 上传时间:2022-02-08 格式:DOC 页数:19 大小:266KB
收藏 版权申诉 举报 下载
火车票管理系统课程设计报告_第1页
第1页 / 共19页
火车票管理系统课程设计报告_第2页
第2页 / 共19页
火车票管理系统课程设计报告_第3页
第3页 / 共19页
资源描述:

《火车票管理系统课程设计报告》由会员分享,可在线阅读,更多相关《火车票管理系统课程设计报告(19页珍藏版)》请在装配图网上搜索。

1、程序设计报告(2014 / 2015学年 第 一 学期)题 目:火车票管理系统专业通信工程学生姓名班级学号指导教师指导单位计算机学院计算机软件教学中心日期评分项优秀良好中等差评遵守机房规章制度上机时的表现学习态度分程序准备情况程序设计能力团队合作精神细课题功能实现情况算法设计合理性用户界面设计则报告书写认真程度内容详实程度n简短日月 各年评分等级备注隼 中 良评语火车票务管理系统、课题内容和要求(一)课题内容该系统要求实现一个简单、实用的火车票管理程序,主要功能包括火车票数据的录 入、查找、删除、显示、售票、退票等。所有火车票数据都要利用文件系统保存,以备 系统下次运行时使用。通过此课题,熟练

2、掌握文件、数组、指针的各种操作,以及一些 基本算法思想的应用。(二)课题要求(1)火车票数据由多条记录组成,其信息包括:车次,发车时间,起点站,终点站,行车时间,额定载量,已售票人数等。(2)数据保存形式:所有火车票数据要以文本或二进制文件保存。(3)需要实现的功能1)新增火车票数据记录。2)查找火车票数据(可按车次,发车时间、起点站、终点站等查找)3)删除火车票数据记录(先查找,再删除。若查找出多条记录,则 进一步提示用户选择记录的车次,再删除)。4)对火车票排序(可按车次、发车时间、起点站、终点站等排序。)5)显示当前所有火车票信息列表。6)售票(先查找,当确定车次后,根据售票张数对该车次

3、的已售票 人数进行修改)。7)退票(售票的逆处理,过程与售票类似)。8)保存火车票数据到文件中。9)从文件中读入火车票数据。(4)界面功能要求:1)采用友好的字符界面,实现一个功能控制菜单。2)每次操作都从该菜单选择,利用循环结构使得一次运行程序可进 行多次操作。需求分析一、功能分析图二、录入班次信息:依次输入班次、起点站和终点站等信息同时保存在 文件中,并可以随时增加新的班次信息。三、浏 览班次信息:输出保存在文件中的全部班次信息,并区分当前的 车次是否已发出,如发出则标记“此车已发出” 。四、按班次号查询路线:以输入的班次号为依据进行查找,找到匹配项 则输出该项完整的班次信息;未找到则显示

4、“未找到该车次信息!五、按起点站查询路线:输入的起点站为依据进行查找,找到匹配项则 输出该项完整的班次信息;未找到则显示“未找到该车次信息!六、按终点站查询路线:输入的终点站为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!七、排列发车时间表:按照发车时间从早到晚的顺序逐条显示车次信息八、售票功能:依次输入“售票数目”和“班次号”可出售未发出的班 次的车票。九、退票功能:依次输入“退票数目”和“班次号”可退距发车时间大 于半小时的班次的车票。三、概要设计(1)类:#include#include#include#include class Ticketchar

5、 no20;char name_b20;char name_e20;int hour;int minute;int tra_time;int eding;int yupiao;public:void shoupiao(fstream&f);void tuipiao(fstream&f);void searchbynumber(fstream&f);void searchbybeginplace(fstream&f);void searchbyendplace(fstream&f);void luru(fstream&f);void liulan(fstream&f);void paixu(fs

6、tream&f);friend ostream&operatortm_hour)&(loCal-tm更新后的此车已发_min Tj.mi npte)退票coutTj关闭文件引昶结束 coutTje ndl;void Ticket:shoupiao(fstrea m&f)退票失j-此车已发出! endli更新后的关闭文件结束const int NUM=sizeof(Ticket);int n;long t;char m20;Ticket T;struct tm *local;cout 请输入售票的数目: n;cout 请输入售票的班次 :m;time(&t);local = localtime(

7、&t);(0,ios:beg);o;cinti.hour;cinti.minute;cinti.name_b;cinti.name_e; cinti.tra_time; cinti.eding;cinti.yupiao;(0,ios:end);o;cinti.hour;cinti.minute;cinti.name_b;cinti.name_e;cinti.tra_time; cinti.eding; cinti.yupiao;(0,ios:end);/ 文件指针指向文件尾for(i=0;inum;i+)(char*)&ti,sizeof(Ticket);void Ticket:xiugai(

8、fstream&f)char n10;Ticket t;endl;coutn;(0,ios:beg);bool fd=false;while(!()&!fd)(char*)&t,sizeof(Ticket);if(fd=(n)时)、发车时endl;cout 请依次输入 endl;cin;cin;cin;cin;cin;cin;cin;(0,ios:end);/ 文件指针指向文件尾(char*)&t,sizeof(Ticket);void menu()/ 菜单函数菜单*cout1: 录入车次信息 endl;cout2: 浏览车次信息 endl;cout3: 根据车次号查询路线 endl;cout

9、4: 根据起点站查询路线 endl;cout5: 根据终点站查询路线 endl;cout6: 排列发车时间表 endl;cout7: 售票 endl;cout8: 退票 endl;cout9: 增加车次 endl;cout10: 修改车次 endl;cout0: 退出菜单 endl;cout 请选择您需要操作的选项: endl;void main()int x;Ticket T;fstream file;cout*欢迎您使用票务管理系统 !*x;创建并打开(d:,ios:in|ios:out|ios:binary);/ 二进制文件switch(x)case 1:(file);break;cas

10、e 2:(file);break;case 3:(file);break;case 4:(file);break;case 5:(file);break;case 6:(file);break;case 7:(file);break;case 8:(file);break;case 9:(file);break;case 10:(file);break;case 0:break;cout 操作已完成,请继续!endl;();/ 关闭二进制文件cout*欢迎您下次使用 !*endl;五、测试数据及其结果分析1、录入班次信息输入: 1 输出:请输入你要录入的班次信息数量: 输入: 4输出: 请依次

11、输入车次、起点站、终点站、发车时间(时) 、发车时间(分) 、行车时间、额定票数 和余票数量输入:G111南京扬州802010030G222南京北京10302112035G333南京上海1102214050G444南京广州9302216040输出:操作已完成,请继续!2、浏览班次信息输入:2输出:G111南京扬州802010030G222南京北京10302112035G333南京上海1102214050G444南京广州9302216040操作已完成,请继续!3、根据车次号查询路线输入: 3输出:请输入你要查找的班次号:输入: G111输出: G111 南京 扬州 8 0 20 100 30 操

12、作已完成,请继续!4、根据起点站查询路线输入: 4输出:请输入你要查找的班次的起点站: 输入:南京输出:G111南京扬州802010030G222南京北京10302112035G333南京上海1102214050G444南京广州9302216040操作已完成,请继续! 5、根据终点站查询路线 输入: 5 输出:请输入你要查找的班次的终点站: 输入 : 上海输出: G333 南京 上海 11 0 22 140 50 操作已完成,请继续!6、排列发车时间表 输入: 6 输出:G111南京扬州802010030G444南京广州9302216040G222南京北京10302112035G333南京上海

13、1102214050操作已完成,请继续!7、售票输入:7输出:请输入售票的数目:输入: 1输出:请输入售票的班次输入: G333输出:已售出 1 张该车次的车票! 操作已完成,请继续退票8、退票输入: 8 输出:请输入退票的数目: 输入: 1 输出:请输入退票的班次 : 输入: G444输出:已退 1 张该车次的车票! 操作已完成,请继续!9、退出菜单输入: 0输出:*欢迎您下次用 !*结果分析:(1)按照车次号、起点站或终点站查询班次时,如输入的车次信息不在数据库里或该车次已发出,则显示“未找到该车次信息 ! 该车次不存在或已发出!”2)售票的班次如已发出,则显示“该车次已发出! ”如无余票

14、则提示“票已售完”。3)退票的班次如在半小时内发车或已发出,则显示退票失败 ! ”六、调试过程中的问题1、录入班次信息的操作完成时,必须调用函数 (0,ios:end) 令文件指针指 向文件尾,否则下次录入新的数据时会覆盖之前的信息,造成班次信息的丢 失。2、调用 while(!()(char*)&Ti+,sizeof(Ticket); 浏览班次信息后, 文件中的班次信息的最后一条会被读两次, 所以把班次信息显示在屏幕时利 用 (0,ios:end);int b=();(0,ios:beg);int a=();int c=(b-a)/sizeof(Ticket);获得文件内包含的班次信息总数

15、c,调用for(int j=0;jc;j+)使班次信息个数得到准确提取后再输出。3、在主函数中的 swicth() 循环函数外层加上一个 while() 循环可连续多次 对菜单进行操作,从而提高了运行效率。七、课程设计总结 通过将近两周的程序设计实习,我首先认识到自己编程水平的有限,十分后悔当初没有学好C+,其次我也意识到编程是件很严谨的工作,一点点小的错误都会引起不可想象的连锁反应实践出真知,我觉得这两个星期的学习,自己收获很大,对我自己来说 也是一种锻炼,不仅在一定程度上增长了我对编程的认识,我也学会了团队 合作,学会了坐冷板凳一行一行敲代码。当然,我自己身上依然存在着不少的问题。比如对于一些难懂的代码, 还是参考了网上的程序, 比如录入数据的时候一开始不知道怎么让各组信息 整齐地排列。我们大学生学编程,实践真的是很好的方式,我非常感谢学校给我们安 排这样一次珍贵的实习机会,让我们第一次面对问题、解决问题,在实战中 真正地提高了自己对编程的理解和编程的能力, 真心希望学校多给我们提供 这样书本之外的考核和锻炼。指导老师吴老师不仅提供给我们好的方法,更给我们信心,再次真的非 常感谢吴老师的耐心教导 !

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!