火车票务管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
///////////////////////达内课后训练项目-火车票务管理系统/////////////////////////
// //
// 姓名: X X 学号:1005010124 // //
//
//(1)火车时刻信息录入:包括车次、日期、起点、终点、开车时间、到达时间、票价// // 数据存入数据文件hchsk.dat或hchsk.txt中。// // 每次打开软件自动读入文件中的信息// //(2)火车时刻信息查询。// //按照车次查询//
//按终点查询// //按起点查询// //按终点和日期查询// // (3)统计// // 按终点统计每日的车次数// // 按起点统计每日的车次数// //系统主界面应有以下功能选项// //录入火车时刻信息// // 浏览火车时刻信息// //查询火车时刻信息// // 删除火车时刻信息// //统计火车车次// //退出// /////////////////////////////////////////////////////////////////////////////////
#include
#include
#include
#include
#define N 30
void menu(); //函数菜单
void save(); //保存文件信息
void open(); //运行软件的时候自动打开以前录入的信息,并读入链表void display(); //浏览输入的消息记录
void SearchTrain(); //根据火车车次查询
void Search(); //选择查询方式
void Quit(); //退出系统
void Great_Ticket(); //信息整体录入
void GoMenu(); //返回主菜单
void search(int x); //按车次,启动,终点查询
void SearchEnd_Data(); //按终点和日期终点查询
void Statistics_Star(); //按起点统计车次数量
void Statistics_End(); //按终点统计车次数量
void Detele(); //删除火车时刻信息
struct Train_Ticket *Input( struct Train_Ticket *h ); //单个信息输入
struct Train_Ticket *Output( struct Train_Ticket *h ); //单个信息输出
struct Train_Ticket
{
char trains[N]; //车次
char data[N]; // 日期
char star[N]; //起点
char end[N]; // 终点
char star_time[N]; //开车时间
char end_time[N]; //到大时间
char prices[N]; //票价
struct Train_Ticket *next;
};
struct Train_Ticket *head; //链表头
//录入单个信息
struct Train_Ticket *Input( struct Train_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);
return h;
}
//输出单个信息
struct Train_Ticket *Output( struct Train_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);
return h;
}
//保存文件
void save()
{
FILE *fp;
struct Train_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);
}
//录入整个链表信息车次号不能相同否则录入信息失败
void Great_Ticket()
{
struct Train_Ticket *p1,*p2;
p1 = p2 = (struct Train_Ticket *)malloc(sizeof( struct Train_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 )