航空订票系统课程设计说明书
更新时间:2023-05-12 01:59:01 阅读量: 实用文档 文档下载
航空订票系统课程设计说明书
闽江学院
课程设计说明书
题目: 订票系统
院 系: 计算机科学系
专业班级: 学 号: 学生姓名:
指导教师: 2008 年 12月 27日
航空订票系统课程设计说明书
闽江学院课程设计(论文)任务书
计算机科学 院系 软件 教研室
航空订票系统课程设计说明书
2008年 12 月28日
一、问题分析和任务定义
1.航空客运订票的业务包括:查询航班、客票订购和办理退票等。所设计航空
客运订票系统,使上述业务可以借助计算机完成。
2.演示程序以用户和计算机的对话方式执行,本系统能够实现对航班信息的输
入、输出、保存、读取、查询和删除以及订票、退票和修改的信息。
3.系统整体框架图:
4.项目实现的功能:
(1)查询:可以查询航班情况及订票客户情况(数据可以存储在一个数据文
件中,数据结构、具体数据自定)
(2)订票:(订票情况可以存在一个数据文件中,结构自己设定)
(3)退票: 可退票,退票后修改相关数据文件;
客户资料有姓名、订票数量及所订航班号,订单有编号。
(4)修改航班信息:当航班信息改变可以修改航班数据文件
二、概要设计
(1)主程序,其中主函数为:
void main(){ 进入主界面 };
主界面有航班查询、客户查询、订票、退票及修改航班信息可供选择。
(2)航班结构
typedef struct Flight {
航空订票系统课程设计说明书
char flightNo[NUMLENGTH]; //航班号----关键字 char start[PLACELENGTH]; //起点
char end[PLACELENGTH]; //终点
int price; //票价
int capacity; //载客量
int currently; //当前乘客数 }Flight; };
(3)客户结构
typedef struct Passenger {
int bookNo; //订票编号----关键字 char name[NAMELENGTH]; //客户姓名
char flightNo[NUMLENGTH]; //航班号
int tickets; //订票数量
}Passenger;
(4)节点及链表
1、航班节点
typedef struct FlightNode { //航班节点
Flight data; //数据,保存航班信息 struct FlightNode *next; //指向下一个航班节点; }FlightNode, *ptrFlightNode;
2、客户节点
typedef struct PassengerNode {
Passenger data; //数据,保存客户信息 struct PassengerNode *next; //指向下一个客户节点 }PassengerNode, *ptrPassengerNode;
3、航班链表
typedef struct FlightLinkList{
ptrFlightNode head; //头指针,指向一个航班节点,头指针不存储数据
ptrFlightNode tail; //尾指针,指向链表中最后一个节点
int length; //保存当前航班总数量 }FlightLinkList;
4、客户链表
typedef struct PassengerLinkList{
ptrPassengerNode head; //头指针,指向一个客户节点,头指针不存储数据
ptrPassengerNode tail; //尾指针,指向链表中最后一个节点
int length; //保存当前客户总数量
int bookNoCur; //指示下一个客户编号,只能递增 }PassengerLinkList;
三、详细设计
航空订票系统课程设计说明书
功能实现
ptrFlightNode GetNewFlightNode(Flight); //产生一个新航班 ptrPassengerNode GetNewPassengerNode(Passenger); //产生一个新客户
bool FlightInit(FlightLinkList &); //初始化航班链表
bool PassengerInit(PassengerLinkList &); //初始化客户链表
bool FlightDestroy(FlightLinkList &); //销毁航班链表
bool PassengerDestroy(PassengerLinkList &); //销毁客户链表
bool FlightClear(FlightLinkList &); //清空航班列表
bool PassengerClear(PassengerLinkList &); //清空客户链表
int FlightLength(FlightLinkList); //返回航班数量
int PassengerLength(PassengerLinkList); //返回客户数量
bool FlightEmpty(FlightLinkList); //判断是否没有航班
bool PassengerEmpty(PassengerLinkList); //判断是否没有客户
bool FlightInsert(FlightLinkList &, ptrFlightNode); //增加一个航班节点
bool PassengerInsert(PassengerLinkList &, ptrPassengerNode); //增加一个客户节点
ptrFlightNode FlightLocate(FlightLinkList, Flight); //在航班链表中定位符合条件的节点
ptrPassengerNode PassengerLocate(PassengerLinkList, Passenger); //在客户链表中定位符号条件的节点
bool FlightDelete(FlightLinkList &, ptrFlightNode); //在航班链表中删除一个节点
bool PassengerDelete(PassengerLinkList &, ptrPassengerNode); //在客户链表中删除一个节点
bool FlightTraver(FlightLinkList, bool (*visite)(ptrFlightNode, FILE* fp = stdout), FILE* fp = stdout); //遍历航班链表
bool PassengerTraver(PassengerLinkList, bool (*visite)(ptrPassengerNode, FILE* fp = stdout), FILE* fp = stdout);//遍历客户链表
bool FlightPrint(ptrFlightNode, FILE *fp = stdout); //打印一个航班记录
bool PassengerPrint(ptrPassengerNode, FILE *fp = stdout); //打印一个客户记录
航空订票系统课程设计说明书
bool FlightShowAll(FlightLinkList); //显示所以航班记录 bool PassengerShowAll(PassengerLinkList); //显示所以客户记录
bool FlightSaveAsText(FlightLinkList); //保存航班到文件中
bool PassengerSaveAsText(PassengerLinkList); //保存客户到文件中
bool FlightLoad(FlightLinkList &); //从文件中读取航班记录 bool PassengerLoad(PassengerLinkList &); //从文件中读取客户记录
bool GetRemain(FlightLinkList &, PassengerLinkList); //获取剩余票数
//bool GetPerRemain(Flight &, PassengerLinkList); //获取没个航班剩余票数
部分伪码如下:
bool FlightLoad(FlightLinkList &FL){
//从文件中读取航班记录
FILE *fp = fopen("Flight.txt", "r");
if(fp == NULL) exit(1);
FlightInit(FL);
Flight tempData;
ptrFlightNode tempNode;
while(fscanf(fp, "%s%s%s%d%d%d",
tempData.flightNo,
tempData.start,
tempData.end,
&tempData.price,
&tempData.capacity,
&tempData.currently) !=EOF)
{//读取记录、创建节点、链接到表中
tempNode = GetNewFlightNode(tempData);
FlightInsert(FL, tempNode);
}
fclose(fp);
return true;
}
bool PassengerLoad(PassengerLinkList &PL){
//从文件中读取客户记录
FILE *fp = fopen("Passenger.txt", "r");
if (fp == NULL) exit(1);
PassengerInit(PL);
Passenger tempData;
ptrPassengerNode tempNode;
while (fscanf(fp, "%d%s%s%d",
&tempData.bookNo,
,
航空订票系统课程设计说明书
tempData.flightNo,
&tempData.tickets) != EOF)
{//读取记录、创建节点、链接到表中
tempNode = GetNewPassengerNode(tempData); PassengerInsert(PL, tempNode);
}
fclose(fp);
return true;
}
bool PassengerLoad(PassengerLinkList &PL){
//从文件中读取客户记录
FILE *fp = fopen("Passenger.txt", "r");
if (fp == NULL) exit(1);
PassengerInit(PL);
Passenger tempData;
ptrPassengerNode tempNode;
while (fscanf(fp, "%d%s%s%d",
&tempData.bookNo,
,
tempData.flightNo,
&tempData.tickets) != EOF)
{//读取记录、创建节点、链接到表中
tempNode = GetNewPassengerNode(tempData); PassengerInsert(PL, tempNode);
}
fclose(fp);
return true;
}
bool GetRemain(FlightLinkList &FL, PassengerLinkList PL){
//获取剩余票数
ptrFlightNode tempPtrFlight = FL.head;
while (tempPtrFlight->next != NULL)
{
tempPtrFlight = tempPtrFlight->next;
tempPtrFlight->data.currently = 0;
ptrPassengerNode tempPtrPassenger = PL.head; while (tempPtrPassenger->next != NULL)
{
tempPtrPassenger =
tempPtrPassenger->next;
if
(strcmp(tempPtrFlight->data.flightNo, tempPtrPassenger->data.flightNo) == 0) { tempPtrFlight->data.currently +=
航空订票系统课程设计说明书
tempPtrPassenger->data.tickets;
}
}
}
FlightSaveAsText(FL);
PassengerSaveAsText(PL);
return true;
}
四、程序调试与测试
程序调试另外用了些代码,以方便出现问题找出错误的所在
部分代码如下:
FlightInit(FL);
测试数据 Load
FlightLoad(FL);
PassengerLoad(PL);
PassengerInit(PL);
测试数据,测试clearList 和 destroy
ptrFlightNode ptrflNode, ptrflNode2, ptrflNode3,
ptrflNodeTemp;
Flight tempFlight, tempFlight2, tempFlight3;
测试数据,测试GetNewNode
tempFlight.capacity = 1;
tempFlight2.capacity = 2;
tempFlight3.capacity = 3;
strcpy(tempFlight.flightNo, "123455");
strcpy(tempFlight2.flightNo, "123456");
strcpy(tempFlight3.flightNo, "123457");
ptrflNode = GetNewFlightNode(tempFlight);
ptrflNode2 = GetNewFlightNode(tempFlight2); ptrflNode3 = GetNewFlightNode(tempFlight3); ptrflNode->next = ptrflNode2;
ptrflNode2->next = NULL;
FL.head->next = ptrflNode;
FL.length = 2;
试数据,测试Insert
FlightInsert(FL, ptrflNode);
FlightInsert(FL, ptrflNode2);
FlightInsert(FL, ptrflNode3);
测试数据,测试Locate
航空订票系统课程设计说明书
ptrflNodeTemp = FlightLocate(FL, tempFlight); printf("%s\n", ptrflNodeTemp->data.flightNo); 测试数据,测试Delete 和 travel 和 SaveAsText
FlightSaveAsText(FL); FlightPrint(ptrflNodeTemp); FlightDelete(FL, ptrflNodeTemp); FlightTraver(FL, FlightPrint); FlightDelete(FL, ptrflNodeTemp); ptrflNodeTemp = FlightLocate(FL, tempFlight2); printf("%s\n", ptrflNodeTemp->data.flightNo); FlightDelete(FL, ptrflNodeTemp); FlightTraver(FL, FlightPrint); FlightClear(FL);
五、结果分析
1
.主界面:
2.进入用户平台:
(1)查看航班信息:
航空订票系统课程设计说明书
(2)查看客户信息:
(3)订票界面
(4)订票成功
(5)退票信息
航空订票系统课程设计说明书
(6)退票成功
(7)修改航线
1、修改航线
航空订票系统课程设计说明书
2
、增设航线
3、删除航线
航空订票系统课程设计说明书
4
、修改后查询
六、实验体会。
1、 明白了写程序不是一天两天的事,这次就是由于动手的时间太晚,导
致没有用文件的形式进行记录,保存和读取,真的是个遗憾。
2、 程序多了自己都会乱,所以写的时候养成好的书写习惯事第一步。
3、 由于基础的不扎实,导致写的时候遇到诸多的问题,得到了同学的大
力帮助,明白团结的重要性。
4、 要用愉悦的心情去编程,从编程的过程中体会乐趣,兴趣是最好的老
师。
5、 态度决定一切
正在阅读:
航空订票系统课程设计说明书05-12
vb试题11-11
2018-2019英语骨干教师培训总结05-26
深情告白的话02-10
个人现实表现材料02-21
中国共产党发展党员工作细则(2014版和1990版细则对照稿)01-09
幸福的二十个瞬间11-03
走向“高效”的小组合作学习07-07
分析情态动词和助动词的区别11-01
第五讲:氧化还原反应的规律07-25
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 航空订票
- 说明书
- 课程
- 设计
- 系统
- Donlim东菱DL400全自动面包机制作核桃仁牛奶面包
- 分式方程应用行程问题
- 学党史 颂党恩 跟党走
- 餐饮出品实用的英文翻译
- 我县农村妇女土地权益问题调研与对策
- 【学案】数学必修1同步练习与综合训练题组含答案_全册_
- maxplus软件使用方法
- 制粉工艺的新创意(1)—1000t全八辊磨生产工艺的设计与实践
- 第七单元第六课新中国的诞生教学设计(二课时)
- 浅谈初中地理课堂有效小组合作学习开展
- 108例外伤性脑梗死临床分析
- 职业道德教育题库
- 数学:冀教版七年级下 11.1 三角形的再认识()
- 四年级英语下册 Module 7 Unit 1(1)教案 外研版(一起)
- 物联网工程专业人才培养方案探讨
- 浅谈服装设计之橱窗设计对消费者的影响
- 2014年银行存款清查公开课教案
- 广州铺铺旺浅谈店铺风水问题
- 中职财经点钞有效的职业技能训练的实践及研究
- 进外企必备的24种超级完美英文简历模版