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

上传人:b****2 文档编号:1983760 上传时间:2023-05-02 格式:DOCX 页数:30 大小:358.08KB
下载 相关 举报
课程设计报告车票管理系统.docx_第1页
第1页 / 共30页
课程设计报告车票管理系统.docx_第2页
第2页 / 共30页
课程设计报告车票管理系统.docx_第3页
第3页 / 共30页
课程设计报告车票管理系统.docx_第4页
第4页 / 共30页
课程设计报告车票管理系统.docx_第5页
第5页 / 共30页
课程设计报告车票管理系统.docx_第6页
第6页 / 共30页
课程设计报告车票管理系统.docx_第7页
第7页 / 共30页
课程设计报告车票管理系统.docx_第8页
第8页 / 共30页
课程设计报告车票管理系统.docx_第9页
第9页 / 共30页
课程设计报告车票管理系统.docx_第10页
第10页 / 共30页
课程设计报告车票管理系统.docx_第11页
第11页 / 共30页
课程设计报告车票管理系统.docx_第12页
第12页 / 共30页
课程设计报告车票管理系统.docx_第13页
第13页 / 共30页
课程设计报告车票管理系统.docx_第14页
第14页 / 共30页
课程设计报告车票管理系统.docx_第15页
第15页 / 共30页
课程设计报告车票管理系统.docx_第16页
第16页 / 共30页
课程设计报告车票管理系统.docx_第17页
第17页 / 共30页
课程设计报告车票管理系统.docx_第18页
第18页 / 共30页
课程设计报告车票管理系统.docx_第19页
第19页 / 共30页
课程设计报告车票管理系统.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

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

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

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

 

课程设计报告

(C语言程序设计)

题目车票信息管理系统

的设计与实现

二级学院数学与统计

专业信息与计算科学

班级112010102

学生姓名郭双红

学号11201010209

指导教师陈媛

时间20130619

1需求分析

1.1课程设计题目

要求设计并实现一个车票销售管理系统,系统实现以下功能。

(1)系统以菜单方式工作:

要求界面清晰,友好,美观,易用。

(2)车次信息导入功能:

要求可从磁盘文件导入车次信息。

(3)查询功能:

可按班车号、起点站或终点站查找班车信息,并将查询结果输出。

(4)售票功能:

只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间才能售票。

售票显示收费信息;售票后更新已定票人数,并实现信息存盘。

(5)退票功能:

输入退票的班次,当本班车未发出时才能退票。

退票后自动更新已定票人数,并实现信息存盘。

(6)信息浏览功能:

能输出所有班车的信息;要求输出格式清晰、美观。

(7)信息修改:

要求能修改某一指定班次的信息,并在修改后将信息存盘。

1.2系统功能需求

(1)系统以菜单方式工作:

要求界面清晰,友好,美观,易用。

(2)车次信息导入功能:

要求可从磁盘文件导入车次信息。

(3)查询功能:

可按班车号、起点站或终点站查找班车信息,并将查询结果输出。

(4)售票功能:

只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间才能售票。

售票显示收费信息;售票后更新已定票人数,并实现信息存盘。

(5)退票功能:

输入退票的班次,当本班车未发出时才能退票。

退票后自动更新已定票人数,并实现信息存盘。

(6)信息浏览功能:

能输出所有班车的信息;要求输出格式清晰、美观。

(7)信息修改:

要求能修改某一指定班次的信息,并在修改后将信息存盘。

2系统设计

2.1功能模块图

本系统的功能模块图如图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

#include

#include

#include

#include

#defineN4

voidmain_menu();//主菜单模块

voidload();//导入信息

voidINPUT();//输入模块

voidscan();//浏览模块

voidtuipiao();//退票

voidbuy();//买票

voidchange();//修改函数

voidsave();//保存函数

voidprna(intpos);//打印记录

voidsearchmenu();//查询菜单函数

ints_cn();//按班次查询

ints_lp();//按起点站查询

ints_ap();//按终点站查询

structTrain_Ticket

{

charcn[15];//车量班次

charlp[15];//leftplace起点

charap[15];//arriveplace终点

charlt[15];//lefttime发车时间

charrt[15];//runningtime行车时间

intprice;//票价

intrl;//Ratedload额定载量

intbn;//bookingnumber已定票人数

}T[N];

