人人范文网 范文大全

火车票务管理系统

发布时间:2020-03-02 13:04:51 来源:范文大全 收藏本文 下载本文 手机版

///////////////////////达内课后训练项目-火车票务管理系统///////////////////////// //

// //

姓名: 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 )

{

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 = (struct Train_Ticket *)malloc(sizeof( struct Train_Ticket) );

printf(\"请输入车次(车次为\'0\'时结束输入):\");

if( p2 != NULL )

{

fflush( stdin );

scanf( \"%s\", &p2->trains );

p2 ->next = NULL;

} } save(); //输入完成后 自动保存输入的信息到文件件

return ; }

//打开文件信息 void open() { FILE *fp; if( (fp = fopen(\"hchsk.txt\",\"r\")) == NULL ) {

printf(\"文件无任何消息记录!\\n\");

return ; } struct Train_Ticket *p1,*p2; p1 = p2 = (struct Train_Ticket *)malloc(sizeof( struct Train_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 = (struct Train_Ticket *)malloc(sizeof( struct Train_Ticket) );

p1 ->next = NULL; } fclose(fp); return ; }

//浏览

void display() { char ch; struct Train_Ticket *p1; p1 = head; if( p1 == NULL ) {

printf(\"无任何记录!\\n\");

return; }

printf(\"车次

日期

起点

终点

开车时间 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 ;

到达时间票价\\n\");

} } }

//删除火车时刻信息 void Delete() { char c[30]; char ch; printf(\"请输入要删除的火车车次:\"); scanf(\"%s\", c); struct Train_Ticket *p1,*p2; p1 = (struct Train_Ticket *)malloc(sizeof( struct Train_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 ;

}

}

else if( p2 ->next != NULL )

{

p1 = p1 ->next;

p2 = p2 ->next;

}

else

{

printf(\"无此车次信息,删除失败!\\n\");

return ;

}

} } }

//按火车车次、起点、终点查询 void search(int x) { char Tra[30]; char a[30]; struct Train_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(\"车次

日期

起点

终点

Output(p);

return ;

}

p = p -> next ;

}

printf(\"没有您要查询的车次记录!\\n\"); } }

//按终点和日期查询 void SearchEnd_Data() { char end[30]; char data[30]; struct Train_Ticket *p; p = head; printf(\"请输入您要查询的车次和日期:\"); fflush(stdin); scanf(\"%s %s\", end,data); if ( p == NULL ) {

printf(\"对不起,无资料记录!\\n\");

exit(0); } else {

开车时间到达时间票价\\n\");

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 ; } }

//返回主菜单 void GoMenu() { system(\"cls\"); menu(); }

//查询

void Search() { system( \"cls\" ); int i; printf(\"

1.按车次查找\\n\"); printf(\"

2.起点次查找\\n\"); printf(\"

3.终点次查找\\n\"); printf(\"

4.终点和日期次查找\\n\"); printf(\"

5.返回主菜单\\n\"); T: printf(\"请选择:\"); fflush(stdin); scanf(\"%d\",&i); switch( i ) { case 1:

search(1);

break; case 2:

search(2);

break; case 3:

search(3);

break; case 4:

SearchEnd_Data();

break; case 5:

GoMenu();

break; default:

printf(\"输入无效,请重试!\\n\");

goto T; } goto T; }

//按起点统计车数量 void Statistics_Star() { int cout = 0; char b[30]; struct Train_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 ;

}

}

} }

//按终点统计车数量 void Statistics_End() { int cout = 0; char b[30]; struct Train_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 ;

}

} } }

//统计车数量 void Statistics() { int n; printf(\"1.按起点统计

2.按终点统计\\n\"); if(!scanf(\"%d\", &n)) {

printf(\"输入无效!\\n\");

return; } else {

if(n == 1)

Statistics_Star();

else if(n == 2)

Statistics_End();

else

{

printf(\"输入无效!\\n\");

return;

} } }

//退出 void Quit() { char ch; printf(\"确定退出吗?(y/n)\\n\"); fflush( stdin ); scanf(\"%c\",&ch); if( ch == \'y\' || ch == \'Y\' )

exit(0); else

return; }

//菜单 void menu() { int m; 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\");

goto L; } switch( m ) { case 1:

Great_Ticket();

break; case 2:

display();

break;

case 3:

Search();

break; case 4:

Delete();

break; case 5:

Statistics(); //统计

break;

case 6:

Quit();

break; default:

printf(\"输入无效,请重新输入:\\n\");

goto L; } goto L; }

//主菜单 int main() { printf(\"欢迎进入火车票务管理系统!!\\n\"); printf(\"正在加载文档信息:\"); open();

//运行软件的时候自动打开存入文件中的相关信息

for(int i = 0; i

printf(\"* \");

Sleep(400); } system( \"cls\" ); menu(); return 0; }

火车订票管理系统

票务管理

票务管理复习

火车订票管理系统主程序流程

二维码票务分销系统介绍

火车优惠卡系统步骤

课程设计一:火车售票系统

火车购票系统需求分析

火车订票系统c++程序

8—地铁票务管理规定

火车票务管理系统
《火车票务管理系统.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档