一个简单的火车票售票管理系统0001Word文件下载.docx
- 文档编号:22555108
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:14
- 大小:17.91KB
一个简单的火车票售票管理系统0001Word文件下载.docx
《一个简单的火车票售票管理系统0001Word文件下载.docx》由会员分享,可在线阅读,更多相关《一个简单的火车票售票管理系统0001Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
search_date_all(TNODE*,TIME);
/按购票日期搜索(所有车次)void
print_c(CNODE*);
//输出售票纪录(单张)
voidprint_c_all(CNODE*);
//输出售票纪录(批量)
TNODE*root=NULL;
voidmain(){inti,func,no,ok;
TNODE*t;
CNODE*c;
TIMEd;
printf("
\n\n\n"
);
for(i=0;
i<
15;
i++)printf("
="
列车售票信息管理系统"
\n"
\t
1.车次信息管理\n"
2.售票记录管理\n"
3.售票记录查询\n"
4.售票记录一览\n"
5.退出系统\n"
N;
\n请选择您所需要的功能:
"
fflush(stdin);
scanf("
%d"
&
func);
switch(func){
case1:
\n\n车次信息管理>
>
printf("
\n\t
1.增加新的车次"
2.取消车次"
3.返回上级菜单\n"
"
scanf("
create();
\n售票信息更新成功!
\n\n"
break;
case2:
del();
case3:
main();
default:
\n[错误]功能号输入有误!
请重新输入!
}break;
case2:
\n\n售票记录管理>
for(i=0;
1.增加新的售票记录"
2.退票"
t=search();
if(t!
=NULL)t->
head=insert_c_more(t->
head);
需要退票的票号:
no);
t->
head=del_c(t->
head,search_c(t->
head,no));
case3:
\n\n售票记录查询>
1.按票号搜索"
2.按购票者证件号搜索"
3.按购票日期搜索"
4.返回上级菜单\n"
fflush(stdin);
switch(func){
t=search();
=NULL){
\n请输入您所要查询的票号:
c=search_c(t->
head,no);
if(c==NULL)printf("
[错误]没有该票号的纪录!
该票还未售出或为废票!
自动返回上级菜单\n..."
}
\n请输入您所要查询的购票者证件号:
search_c_id_all(root,no);
搜索完毕!
自动返回上级菜单\n..."
do{
\n请输入您所要查询的日期(格式:
yy-mm-dd):
%d-%d-%d"
d.x,&
d.y,&
d.z);
if(d.y<
13&
&
d.y>
0){
if(d.y==1||d.y==3||d.y==5||d.y==7||d.y==8||d.y==10||d.y==12)if(d.z<
32&
d.z>
0)ok=1;
elseif(d.z==2)
if(d.z<
30&
d.z>
else
31&
}elseok=0;
if(!
ok)printf("
\n[错误]日期输入有误!
}while(!
ok);
\n指定车次吗?
(1->
是,0->
否):
if(ok)search_date(search()->
head,d);
elsesearch_date_all(root,d);
case4:
自动返回上级菜单\n..."
\n\n售票记录一览>
1.仅浏览车次"
2.指定车次已售票记录"
3.所有车次已售票记录"
4.测试:
先序遍历车次"
5.返回上级菜单\n"
\n+++仅浏览车次\n"
if(root==NULL)printf("
[错误]无车次纪录!
else{inorder(root);
\n+++指定车次已售票记录\n"
print_c_all(t->
\n+++所有车次已售票记录\n"
else{inorder_all(root);
\n+++测试:
先序遍历车次\n"
else{preorder(root);
}break;
case5:
\n[错误]功能号输入有误!
exit
(0);
}main();
}void
ino「der_a=(TNODE*pf「)宀if(pfrHNULL)宀inorder_a=(p7v-ch=d)_云=p7vdaar)八prinflcla--(pfTvhead)八prinmn)
ino「der_a--(pf7v「chi-d)pvoidino「de「(TNODE*p50f(pf「HNULL)Qnos.e「(p7v-ch=dx
prinff(=%dw「pTvdafa)八ino「de「(pf7v「ch=d)pvoidp「eo「de「(TNODE*pf「)宀if(pfrHNULL)宀prinff(二%2f
「pf7vdas-xpreos.er(pf7v-ch=d)八p「eos.e「(pf7v「chi-d)p
voidprinflcoNODE*fkf)宀
if(fkfHNULL)
prinff(>
%2f%2f%d—%d—%CArrJkf—vnoJkf—vdJkf—vda(D.XJkf—vda(D.yJkf—vdafe.zxvoidp「inflcla=(CNODE*head)宀
infnpli-o八
if(headHHNULL)宀p「inff>
nffi^RH)}一krmefuln〉
fo「(noxNT+)p「inff(f=)八
p「inff>
nNO齐渦加諄齐wlflB轄肓£
—s云》
fo「(noxNT+)prinffcJ八fo「5rqheadHNULLj++)宀
\n%d"
j);
print_c(head);
head=head->
next;
}printf("
-"
\n总计%d条记录\n"
}voidcreate(){intn,i;
intk[MAX];
\n您所希望增加车次的数量:
n);
n;
i++){
新增第%d列车次:
i+1);
k[i]);
}for(i=0;
i++)
insert(k[i]);
}voidinsert(intm){TNODE*p1,*p2;
if(root==NULL){root=(TNODE*)malloc(sizeof(TNODE));
root->
data=m;
lchild=root->
rchild=NULL;
head=NULL;
}else{p1=root;
while(m!
=p1->
data){if((m<
p1->
data)&
(p1->
lchild!
=NULL))p1=p1->
lchild;
elseif((m>
rchild!
rchild;
elseif((m<
lchild==NULL)){p2=(TNODE
*)malloc(sizeof(TNODE));
p2->
lchild=p2->
lchild=p2;
return;
}elseif((m>
rchild==NULL)){p2=(TNODE
rchild=p2;
}}
\n[错误]未能成功增加车次%d,车次号%d已存在!
m,m);
}}TNODE*search(){
intkey;
TNODE*p;
p=root;
\n输入您所要查找的车次编号:
key);
while(p!
=NULL&
p->
data!
=key){
if(key<
data){p=p->
elseif(key>
}}if(p==NULL)printf("
\n该车次不存在!
return(p);
}voiddel(){
TNODE*p1,*p2,*p3,*temp;
p1=p2=root;
p3=temp=NULL;
\n请输入您想要取消的车次编号:
while(p2!
data){p1=p2;
p2=p2->
data){p仁p2;
p2二p1->
}}if(p2==NULL){printf("
\n错误]该车次不存在!
返回上级菜单\n..."
elseif(p2->
lchild==NULL&
rchild==NULL){if(p1->
lchild==p2)
lchild=NULL;
if(p1->
rchild==p2)p1->
temp=p2;
if(root==p2){temp=root;
root=NULL;
}}else{
if(p2->
rchild==NULL){
temp=p2->
data=temp->
data;
lchild=temp->
rchild=temp->
}elseif(p2->
lchild==NULL){temp=p2->
}else{
p3=p2;
while(temp->
=NULL){p3=temp;
temp=temp->
}p2->
if(p3==p2)p3->
elsep3->
free(temp);
printf(”车次%d已取消!
key);
}CNODE*insert_c(CNODE*head){CNODE
*k,*p;
k=(CNODE*)malloc(sizeof(CNODE));
\n车票编号:
k->
p=search_c(head,k->
if(p!
=NULL)printf("
\n[错误]该票已被购买!
请重新选择!
}while(p!
=NULL);
购票者证件号:
id);
购票日期(格式:
date.x,&
date.y,&
date.z);
k->
next=head;
head=k;
return(head);
}CNODE*insert_c_more(CNODE*head){intn,i;
\n请输入批量新增售票记录数:
i++)head=insert_c(head);
\n售票记录更新成功!
}CNODE*search_c(CNODE*head,intid){CNODE*temp,*s;
s=temp=head;
while(temp!
temp->
id!
=id){s=temp;
print_c(temp);
if(temp!
=NULL)return(s);
elsereturnNULL;
}voidsearch_c_id(CNODE*head,intid){
CNODE*s,*head_s;
s=head_s=NULL;
if(head==NULL)printf("
无该证件号纪录!
while(head!
if(head->
id==id){
s=(CNODE*)malloc(sizeof(CNODE));
s->
no=head->
no;
id=head->
id;
date=head->
date;
next=head_s;
head_s=s;
}head=head->
}print_c_all(head_s);
}voidsearch_c_id_all(TNODE*ptr,intid){
if(ptr!
search_c_id_all(ptr->
lchild,id);
\n车次:
%d\n"
ptr->
data);
search_c_id(ptr->
head,id);
rchild,id);
voidsearch_date(CNODE*head,TIMEt){
if(t.x==head->
date.x)
if(t.y==head->
date.y)
if(t.z==head->
date.z){s=(CNODE*)malloc(sizeof(CNODE));
}voidsearch_date_all(TNODE*ptr,TIMEt){
if(ptr!
search_date_all(ptr->
lchild,t);
search_date(ptr->
head,t);
rchild,t);
CNODE*del_c(CNODE*head,CNODE*p){
CNODE*temp;
if(p==NULL)printf("
[错误]该票未售出或为废票!
返回上级菜单\n..."
elseif(p==head){head=NULL;
free(p);
else{
temp=p->
next=temp->
}return(head);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 简单 火车票 售票 管理 系统 0001
![提示](https://static.bdocx.com/images/bang_tan.gif)