火车票订票系统课程设计报告.doc
文本预览下载声明
设计题目:火车订票管理系统
班 级:
姓 名:
学 号:
2015年1月4日
1.课程设计目的和要求
火车订票管理系统的主要功能包括:
1. 火车线路查询功能,乘客输入终点站名称或输入车次,输出相应的火车线路信息。
2. 订票功能。乘客输入车次和订票数,先查询该车次的余票数,若余票数大于等于订票数,则为乘客办理订票手续,要求乘客输入姓名、身份证号码,计算出总票价,产生一个新结点,将该结点添加到对应车次的链表中,然后修改该车次的余票数。若余票数小于订票数,则输出提示信息“余票数不足,订票失败!”。
3. 退票功能。乘客输入车次和身份证号码,在该车次对应的链表中查找该乘客,若找到,询问乘客退票数量,若退票数小订票数,则只需修改结点的订票数;若退票数等于订票数,则将该乘客对应的结点删除,然后修改该车次的余票数;若没找到,则应提示“未找到相应信息”,要求乘客重新输入车次和身份证号码,再进行查找,如果仍未找到,则输出提示信息“输入信息错误,退票失败!”。
4. 其他查询功能。
(1) 输入车次,输出该车次的全部订票信息。
(2) 输入车次,输出该车次的订票数和余票数。
(3) 输入终点站名称,输出相关火车线路的信息。
(4) 输入日期(年.月.日),输出发车时间为该天的火车线路的信息。
(5) 输出余票数为0的火车线路的信息。
2.系统总体设计
2.1 系统功能模块图
火车线路查询
火车线路查询
订票
退票
火车订票管理系统
管理员入口
乘客入口
输入系统信息
其他查询
查询某车次的全部订票信息
查询某车次的订票数和余票数
查询终点站为某地的火车线路信息
查询发车时间为某天的火车线路信息
查询票数为零的火车线路信息
2.2 数据结构设计
假设有5条火车线路(起点均为济南),每条线路所涉及的信息有:终点站、车次、发车时间(年.月.日.时.分)、票价、余票数(假设火车总票数为300)。
乘客订票信息包括:乘客姓名、乘客身份证号码、订票数,总票价。
本系统要求用结构体数组和链表实现,将火车线路信息存放在结构体数组中,每条线路对应一个链表,乘客订票就是在链表中插入结点,乘客退票就是在链表中删除结点。
链表的结点类型和结构体类型定义如下:
typedef struct node
{
char name[10]; //乘客姓名
char IDcard[20]; //乘客身份证号码
int TicketNum; //订票数
float FareSum; //总票价
struct node *next; //指针成员
}SN;
typedef struct Dtime
{
short year;
short month;
short day;
short hour;
short minute;
}SD;
typedef struct train
{
char terminal[10]; //终点站
char sequence[10]; //车次
struct Dtime StartTime; //发车时间
float fare; //票价
int SpareTicketNum; //余票数
struct node *head; //指针成员,指向该线路第一个订票乘客
}ST;
系统整体结构见图9.3所示
全局变量如下:
#define N1 5 //火车线路数
ST b[N1]; //火车信息结构体数组
#define LEN1 sizeof(ST) //火车信息结构体数据块大小
#define LEN2 sizeof(SN) //乘客信息结构体数据块大小
3.系统详细设计
3.1 函数说明
#includestdio.h
#includestdlib.h
#includestring.h
#define N1 5 //*************************火车线路数
//**************************************************结构体类型的定义
typedef struct node
{
char name[20];
char IDcard[20];
int TicketNum;
float FareSum;
struct node *next;
}SN;
typede
显示全部