C语言课程设计火车票管理系统.docx
- 文档编号:19069867
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:19
- 大小:17.59KB
C语言课程设计火车票管理系统.docx
《C语言课程设计火车票管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计火车票管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
C语言课程设计火车票管理系统
二、设计内容
设计一个火车票务管理系统,用C语言实现。
对该系统的要求如下:
需求描述:
1.系统功能
(1)火车时刻信息录入。
包括车次、日期、起点、终点、开车时间、到达时间、票价。
数据存入数据文件hchsk.dat或hchsk.txt中。
(2)火车时刻信息查询。
按照车次查询
按终点查询
按起点查询
按终点和日期查询
(3)统计
按终点统计每日的车次数
按起点统计每日的车次数
2.系统主界面应有以下功能选项
录入火车时刻信息
查询火车时刻信息
统计火车车次
退出
三、详细设计说明
#include
#include
#include
intMENU();//菜单模块
voidINPUT();//输入模块
voidSEARCH();//查询模块
voidSELECT();//统计模块
voidWRITE();//文件记录模块
voidPRINT();//打印模块
voidREAD();//文件读取模块
voidWRONG();//纠错模块
#defineN1000//最大列车组数
#definePrint"%s%13s%10s%10s%12s%15s%11s\n",T[i].code,T[i].data,T[i].lp,T[i].ap,T[i].lt,T[i].at,T[i].price//输出记录格式
#defineWrong"\n!
!
!
!
!
!
!
!
!
!
!
输入错误,请重新输入!
!
!
!
!
!
!
!
!
!
!
\n"
#defineGeShi"车次日期起点终点开车时间到达时间票价\n"
structTrain
{
charcode[10];//车次
chardata[10];//日期
charlp[10];//leftplace起点
charap[10];//arriveplace终点
charlt[10];//lefttime开车时间
charat[10];//arrivetime到达时间
charprice[10];//票价
}T[N];
/*全局变量*/
inti=0;//输入计数器
intn=0;//合计计数器
charl[20];//纠错空间
///////////////////////////////////////////////////////////////////////////////////////主函数
intmain()
{
intx;
do
{
x=MENU();
switch(x)
{
case1:
INPUT();break;
case2:
SEARCH();break;
case3:
SELECT();break;
case4:
printf("\n---------------------------------------");
printf("\n正在退出,请按任意键退出");
printf("\n\n");
printf("\n---------------------------------------\n");
break;
default:
WRONG();break;
}
}while(x!
=4);
return0;
}
///////////////////////////////////////////////////////////////////////////////////////菜单模块
intMENU()
{
intchoice;
system("cls");
printf("\n----------------------------------------------\n");
printf("----------------------------------------------\n");
printf("------\n");
printf("---欢迎进入火车票务管理系统---\n");
printf("------\n");
printf("----------------------------------------------\n");
printf("----------------------------------------------\n\n");
printf("\n--------------请输入选项-------------\n");
printf("1.录入火车时刻信息\n");
printf("2.查询火车时刻信息\n");
printf("3.统计火车车次\n");
printf("4.退出\n");
printf("-----------------------------------------\n");
printf("请选择:
");
scanf("%d",&choice);
gets(l);
returnchoice;
}
///////////////////////////////////////////////////////////////////////////////////////输入模块
voidINPUT()
{
charch;
do
{
system("cls");
printf("\n\n====================欢迎进入录入火车时刻信息界面====================\n");
do
{
printf("\n新建列车信息?
(y/n)");
scanf("%c",&ch);
gets(l);
if(ch!
='y'&&ch!
='n')
WRONG();
}while(ch!
='y'&&ch!
='n');
if(ch=='n')
break;
printf("---------------------");
printf("\n录入第%d趟列车信息\n",n+1);
printf("车次");
gets(T[i].code);
printf("日期");
gets(T[i].data);
printf("起点");
gets(T[i].lp);
printf("终点");
gets(T[i].ap);
printf("开车时间");
gets(T[i].lt);
printf("到达时间");
gets(T[i].at);
printf("票价");
gets(T[i].price);
n++;
i++;
}while(i WRITE(); system("cls"); printf("\n"); printf("--------------------------------\n"); printf("系统记载的列车信息如下\n"); printf("--------------------------------\n\n"); PRINT(); } ///////////////////////////////////////////////////////////////////////////////////////文件记录模块 voidWRITE() { FILE*fp,*fp1; if((fp=fopen("hchsk.txt","w"))==NULL) { printf("无法创建文件! \n\n"); getchar(); return; } if((fp1=fopen("N.txt","w"))==NULL)//用于记录共几趟车 { printf("无法创建文件! \n"); getchar(); return; } for(i=0;i if(fwrite(&T[i],sizeof(structTrain),1,fp)==0) printf("写入数据失败! \n\n"); fprintf(fp1,"%d",n); fclose(fp); fclose(fp1); } ///////////////////////////////////////////////////////////////////////////////////////文件读取模块 voidREAD() { FILE*fp,*fp1; if((fp=fopen("hchsk.txt","r"))==NULL) { printf("无法打开文件\n"); getchar(); return; } if((fp1=fopen("N.txt","r"))==NULL) { printf("无法打开文件! \n\n"); getchar(); return; } fscanf(fp1,"%d",&n); fclose(fp1); for(i=0;i { fread(&T[i],sizeof(structTrain),1,fp); } fclose(fp); } ///////////////////////////////////////////////////////////////////////////////////////打印模块 voidPRINT() { charch[10]; READ(); printf("\n===========================================================================\n"); printf(GeShi); for(i=0;i printf(Print); printf("===========================================================================\n"); printf("\n按任意键返回上级菜单: "); gets(ch); } ///////////////////////////////////////////////////////////////////////////////////////查询模块 voidSEARCH() { charname1[10];//车次 charname2[10];//终点 charname3[10];//起点 charname41[10];//终点 charname42[10];//日期 charchoice; intj; intk; do { system("cls"); printf("\n\n====================欢迎进入查询火车时刻信息界面====================\n"); printf("\n++++++++++++++++++请选择查找方式++++++++++++++++++\n\n"); printf("----1.显示所有列车信息2.按车次查询3.按终点查询----\n"); printf("-----4.按起点查询5.按终点和日期查询6.返回上级菜单----\n"); printf("\n请选择: "); scanf("%d",&j); gets(l); switch(j) { case1: PRINT(); break; case2: printf("\n---请输入车次---: "); gets(name1); break; case3: printf("\n---请输入终点---: "); gets(name2); break; case4: printf("\n---请输入起点---: "); gets(name3); break; case5: printf("\n---请输入终点---: "); gets(name41); printf("\n---请输入日期---: "); gets(name42); break; case6: break; default: WRONG(); break; } READ(); k=0; if(j==2) { for(i=0;i { if(strcmp(T[i].code,name1)==0) { printf("\n按车次查找列车信息成功! \n"); printf("\n===========================================================================\n"); printf(GeShi); break; } } for(i=0;i { if(strcmp(T[i].code,name1)==0) { printf(Print); k++; } } printf("===========================================================================\n"); printf("\n-->共查询到%d趟列车信息,请按任意键返回<--",k); gets(l); } if(j==3) { for(i=0;i { if(strcmp(T[i].ap,name2)==0) { printf("\n按终点查找列车信息成功! \n"); printf("\n===========================================================================\n"); printf(GeShi); break; } } for(i=0;i { if(strcmp(T[i].ap,name2)==0) { printf(Print); k++; } } printf("===========================================================================\n"); printf("\n-->共查询到%d趟列车信息,请按任意键返回<--",k); gets(l); } if(j==4) { for(i=0;i { if(strcmp(T[i].lp,name3)==0) { printf("\n按起点查找列车信息成功! \n"); printf("\n===========================================================================\n"); printf(GeShi); break; } } for(i=0;i { if(strcmp(T[i].lp,name3)==0) { printf(Print); k++; } } printf("===========================================================================\n"); printf("\n-->共查询到%d趟列车信息,请按任意键返回<--",k); gets(l); } if(j==5) { for(i=0;i { if(strcmp(T[i].ap,name41)==0&&strcmp(T[i].data,name42)==0) { printf("\n按终点和日期查找列车信息成功! \n"); printf("\n===========================================================================\n"); printf(GeShi); break; } } for(i=0;i { if(strcmp(T[i].ap,name41)==0&&strcmp(T[i].data,name42)==0) { printf(Print); k++; } } printf("===========================================================================\n"); printf("\n-->共查询到%d趟列车信息,请按任意键返回<--",k); gets(l); } do { system("cls"); printf("\n\n-->继续查找 (1),返回主菜单 (2)<--"); choice=getchar(); gets(l); if(choice! ='1'&&choice! ='2') WRONG(); }while(choice! ='1'&&choice! ='2'); }while(choice! ='2'); } ///////////////////////////////////////////////////////////////////////////////////////统计模块 voidSELECT() { charname1[10];//终点 charname2[10];//起点 intt,k; charchoice; do { system("cls"); printf("\n\n====================欢迎进入统计火车车次界面====================\n"); printf("\n-|--|--|--|-请选择统计方式-|--|--|--|-\n\n"); printf("1.按终点统计每日的车次数\n"); printf("2.按起点统计每日的车次数\n"); printf("\n请选择: "); scanf("%d",&t); gets(l); switch(t) { case1: printf("请输入终点: "); gets(name1); break; case2: printf("请输入起点: "); gets(name2); break; default: WRONG(); break; } READ(); if(t==1) { k=0; for(i=0;i { if(strcmp(T[i].lp,name1)==0) { printf("\n按终点统计列车信息成功! \n"); break; } } for(i=0;i { if(strcmp(T[i].lp,name1)==0) k++; } printf("\n-->共查询到%d趟列车信息,请按任意键返回<--",k); gets(l); } if(t==2) { k=0; for(i=0;i { if(strcmp(T[i].lp,name2)==0) { printf("\n按起点统计列车信息成功! \n"); break; } } for(i=0;i { if(strcmp(T[i].lp,name2)==0) k++; } printf("\n-->共查询到%d趟列车信息,请按任意键返回<--",k); gets(l); } do { system("cls"); printf("\n\n-->继续统计 (1),返回主菜单 (2)<--"); choice=getchar(); gets(l); if(choice! ='1'&&choice! ='2') WRONG(); }while(choice! ='1'&&choice! ='2'); }while(choice! ='2'); } ///////////////////////////////////////////////////////////////////////////////////////纠错模块 voidWRONG() { system("cls"); printf("\n\n--->! ! ! 输入错误,请按任意键返回! ! ! <---"); gets(l); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 火车票 管理 系统