intn=0,i=0;//全局变量

3.2源代码

//********************************************************

//主菜单

//********************************************************

voidmain_menu()

{

system("cls");

system("colorE");

printf("**********************************************************************\n");

printf("*************************欢迎来到车票查询系统*************************");

printf("\n");

printf("|★★★1:

进入班次浏览★★★|\n");

printf("|★★★2:

进入查询班次★★★|\n");

printf("|★★★3:

售票★★★|\n");

printf("|★★★4:

退票★★★|\n");

printf("|★★★5:

班次信息修改★★★|\n");

printf("|★★★0:

退出★★★|\n");

printf("***********************************************************************\n");

printf("\n请选择(0-5):

☆☆☆");

}

voidload()//从磁盘文件导入班次信息

{

inti;

FILE*fp;

if((fp=fopen("c:

车票管理系统.dat","rb"))==NULL)

{

printf("文件打开错误\n");

exit(0);

}

for(i=0;i

fread(&T[i],sizeof(structTrain_Ticket),1,fp);

fclose(fp);

system("cls");

}

voidsave()//将班次信息保存到磁盘文件

{

FILE*fp;

if((fp=fopen("c:

车票管理系统.dat","wb"))==NULL)

{

printf("无法创建文件!

\n\n");

exit(0);

}

for(i=0;i

fwrite(&T[i],sizeof(structTrain_Ticket),1,fp);

fclose(fp);

}

inttime()//当前系统时间

{

structtm*f;

time_tnow;

now=time(NULL);

time(&now);

f=gmtime(&now);

printf(ctime(&now));

return0;

}

voidscan()

{

system("cls");/*清屏*/

printf("\n===========================================================================\n");

printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");

for(i=0;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);

printf("===========================================================================\n");

printf("请按任意键返回主菜单\n");

getch();

}

voidINPUT()//键入所有信息

{

charch;

do

{

system("cls");

printf("\n\n====================欢迎进入录入汽车时刻信息界面====================\n");

do

{

printf("\n新建汽车信息?

(y/n)");

scanf("%c",&ch);

if(ch!

='y'&&ch!

='n')

printf("输入错误,请重新输入!

!

!

");

}while(ch!

='y'&&ch!

='n');

if(ch=='n')

break;

printf("---------------------");

printf("\n录入第%d趟列车信息\n",n+1);

printf("车次");

fflush(stdin);

gets(T[i].cn);

printf("额定载量");

fflush(stdin);

scanf("%d",&T[i].rl);

printf("起点");

fflush(stdin);

gets(T[i].lp);

printf("终点");

fflush(stdin);

gets(T[i].ap);

printf("开车时间");

fflush(stdin);

gets(T[i].lt);

printf("行车时间");

fflush(stdin);

gets(T[i].rt);

printf("票价");

fflush(stdin);

scanf("%f",&T[i].price);

printf("已定票人数");

fflush(stdin);

scanf("%d",&T[i].bn);

n++;

i++;

}while(i

save();

system("cls");

}

voidprna(intpos)//打印一条记录

{

printf("\n===========================================================================\n");

printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");

printf("%s%13d%10s%10s%12s%8s%f%6d\n",T[pos].cn,T[pos].rl,T[pos].lp,T[pos].ap,T[pos].lt,T[pos].rt,T[pos].price,T[pos].bn);

printf("===========================================================================\n");

}

voidsearchmenu()//查询主菜单

{

system("cls");

printf("\n\n====================欢迎进入查询汽车时刻信息界面====================\n");

printf("\n++++++++++++++++++请选择查找方式++++++++++++++++++\n\n");

printf("|★★★1:

按班次查询★★★|\n");

printf("|★★★2:

按起点站查询★★★|\n");

printf("|★★★3:

进终点站查询★★★|\n");

printf("|★★★4:

返回主菜单★★★|\n");

printf("***********************************************************************\n");

printf("\n请选择(1-4):

☆☆☆");

}

ints_cn()//按班次查询

{

charname1[15];

intj;

system("cls");

printf("请输入要查询的班次号:

\n");

fflush(stdin);

gets(name1);

for(j=0;j

{

if(strcmp(T[j].cn,name1)==0)

printf("%s%13d%10s%10s%12s%8s%f%6d\n",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];

intj;

system("cls");

printf("请输入要查询的起点站名:

\n");

fflush(stdin);

gets(name2);

for(j=0;j

{

if(strcmp(T[j].lp,name2)==0)

printf("%s%13d%10s%10s%12s%8s%f%6d\n",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_ap()//按终点站查询

{

charname3[15];

intj;

system("cls");

printf("请输入要查询的终点站名:

\n");

fflush(stdin);

gets(name3);

for(j=0;j

{

if(strcmp(T[j].ap,name3)==0)

printf("%s%13d%10s%10s%12s%8s%f%6d\n",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;

}

voidsearch()//查询函数

{

intselect;

intn;

while

(1)

{

searchmenu();

scanf("%d",&select);

switch(select)

{

case1:

n=s_cn();

if(n)

printf("没找到相关记录\n");printf("按任意键返回\n");getch();

break;

case2:

n=s_lp();

if(n)

printf("没有找到相关记录\n");printf("按任意键返回\n");getch();

break;

case3:

n=s_ap();

if(n)

printf("没有找到相关记录\n");printf("按任意键返回\n");getch();

break;

}

if(select==4)

{

break;main_menu();

}

}

}

voidbuy()//买票

{

system("cls");

intm,log;

chart[10];

printf("请输入您需要购买票的班次(1-4):

\n");

scanf("%d",&m);

load();

printf("\n===========================================================================\n");

printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");

printf("%s%13d%10s%10s%12s%8s%f%6d\n",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);

printf("===========================================================================\n");

if(T[m-1].bn>=T[m-1].rl)

{

printf("该班次票已满!

请选择其他班次\n");

printf("按任意键返回\n");

}

if(T[m-1].bn

{

printf("当前时间为:

\n");

time();

printf("\n");

printf("请再手动输入上述时间,只需要输入时辰与分钟(例如08:

00):

\n");

scanf("%s",t);

printf("\n");

if(strcmp(t,T[m-1].lt)>0)

printf("该班次已发车,请选择其他班次\n");

elseif(T[m-1].bn==T[m-1].rl)

printf("该班次未发车但是该班次票已售完\n");

if(T[m-1].bn!

=T[m-1].rl&&strcmp(t,T[m-1].lt)<0&&T[m-1].bn

{

printf("该班次还可订%d票\n",(T[m-1].rl-T[m-1].bn));

printf("请输入您要订票数量");

scanf("%d",&log);

printf("\n");

while(log>(T[m-1].rl-T[m-1].bn))

{

printf("订票错误,数量不能超过余票数!

!

!

\n");

printf("请重新输入:

");

scanf("%d",&log);

}

if(log<=(T[m-1].rl-T[m-1].bn)){printf("一共需要%d元\n",log*T[m-1].price);printf("订票成功,祝您旅途愉快!

\n");}

}

T[m-1].bn+=log;

printf("按任意键返回主菜单\n");getchar();

}

save();

}

voidtuipiao()//退票

{

system("cls");

intx,log;

chart[10];

printf("请输入您要退票的班次:

\n");

scanf("%d",&x);

i=x;intm=i;

load();

printf("\n===========================================================================\n");

printf("车次额定载量起点终点开车时间行车时间票价已定票人数\n");

printf("%s%13d%10s%10s%12s%8s%f%6d\n",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);

printf("===========================================================================\n");

printf("当前时间为:

\n");

time();

printf("\n");

printf("请再手动输入上述时间,只需要输入时辰与分钟(例如08:

00):

\n");

scanf("%s",t);

if(strcmp(T[i-1].lt,t)>0)

{

printf("可以退票\n");

printf("请问你真的要退票吗?

\n");

printf("确认退票请按1,否则返回主菜单\n");

scanf("%d",&log);

if(log==1)

{

printf("退票成功!

\n");

T[i-1].bn--;

save();printf("按任意键返回主菜单\n");getch();

}

else

{

printf("您选择不退票\n");printf("按任意键返回主菜单\n");getch();

}

}

if(strcmp(T[i-1].lt,t)<0)

{

printf("此班次已发车不能退票!

!

!

\n");

printf("按任意键返回主菜单\n");

getch();

}

}

voidchange()

{

system("cls");

intk,select;

charbanci[100];

charm

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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