火车订票管理系统Word文档下载推荐.docx

上传人:b****5 文档编号:18348217 上传时间:2022-12-15 格式:DOCX 页数:48 大小:29.21KB
下载 相关 举报
火车订票管理系统Word文档下载推荐.docx_第1页
第1页 / 共48页
火车订票管理系统Word文档下载推荐.docx_第2页
第2页 / 共48页
火车订票管理系统Word文档下载推荐.docx_第3页
第3页 / 共48页
火车订票管理系统Word文档下载推荐.docx_第4页
第4页 / 共48页
火车订票管理系统Word文档下载推荐.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

火车订票管理系统Word文档下载推荐.docx

《火车订票管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《火车订票管理系统Word文档下载推荐.docx(48页珍藏版)》请在冰豆网上搜索。

火车订票管理系统Word文档下载推荐.docx

若余票数小于订票数,则输出提示信息"

余票数不足,订票失败!

"

3.退票功能。

乘客输入车次和身份证号码,在该车次对应的链表中查找该乘客,若找到,询问乘客退票数量,若退票数小于订票数,则只需修改结点的订票数;

若退票数等于订票数,则将该乘客对应的结点删除,然后修改该车次的余票数;

若没找到,则应提示"

未找到相应信息"

,要求乘客重新输入车次和身份证号码,再进行查找,如果仍未找到,则输出提示信息"

输入信息错误,退票失败!

4.其他查询功能。

(1)输入车次,输出该车次的全部订票信息。

(2)输入车次,输出该车次的订票数和余票数。

(3)输入终点站名称,输出相关火车线路的信息。

(4)输入日期(年.月.日),输出发车时间为该天的火车线路的信息。

(5)输出余票数为0的火车线路的信息。

*/

#include"

stdio.h"

string.h"

stdlib.h"

conio.h"

cstdlib"

#defineSUM_TICKET300;

//车票总数

#definePASS_N5//车次总数,对应这些个乘客文件

//================================================================

//函数声明

add_train();

//增加车次

admin_passger();

//乘客管理

admin_password();

//管理员密码管理

admin_train();

//管理员权限:

管理车次和乘客

booking();

//订票

checking(intn,charcheck[20]);

//检查输入的省份证好是否符合规定的位数

check_Date(intmax,intmin,intmn);

//检查日期是否符合标准的格式

else_find();

//其他查询功能

find();

//查找功能

mod_train();

修改车次的信息

print();

//从屏幕输出车次信息

print_p(structtrain*train_p1);

//输出对应车次的全部乘客信息

read();

//从文件中读取车次和乘客信息

refund();

//退票功能

voidsave();

//将车次和乘客信息保存到文件中

//全局变量

structnode*node_p1,*node_p2;

//乘客

structtrain*head=NULL,*train_p1,*train_p2;

//线路

charadmin[20];

intMaxTicket=300;

structnode//乘客passengers订票信息

charname[20];

intFareSum;

structDtime//发车时间

intyear;

intmonth;

intday;

inthour;

intminute;

structtrain//线路

charterminal[20];

charsequence[20];

structDtime*StartTime;

intfare;

//票价

intSpareTicketNum;

intMaxTicket;

//最大票数

structnode*nhead;

structtrain*next;

//指针成员,指向下一条线路

//============================================================================================================

//从文件中读取车次和乘客信息

intread(void)//从文件读取信息

{

system("

color1f"

);

//设置控制台背景色

FILE*fp,*pa,*ad;

//打开文件,实例化三个文件结构体的指针

intsite_sum=0,sum_ch=0;

//总站点

intpass_sum[5]={0};

//

charch;

printf("

\n※※正在读取文件.......\n"

//读取train.txt文件名和文件路径

//printf("

\n※※正在读取train.txt文件.......\n"

/////////////////////////////////////////////

//如果打不开也写不进,那就新建个

if((fp=(fopen("

train.txt"

"

r"

)))==NULL)

{

if((fp=fopen("

w"

))==NULL)

{printf("

\n※※Cannotopenthefile:

train.txt!

\n※※Pleaseconfirmthefilealreadyexists!

\n"

exit(0);

}//找不到文件train.txt,请确定train.txt的确存在。

fclose(fp);

head=NULL;

//链表置为空NULL

}

//如果车次源文件不存在,则新建空train文件

else

{

r+"

))==NULL)

{

putchar(10);

//在控制台输出10的ASSIC码,同\n

for(inti=0;

i<

50;

i++)

%c"

23);

printf("

※※Cannotopenthefile:

}

/*while(!

feof(fp))//feof用来判断是否到了某个流的结尾

{

ch=fgetc(fp);

//读取字符

if(ch=='

\n'

||ch=='

'

sum_ch++;

site_sum++;

if(sum_ch==site_sum)

{head=NULL;

return0;

*/else

if(ch=fgetc(fp)>

=0)

{

rewind(fp);

while(!

feof(fp))

{

train_p1=(structtrain*)malloc(sizeof(structtrain));

train_p1->

nhead=NULL;

train_p1->

StartTime=(structDtime*)malloc(sizeof(structDtime));

//开辟新节点

fscanf(fp,"

%s%s%d%d%d%d%d%d%d\n"

train_p1->

terminal,train_p1->

sequence,&

StartTime->

year,&

month,&

day,&

hour,&

minute,&

fare,&

SpareTicketNum);

site_sum++;

if(site_sum==1)head=train_p1;

elsetrain_p2->

next=train_p1;

train_p2=train_p1;

}

train_p2->

next=NULL;

//printf("

\n※※共有车次%d次!

site_sum);

}

