火车票务管理系统(C语言)

火车票务管理系统(C语言)
火车票务管理系统(C语言)

火车票务管理系统

一、课题内容和要求

设计目标:设计一个火车票务管理系统,用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

相关主题
相关文档
最新文档