火车票务管理系统C语言.docx

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

火车票务管理系统C语言.docx

《火车票务管理系统C语言.docx》由会员分享,可在线阅读,更多相关《火车票务管理系统C语言.docx(21页珍藏版)》请在冰点文库上搜索。

火车票务管理系统C语言.docx

火车票务管理系统C语言

火车票务管理系统

一、课题容和要求

设计目标:

设计一个火车票务管理系统,用C语言实现。

对该系统的要求如下:

需求描述:

1.系统功能

(1)火车时刻信息录入。

包括车次、日期、起点、终点、开车时间、到达时间、票价。

数据存入数据文件hchsk.dat或hchsk.txt中。

(2)火车时刻信息查询。

按照车次查询

按终点查询

按起点查询

按终点和日期查询

(3)统计

按终点统计每日的车次数

按起点统计每日的车次数

2.系统主界面应有以下功能选项

录入火车时刻信息

查询火车时刻信息

统计火车车次

退出

注:

建议用VC环境开发用户界面。

结果形式:

提交程序设计报告和可演示的系统软件

二、需求分析

系统主界面应有以下功能选项

1.录入火车时刻信息

2.查询火车时刻信息

3.统计火车车次

4.退出

(1)火车时刻信息录入。

包括车次、日期、起点、终点、开车时间、到达时间、票价。

数据存入数据文件hchsk.dat或hchsk.txt中。

(2)火车时刻信息查询。

按照车次查询

按终点查询

按起点查询

按终点和日期查询

(3)统计

按终点统计每日的车次数

按起点统计每日的车次数

二、概要设计

voidSearchTrainNum();//按照车次查询

voidSearchToPlace();//按终点查询

voidSearchFromPlace();//按起点查询

voidSearchToPlaceAndDate();//按终点和日期查询

voidCountToPlace();//按终点统计每日的车次数

voidCountFromPlace();//按起点统计每日的车次数

三、详细设计

程序的源代码与注释

#include

#include

#include

voidSearchTrainNum();

voidSearchToPlace();

voidSearchFromPlace();

voidSearchToPlaceAndDate();

voidCountToPlace();

voidCountFromPlace();

voidStar();

 

structTRAIN

{

chartrainNum[10];

chardate[30];

charfromPlace[20];

chartoPlace[20];

charinTime[30];

charoutTime[30];

doubleprice;

};

structTRAINtrain[30];

intmain()

