火车票务管理系统(C语言)
![火车票务管理系统(C语言)](https://img.360docs.net/img23/146vbqtvpv215hd8w6izko9855o1dq9o-31.webp)
![火车票务管理系统(C语言)](https://img.360docs.net/img23/146vbqtvpv215hd8w6izko9855o1dq9o-e2.webp)
火车票务管理系统
一、课题内容和要求
设计目标:设计一个火车票务管理系统,用C语言实现。对该系统的要求如下:
需求描述:
1. 系统功能
(1) 火车时刻信息录入。包括车次、日期、起点、终点、开车时间、到达时间、票价
数据存入数据文件hchsk.dat 或hchsk.txt中。
(2) 火车时刻信息查询。
按照车次查询
按终点查询
按起点查询
按终点和日期查询
(3) 统计
按终点统计每日的车次数
按起点统计每日的车次数
2. 系统主界面应有以下功能选项
录入火车时刻信息
查询火车时刻信息
统计火车车次
退出
注:建议用VC环境开发用户界面。
结果形式:
提交程序设计报告和可演示的系统软件
二、需求分析
系统主界面应有以下功能选项
1 ?录入火车时刻信息
2 ?查询火车时刻信息
3 .统计火车车次
4.退出
(1) 火车时刻信息录入。包括车次、日期、起点、终点、开车时间、到达时间、票价数
据存入数据文件hchsk.dat 或hchsk.txt中。
(2) 火车时刻信息查询。
按照车次查询
按终点查询
按起点查询
按终点和日期查询
(3) 统计
按终点统计每日的车次数
按起点统计每日的车次数
概要设计
void SearchTrai nNu m();〃按照车次查询
void SearchToPlace();〃按终点查询
void SearchFromPlace();〃按起点查询
void SearchToPlaceA ndDate();〃按终点和日期查询void Cou ntToPlace();〃按终点统计每日的车次数
void Cou ntFromPlace();〃按起点统计每日的车次数三、详细设计
程序的源代码与注释
#i nclude
#i ncludevstri ng.h>
#i nclude
void SearchTrai nNum();
void SearchToPlace();
void SearchFromPlace();
void SearchToPlaceA ndDate();
void Cou ntToPlace();
void Coun tFromPlace();
void Star();
struct TRAIN
{
char trai nNu m[10];
char date[30];
char fromPlace[20];
char toPlace[20];
char in Time[30];
char outTime[30];
double price;
};
struct TRAIN trai n[ 30];
int mai n()
{
int request;
char ch='Y';
int i=0;
double myprice;
FILE *fp;
repeat:
Star();
printf("火车管理系统界面\n");
printf("1.录入火车时刻信息.\n");
printf("2.查询火车时刻信息.\n");
printf("3.统计火车车次.\n");
printf("4.退出.\n");
Star();
prin tf("\n");
printf("请输入:");
scan f("%d",&request);
switch(request) // 利用case 分支结构
{
case 1:
{ fp=fopen(".\\train.rec","wb"); // 利用文件与流
if(!fp)
{
prin tf("File can not be ope ned\n");
exit(1);
}
do
prin tf("E nter车次日期起点终点开车时间到达时间
票价\n>>>");
scan f("%s%s%s%s%s%s%lf',trai n[ i].trai nNu m,trai n[ i].date,trai n[i].fromPlace ,train[i].toPlace,train[i].inTime,train[i].outTime,&myprice);
trai n[i].price=myprice;
fwrite(&trai n[i],sizeof(struct TRAIN),1,fp);
i++;
prin tf("co nti nue(Y/N)(N to en d)?");
getchar();
sca nf("%c",&ch);
}while(ch!='N');
fclose(fp);
printf("返回主界面吗?(Y返回)");
getchar();
scan f("%c",&ch);
if(ch=='Y')
{
prin tf("\n\n");
goto repeat;
}
}break;
case 2:
{ prin tf("\n\n");
printf(">>>>>火车时刻信息查询vvvvv'n");
printf("1.按车次查询.\n");
printf("2.按终点查询.\n");
printf("3.按起点查询.\n");
printf("4.按终点和日期查询.\n");
printf("5.退出.\n");
printf("请输入:");
scan f("%d",&request);
switch(request)
{
case 1: SearchTrai nNum(); break;
case 2: SearchToPlace(); break;
case 3: SearchFromPlace(); break;
case 4: SearchToPlaceA ndDate(); break;
case 5: exit(0); break;
printf("返回主界面吗?(Y返回)");
getchar();
scan f("%c",&ch);
if(ch=='Y')
{
prin tf("\n\n");
goto repeat;
}
} break;
case 3:
{
prin tf("\n\n");
printf(">>>>>火车车次统计系统 printf("1.按终点统计每日的车次数.\n"); printf("2.按起点统计每日的车次数.\n"); printf("3.退出.\n"); printf("请输入:"); scan f("%d",&request); switch(request) case 4: { case 1: Coun tToPlace(); break; case 2: Coun tFromPlace(); break; case 3: exit(0); break; printf("返回主界面吗?(Y返回)"); getchar(); scan f("%c",&ch); if(ch=='Y') { prin tf("\n\n"); goto repeat; } break; Star(); printf("欢迎下次使用,拜拜~~\n"); Star(); exit(O); break; default: prin tf("I ncorrect num en tered."); prin tf("E nter a new nu m.\n"); break; } return 0; } void SearchTrai nNum() { FILE *fp1; char num[20]; char ch; int i=0; fp1= fope n(".\\trai n.rec","r+"); if(!fp1) { prin tf("File can not be ope ned\n"); exit(1); } do { rewind(fp1); //文件指针的操作,到文件头部函数 printf("输入你要查找的车次号.\n>>>"); sca nf("%s", nu m); while(!feof(fp1)) { fread(&trai n[i],sizeof(struct TRAIN),1,fp1); if(strcmp( nu m,trai n[i].trai nNum )==0) prin tf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",trai n[ i].trai nNu m,trai n[i].date,trai n[i]. fromPlace,trai n[i].toPlace, trai n[i].i nTime,trai n[i].outTime,trai n[i].price); prin tf("\n"); } i++; } prin tf("co nti nue(Y/N)(N to en d)?"); getchar(); sca nf("%c",&ch); }while(ch!='N'); prin tf("\n"); fclose(fp1); } void SearchToPlace() { FILE *fp2; char num[20]; char ch; int i=0; fp2=fope n(".\\trai n.rec","r+"); if(!fp2) { prin tf("File can not be ope ned\n"); exit(1); } do { rewi nd(fp2); printf("输入你要查询的终点.\n>>>"); sea nf("%s", nu m); while(!feof(fp2)) { fread(&trai n[i],sizeof(struct TRAIN),1,fp2); if(strcmp( nu m,trai n[i].toPlace)==0) { prin tf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",trai n[ i].trai nNu m,trai n[i].date,trai n[i]. fromPlace,trai n[i].toPlace, trai n[i].i nTime,trai n[i].outTime,trai n[i].price); prin tf("\n"); } i++; } prin tf("co nti nue(Y/N)(N to en d)?"); getchar(); sea nf("%c",&ch); }while(ch!='N'); prin tf("\n"); fclose(fp2); } void SearchFromPlace() { FILE *fp3; char num[20]; char ch; int i=0; fp3=fope n(".\\trai n.rec","r+"); if(!fp3) { prin tf("File can not be ope ned\n"); exit(1); } do { rewin d(fp3); 曰 iH p 「 inm ■鸯 > w ? 14s s ?lnr ?云 v v v ) scanf(=%s=num)八 whi-e (一 feof(fp3)) 宀 f 「 ead(£「 ain=Lsizeof(sn TRA-N) Afp3) 八 if (sfrcm p (n u m k a 5■ 日. f 「 0 m P - a c e H H 0) 宀 |3 「 5' 斗(=%— 45% 二 25%005% 二 05% 二 05%005%.2_ 『^ 3 亘 二.寸 35' 之 1101 匕 3 亘二 0.3(0 匕 3 亘二.斗 mp-acekainm.fop-acp frainm.inTi mekain 三? oufHme Jrain 三? price) 八 prinmvl) +■+ p 「 inff(=conHnue(Y 、 N)(N fo end)d 八 g e o h a p scanf(=%c=QOch) 八 )whi_e(chH ? N) prinmvr) fc-ose(fp3) 八 void SearchToPlaceA ndDate() { FILE *fp4; char num[20]; char num1[20]; char ch; int i=0; fp4=fope n(".\\trai n.rec","r+"); if(!fp4) { prin tf("File can not be ope ned\n"); exit(1); } do { rewi nd(fp4); printf("输入你要查询的终点与日期.\n>>>"); sca nf("%s", nu m); scan f("%s", nu m1); while(!feof(fp4)) { fread(&trai n[i],sizeof(struct TRAIN),1,fp4); if((strcmp( nu m,trai n[i].toPlace)==0)&&( strcmp( nu m1,trai n[i].date)==0)) prin tf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",trai n[ i].trai nNu m,trai n[i].date,trai n[i]. fromPlace,trai n[i].toPlace, trai n[i].i nTime,trai n[i].outTime,trai n[i].price); prin tf("\n"); } i++; } prin tf("co nti nue(Y/N)(N to en d)?"); getchar(); sca nf("%c",&ch); }while(ch!='N'); prin tf("\n"); fclose(fp4); } void Cou ntToPlace() FILE *fp5; char num[20]; char ch; int i=0; int j=0; fp5=fope n(".\\trai n.rec","r+"); if(!fp5) { prin tf("File can not be ope ned\n"); exit(1); } do { rewi nd(fp5); printf("输入你(要统计的车次数的)终点.\n>>>"); sca nf("%s", nu m); j=0; while(!feof(fp5)) { fread(&trai n[i],sizeof(struct TRAIN),1,fp5); 页眉 曰 iH if(sf 「 cmp(numkainm.fop-aceHHO) 宀 j ++ +■+ M B M lnr &s -%d=numD prinmvr) prinff(=conHnue(Y 、 N)(N fo end)2=) 八 g e o h a p scanf(=%c=QOch) 八 )whi_e(chH ? N) fc-ose(fp5) 八 void CounfFrom 卫 aceo 宀 F_LE A P 9 char numKSol 八 char ch 八 in 二 H o 八