当前位置:文档之家› 火车票管理系统课程设计报告

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

程序设计报告( 2014 / 2015 学年第一学期)题目:火车票管理系统专业通信工程学生姓名班级学号指导教师指导单位计算机学院计算机软件教学中心日期火车票务管理系统一、课题内容和要求(一)课题内容该系统要求实现一个简单、实用的火车票管理程序,主要功能包括火车票数据的录入、查找、删除、显示、售票、退票等。

所有火车票数据都要利用文件系统保存,以备系统下次运行时使用。

通过此课题,熟练掌握文件、数组、指针的各种操作,以及一些基本算法思想的应用。

(二)课题要求(1)火车票数据由多条记录组成,其信息包括:车次,发车时间,起点站,终点站,行车时间,额定载量,已售票人数等。

(2)数据保存形式:所有火车票数据要以文本或二进制文件保存。

(3)需要实现的功能1)新增火车票数据记录。

2)查找火车票数据(可按车次,发车时间、起点站、终点站等查找)。

3)删除火车票数据记录(先查找,再删除。

若查找出多条记录,则进一步提示用户选择记录的车次,再删除)。

4)对火车票排序(可按车次、发车时间、起点站、终点站等排序。

)。

5)显示当前所有火车票信息列表。

6)售票(先查找,当确定车次后,根据售票张数对该车次的已售票人数进行修改)。

7)退票(售票的逆处理,过程与售票类似)。

8)保存火车票数据到文件中。

9)从文件中读入火车票数据。

(4)界面功能要求:1)采用友好的字符界面,实现一个功能控制菜单。

2)每次操作都从该菜单选择,利用循环结构使得一次运行程序可进行多次操作。

需求分析一、功能分析图二、录入班次信息:依次输入班次、起点站和终点站等信息同时保存在文件中,并可以随时增加新的班次信息。

三、浏览班次信息:输出保存在文件中的全部班次信息,并区分当前的车次是否已发出,如发出则标记“此车已发出”。

四、按班次号查询路线:以输入的班次号为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!”五、按起点站查询路线:输入的起点站为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!”六、按终点站查询路线:输入的终点站为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!”七、排列发车时间表:按照发车时间从早到晚的顺序逐条显示车次信息。

八、售票功能:依次输入“售票数目”和“班次号”可出售未发出的班次的车票。

九、退票功能:依次输入“退票数目”和“班次号”可退距发车时间大于半小时的班次的车票。

三、概要设计(1)类:#include<>#include<>#include<>#include <>class Ticket{char no[20];char name_b[20];char name_e[20];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);{cout<<T[j]<<endl;}}}void Ticket::shoupiao(fstream&f){const int NUM=sizeof(Ticket);int n;long t;char m[20];Ticket T;struct tm *local;cout<<"请输入售票的数目:"<<endl;cin>>n;cout<<"请输入售票的班次:"<<endl;cin>>m;time(&t);local = localtime(&t);(0,ios::beg);o;cin>>t[i].hour;cin>>t[i].minute;cin>>t[i].name_b;cin>>t[i].name_e;cin>>t[i].tra_time;cin>>t[i].eding;cin>>t[i].yupiao;}(0,ios::end);o;cin>>t[i].hour;cin>>t[i].minute;cin>>t[i].name_b;cin>>t[i].name_e;cin>>t[i].tra_time;cin>>t[i].eding;cin>>t[i].yupiao;}(0,ios::end);//文件指针指向文件尾for(i=0;i<num;i++)((char*)&t[i],sizeof(Ticket)); }void Ticket::xiugai(fstream&f){char n[10];Ticket t;cout<<"请输入你要修改的班次:"<<endl;cin>>n;(0,ios::beg);bool fd=false;while(!()&&!fd){((char*)&t,sizeof(Ticket));if(fd=(n)){cout<<"请依次输入"<<endl<<"发车时间(时)、发车时间(分)、起点站、终点站、行车时间、额定票数和余票数量 "<<endl;cin>>;cin>>;cin>>;cin>>;cin>>;cin>>;cin>>;cin>>;}}(0,ios::end);//文件指针指向文件尾((char*)&t,sizeof(Ticket));}void menu()//菜单函数{cout<<"******************************菜单********************************"<<endl;cout<<" 1:录入车次信息"<<endl;cout<<" 2:浏览车次信息"<<endl;cout<<" 3:根据车次号查询路线"<<endl;cout<<" 4:根据起点站查询路线"<<endl;cout<<" 5:根据终点站查询路线"<<endl;cout<<" 6:排列发车时间表"<<endl;cout<<" 7:售票"<<endl;cout<<" 8:退票"<<endl;cout<<" 9:增加车次"<<endl;cout<<" 10:修改车次"<<endl;cout<<" 0:退出菜单"<<endl;cout<<"请选择您需要操作的选项:"<<endl;}void main(){int x;Ticket T;fstream file;cout<<"*********************欢迎您使用票务管理系统!**********************"<<endl;menu();while(x){cin>>x;("d:\\",ios::in|ios::out|ios::binary);//创建并打开二进制文件switch(x){case 1:(file);break;case 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输出:请依次输入车次、起点站、终点站、发车时间(时)、发车时间(分)、行车时间、额定票数和余票数量输入:G111 南京扬州 8 0 20 100 30G222 南京北京 10 30 21 120 35G333 南京上海 11 0 22 140 50G444 南京广州 9 30 22 160 40输出:操作已完成,请继续!2、浏览班次信息输入:2输出:G111 南京扬州 8 0 20 100 30G222 南京北京 10 30 21 120 35G333 南京上海 11 0 22 140 50G444 南京广州 9 30 22 160 40操作已完成,请继续!3、根据车次号查询路线输入:3输出:请输入你要查找的班次号:输入:G111输出:G111 南京扬州 8 0 20 100 30操作已完成,请继续!4、根据起点站查询路线输入:4输出:请输入你要查找的班次的起点站:输入:南京输出:G111 南京扬州 8 0 20 100 30G222 南京北京 10 30 21 120 35G333 南京上海 11 0 22 140 50G444 南京广州 9 30 22 160 40操作已完成,请继续!5、根据终点站查询路线输入:5输出:请输入你要查找的班次的终点站:输入:上海输出:G333 南京上海 11 0 22 140 50操作已完成,请继续!6、排列发车时间表输入:6输出:G111 南京扬州 8 0 20 100 30 G444 南京广州 9 30 22 160 40 G222 南京北京 10 30 21 120 35 G333 南京上海 11 0 22 140 50操作已完成,请继续!7、售票输入:7输出:请输入售票的数目:输入:1输出:请输入售票的班次:输入:G333输出:已售出1张该车次的车票!操作已完成,请继续退票8、退票输入:8输出:请输入退票的数目:输入:1输出:请输入退票的班次:输入:G444输出:已退1张该车次的车票!操作已完成,请继续!9、退出菜单输入:0输出:************************欢迎您下次使用!****************************结果分析:(1)按照车次号、起点站或终点站查询班次时,如输入的车次信息不在数据库里或该车次已发出,则显示“未找到该车次信息!该车次不存在或已发出!”(2)售票的班次如已发出,则显示“该车次已发出!”如无余票则提示“票已售完”。

相关主题