火车票务管理系统.docx
- 文档编号:13192336
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:22
- 大小:18.19KB
火车票务管理系统.docx
《火车票务管理系统.docx》由会员分享,可在线阅读,更多相关《火车票务管理系统.docx(22页珍藏版)》请在冰点文库上搜索。
火车票务管理系统
///////////////////////达内课后训练项目-火车票务管理系统/////////////////////////
////
//姓名:
XX学号:
1005010124//
////
//
(1)火车时刻信息录入:
包括车次、日期、起点、终点、开车时间、到达时间、票价//
//数据存入数据文件hchsk.dat或hchsk.txt中。
//
//每次打开软件自动读入文件中的信息//
//
(2)火车时刻信息查询。
//
// 按照车次查询//
// 按终点查询//
// 按起点查询//
// 按终点和日期查询//
//(3)统计//
//按终点统计每日的车次数//
//按起点统计每日的车次数//
// 系统主界面应有以下功能选项//
// 录入火车时刻信息//
//浏览火车时刻信息//
// 查询火车时刻信息//
//删除火车时刻信息//
// 统计火车车次//
// 退出//
/////////////////////////////////////////////////////////////////////////////////
#include
#include
#include
#include
#defineN30
voidmenu();//函数菜单
voidsave();//保存文件信息
voidopen();//运行软件的时候自动打开以前录入的信息,并读入链表
voiddisplay();//浏览输入的消息记录
voidSearchTrain();//根据火车车次查询
voidSearch();//选择查询方式
voidQuit();//退出系统
voidGreat_Ticket();//信息整体录入
voidGoMenu();//返回主菜单
voidsearch(intx);//按车次,启动,终点查询
voidSearchEnd_Data();//按终点和日期终点查询
voidStatistics_Star();//按起点统计车次数量
voidStatistics_End();//按终点统计车次数量
voidDetele();//删除火车时刻信息
structTrain_Ticket*Input(structTrain_Ticket*h);//单个信息输入
structTrain_Ticket*Output(structTrain_Ticket*h);//单个信息输出
structTrain_Ticket
{
chartrains[N];//车次
chardata[N];//日期
charstar[N];//起点
charend[N];//终点
charstar_time[N];//开车时间
charend_time[N];//到大时间
charprices[N];//票价
structTrain_Ticket*next;
};
structTrain_Ticket*head;//链表头
//录入单个信息
structTrain_Ticket*Input(structTrain_Ticket*h)
{
printf("请输入:
日期起点终点开车时间到达时间票价\n");
fflush(stdin);
scanf("%s%s%s%s%s%s",
h->data,h->star,h->end,h->star_time,h->end_time,h->prices);
returnh;
}
//输出单个信息
structTrain_Ticket*Output(structTrain_Ticket*h)
{
printf("%s%s%s%s%s%s%s\n",
h->trains,h->data,h->star,h->end,h->star_time,h->end_time,h->prices);
returnh;
}
//保存文件
voidsave()
{
FILE*fp;
structTrain_Ticket*p;
p=head;
fp=fopen("hchsk.txt","w+");
if(fp==NULL)
{
printf("打开文件失败!
\n");
return;
}
else
{
while(p!
=NULL)
{
fprintf(fp,"%s%s%s%s%s%s%s",
p->trains,p->data,p->star,p->end,p->star_time,p->end_time,p->prices);
p=p->next;
}
//printf("成功保存文件!
\n");
}
printf("\n");
fclose(fp);
}
//录入整个链表信息车次号不能相同否则录入信息失败
voidGreat_Ticket()
{
structTrain_Ticket*p1,*p2;
p1=p2=(structTrain_Ticket*)malloc(sizeof(structTrain_Ticket));
printf("请输入车次(车次为'0'时结束输入):
");
if(p2==NULL)
{
free(p2);
printf("未分配内存成功!
\n");
return;
}
else
{
fflush(stdin);
scanf("%s",&p2->trains);
p2->next=NULL;
}
while(p2->trains[0]!
='0')//车次号不为结束标志‘0’
{
p2=Input(p2);
if(head==NULL)
{
head=p2;
}
else
{
p1=head;
while(p1->next!
=NULL)
{
if(!
strcmp(p1->trains,p2->trains))//判断车次是否存在
{
printf("该车次已存在,输入信息失败!
\n\n");
return;
}
p1=p1->next;
}
p1->next=p2;
}
p2=(structTrain_Ticket*)malloc(sizeof(structTrain_Ticket));
printf("请输入车次(车次为'0'时结束输入):
");
if(p2!
=NULL)
{
fflush(stdin);
scanf("%s",&p2->trains);
p2->next=NULL;
}
}
save();//输入完成后自动保存输入的信息到文件件
return;
}
//打开文件信息
voidopen()
{
FILE*fp;
if((fp=fopen("hchsk.txt","r"))==NULL)
{
printf("文件无任何消息记录!
\n");
return;
}
structTrain_Ticket*p1,*p2;
p1=p2=(structTrain_Ticket*)malloc(sizeof(structTrain_Ticket));
head=p1;
while(!
feof(fp))//文件不到结束时,将文件内容写到链表中
{
fscanf(fp,"%s%s%s%s%s%s%s",
&p2->trains,&p2->data,&p2->star,&p2->end,&p2->star_time,&p2->end_time,&p2->prices);
p1->next=p2;
p1=p2;
p2=(structTrain_Ticket*)malloc(sizeof(structTrain_Ticket));
p1->next=NULL;
}
fclose(fp);
return;
}
//浏览
voiddisplay()
{
charch;
structTrain_Ticket*p1;
p1=head;
if(p1==NULL)
{
printf("无任何记录!
\n");
return;
}
printf("车次日期起点终点开车时间到达时间票价\n");
while(p1!
=NULL)
{
Output(p1);
if(p1->next!
=NULL)
p1=p1->next;
else
{
printf("\n");
printf("返回主菜单?
(y/n):
");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
system("cls");
GoMenu();
}
else
return;
}
}
}
//删除火车时刻信息
voidDelete()
{
charc[30];
charch;
printf("请输入要删除的火车车次:
");
scanf("%s",c);
structTrain_Ticket*p1,*p2;
p1=(structTrain_Ticket*)malloc(sizeof(structTrain_Ticket));
p1=head;
if(p1==NULL)
{
printf("无任何记录!
\n");
return;
}
p2=p1->next;
if(!
strcmp(p1->trains,c))//如果删除的信息是在表头
{
printf("您要删除的信息如下:
\n");
printf("车次日期起点终点开车时间到达时间票价\n");
Output(p1);
printf("确定删除吗?
(y/n):
");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
head=p2;
printf("成功删除该信息!
\n\n");
save();//删除完成后,自动保存信息
free(p1);//释放p1
return;
}
else
return;
}
else//要删除的信息不在表头
{
while(p2!
=NULL)
{
if(!
strcmp(p2->trains,c))
{
printf("您要删除的信息如下:
\n");
printf("车次日期起点终点开车时间到达时间票价\n");
Output(p2);
printf("确定删除吗?
(y/n):
");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
{
p1->next=p2->next;
printf("成功删除该信息!
\n\n");
save();//删除完成后,自动保存信息
free(p2);//释放p2
return;
}
}
elseif(p2->next!
=NULL)
{
p1=p1->next;
p2=p2->next;
}
else
{
printf("无此车次信息,删除失败!
\n");
return;
}
}
}
}
//按火车车次、起点、终点查询
voidsearch(intx)
{
charTra[30];
chara[30];
structTrain_Ticket*p;
p=head;
printf("请输入您要查询的内容:
");
scanf("%s",Tra);
if(p==NULL)
{
printf("对不起,无资料记录!
\n");
exit(0);
}
else
{
while(p!
=NULL)
{
if(x==1)
strcpy(a,p->trains);
if(x==2)
strcpy(a,p->star);
if(x==3)
strcpy(a,p->end);
if(!
strcmp(a,Tra))
{
printf("车次日期起点终点开车时间到达时间票价\n");
Output(p);
return;
}
p=p->next;
}
printf("没有您要查询的车次记录!
\n");
}
}
//按终点和日期查询
voidSearchEnd_Data()
{
charend[30];
chardata[30];
structTrain_Ticket*p;
p=head;
printf("请输入您要查询的车次和日期:
");
fflush(stdin);
scanf("%s%s",end,data);
if(p==NULL)
{
printf("对不起,无资料记录!
\n");
exit(0);
}
else
{
while(p!
=NULL)
{
if(!
strcmp(p->end,end)&&!
strcmp(p->data,data))
{
printf("车次日期起点终点开车时间到达时间票价\n");
Output(p);
}
if(p->next!
=NULL)
{
p=p->next;
}
else
return;
}
return;
}
}
//返回主菜单
voidGoMenu()
{
system("cls");
menu();
}
//查询
voidSearch()
{
system("cls");
inti;
printf("1.按车次查找\n");
printf("2.起点次查找\n");
printf("3.终点次查找\n");
printf("4.终点和日期次查找\n");
printf("5.返回主菜单\n");
T:
printf("请选择:
");
fflush(stdin);
scanf("%d",&i);
switch(i)
{
case1:
search
(1);
break;
case2:
search
(2);
break;
case3:
search(3);
break;
case4:
SearchEnd_Data();
break;
case5:
GoMenu();
break;
default:
printf("输入无效,请重试!
\n");
gotoT;
}
gotoT;
}
//按起点统计车数量
voidStatistics_Star()
{
intcout=0;
charb[30];
structTrain_Ticket*p;
p=head;
printf("请输入起点名:
");
fflush(stdin);
scanf("%s",b);
if(p==NULL)
{
printf("对不起,无资料记录!
\n");
return;
}
else
{
while(p!
=NULL)
{
if(!
strcmp(p->star,b))
{
cout++;
}
if(p->next!
=NULL)
{
p=p->next;
}
else
{
printf("起点为:
%s的车次共有%d次\n",b,cout);
return;
}
}
}
}
//按终点统计车数量
voidStatistics_End()
{
intcout=0;
charb[30];
structTrain_Ticket*p;
p=head;
printf("请输入终点名:
");
fflush(stdin);
scanf("%s",b);
if(p==NULL)
{
printf("对不起,无资料记录!
\n");
return;
}
else
{
while(p!
=NULL)
{
if(!
strcmp(p->end,b))
{
cout++;
}
if(p->next!
=NULL)
{
p=p->next;
}
else
{
printf("终点为:
%s的车次共有%d次\n",b,cout);
return;
}
}
}
}
//统计车数量
voidStatistics()
{
intn;
printf("1.按起点统计2.按终点统计\n");
if(!
scanf("%d",&n))
{
printf("输入无效!
\n");
return;
}
else
{
if(n==1)
Statistics_Star();
elseif(n==2)
Statistics_End();
else
{
printf("输入无效!
\n");
return;
}
}
}
//退出
voidQuit()
{
charch;
printf("确定退出吗?
(y/n)\n");
fflush(stdin);
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
exit(0);
else
return;
}
//菜单
voidmenu()
{
intm;
printf("************************************\n");
printf("*火车票务管理系统*\n");
printf("************************************\n");
printf("①录入火车时刻信息\n");
printf("②浏览火车时刻信息\n");
printf("③查询火车时刻信息\n");
printf("④删除火车车次\n");
printf("⑤统计火车车次\n");
printf("⑥退出\n\n");
L:
printf("请选择功能:
");
fflush(stdin);
if(!
scanf("%d",&m))
{
printf("输入无效,请重试:
\n");
gotoL;
}
switch(m)
{
case1:
Great_Ticket();
break;
case2:
display();
break;
case3:
Search();
break;
case4:
Delete();
break;
case5:
Statistics();//统计
break;
case6:
Quit();
break;
default:
printf("输入无效,请重新输入:
\n");
gotoL;
}
gotoL;
}
//主菜单
intmain()
{
printf("欢迎进入火车票务管理系统!
!
\n");
printf("正在加载文档信息:
");
open();//运行软件的时候自动打开存入文件中的相关信息
for(inti=0;i<3;i++)
{
printf("*");
Sleep(400);
}
system("cls");
menu();
return0;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 火车票 管理 系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)