{

intrequest;

charch='Y';

inti=0;

doublemyprice;

FILE*fp;

 

repeat:

Star();

printf("火车管理系统界面\n");

printf("1.录入火车时刻信息.\n");

printf("2.查询火车时刻信息.\n");

printf("3.统计火车车次.\n");

printf("4.退出.\n");

Star();

printf("\n");

printf("请输入:

");

scanf("%d",&request);

switch(request)//利用case分支构造

{

case1:

{fp=fopen(".\\train.rec","wb");//利用文件与流

if(!

fp)

{

printf("Filecannotbeopened\n");

exit

(1);

}

do

{

printf("Enter车次日期起点终点开车时间到达时间票价\n>>>");

scanf("%s%s%s%s%s%s%lf",train[i].trainNum,train[i].date,train[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,&myprice);

train[i].price=myprice;

fwrite(&train[i],sizeof(structTRAIN),1,fp);

i++;

printf("continue(Y/N)(Ntoend)?

");

getchar();

scanf("%c",&ch);

}while(ch!

='N');

fclose(fp);

printf("返回主界面吗?

(Y返回)");

getchar();

scanf("%c",&ch);

if(ch=='Y')

{

printf("\n\n");

gotorepeat;

}

}break;

case2:

{printf("\n\n");

printf(">>>>>火车时刻信息查询<<<<<\n");

printf("1.按车次查询.\n");

printf("2.按终点查询.\n");

printf("3.按起点查询.\n");

printf("4.按终点和日期查询.\n");

printf("5.退出.\n");

printf("请输入:

");

scanf("%d",&request);

switch(request)

{

case1:

SearchTrainNum();break;

case2:

SearchToPlace();break;

case3:

SearchFromPlace();break;

case4:

SearchToPlaceAndDate();break;

case5:

exit(0);break;

}

printf("返回主界面吗?

(Y返回)");

getchar();

scanf("%c",&ch);

if(ch=='Y')

{

printf("\n\n");

gotorepeat;

}

}break;

case3:

{

printf("\n\n");

printf(">>>>>火车车次统计系统<<<<<\n");

printf("1.按终点统计每日的车次数.\n");

printf("2.按起点统计每日的车次数.\n");

printf("3.退出.\n");

printf("请输入:

");

scanf("%d",&request);

switch(request)

{

case1:

CountToPlace();break;

case2:

CountFromPlace();break;

case3:

exit(0);break;

}

printf("返回主界面吗?

(Y返回)");

getchar();

scanf("%c",&ch);

if(ch=='Y')

{

printf("\n\n");

gotorepeat;

}

}break;

case4:

{

Star();

printf("欢送下次使用,拜拜~~\n");

Star();

}

exit(0);break;

default:

printf("Incorrectnumentered.");

printf("Enteranewnum.\n");

break;

}

 

return0;

}

 

voidSearchTrainNum()

{

FILE*fp1;

charnum[20];

charch;

inti=0;

fp1=fopen(".\\train.rec","r+");

if(!

fp1)

{

printf("Filecannotbeopened\n");

exit

(1);

}

do

{

rewind(fp1);//文件指针的操作,到文件头部函数

printf("输入你要查找的车次号.\n>>>");

scanf("%s",num);

while(!

feof(fp1))

{

fread(&train[i],sizeof(structTRAIN),1,fp1);

if(strcmp(num,train[i].trainNum)==0)

{

printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,train[i].fromPlace,train[i].toPlace,

train[i].inTime,train[i].outTime,train[i].price);

printf("\n");

}

i++;

}

printf("continue(Y/N)(Ntoend)?

");

getchar();

scanf("%c",&ch);

}while(ch!

='N');

printf("\n");

fclose(fp1);

}

voidSearchToPlace()

{

FILE*fp2;

charnum[20];

charch;

inti=0;

fp2=fopen(".\\train.rec","r+");

if(!

fp2)

{

printf("Filecannotbeopened\n");

exit

(1);

}

do

{

rewind(fp2);

printf("输入你要查询的终点.\n>>>");

scanf("%s",num);

while(!

feof(fp2))

{

fread(&train[i],sizeof(structTRAIN),1,fp2);

if(strcmp(num,train[i].toPlace)==0)

{

printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,train[i].fromPlace,train[i].toPlace,

train[i].inTime,train[i].outTime,train[i].price);

printf("\n");

}

i++;

}

printf("continue(Y/N)(Ntoend)?

");

getchar();

scanf("%c",&ch);

}while(ch!

='N');

printf("\n");

fclose(fp2);

}

voidSearchFromPlace()

{

FILE*fp3;

charnum[20];

charch;

inti=0;

fp3=fopen(".\\train.rec","r+");

if(!

fp3)

{

printf("Filecannotbeopened\n");

exit

(1);

}

do

{

rewind(fp3);

printf("输入你要查询的起点.\n>>>");

scanf("%s",num);

while(!

feof(fp3))

{

fread(&train[i],sizeof(structTRAIN),1,fp3);

if(strcmp(num,train[i].fromPlace)==0)

{

printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,train[i].fromPlace,train[i].toPlace,

train[i].inTime,train[i].outTime,train[i].price);

printf("\n");

}

i++;

}

printf("continue(Y/N)(Ntoend)?

");

getchar();

scanf("%c",&ch);

}while(ch!

='N');

printf("\n");

fclose(fp3);

}

voidSearchToPlaceAndDate()

{

FILE*fp4;

charnum[20];

charnum1[20];

charch;

inti=0;

fp4=fopen(".\\train.rec","r+");

if(!

fp4)

{

printf("Filecannotbeopened\n");

exit

(1);

}

do

{

rewind(fp4);

printf("输入你要查询的终点与日期.\n>>>");

scanf("%s",num);

scanf("%s",num1);

while(!

feof(fp4))

{

fread(&train[i],sizeof(structTRAIN),1,fp4);

if((strcmp(num,train[i].toPlace)==0)&&(strcmp(num1,train[i].date)==0))

{

printf("%-4s%-12s%-8s%-10s%-10s%-8s%.2lf",train[i].trainNum,train[i].date,train[i].fromPlace,train[i].toPlace,

train[i].inTime,train[i].outTime,train[i].price);

printf("\n");

}

i++;

}

printf("continue(Y/N)(Ntoend)?

");

getchar();

scanf("%c",&ch);

}while(ch!

='N');

printf("\n");

fclose(fp4);

}

voidCountToPlace()

{

FILE*fp5;

charnum[20];

charch;

inti=0;

intj=0;

fp5=fopen(".\\train.rec","r+");

if(!

fp5)

{

printf("Filecannotbeopened\n");

exit

(1);

}

do

{

rewind(fp5);

printf("输入你(要统计的车次数的)终点.\n>>>");

scanf("%s",num);

j=0;

while(!

feof(fp5))

{

fread(&train[i],sizeof(structTRAIN),1,fp5);

if(strcmp(num,train[i].toPlace)==0)

{

j++;

}

i++;

}

printf("当日终点%s的车次数:

%d",num,j);

printf("\n");

printf("continue(Y/N)(Ntoend)?

");

getchar();

scanf("%c",&ch);

}while(ch!

='N');

fclose(fp5);

}

voidCountFromPlace()

{

FILE*fp6;

charnum[20];

charch;

inti=0;

intj=0;

 

fp6=fopen(".\\train.rec","r+");

if(!

fp6)

{

printf("Filecannotbeopened\n");

exit

(1);

}

do

{

rewind(fp6);

printf("输入你(要统计的车次数的)起点.\n>>>");

scanf("%s",num);

j=0;

while(!

feof(fp6))

{

fread(&train[i],sizeof(structTRAIN),1,fp6);

if(strcmp(num,train[i].fromPlace)==0)

{

j++;

}

i++;

}

printf("当日起点%s的车次数:

%d",num,j);

printf("\n");

printf("continue(Y/N)(Ntoend)?

");

getchar();

scanf("%c",&ch);

}while(ch!

='N');

fclose(fp6);

}

voidStar()

{

inti;

for(i=0;i<20;i++)

{

printf("*");

}

printf("\n");

}

 

四、测试数据及其结果分析〔如图〕

1.火车时刻信息录入

2.火车时刻信息查询。

(1)按照车次查询

(2)按终点查询

(3)按起点查询

(4)按终点和日期查询

3.统计

〔1〕按终点统计每日的车次数

〔2〕按起点统计每日的车次数

4.退出。

五、调试过程中的问题

编译过程中由于MicrosoftVisualStudioC++6.0编译器的原因。

直接给构造体double赋值会出现问题。

在金教师的指导和帮助下:

程序改为如下:

structTRAIN

{

chartrainNum[10];

chardate[30];

charfromPlace[20];

chartoPlace[20];

charinTime[30];

charoutTime[30];

doubleprice;

};

intmain()

{

intrequest;

charch='Y';

inti=0;

doublemyprice;

FILE*fp;

………

scanf("%s%s%s%s%s%s%lf",train[i].trainNum,train[i].date,train[i].fromPlace,train[i].toPlace,train[i].inTime,train[i].outTime,&myprice);

train[i].price=myprice;

………

 

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

当前位置:首页 > 求职职场 > 简历

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

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