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

上传人:b****1 文档编号:14172259 上传时间:2023-06-21 格式:DOCX 页数:15 大小:117.65KB
下载 相关 举报
火车票管理系统课程设计报告.docx_第1页
第1页 / 共15页
火车票管理系统课程设计报告.docx_第2页
第2页 / 共15页
火车票管理系统课程设计报告.docx_第3页
第3页 / 共15页
火车票管理系统课程设计报告.docx_第4页
第4页 / 共15页
火车票管理系统课程设计报告.docx_第5页
第5页 / 共15页
火车票管理系统课程设计报告.docx_第6页
第6页 / 共15页
火车票管理系统课程设计报告.docx_第7页
第7页 / 共15页
火车票管理系统课程设计报告.docx_第8页
第8页 / 共15页
火车票管理系统课程设计报告.docx_第9页
第9页 / 共15页
火车票管理系统课程设计报告.docx_第10页
第10页 / 共15页
火车票管理系统课程设计报告.docx_第11页
第11页 / 共15页
火车票管理系统课程设计报告.docx_第12页
第12页 / 共15页
火车票管理系统课程设计报告.docx_第13页
第13页 / 共15页
火车票管理系统课程设计报告.docx_第14页
第14页 / 共15页
火车票管理系统课程设计报告.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《火车票管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《火车票管理系统课程设计报告.docx(15页珍藏版)》请在冰点文库上搜索。

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

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

程序设计报告

(2014/2015学年第一学期)

题目:

火车票管理系统

专业通信工程

学生姓名

班级学号

指导教师

指导单位计算机学院计算机软件教学中心

日期

评分细则

评分项

优秀

良好

中等

遵守机房规章制度

上机时的表现

学习态度

程序准备情况

程序设计能力

团队合作精神

课题功能实现情况

算法设计合理性

用户界面设计

报告书写认真程度

内容详实程度

文字表达熟练程度

回答问题准确度

简短评语

教师签名:

年月日

评分等级

备注

评分等级有五种:

优秀、良好、中等、及格、不及格

火车票务管理系统

一、课题内容和要求

(一)课题内容

该系统要求实现一个简单、实用的火车票管理程序,主要功能包括火车票数据的录入、查找、删除、显示、售票、退票等。

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

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

(二)课题要求

(1)火车票数据由多条记录组成,其信息包括:

车次,发车时间,起点站,终点站,行车时间,额定载量,已售票人数等。

(2)数据保存形式:

所有火车票数据要以文本或二进制文件保存。

(3)需要实现的功能

1)新增火车票数据记录。

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

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

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

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

)。

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

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

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

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

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

(4)界面功能要求:

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

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

需求分析

一、功能分析图

二、录入班次信息:

依次输入班次、起点站和终点站等信息同时保存在文件中,并可以随时增加新的班次信息。

三、浏览班次信息:

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

四、按班次号查询路线:

以输入的班次号为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!

五、按起点站查询路线:

输入的起点站为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!

六、按终点站查询路线:

输入的终点站为依据进行查找,找到匹配项则输出该项完整的班次信息;未找到则显示“未找到该车次信息!

七、排列发车时间表:

按照发车时间从早到晚的顺序逐条显示车次信息。

八、售票功能:

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

九、退票功能:

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

三、概要设计

(1)类:

#include<>

#include<>

#include<>

#include<>

classTicket

{

charno[20];

charname_b[20];

charname_e[20];

inthour;

intminute;

inttra_time;

inteding;

intyupiao;

public:

voidshoupiao(fstream&f);

voidtuipiao(fstream&f);

voidsearchbynumber(fstream&f);

voidsearchbybeginplace(fstream&f);

voidsearchbyendplace(fstream&f);

voidluru(fstream&f);

voidliulan(fstream&f);

voidpaixu(fstream&f);

friendostream&operator<<(ostream&out,constTicket&t);

our)||(T[j].hour==local->tm_hour)&&(local->tm_min>T[j].minute))

{

cout<

"<

}

else

{

cout<

}

}

}

voidTicket:

:

shoupiao(fstream&f)

{

constintNUM=sizeof(Ticket);

intn;

longt;

charm[20];

TicketT;

structtm*local;

cout<<"请输入售票的数目:

"<

cin>>n;

cout<<"请输入售票的班次:

"<

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

((char*)&t[i],sizeof(Ticket));

}

voidTicket:

:

xiugai(fstream&f)

{

charn[10];

Tickett;

cout<<"请输入你要修改的班次:

"<

cin>>n;

(0,ios:

:

beg);

boolfd=false;

while(!

()&&!

fd)

{

((char*)&t,sizeof(Ticket));

if(fd=(n))

{

cout<<"请依次输入"<

cin>>;

cin>>;

cin>>;

cin>>;

cin>>;

cin>>;

cin>>;

cin>>;

}

}

(0,ios:

:

end);//文件指针指向文件尾

((char*)&t,sizeof(Ticket));

}

voidmenu()//菜单函数

