基于C++的火车票管理系统C++课程设计.docx
《基于C++的火车票管理系统C++课程设计.docx》由会员分享,可在线阅读,更多相关《基于C++的火车票管理系统C++课程设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于C++的火车票管理系统C++课程设计
信息科学与技术学院
《程序设计基础》课程设计报告
题目名称:
车票管理系统
专业班级:
电子信息工程
10级2班
学生姓名:
王彪
樊江涛
学生学号:
15
31
指导教师:
高攀
完成日期:
2011-01
1.课程设计综述
课程设计的目的
让我们更加深入的了解C++的,使我们一学期学习到的东西得到实践.
课程设计的题目
火车票管理系统
题目要求
用c++设计一个系统,能提供下列服务:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据
(2)浏览班次信息,可显示出所有班次当前状态(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息)。
(3)查询路线:
可按班次号查询,可按终点站查询
(4)售票和退票功能
A:
当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B:
退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数
2方案选择
1)算法设计说明
由主函数进入,弹出主菜单界面,通过Switch语句选择需要的功能,可以选择班次录入,浏览班次信息,查询班次信息,购票和退票以及退出系统,以完成不同的操作.其中查询班次信息中还可以由班次查询或者终点站查询.整个系统的文件载入用一个文件载入函数承当.
3详细设计
流程图
源程序
#include
#include
#include
#include<>
usingnamespacestd;
voidwelcome();{
inthour;
intminutes;
};
structticketxt",ios:
:
app);
for(inti=0;t=="1";i++)
{
cout<<"请输入需要添加的火车班次:
"<cin>>car[i].Number;
cout<<"请输入此班次发车时间(格式:
先输入小时,回车,再输入分钟):
"<cin>>car[i].;
cin>>car[i].;
cout<<"请输入出发站:
"<cin>>car[i].Qidian;
cout<<"请输入终点站:
"<cin>>car[i].Zhongdian;
cout<<"请输入行车时间:
"<cin>>car[i].Lasttime;
cout<<"请输入额定载客量:
"<cin>>car[i].Fixnumber;
cout<<"请输入已订票人数:
"<cin>>car[i].Fixednumber;
outfile<cout<<"是否继续录入?
(是请输1,否请输任意键返回主菜单)"<cin>>t;
if(t!
="1")
{
welcome();
}
}
();
cout<<"输入回车键返回"<getchar();
getchar();
welcome();
}
umber<<""<"<time_ttval;
structtm*now;
tval=time(NULL);
now=localtime(&tval);
if((now->tm_hour==car[i].&&now->tm_min>car[i].||(now->tm_hour>car[i].)
cout<<"此车已发出"<}
cout<<"输入回车键返回"<getchar();
getchar();
welcome();
}
班次查询"<cout<<"2.按终点站查询"<cout<<"请输入您想选择的查询方法前的数字:
"<cin>>t;
if(t=="1")
Numbersearch();
if(t=="2")
Finalsearch();
if(t!
="1"||t!
="2")
{
cout<<"输入有误,请重新输入"<chaxun();
}
}
umber<<""<"<cout<<"输入回车键返回"<getchar();
getchar();
welcome();
}
hongdian))==0)
cout<"<}
cout<<"输入回车键返回"<getchar();
getchar();
welcome();
}
&now->tm_mintm_hour{
if(car[i-1].Fixednumber{
(car[i-1].Fixednumber)++;
ofstreamoutfile;
("班次信息.txt",ios:
:
out);
for(i=0;i{
outfile<}
();
cout<<"你的订票成功,请按时上车,谢谢使用!
"<}
elsecout<<"对不起,今天的这趟车的票已卖完,请明天再来,谢谢合作"<}
elsecout<<"对不起,今天的这趟车已发出,请明天再来,谢谢合作"<cout<<"输入回车键返回"<getchar();
getchar();
welcome();
}
谢使用!
"<cout<<"输入回车键返回"<getchar();
getchar();
welcome();
}
time_ttval;
structtm*now;
tval=time(NULL);
now=localtime(&tval);
if((now->tm_hour==car[i-1].&&now->tm_mintm_hour{
if(car[i-1].Fixednumber>=1)
{
car[i-1].Fixednumber-=1;
ofstreamoutfile;
("班次信息.txt",ios:
:
out);
for(i=0;i{
outfile<}
();
cout<<"退订车票成功,谢谢使用!
"<}
elsecout<<"对不起,今天的这趟车的票尚未卖出,无法完成退票!
"<}
elsecout<<"对不起,今天的这趟车已发出,无法完成退票!
"<cout<<"输入回车键返回"<getchar();
getchar();
welcome();
}
xt",ios:
:
in);
if(!
infile)
{
cout<<"请查看原文件是否存在!
"<cout<<"按任意键返回";
getchar();
getchar();
welcome();
}
for(i=0;!
();i++)
{
infile>>car[i].Number>>car[i].>>car[i].>>car[i].Qidian>>car[i].Zhongdian>>car[i].Lasttime>>car[i].Fixnumber>>car[i].Fixednumber;
}
returni-1;
}
4测试
主菜单:
班次录入:
浏览班次信息:
查询火车信息:
测试中发现订购和退订车票后,虽然已订购车票数实际上有增减,但不能存入到文件中及时保存.后来通过以文件覆盖的方法重新录入一次文件得以解决.测试中还发现若时间是整点的话,分钟的0只能是一个0,因为分钟定义的格式是int.,但若果改成char格式之后和系统时间比较的函数将不成立.所以这个程序仍然存在这样的一个问题.
5课程设计总结
通过这次的课程设计,我发现我还有好多的不足之处,还有好多知识不能很好的运用,而且题目中的一个要求没有正常的完成.我觉得我们应该花更多的时间去查找资料,因为仅凭自己已学的知识是无法完成这些内容的.
这次课程设计我用了9个子函数去完成,分开完成各个函数并验证其正确性,这样的方法让我能够顺利完成整个系统.
不足之处还有好多,我应该在以后的学习中更加努力完善.
6参考书目:
[1]谭浩强,《C++程序设计》,北京,清华大学出版社,2006年.