数据结构课程设计火车票务系统的设计与实现 地铁建设问题1Word文档格式.docx
《数据结构课程设计火车票务系统的设计与实现 地铁建设问题1Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计火车票务系统的设计与实现 地铁建设问题1Word文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
![数据结构课程设计火车票务系统的设计与实现 地铁建设问题1Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/9/e685c547-6669-420d-88f1-5f176f750ba0/e685c547-6669-420d-88f1-5f176f750ba01.gif)
(列车线路停运)
(3)列车信息修改:
(列车时间、票价等信息有变动)
(4)列车信息输出:
根据格式对齐输出列车信息。
(5)列车信息查询:
可根据车次号、始发站、终点站查询满足条件的列车信息。
(6)列车信息排序:
可根据票价对列车信息进行排序并输出。
【需求分析】
一 根据题目要求系统主界面应有以下几个功能:
1录入信息
2显示信息
3查询信息
4增加信息
5修改信息
6删除信息
7排序
对于各种有关信息操作,必须包括有车次、始发站、终点站、发车时间、到站时间、票价
二查询包括:
由车次,起点站和终点站的分别查询
三排序:
:
由票价排序
【设计分析】
头文件:
#include<
stdio.h>
malloc.h>
#defineMAX100
#defineN50
typedefstructtime//时间类型
{
intx,y,z;
//分别对应年,月,日
}TIME;
typedefstructcnode//票信息类型
intno;
//票号
intid;
//购票人证件号
TIMEdate;
//购票日期
structcnode*next;
}CNODE;
typedefstructtnode//车次信息类型
chardata;
//车次编号
structtnode*lchild,*rchild;
CNODE*head;
}TNODE;
voidcreate();
//按车次建立二叉排序树
voidinsert(int);
//增加新的车次(二叉排序树的插入)
voiddel();
//取消车次(二叉排序树节点删除)
voidinorder(TNODE*);
//中序遍历车次二叉排序树(仅显示车次信息)
voidinorder_all(TNODE*);
//中序遍历车次二叉排序树(显示车次及售票信息)
voidpreorder(TNODE*);
//先序遍历车次二叉排序树(仅显示车次信息)
TNODE*search();
//按车次编号搜索
CNODE*insert_c(CNODE*);
//插入新的售票信息(单张)
CNODE*insert_c_more(CNODE*);
//插入新的售票信息(批量)
CNODE*del_c(CNODE*,CNODE*);
//退票处理(删除售票信息)
CNODE*search_c(CNODE*,int);
//按票号查询
voidsearch_c_id(CNODE*,int);
//按购票人证件号搜索(限定某车次)
voidsearch_c_id_all(TNODE*,int);
//按购票人证件号搜索(所有车次)
voidsearch_date(CNODE*,TIME);
//按购票日期搜索(限定某车次)
voidsearch_date_all(TNODE*,TIME);
//按购票日期搜索(所有车次)
voidprint_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"
\t1.车次信息管理\n"
\t2.售票记录管理\n"
\t3.售票记录查询\n"
\t4.售票记录一览\n"
\t5.退出系统\n"
N;
\n请选择您所需要的功能:
"
fflush(stdin);
scanf("
%d"
&
func);
switch(func){
case1:
\n\n车次信息管理>
>
\n\t1.增加新的车次"
\n\t2.取消车次"
\n\t3.返回上级菜单\n"
create();
\n售票信息更新成功!
\n\n"
break;
case2:
del();
break;
case3:
main();
default:
printf("
\n[错误]功能号输入有误!
请重新输入!
}
\n\n售票记录管理>
\n\t1.增加新的售票记录"
\n\t2.退票"
t=search();
if(t!
=NULL)t->
head=insert_c_more(t->
head);
需要退票的票号:
no);
t->
head=del_c(t->
head,search_c(t->
head,no));
\n\n售票记录查询>
\n\t1.按票号搜索"
\n\t2.按购票者证件号搜索"
\n\t3.按购票日期搜索"
\n\t4.返回上级菜单\n"
=NULL){
\n请输入您所要查询的票号:
c=search_c(t->
head,no);
if(c==NULL)printf("
[错误]没有该票号的纪录!
该票还未售出或为废票!
自动返回上级菜单\n..."
}
\n请输入您所要查询的购票者证件号:
search_c_id_all(root,no);
搜索完毕!
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)
30&
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\t1.仅浏览车次"
\n\t2.指定车次已售票记录"
\n\t3.所有车次已售票记录"
\n\t4.测试:
先序遍历车次"
\n\t5.返回上级菜单\n"
\n+++仅浏览车次\n"
if(root==NULL)printf("
[错误]无车次纪录!
else{inorder(root);
printf(