沈阳工程学院课程设计报告 第四章 系统功能实现
t.minutes);
printf(\%d\\t\\t%d\\n\int,train[i].LastTime,train[i].Edingzailiang,train[i].Yidingpiaorenshu);
}
} }
功能实现图如图4-6所示。
图4-4 列车基本信息管理
4.1.5订票与退票管理
退票管理是在原有的火车订票系统中查找到要退票的车票信息,如果给火车票没有过期,将该车票所在的结点进行退票处理。根据查询功能查找出所要退票的车票信息,先判断链表是否为空,若为空,返回主菜单;若不为空,看是否过期,若过期,输出退票失败,否则对该结点进行退票操作。
源代码如下:
/***************************************** 票务管理函数
*****************************************/ void TicketManagement(void) {
char functionNumber;
system(\ printf(\订票与退票菜单\\n\
printf(\┏━━━━━━━━━━━━━━━━
31
沈阳工程学院课程设计报告 第四章 系统功能实现
━━┓\\n\
printf(\ ┃ 1.订票
┃ \\t\\n\
printf(\ ┃ 2.退票 ┃\\t\\n\
printf(\ ┃ 3.返回主菜单 ┃\\t\\n\
printf(\┗━━━━━━━━━━━━━━━━━━┛\\n\
printf(\选择你需要的功能:\ scanf(\
switch(functionNumber) {
case '1':TicketOrder();break; case '2':TicketDelete();break; case '3': {
getchar(); mainmenu(); }
break; default: {
printf(\输入错误,请确保你的输入为1--3.\\n\ printf(\按任意键返回......\\n\ getchar();
TicketManagement(); } } }
void TicketOrder(void) {
int i;
time_t rawtime;
struct tm * timeinfo;
printf(\请输入要订购的车票的班次:\ scanf(\ printf(\
32
沈阳工程学院课程设计报告 第四章 系统功能实现
if(i < 1 || i > RecordNumber+1) {
printf(\对不起,今天没有这趟车,请明天再来,谢谢使用!\\n\ printf(\按任意键回主菜单......\\n\ getchar();
mainmenu(); }
time(&rawtime);
timeinfo=localtime(&rawtime);
printf(\
if((timeinfo->tm_hour == train[i-1].SetOut.hour&&timeinfo->tm_min < train[i-1].SetOut.minutes) || (timeinfo->tm_hour < train[i-1].SetOut.hour))
{
if(train[i-1].Yidingpiaorenshu < train[i-1].Edingzailiang) {
(train[i-1].Yidingpiaorenshu)++;
printf(\你的订票成功,请按时上车,谢谢使用!\\n\ }
else printf(\对不起,今天的这趟车的票已卖完,请明天再来,谢谢合作!\\n\ }
else printf(\对不起,今天的这趟车已发出,请明天再来,谢谢合作!\\n\
printf(\班次\\t发车时间\\t起点\\t终点\\t行车时间(小时)\\t额定载量\\t已定票人数\\n\
printf(\.SetOut.minutes);
printf(\%d\\t\\t%d\\n\alPoint,train[i-1].LastTime,train[i-1].Edingzailiang,train[i-1].Yidingpiaorenshu);
printf(\按任意键回主菜单......\\n\ getchar(); getchar(); mainmenu(); }
void TicketDelete(void) {
33
沈阳工程学院课程设计报告 第四章 系统功能实现
int i;
printf(\请输入要退购的车票的班次:\ scanf(\
if( i < 1 || i > RecordNumber + 1 ) {
printf(\对不起,今天没有这趟车,无法完成退票.谢谢使用!\\n\ getchar(); getchar();
TicketManagement(); }
time_t rawtime;
struct tm * timeinfo; time(&rawtime);
timeinfo=localtime(&rawtime);
if((timeinfo->tm_hour == train[i-1].SetOut.hour && timeinfo->tm_min < train[i-1].SetOut.minutes) || (timeinfo->tm_hour < train[i-1].SetOut.hour))
{
if(train[i-1].Yidingpiaorenshu >= 1) {
train[i-1].Yidingpiaorenshu-=1; printf(\退订车票成功,谢谢使用!\\n\ }
else printf(\对不起,今天的这趟车的票尚未卖出,无法完成退票!\\n\ }
else printf(\对不起,今天的这趟车已发出,无法完成退票!\\n\
printf(\班次\\t发车时间\\t起点\\t终点\\t行车时间(小时)\\t额定载量\\t已定票人数\\n\
printf(\.SetOut.minutes);
printf(\lPoint,train[i-1].LastTime,train[i-1].Edingzailiang,train[i-1].Yidingpiaorenshu);
printf(\按任意键回主菜单......\\n\ getchar(); getchar(); mainmenu(); }
void exit(void) {
34
沈阳工程学院课程设计报告 第四章 系统功能实现
printf(\谢谢使用本系统,欢迎下次继续使用***********************\\n\
exit(0); }
void SaveRecord(ticket x)
{
FILE *fp;
if((fp=fopen(\ {
printf(\打开文件%s失败\\n\ exit(-1);
}
fprintf(fp,\fprintf(fp,\e,x.Edingzailiang,x.Yidingpiaorenshu);
}
void Read(void) {
int i; FILE *fp;
if((fp=fopen(\ {
exit(-1); }
for(i = 0; !feof(fp); i++) {
fscanf(fp,\tOut.minutes);
fscanf(fp,\[i].LastTime,&train[i].Edingzailiang,&train[i].Yidingpiaorenshu);
}
i--;
RecordNumber = i; fclose(fp); return; }
其功能实现图如图4-7所示。
35