湖南工业大学课 程 设 计资 料 袋 计算机与通信 学院(系、部) 2009 ~ 2010 学年第 二 学期 课程名称 数据结构 指导教师 职称 教授 学生姓名 专业班级 学号 题 目 航空客运订票系统 成 绩 起止日期 2010年6 月 28日~ 2010年 7 月 日目 录 清 单序号材 料 名 称资料数量备 注1课程设计任务书12课程设计说明书13课程设计图纸1张456 湖南工业大学课程设计任务书2009 —2010 学年第 二 学期 计算机与通信 学院(系、部) 专业 班级课程名称: 数据结构 设计题目: 航空客运订票系统 完成期限:自 2010 年 6 月 28日至 2010 年7 月 日共 1 周内容及任务一、设计的主要技术参数使用队列让预定客户排队等候已定客户退票后再实现买票功能二、设计任务使用C语言实现各个模块的功能.三、设计工作量 本人独自完成这些基本要求,完成了航班信息的输入,查询航线的功能以及订票和退票等功能的实现!进度安排起止日期工作内容2010-6-27设计本程序思路2010-6-28实现子程序模块函数2010-6-29将子程序和主程序构建成完整的C源程序,并且进行相关编译调试2010-6-30数据测试、形成文档主要参考资料<<面向对象C语言程序设计>><<数据结构(C语言版)>><<图算法>><>指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日2数据结构设计说明书数据结构课程设计航空客运订票系统起止日期: 2010 年 6 月 28日 至 2010年 7 月 日学生姓名班级学号成绩指导教师(签字)计算机与通信学院(部)年 月 日湖南工业大学课程设计情况分析表课程设计名称数据结构设计周数17周学院(部)计算机与通信学院系(教研室)通信工程系指导教师文志诚学生专业、班级通信工程0903选题航空客运订票系统成绩分布优良中及格不及格学生数百分比学生课程设计存在的主要问题改进措施及建议指导教师(签字): 年 月 日系(教研室)主任(签字): 年 月 日备注:本表在课程设计完成后由指导教师填写,与课程设计资料一起存档。
目录 1. 题目及需求分析 …………………………… VI 2. 概要设计 …………………………………… VII 3. 详细设计 …………………………………… X 4. 调试分析 …………………………………… XIX 5. 用户手册 …………………………………… XXI 6. 测试结果 …………………………………… XXIII 7. 附录 程序清单 …………………………… XXV题目: 航空客运订票系统扩展: 增加了运行面板的颜色; 增加添加了进入要密码输入功能; 显示功能比要求的多了些,意在增加程序的智能化一 . 需求分析 ( 1 ) 以线性表存储航班信息,以队列存储预定客户的名单 ( 2 ) 设计交互界面 , 用户只需输入选择就可做想做的事情. ( 3 ) 用户可以自己输入航班信息的多少 , 然后由程序自动打印出航班信息. ( 4 ) 一切操作都有向导. 二 . 概要设计 1. 设定线性表的抽象数据类型定义 :ADT List { 数据对象 : D={ai|ai∈int, i = 0,1,2……n , n≥0} 数据关系 : R1={ | ai-1,ai ∈D,i=2,……n } 基本操作 :InitList(&L) 操作结果 : 构造一个空的线性表L.DestroyList(&L) 初始条件 : 线性表L已存在。
操作结果 : 销毁线性表LClearList(&L) 初始条件 : 线性表L已存在操作结果 : 将L重新置为空表ListEmpty(L) 初始条件 : 线性表L已存在操作结果 : 判断线性表是否为空 } ADT List;2. 设定队列的抽象数据类型ADT Queue{ 数据对象 : D={ai|ai∈int,i=1,2,3,4,···,n,n>=0} 数据关系 : R1={ | ai-1,ai ∈D,i=2,……n } 基本操作 : InitQueue(&Q) 操作结果: 构造一个空队列Q.DestoryQueue(&Q) 初始条件: 队列Q已存在 操作结果: 队列Q被摧毁,不再存在ClearEmpty(Q) 初始条件: 队列Q已存在 操作结果: 将队列Q清为空队列EnQueue(&Q,e) 初始条件: 队列Q已存在 操作结果: 插入元素e为Q的新的队尾元素DeQueue(&Q,&e) 初始条件: Q为非空队列操作结果: 删除Q的队头元素,并用e返回其值}ADT Queue; 3. 本程序包含3个模块1) 主程序模块:int main(){ 主菜单函数, 实现主要操作界面. return 0;}//主函数2) 线性表模块----实现线性表抽象数据类型3) 队列模块----实现队列抽象数据类型各模块之间的调用如下: 主函数模块主程序模块 队列模块线性表模块 4. 求解预定票实现的伪码算法:设定当前订票的情况;Do{ 若与票数足够, 则{ 则为客户订票;} 否则{ 若客户愿意等候买票 则{ 办理预定票手术}否则{推出订票功能}}}while (票数存在); 三. 详细设计工程文件视图: 类视图: --------------------------头文件设计(部分)-----------------------1.源程序头文件#include "stdafx.h"#include "malloc.h"#include "math.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "conio.h"#include "process.h"typedef struct yidingkehu{ int name; int dingpiaoliang; int chuangweidengji; struct yidingkehu *next1;}yiding,*link;typedef struct denghoukehu{ int name; int piaoshu; int chuangweidengji; struct denghoukehu *next2;}denghou,*Qptr;typedef struct hangxian{ int zhongdianzhan; int hangbanhao; int feijihao; int feixingzhouri; int chengyuanzongshu; int yupiaoliang; struct hangxian *next; struct yidingkehu *yiding; struct denghoukehu *denghou;}hangxian,*linklist;typedef struct{ Qptr front; Qptr rear;}linkqueue;struct hangxian *L=NULL;struct yidingkehu *H;linkqueue Q;-------------------------实现文件(部分)---------------------------1. void hangbanxinxi(){ int i=1; while(i==1) { if(!insertlinklist((linklist) L)) { printf("不能再输入航班信息!\n"); exit(0); } printf("是否输入航班信息?\n"); printf(" 1:是\n"); printf(" 2:否\n"); scanf("%d",&i); printf("\n"); }}2.int insertlinklist(linklist &L){ linklist p; p=(linklist)malloc(sizeof(hangxian)); if(!p) exit(0); printf("\t请依次输入下面几项内容:\n\n"); printf("航班号\n"); scanf("%d",&p->hangbanhao); printf("飞机号\n"); scanf("%d",&p->feijihao); printf。