{

cout<<"******************************菜单********************************"<

cout<<"1:

录入车次信息"<

cout<<"2:

浏览车次信息"<

cout<<"3:

根据车次号查询路线"<

cout<<"4:

根据起点站查询路线"<

cout<<"5:

根据终点站查询路线"<

cout<<"6:

排列发车时间表"<

cout<<"7:

售票"<

cout<<"8:

退票"<

cout<<"9:

增加车次"<

cout<<"10:

修改车次"<

cout<<"0:

退出菜单"<

cout<<"请选择您需要操作的选项:

"<

}

voidmain()

{

intx;

TicketT;

fstreamfile;

cout<<"*********************欢迎您使用票务管理系统!

**********************"<

menu();

while(x)

{

cin>>x;

("d:

\\",ios:

:

in|ios:

:

out|ios:

:

binary);//创建并打开二进制文件

switch(x)

{

case1:

(file);break;

case2:

(file);break;

case3:

(file);break;

case4:

(file);break;

case5:

(file);break;

case6:

(file);break;

case7:

(file);break;

case8:

(file);break;

case9:

(file);break;

case10:

(file);break;

case0:

break;

}

cout<<"操作已完成,请继续!

"<

();//关闭二进制文件

}

cout<<"************************欢迎您下次使用!

****************************"<

}

五、测试数据及其结果分析

1、录入班次信息

输入:

1

输出:

请输入你要录入的班次信息数量:

输入:

4

输出:

请依次输入

车次、起点站、终点站、发车时间(时)、发车时间(分)、行车时间、额定票数和余票数量

输入:

G111南京扬州802010030

G222南京北京10302112035

G333南京上海1102214050

G444南京广州9302216040

输出:

操作已完成,请继续!

2、浏览班次信息

输入:

2

输出:

G111南京扬州802010030

G222南京北京10302112035

G333南京上海1102214050

G444南京广州9302216040

操作已完成,请继续!

3、根据车次号查询路线

输入:

3

输出:

请输入你要查找的班次号:

输入:

G111

输出:

G111南京扬州802010030

操作已完成,请继续!

4、根据起点站查询路线

输入:

4

输出:

请输入你要查找的班次的起点站:

输入:

南京

输出:

G111南京扬州802010030

G222南京北京10302112035

G333南京上海1102214050

G444南京广州9302216040

操作已完成,请继续!

5、根据终点站查询路线

输入:

5

输出:

请输入你要查找的班次的终点站:

输入:

上海

输出:

G333南京上海1102214050

操作已完成,请继续!

6、排列发车时间表

输入:

6

输出:

G111南京扬州802010030

G444南京广州9302216040

G222南京北京10302112035

G333南京上海1102214050

操作已完成,请继续!

7、售票

输入:

7

输出:

请输入售票的数目:

输入:

1

输出:

请输入售票的班次:

输入:

G333

输出:

已售出1张该车次的车票!

操作已完成,请继续退票

8、退票

输入:

8

输出:

请输入退票的数目:

输入:

1

输出:

请输入退票的班次:

输入:

G444

输出:

已退1张该车次的车票!

操作已完成,请继续!

9、退出菜单

输入:

0

输出:

************************欢迎您下次使用!

****************************

结果分析:

(1)按照车次号、起点站或终点站查询班次时,如输入的车次信息不在数据库里或该车次已发出,则显示“未找到该车次信息!

该车次不存在或已发出!

(2)售票的班次如已发出,则显示“该车次已发出!

”如无余票则提示“票已售完”。

(3)退票的班次如在半小时内发车或已发出,则显示“退票失败!

六、调试过程中的问题

1、录入班次信息的操作完成时,必须调用函数(0,ios:

:

end)令文件指针指向文件尾,否则下次录入新的数据时会覆盖之前的信息,造成班次信息的丢失。

2、调用while(!

())((char*)&T[i++],sizeof(Ticket));浏览班次信息后,文件中的班次信息的最后一条会被读两次,所以把班次信息显示在屏幕时利用(0,ios:

:

end);

intb=();

(0,ios:

:

beg);

inta=();

intc=(b-a)/sizeof(Ticket);获得文件内包含的班次信息总数c,调用for(intj=0;j

3、在主函数中的swicth()循环函数外层加上一个while()循环可连续多次对菜单进行操作,从而提高了运行效率。

7、课程设计总结

通过将近两周的程序设计实习,我首先认识到自己编程水平的有限,十分后悔当初没有学好C++,其次我也意识到编程是件很严谨的工作,一点点小的错误都会引起不可想象的连锁反应。

实践出真知,我觉得这两个星期的学习,自己收获很大,对我自己来说也是一种锻炼,不仅在一定程度上增长了我对编程的认识,我也学会了团队合作,学会了坐冷板凳一行一行敲代码。

当然,我自己身上依然存在着不少的问题。

比如对于一些难懂的代码,还是参考了网上的程序,比如录入数据的时候一开始不知道怎么让各组信息整齐地排列。

我们大学生学编程,实践真的是很好的方式,我非常感谢学校给我们安排这样一次珍贵的实习机会,让我们第一次面对问题、解决问题,在实战中真正地提高了自己对编程的理解和编程的能力,真心希望学校多给我们提供这样书本之外的考核和锻炼。

指导老师吴老师不仅提供给我们好的方法,更给我们信心,再次真的非常感谢吴老师的耐心教导!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2