//print();

//读取admin密码

\n※※正在读取密码文件.......\n"

if((fopen("

admin.txt"

if((ad=fopen("

i++)printf("

admin.txt!

}

strcpy(admin,"

admin"

fprintf(ad,"

%s"

admin);

//文件指针,输出字符串,输出表列;

将格式化的数据写入文件

fclose(ad);

}//如果密码源文件不存在,则新建空admin.txt文件,初始密码:

admin

if((ad=fopen("

putchar(10);

for(inti=0;

printf("

fscanf(ad,"

//printf("

admin=%s\n"

if(strcmp(admin,"

)==0)

}//如果密码为空,怎初始化为admin

fclose(ad);

//读取passenger.txt

site=%d\n"

/*//数字转换为字符串

charpass[N][20],cc[2];

//======================

for(i=0;

N;

i++)

cc[0]=i+'

0'

;

cc[1]='

\0'

strcpy(pass[i],"

passenger"

strcat(pass[i],cc);

strcat(pass[i],"

.txt\0"

*///=====================

charpass[20];

inti=0,j=0;

train_p1=head;

for(j=0;

train_p1!

=NULL;

j++)

\n※※正在读取%s文件.......\n"

sequence);

////////////////////////////////////////////

node_p1=train_p1->

nhead;

strcpy(pass,train_p1->

strcat(pass,"

.txt"

if((pa=fopen(pass,"

if((pa=fopen(pass,"

{

for(inti=0;

printf("

%s!

pass);

exit(0);

elsefclose(pa);

}

else

if((ch=fgetc(pa))>

rewind(pa);

while(!

feof(pa))

{

node_p1=(structnode*)malloc(sizeof(structnode));

node_p1->

fscanf(pa,"

%s%s%d%d\n"

node_p1->

name,node_p1->

IDcard,&

node_p1->

TicketNum,&

FareSum);

pass_sum[j]++;

if(pass_sum[j]==1)train_p1->

nhead=node_p1;

elsenode_p2->

next=node_p1;

node_p2=node_p1;

}

node_p2->

fclose(pa);

//

//printf("

%d\n"

j);

train_p1=train_p1->

next;

//=================================

/*

MaxTicket1.txt"

ad=fopen("

MaxTicket=300;

%d"

MaxTicket);

\n※※正在读取文件MaxTicket......\n"

if((fopen("

MaxTicket.txt"

ma=fopen("

W"

printf("

\nMaxTicket=%d\n"

fprintf(ma,"

elsefscanf(ma,"

&

MaxTicket);

fclose(ma);

//printf("

\n※※全部文件读取完毕!

}

//从屏幕输出车次信息

intprint(void)

//调试:

输出

putchar(10);

inti=1;

if((train_p1=head)==NULL)

//如果车次文件是空文件

※※没有任何车次!

按任意键返回上一层\n"

getch();

}//

终点站车次发车时间\t票价\t余票数\n\n"

while(train_p1!

=NULL)

%s%s%4d-%2d-%2d%2d:

%2d\tY%d\t%d\n"

sequence,train_p1->

year,train_p1->

month,train_p1->

day,train_p1->

hour,train_p1->

minute,train_p1->

fare,train_p1->

//printf("

i=%d\n"

i);

i++;

return1;

//输出对应车次的全部乘客信息

print_p(structtrain*train_p1)

if((node_p1=train_p1->

nhead)==NULL)

※※该车次没有乘客!

return0;

车次\t乘客姓名\t乘客身份证号\n\n"

while(node_p1!

%s\t%s\t\t%s\n"

sequence,node_p1->

IDcard);

node_p1=node_p1->

find(void)//查询

start_f:

system("

cls"

//清屏

charsect_1[20]={"

1"

//格式

for(inti=0;

\n欢迎使用火车票查询系统\n"

for(i=0;

putchar(10);

3);

┌————————————┐\n"

│请选择您所需操作│\n"

│1.按终点站查询│\n"

│2.按车次查询│\n"

│3.返回主菜单│\n"

│4.退出│\n"

└————————————┘\n"

\n\n※※请选择:

scanf("

sect_1);

if(strcmp(sect_1,"

)==0)

start_f1:

gotostart_f;

※※请输入终点站:

terminal);

while(strcmp(terminal,train_p1->

terminal)!

=0&

&

train_p1->

next!

{train_p1=train_p1->

}

if(strcmp(terminal,train_p1->

terminal)==0)

{

\n终点站车次发车时间\t票价\t余票数\n"

min

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1