课程设计报告车票管理系统Word文件下载.docx
- 文档编号:3692450
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:30
- 大小:358.08KB
课程设计报告车票管理系统Word文件下载.docx
《课程设计报告车票管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《课程设计报告车票管理系统Word文件下载.docx(30页珍藏版)》请在冰点文库上搜索。
本系统的功能模块图如图2-1所示。
车票管理系统
修改版此信息
退票
售票
进入班次浏览
进入班次查询
查询菜单
进入终点站查询
进入起点站查询
图2-1系统功能模块图
2.2数据定义
本系统的数据可采用结构数组来处理。
可必要的设置全局变量。
因此本系统的主要数据定义如下:
structTrain_Ticket
{
charcn[15];
//车量班次
charlp[15];
//leftplace起点
charap[15];
//arriveplace终点
charlt[15];
//lefttime发车时间
charrt[15];
//runningtime行车时间
floatprice;
//票价
intrl;
//Ratedload额定载量
intbn;
//bookingnumber已定票人数
}T[N];
intn=0,i=0;
//全局变量
2.3关键技术分析
⑴在程序开始运行时,应调用自定义的INPUT()函数,将所有需要的数据导入到结构数组中,然后保存。
⑵调用load()函数,从磁盘导入车票信息。
由于第一次应用INPUT()函数磁盘中已有数据,因此不必要再进行重新导入,所以在INPUT()函数中先询问是否重新导入,然后再进入主菜单,或者在调用一次后,以后运行时不再调用。
⑶.买票和退票都涉及到时间的问题,这源于要比较发车时间与当前的时间,判断这班车到底有没有发车,和能不能订票与退票,这时用了一个时间函数,输出了当前的时间,但那边有年月日,不好进行提取和比较,于是采用输出了时间,然后看着那个时间手动的提取。
⑷系统中应编写存盘函数save(),在进行买票或者退票功能后都需要调用save()函数进行数据的更新。
⑸采用循环结构生成主菜单,在数据输入时应该有清晰的提示信息,以方便用户的操作,对输出数据进行格式控制,以使界面更加美观,清晰。
3系统实现
3.1功能模块设计
根据系统分析的结论,将本系统需完成的功能模块划分如下:
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
time.h>
#defineN4
voidmain_menu();
//主菜单模块
voidload();
//导入信息
voidINPUT();
//输入模块
voidscan();
//浏览模块
voidtuipiao();
//退票
voidbuy();
//买票
voidchange();
//修改函数
voidsave();
//保存函数
voidprna(intpos);
//打印记录
voidsearchmenu();
//查询菜单函数
ints_cn();
//按班次查询
ints_lp();
//按起点站查询
ints_ap();
//按终点站查询
intprice;
3.2源代码
//********************************************************
//主菜单
voidmain_menu()
system("
cls"
);
colorE"
printf("
**********************************************************************\n"
*************************欢迎来到车票查询系统*************************"
\n"
|★★★1:
进入班次浏览★★★|\n"
|★★★2:
进入查询班次★★★|\n"
|★★★3:
售票★★★|\n"
|★★★4:
退票★★★|\n"
|★★★5:
班次信息修改★★★|\n"
|★★★0:
退出★★★|\n"
***********************************************************************\n"
\n请选择(0-5):
☆☆☆"
}
voidload()//从磁盘文件导入班次信息
inti;
FILE*fp;
if((fp=fopen("
c:
车票管理系统.dat"
"
rb"
))==NULL)
{
文件打开错误\n"
exit(0);
}
for(i=0;
i<
N;
i++)
fread(&
T[i],sizeof(structTrain_Ticket),1,fp);
fclose(fp);
voidsave()//将班次信息保存到磁盘文件
{
wb"
))==NULL)
无法创建文件!
\n\n"
}
fwrite(&
inttime()//当前系统时间
structtm*f;
time_tnow;
now=time(NULL);
time(&
now);
f=gmtime(&
printf(ctime(&
now));
return0;
}
voidscan()
/*清屏*/
\n===========================================================================\n"
车次额定载量起点终点开车时间行车时间票价已定票人数\n"
i++)
printf("
%s%13d%10s%10s%12s%8s%f%6d\n"
T[i].cn,T[i].rl,T[i].lp,T[i].ap,T[i].lt,T[i].rt,T[i].price,T[i].bn);
===========================================================================\n"
请按任意键返回主菜单\n"
getch();
voidINPUT()//键入所有信息
charch;
do
{
system("
printf("
\n\n====================欢迎进入录入汽车时刻信息界面====================\n"
do
{
printf("
\n新建汽车信息?
(y/n)"
scanf("
%c"
&
ch);
if(ch!
='
y'
&
ch!
n'
)
printf("
输入错误,请重新输入!
!
"
}while(ch!
if(ch=='
break;
---------------------"
\n录入第%d趟列车信息\n"
n+1);
车次"
fflush(stdin);
gets(T[i].cn);
额定载量"
fflush(stdin);
scanf("
%d"
T[i].rl);
起点"
gets(T[i].lp);
终点"
gets(T[i].ap);
开车时间"
gets(T[i].lt);
行车时间"
gets(T[i].rt);
票价"
%f"
T[i].price);
已定票人数"
T[i].bn);
n++;
i++;
}while(i<
N);
save();
voidprna(intpos)//打印一条记录
printf("
T[pos].cn,T[pos].rl,T[pos].lp,T[pos].ap,T[pos].lt,T[pos].rt,T[pos].price,T[pos].bn);
voidsearchmenu()//查询主菜单
\n\n====================欢迎进入查询汽车时刻信息界面====================\n"
\n++++++++++++++++++请选择查找方式++++++++++++++++++\n\n"
按班次查询★★★|\n"
按起点站查询★★★|\n"
进终点站查询★★★|\n"
返回主菜单★★★|\n"
\n请选择(1-4):
ints_cn()//按班次查询
charname1[15];
intj;
请输入要查询的班次号:
\n"
gets(name1);
for(j=0;
j<
j++)
if(strcmp(T[j].cn,name1)==0)
printf("
T[j].cn,T[j].rl,T[j].lp,T[j].ap,T[j].lt,T[j].rt,T[j].price,T[j].bn);
continue;
return0;
return1;
ints_lp()//按起点站查询
charname2[15];
请输入要查询的起点站名:
\n"
gets(name2);
if(strcmp(T[j].lp,name2)==0)
ints_ap()//按终点站查询
charname3[15];
请输入要查询的终点站名:
gets(name3);
if(strcmp(T[j].ap,name3)==0)
voidsearch()//查询函数
intselect;
intn;
while
(1)
searchmenu();
scanf("
select);
switch(select)
case1:
n=s_cn();
if(n)
没找到相关记录\n"
printf("
按任意键返回\n"
getch();
case2:
n=s_lp();
没有找到相关记录\n"
case3:
n=s_ap();
}
if(select==4)
main_menu();
voidbuy()//买票
intm,log;
chart[10];
请输入您需要购买票的班次(1-4):
m);
load();
T[m-1].cn,T[m-1].rl,T[m-1].lp,T[m-1].ap,T[m-1].lt,T[m-1].rt,T[m-1].price,T[m-1].bn);
if(T[m-1].bn>
=T[m-1].rl)
该班次票已满!
请选择其他班次\n"
if(T[m-1].bn<
T[m-1].rl)
当前时间为:
time();
请再手动输入上述时间,只需要输入时辰与分钟(例如08:
00):
%s"
t);
if(strcmp(t,T[m-1].lt)>
0)
该班次已发车,请选择其他班次\n"
elseif(T[m-1].bn==T[m-1].rl)
该班次未发车但是该班次票已售完\n"
if(T[m-1].bn!
=T[m-1].rl&
strcmp(t,T[m-1].lt)<
0&
T[m-1].bn<
该班次还可订%d票\n"
(T[m-1].rl-T[m-1].bn));
请输入您要订票数量"
log);
while(log>
(T[m-1].rl-T[m-1].bn))
订票错误,数量不能超过余票数!
请重新输入:
if(log<
=(T[m-1].rl-T[m-1].bn)){printf("
一共需要%d元\n"
log*T[m-1].price);
订票成功,祝您旅途愉快!
T[m-1].bn+=log;
按任意键返回主菜单\n"
getchar();
voidtuipiao()//退票
intx,log;
请输入您要退票的班次:
x);
i=x;
intm=i;
if(strcmp(T[i-1].lt,t)>
可以退票\n"
请问你真的要退票吗?
确认退票请按1,否则返回主菜单\n"
if(log==1)
退票成功!
T[i-1].bn--;
save();
else
您选择不退票\n"
if(strcmp(T[i-1].lt,t)<
此班次已发车不能退票!
getch();
voidchange()
intk,select;
charbanci[100];
charm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 车票 管理 系统