火车订票管理系统Word文档下载推荐.docx
- 文档编号:18348217
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:48
- 大小:29.21KB
火车订票管理系统Word文档下载推荐.docx
《火车订票管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《火车订票管理系统Word文档下载推荐.docx(48页珍藏版)》请在冰豆网上搜索。
若余票数小于订票数,则输出提示信息"
余票数不足,订票失败!
"
。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 火车 订票 管理 系统