火车票管理程序.docx
《火车票管理程序.docx》由会员分享,可在线阅读,更多相关《火车票管理程序.docx(29页珍藏版)》请在冰豆网上搜索。
火车票管理程序
《C语言程序设计》
题目火车票管理程序
一、内容
火车票管理程序
本系统主要实现功能:
根据不同要求进行火车票信息的查询,其中包括火车票有效日期,车次,起始时间和地点,到达时间和地点以及火车票价。
使用方法:
根据界面提示进行。
先录入火车票信息并存入到文件中。
再根据提示,输入数字,选择查询的方法,根据不同的查询方法输入要求输入的数据进行信息查询。
如果输入数字不符合要求,则重新输入。
可使用通过车次,日期和终点,始点,终点进行查询。
二、上机环境
操作系统:
WindowsXP
开发工具:
VC6.0
三、函数调用关系图
四、各函数功能说明
1.intmain()主函数
2.voidSearchTrainNum()按照车次号查询
3.voidSearchTrainToPlace()按照火车终点站查询
4.voidSearchTrainFromPlace()按照火车出发点查询
5.voidSearchToPlaceAndDate()按照火车到达时间和地点进行查询
6.fwrite()将火车票信息输入文件中
7.fopen()将存有火车信息的文件打开
8.fclose()将已经打开的文件关闭
9.Heng()在文字中输入一些"=",起分隔作用
五、算法描述或流程图
1、main函数流程图
2.SearchTrainNum()函数的流程图
3.SearchTrainToPlace()函数的流程图
4.SearchTrainFromPlace()函数的流程图
5.SearchToPlaceAndDate()函数的流程图
6.Heng()函数的算法:
1.输入“=”;
2.通过for循环语句控制输出的“=”个数,共20个。
7.fwrite()函数的算法:
从结构体中取出一个数据块;
按照提示进行输入信息,并将信息存放到文件中;
8.fopen()函数的算法:
将已经存储的文件打开;
9.fclose()函数的算法:
将已经打开的文件关闭;
六、程序运行结果
1.主菜单及信息输入
.
1.按车次查询
3.按终点查询
4.按起点查询
5.按日期和终点查询
6.退出系统
七、总结
1.对界面的要求应该尽量人性化,做到以让用户看懂为原则。
2.对于文件的使用,要分清wb,r,r+,ab,ab+,w,rb等的区别,为信息的存储做好充分准备,否则有可能会使刚输入的信息被抹掉覆盖。
3.遇到问题应尽快解决,否则会越积越多。
不懂得要不断追问,真正搞懂问题的本质。
为什么?
应该成为你的口头禅。
不要认为别人比你学得好,你不好意思问。
其实询问的过程也是互相学习的过程。
所以,不耻下问不是一句空话。
要经常和程序做的不错的同学学习,进行学术交流。
计算机专业是一个很枯燥的专业,但即来之、则安之,只要你努力学,也会发现其中的乐趣的。
4.勇于实践,有些东西在课本上的并不能很好的被接受,反而在实践中如果遇到了并出错了,将会给你带来意想不到的收获。
所以,不要怕犯错,犯错的过程就是学习和改进的过程。
5.在使用循环语句时,一定要注意观察循环语句到达的判断语句的范围,并且分清是那些语句被包含在循环语句中,这样可以使使用界面
变得更加简便和方便。
从现在开始,在写程序时就要养成良好的习惯。
不要漏掉书中任何一个练习题,全部做完并记录下解题思路。
买几本参考书,把书上的程序例子亲手输入到电脑上实践,只有亲自输入程序才会留下印象然后发现解决问题。
6.对事不对人就事论事,明智、真诚、虚心地讨论问题,提出创新方案。
7.编程过程中要把不懂得和易犯错的地方,顺手写在语句后,用标识符括起来,有利于以后分析和观看程序。
8.对于一些较大的程序,最好把它分成几个程序块进行编写,这样才会提高效率,并且不容易混乱。
9.要站在用户的角度思考问题,尽量保证满足每个不同用户对此类程序的需求。
10.当一个程序编完并且运行成功时,不要忘记完善,把程序把给别人看看,让他们发现你没有发现的问题,毕竟自己的思维会产生定式。
这里,就体现了团结协作的作用,几个人如果都能做到这点,那么,就相当于改了几个不同的程序,那么收获不止一点了。
程序在调试的时候出了很多问题,让我认识到了自己对一些基本知识理解的不足。
不过经过不懈的努力,加上老师的耐心指点和同学们的帮助,我在规定时间内完成了本次程序设计。
虽然在运行过程中遇到了“火车车次能不能一样”的问题,但是最终想明白了。
不过由于课程设计的时间较短,还有很多我想要加入的函数功能没有加入,所以程序功能也不是很完备,如果有时间我相信能做的更好!
八、参考文献
[1]李春葆.C语言程序设计课程(第二版).清华大学出版社,2011
九、程序清单
#include
#include
#include
#include
voidSearchTrainNum();
voidSearchTrainToPlace();
voidSearchTrainFromPlace();
voidSearchToPlaceAndDate();
voidHeng();
structTRAIN
{
chartrainNum[10];
chardate[30];
charfromPlace[30];
chartoPlace[30];
charfromTime[30];
chartoTime[30];
doubleprice;
};
structTRAINtrain[100];
intmain()
{
system("color3f");
printf("|=--------火车票管理系统--------=|\n");
printf("||\n");
printf("|1.按车次查询|\n");
printf("|2.按终点查询|\n");
printf("|3.按起点查询|\n");
printf("|4.按终点和日期查询|\n");
printf("||\n");
printf("|-----------------网络112班------|\n");
printf("
|------------------李硕----------|\n");
printf("|=---------------201107144------=|\n");
intrequest;
charch='Y';
inti=0;
doublemyprice;
FILE*fp;
loop:
Heng();
printf("火车票管理系统界面\n");
printf("1.录入火车时刻信息\n");
printf("2.查询火车时刻信息\n");
printf("3.退出\n");
Heng();
printf("\n");
printf("请输入1~3之间的任意数字:
");
scanf("%d",&request);
switch(request)
{
case1:
{
fp=fopen("c:
\\train.rec","wb");
if(fp==NULL)
{
printf("train.rec文件不能打开\n");
exit
(1);
}
while(ch!
='N')
{
printf("Enter车次日期起点终点");
printf("开车时间到达时间票价\n*****");
scanf("%s%s",train[i].trainNum,train[i].date);
scanf("%s%s",train[i].fromPlace,train[i].toPlace);
scanf("%s%s%lf",train[i].fromTime,train[i].toTime,&myprice);
train[i].price=myprice;
fwrite(&train[i],sizeof(structTRAIN),1,fp);
i++;
printf("continue(Y/N)(Ntoend)?
");
getchar();
scanf("%c",&ch);
}
fclose(fp);
printf("返回主界面吗?
(Y返回)");
getchar();
scanf("%c",&ch);
if(ch=='Y')
{
printf("\n\n\n");
gotoloop;
}
}break;
case2:
{
printf("\n\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:
SearchTrainToPlace();
break;
case3:
SearchTrainFromPlace();
break;
case4:
SearchToPlaceAndDate();
break;
case5:
exit(0);
break;
}
printf("返回主界面吗?
(Y返回)");
getchar();
scanf("%c",&ch);
if(ch=='Y')
{
printf("\n\n\n");
gotoloop;
}
}break;
case3:
{
Heng();
printf("欢迎下次使用!
\n");
Heng();
}
exit(0);
break;
default:
printf("您输入的数字不符合要求");
printf("请再次输入一个1~3之间的数字\n");
break;
}
return0;
}
//***************************************************************************
voidSearchTrainNum()
{
FILE*fp1;
charnum[20];
charch;
inti=0;
fp1=fopen("c:
\\train.rec","r+");
if(fp1==NULL)
{
printf("train.rec文件不能打开\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("Enter车次日期起点终点");
printf("开车时间到达时间票价\n*****");
printf("%-5s%-8s",train[i].trainNum,train[i].date);
printf("%-6s%-6s",train[i].fromPlace,train[i].toPlace);
printf("%-10s%-10s",train[i].fromTime,train[i].toTime);
printf("%.2lf",train[i].price);
printf("\n");
}
i++;
}
printf("continue(Y/N)(Ntoend)?
");
getchar();
scanf("%c",&ch);
}while(ch!
='N');
printf("\n");
fclose(fp1);
}
//****************************************************************************
voidSearchTrainToPlace()
{
FILE*fp2;
charnum[20];
charch;
inti=0;
fp2=fopen("c:
\\train.rec","r+");
if(fp2==NULL)
{
printf("train.rec不能被打开\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("Enter车次日期起点终点");
printf("开车时间到达时间票价\n*****");
printf("%-5s%-8s",train[i].trainNum,train[i].date);
printf("%-6s%-6s",train[i].fromPlace,train[i].toPlace);
printf("%-10s%-10s",train[i].fromTime,train[i].toTime);
printf("%.2lf",train[i].price);
printf("\n");
}
i++;
}
printf("continue(Y/N)(Ntoend)?
");
getchar();
scanf("%c",&ch);
}while(ch!
='N');
printf("\n");
fclose(fp2);
}
//**********************************************************************
voidSearchTrainFromPlace()
{
FILE*fp3;
charnum[20];
charch;
inti=0;
fp3=fopen("c:
\\train.rec","r+");
if(fp3==NULL)
{
printf("train.rec不能被打开\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("Enter车次日期起点终点");
printf("开车时间到达时间票价\n*****");
printf("%-5s%-8s",train[i].trainNum,train[i].date);
printf("%-6s%-6s",train[i].fromPlace,train[i].toPlace);
printf("%-10s%-10s",train[i].fromTime,train[i].toTime);
printf("%.2lf",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];
charnumb[20];
charch;
inti=0;
fp4=fopen("c:
\\train.rec","r+");
if(fp4==NULL)
{
printf("train.rec不能被打开\n");
exit
(1);
}
do
{
rewind(fp4);
printf("输入你要查询的终点与日期:
\n*****");
scanf("%s",num);
scanf("%s",numb);
while(!
feof(fp4))
{
fread(&train[i],sizeof(structTRAIN),1,fp4);
if((strcmp(num,train[i].toPlace)==0)&&(strcmp(numb,train[i].date)==0))
{
printf("Enter车次日期起点终点");
printf("开车时间到达时间票价\n*****");
printf("%-5s%-8s",train[i].trainNum,train[i].date);
printf("%-6s%-6s",train[i].fromPlace,train[i].toPlace);
printf("%-10s%-10s",train[i].fromTime,train[i].toTime);
printf("%.2lf",train[i].price);
printf("\n");
}
i++;
}
printf("continue(Y/N)(Ntoend)?
");
getchar();
scanf("%c",&ch);
}while(ch!
='N');
printf("\n");
fclose(fp4);
}
voidHeng()
{
inti;
for(i=0;i<20;i++)
{
printf("=");
}
}