课程设计报告-车票管理系统
更新时间:2023-05-20 21:45:01 阅读量: 实用文档 文档下载
C语言课程设计 车票管理系统
1
课程设计报告
(C语言程序设计)
题目 车票信息管理系统
的设计与实现
二级学院 数学与统计 专 业 信息与计算科学
班 级 112010102 学生姓名 郭双红
学 号 11201010209 指导教师 陈媛 时 间
20130619
C语言课程设计 车票管理系统
1 需求分析
1.1 课程设计题目
要求设计并实现一个车票销售管理系统,系统实现以下功能。 (1) 系统以菜单方式工作:要求界面清晰,友好,美观,易用。 (2) 车次信息导入功能:要求可从磁盘文件导入车次信息。
(3) 查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。 (4) 售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间
才能售票。售票显示收费信息;售票后更新已定票人数,并实现信息存盘。
(5) 退票功能:输入退票的班次,当本班车未发出时才能退票。退票后自动更新已定票
人数,并实现信息存盘。
(6) 信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。 (7) 信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。
1.2 系统功能需求
(1) 系统以菜单方式工作:要求界面清晰,友好,美观,易用。 (2) 车次信息导入功能:要求可从磁盘文件导入车次信息。
(3) 查询功能:可按班车号、起点站或终点站查找班车信息,并将查询结果输出。 (4) 售票功能:只有当某班车已定票人数小于额定载量,且当前系统时间小于发车时间
才能售票。售票显示收费信息;售票后更新已定票人数,并实现信息存盘。
(5) 退票功能:输入退票的班次,当本班车未发出时才能退票。退票后自动更新已定票
人数,并实现信息存盘。
(6) 信息浏览功能:能输出所有班车的信息;要求输出格式清晰、美观。 (7) 信息修改:要求能修改某一指定班次的信息,并在修改后将信息存盘。
2 系统设计
2.1 功能模块图
本系统的功能模块图如图2-1所示。
C语言课程设计 车票管理系统
图2-1 系统功能模块图
2.2 数据定义
本系统的数据可采用结构数组来处理。可必要的设置全局变量。因此本系统的主要数据定义如下:
struct Train_Ticket {
char cn[15]; //车量班次 char lp[15]; //left place 起点 char ap[15]; //arrive place 终点 char lt[15]; //left time 发车时间 char rt[15]; //running time 行车时间 float price; // 票价
int rl; //Rated load 额定载量
C语言课程设计 车票管理系统
int bn; //booking number 已定票人数 }T[N];
int n=0,i=0;// 全局变量
2.3 关键技术分析
⑴ 在程序开始运行时,应调用自定义的INPUT()函数,将所有需要的数据导入到结构数组中,然后保存。
⑵ 调用load()函数,从磁盘导入车票信息。由于第一次应用INPUT()函数磁盘中已有数据,因此不必要再进行重新导入,所以在INPUT()函数中先询问是否重新导入,然后再进入主菜单,或者在调用一次后,以后运行时不再调用。
⑶ .买票和退票都涉及到时间的问题,这源于要比较发车时间与当前的时间,判断这班车到底有没有发车,和能不能订票与退票,这时用了一个时间函数,输出了当前的时间,但那边有年月日,不好进行提取和比较,于是采用输出了时间,然后看着那个时间手动的提取。
⑷ 系统中应编写存盘函数save(),在进行买票或者退票功能后都需要调用save()函数进行数据的更新。
⑸ 采用循环结构生成主菜单,在数据输入时应该有清晰的提示信息,以方便用户的操作,对输出数据进行格式控制,以使界面更加美观,清晰。
3 系统实现
3.1 功能模块设计
根据系统分析的结论,将本系统需完成的功能模块划分如下: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> #include<time.h> #define N 4
void main_menu(); //主菜单模块
void load(); //导入信息 void INPUT(); //输入模块 void scan(); //浏览模块 void tuipiao(); //退票 void buy(); //买票 void change(); //修改函数
C语言课程设计 车票管理系统
void save(); //保存函数 void prna(int pos); //打印记录 void searchmenu(); //查询菜单函数 int s_cn(); //按班次查询 int s_lp(); //按起点站查询 int s_ap(); //按终点站查询 struct Train_Ticket {
char cn[15]; //车量班次 char lp[15]; //left place 起点 char ap[15]; //arrive place 终点 char lt[15]; //left time 发车时间 char rt[15]; //running time 行车时间 int price; // 票价
int rl; //Rated load 额定载量 int bn; //booking number 已定票人数 }T[N];
int n=0,i=0;// 全局变量
3.2 源代码
//******************************************************** //主菜单
//******************************************************** void main_menu() {
system("cls"); system("color E");
printf("**********************************************************************\n");
printf("*************************欢迎来到车票查询系统
*************************");
printf("\n");
C语言课程设计 车票管理系统
printf("| ★★★ 1: 进入班次浏览 ★★★
|\n");
printf("| ★★★ 2: 进入查询班次 ★★★
|\n");
printf("| ★★★ 3: 售票 ★★★
|\n");
printf("| ★★★ 4: 退票 ★★★
|\n");
printf("| ★★★ 5: 班次信息修改 ★★★
|\n");
printf("| ★★★ 0: 退出 ★★★
|\n");
printf("*********************************************************
**************\n"); }
void load() //从磁盘文件导入班次信息 { int i; FILE *fp;
if((fp=fopen("c:车票管理系统.dat","rb"))==NULL) {
printf("文件打开错误\n"); printf("\n请选择(0-5):☆☆☆");
exit(0); }
for(i=0;i<N;i++)
fread(&T[i],sizeof(struct Train_Ticket),1,fp); fclose(fp); system("cls"); }
void save() //将班次信息保存到磁盘文件 {
C语言课程设计 车票管理系统
FILE *fp;
if((fp=fopen("c:车票管理系统.dat","wb"))==NULL) {
printf("无法创建文件!\n\n"); exit(0);
}
for(i=0;i<N;i++)
fwrite(&T[i],sizeof(struct Train_Ticket),1,fp);
fclose(fp); }
int time() //当前系统时间 {
struct tm *f;
time_t now;
now=time(NULL);
time(&now); f=gmtime(&now);
printf(ctime(&now));
return 0; } void scan() {
system("cls"); /*清屏*/
printf("\n
===========================================================================\n");
printf(" 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数\n");
for(i=0;i<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);
C语言课程设计 车票管理系统
printf("
===========================================================================\n"); }
void INPUT() //键入所有信息 {
char ch; do {
system("cls");
printf("\n\n ====================欢迎进入 录入汽车时刻信息 printf("请按任意键返回主菜单\n"); getch();
界面====================\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(" 起点 ");
C语言课程设计 车票管理系统
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<N); save(); system("cls"); }
void prna(int pos) // 打印一条记录 {
printf("\n
===========================================================================\n");
printf(" 车次 额定载量 起点 终点 开车时间 行车时间 票价 已定票人数\n");
printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[pos].cn,T[pos].rl,T[pos].
C语言课程设计 车票管理系统
lp,T[pos].ap,T[pos].lt,T[pos].rt,T[pos].price,T[pos].bn); printf("
===========================================================================\n"); }
void searchmenu() // 查询主菜单 {
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):☆☆☆"); }
int s_cn() //按班次查询 {
char name1[15]; int j;
system("cls");
printf("请输入要查询的班次号:\n "); fflush(stdin);
C语言课程设计 车票管理系统
gets(name1); for(j=0;j<N;j++) {
printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[j].cn,T[j].rl,T[j].lp
if(strcmp(T[j].cn,name1)==0)
,T[j].ap,T[j].lt,T[j].rt,T[j].price,T[j].bn);continue;
return 0;
}
return 1; }
int s_lp() //按起点站查询 {
char name2[15]; int j;
system("cls");
printf("请输入要查询的起点站名: \n"); fflush(stdin); gets(name2); for(j=0;j<N;j++) {
printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[j].cn,T[j].rl,T[j].lp
if(strcmp(T[j].lp,name2)==0)
,T[j].ap,T[j].lt,T[j].rt,T[j].price,T[j].bn);continue;
return 0;
}
return 1; }
int s_ap() //按终点站查询 {
char name3[15];
C语言课程设计 车票管理系统
int j;
system("cls");
printf("请输入要查询的终点站名: \n"); fflush(stdin); gets(name3);
for(j=0;j<N;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;
return 0;
}
return 1; }
void search() //查询函数 {
int select; int n; while(1) {
searchmenu(); scanf("%d",&select); switch(select) { case 1:
if(n)
printf("没找到相关记录\n");printf("按任意键返回
n=s_cn();
\n");getch();
break;
case 2: n=s_lp();
if(n)
C语言课程设计 车票管理系统
printf("没有找到相关记录\n");printf("按任意键返回
\n");getch();
break;
case 3: n=s_ap();
if(n)
printf("没有找到相关记录\n");printf("按任意键返回
\n");getch(); }
void buy() //买票 {
system("cls"); int m,log; char t[10]; }
{ }
break;main_menu();
}
if(select==4)
break;
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);
C语言课程设计 车票管理系统
printf("
===========================================================================\n");
if(T[m-1].bn>=T[m-1].rl) { }
if(T[m-1].bn<T[m-1].rl) {
printf("当前时间为:\n");
printf("该班次票已满!请选择其他班次\n"); printf("按任意键返回\n");
time(); printf("\n");
printf("请再手动输入上述时间,只需要输入时辰与分钟(例如 08:00): \n");
scanf("%s",t);
printf("\n");
if(strcmp(t,T[m-1].lt)>0)
printf("该班次已发车,请选择其他班次\n"); else if(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<T[m-1].rl) {
printf("\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))
该
班
次
还
可
订
%d
票
{
printf("订票错误,数量不能超过余票
C语言课程设计 车票管理系统
数!!!\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(); }
void tuipiao()//退票 {
system("cls"); int x,log; char t[10];
printf("请输入您要退票的班次: \n"); scanf("%d",&x); i=x;int m=i; load(); printf("\n } save();
===========================================================================\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");
C语言课程设计 车票管理系统
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) { } else {
printf("您选择不退票\n");printf("按任意键返回主菜单printf("退票成功!\n"); T[i-1].bn--;
save();printf("按任意键返回主菜单\n");getch();
\n");getch(); }
void change() {
}
}
if(strcmp(T[i-1].lt,t)<0) { }
printf("此班次已发车不能退票!!!\n"); printf("按任意键返回主菜单\n"); getch();
C语言课程设计 车票管理系统
system("cls"); int k,select; char banci[100];
char mima[10];//假设密码为aaa
printf("这个是工作人员所进,请输入密码:\n"); scanf("%s",mima);
while(strcmp(mima,"aaa")!=0) { }
printf("进入成功!\n"); printf("密码错误!\n"); printf("请重新输入:\n"); scanf("%s",mima);
printf("输入所要修改班次号:\n"); scanf("%s",banci);
for(k=0;k<N;k++) { }
printf("\n
if(strcmp(T[k].cn,banci)==0)
break;
===========================================================================\n");
printf(" 车次 额定载量 起点 终点 开车时间
行车时间 票价 已定票人数\n");
printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp
,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);
printf("
===========================================================================\n");
printf("修改时间请按1\n");
C语言课程设计 车票管理系统
{
printf("修改终点站请按2\n"); printf("修改票价请按3\n"); scanf("%d",&select); switch(select)
case 1:
for(k=0;k<N;k++)
if(strcmp(T[k].cn,banci)==0) break;
printf("请输入修改后的时间(例如08:00)\n"); scanf("%s",T[k].lt); printf("修改成功!\n"); printf("\n
===========================================================================\n");
printf(" 车次 额定载量 起点 终点 开车时间
行车时间 票价 已定票人数\n");
printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp
,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);
printf("
===========================================================================\n");
printf("按任意键返回\n"); save(); getch(); break; case 2:
for(k=0;k<N;k++)
if(strcmp(T[k].cn,banci)==0) break;
printf("请输入修改后的终点站\n");
C语言课程设计 车票管理系统
scanf("%s",T[k].ap); printf("修改成功!\n");
printf("\n
===========================================================================\n");
printf(" 车次 额定载量 起点 终点 开车时间
行车时间 票价 已定票人数\n");
printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp
,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);
printf("
===========================================================================\n");
printf("按任意键返回\n"); save(); getch(); break; case 3:
for(k=0;k<N;k++)
if(strcmp(T[k].cn,banci)==0) break;
printf("请输入修改后的票价\n"); scanf("%d",&T[k].price); printf("修改成功!\n");
printf("\n
===========================================================================\n");
printf(" 车次 额定载量 起点 终点 开车时间
行车时间 票价 已定票人数\n");
printf( " %s%13d%10s%10s%12s%8s%f%6d\n",T[k].cn,T[k].rl,T[k].lp
,T[k].ap,T[k].lt,T[k].rt,T[k].price,T[k].bn);
C语言课程设计 车票管理系统
printf("
===========================================================================\n"); }
void main() {
} int select; load(); while(1) {
main_menu(); scanf("%d",&select); switch(select) {
case 1:scan();getchar();break; case 2:search();getchar();break; case 3:buy();getch();break; case 4:tuipiao();getchar();break; case 5:change();getchar();break; }
if(select==0)
{ printf("按任意键退出\n");printf("\n");break;}
printf("按任意键返回\n"); save(); getch(); default: }
printf("选择错误!");
printf("按任意键返回主菜单\n"); getch();break;
C语言课程设计 车票管理系统
}
4 系统测试
4.1 主界面
系统主界面如图4-1所示:
系统运行主窗口
4.2 车次信息浏览模块
在主菜单的提示下选择1,可显示所有车次信息。
4.3 查询车次信息
在主菜单的提示下选择
2,接着按提示进行各项查
正在阅读:
课程设计报告-车票管理系统05-20
2020京东商家客服话术04-27
公务员的考察材料范文03-27
一掌经命理预测09-27
建筑工程经济与企业管理09-10
成本会计实训题10-28
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 车票
- 管理系统
- 课程
- 报告
- 设计
- 新视野大学英语课本答案(第4册)
- 药事管理法规与药学综合知识(三)《安全用药基础知识》试题
- 国家基本公共卫生服务表格(2011年版)
- 测量学模拟题(开卷)
- 善待你所在的单位
- 八年级下册英语复习笔记
- 合作协议 意向书模板
- 测量不确定度的评定程序
- 应届毕业生自荐书范例
- 新媒体学风阵地建设活动方案
- 发展汉语中级口语《在宾馆》
- 2012-2013厦门市质量检查英语试卷及参考答案
- 世德堂刊本《西游记》传本考述
- 外文翻译 外文文献
- 患者身份识别制度和程序
- 白领创业如何成功
- Science and technology change life
- 初二语文《小石潭记》《记承天寺夜游》文言文测试题答案
- 2008年新疆货币信贷形势分析报告
- 中国民族音乐概论考试考点