沈阳工程学院课程设计报告 第四章 系统功能实现
4.1.2列车信息录入
/******************************************* 录入信息函数
*******************************************/ void InputMessage(void) {
char yn;
FILE *fp; /*再此添加引用文件*/ int i = RecordNumber;
if((fp=fopen(\如果文件为空,则文件打不开*/ {
printf(\不能打开文件\\n\ return; }
do{ /*信息录入的“do-while”循环函数*/
printf(\车次:\\n\
scanf(\ printf(\发车时间:\\n\
scanf(\
if(train[i].SetOut.hour>23 || train[i].SetOut.minutes>59) /*判断当前输入的列车时间是否有误*/
{
printf(\输入时间有误,请重新输入\\n\输入有误则进行重新输入*/
getchar(); }
printf(\始发站:\\n\
scanf(\ printf(\终点站:\\n\
scanf(\ printf(\行车时间:\\n\
scanf(\ printf(\额定载量:\\n\
scanf(\ printf(\已定票人数:\\n\
scanf(\
26
沈阳工程学院课程设计报告 第四章 系统功能实现
if(train[i].Yidingpiaorenshu > train[i].Edingzailiang) /*判断此车票是否售完*/
{
printf(\输入数据有误,请重新输入\\n\ printf(\已定票人数:\\n\
scanf(\ }
fprintf(fp,\].SetOut.minutes);
fprintf(fp,\%d\\t\\t%d\Point,train[i].LastTime,train[i].Edingzailiang,train[i].Yidingpiaorenshu);
i++;
getchar();
printf(\是否继续?y/n\\n\ yn = getchar();
}while(yn == 'Y' || yn == 'y'); /*对是否继续进行循环进行判断*/
RecordNumber = i;
fclose(fp); /*运行完毕关闭文件*/
return; }
其功能实现图如图4-4所示。
图4.4录入信息
4.1.3列车信息浏览
27
沈阳工程学院课程设计报告 第四章 系统功能实现
/*********************************************** 浏览信息函数
***********************************************/ void ShowMessage(void) {
int i = 0; FILE *fp;
if((fp=fopen(\ {
printf(\读取数据失败,请检查文件add.txt是否存在.\\n\ exit(-1);
}
printf(\班次\\t发车时间\\t起点\\t终点\\t行车时间(小时)\\t额定载量\\t已定票人数\\n\
for(i=0;i<=RecordNumber;i++) {
printf(\t.minutes);
printf(\int,train[i].LastTime,train[i].Edingzailiang,train[i].Yidingpiaorenshu);
/******* 调用系统时间实现的功能:如果车已发出,则打出提示\此车已发出\
time_t rawtime; /*在此处引用能够调用系统时间的“time”结构体,调用系统时间*/
struct tm * timeinfo; time(&rawtime);
timeinfo=localtime(&rawtime);
if((timeinfo->tm_hour == train[i].SetOut.hour && timeinfo->tm_min >= train[i].SetOut.minutes) || (timeinfo->tm_hour > train[i].SetOut.hour)) /*将发车时间与此时系统时间作比较,判断此车是否发出*/
printf(\此车已发出\ printf(\ }
fclose(fp); /*运行完毕关闭文件*/ return; }
其功能实现图如图4-5所示。
28
沈阳工程学院课程设计报告 第四章 系统功能实现
图4-5 列车基本信息查询
4.1.4车票信息查询
/******************************************
查询子菜单
*******************************************/ void SearchMenu(void) {
system(\对运行是的界面大小做出规定*/ char functionNumber;
printf(\查询子菜单\\n\
printf(\┏━━━━━━━━━━━━━━━━━━┓\\t\\n\ printf(\┃ 1.按班次号查询 ┃\\t\\n\ printf(\┃ 2.按终点站查询 ┃\\t\\n\ printf(\┃ 3.返回主菜单 ┃\\t\\n\ printf(\┗━━━━━━━━━━━━━━━━━━┛\\n\ printf(\请选择你所需要的功能:\ scanf(\ switch(functionNumber) {
case '1':SearchByNumber();break; /*进入按班次查询 */ case '2':SearchByAddress();break; /*进入按终点查询 */ case '3': /*返回主菜单 */
29
沈阳工程学院课程设计报告 第四章 系统功能实现
getchar(); mainmenu();
break; default:
printf(\输入错误,请确保你的输入为1--3.\\n\输入操作有误提示*/ printf(\按任意键回查询子菜单......\\n\返回并重新输入 */ getchar(); SearchMenu(); } }
void SearchByNumber(void)
{
int SearchNumber;
printf(\请输入要查询的班次号:\ scanf(\
printf(\班次\\t发车时间\\t起点\\t终点\\t行车时间(小时)\\t额定载量\\t已定票人数\\n\
printf(\SetOut.hour,train[SearchNumber-1].SetOut.minutes);
printf(\%d\\t\\t%d\\n\SearchNumber-1].TerminalPoint,train[SearchNumber-1].LastTime,train[SearchNumber-1].Edingzailiang,train[SearchNumber-1].Yidingpiaorenshu);
}
void SearchByAddress(void) {
int i;
char Address[MAX];
printf(\请输入终点站的名称:\ scanf(\ printf(\班次\\t发车时间\\t起点\\t终点\\t行车时间(小时)\\t额定载量\\t已定票人数\\n\
for(i = 0;i < RecordNumber;i++) {
//***************对比终点站记录,找到并输出********** if((strcmp(Address,train[i].TerminalPoint)) == 0) {
printf(\
30