数据结构课程设计——报告

  • 格式:doc
  • 大小:148.50 KB
  • 文档页数:15

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计——报告(样例)

《数据结构与算法》课程设计报告

王婧、龚丹、宋毅编写

题目:航空订票管理系统

学期: 2014秋

班号:

学号:

姓名:

成绩:

哈尔滨华德学院电子与信息工程学院

2014年12月

一、实训设计的目的与要求(注:正文为宋体,五号字,为单倍行距)(一)课程设计目的(不少于100字)1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统。 2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。具体的有:

(1)熟练掌握链表存储结构及其

建立过程和常用操作;

(2)熟练掌握队列的建立过程和

常用操作;

(3)学会自己调试程序的方法并

掌握一定的技巧。

(二)题目要求(不少于100字)1.每条航线所涉及的信息有:终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)以及等候替补的客户名单(包括姓名和所需数量)。2.系统能实现的操作和功能如下:(1)查询航线:根据客户提出的终点站名输出如下信息:航班号、飞机号、星期几飞行和余票额;

(2)承办订票业务:根据客户提出的要求(航班号、订票数额)查询该

航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票量少余订票额,则需重新询问客户要求。若需要,可登记排队候补;

(3)承办退票业务:根据客户提出的情况(日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

二、实训环境配置

Windows系统

CodeBlocks

三、设计正文

1.需求分析

本订票系统能够实现全部航线信息的浏览功能、订票客户信息的查询功

能、单条航线查询功能、订票功能和退票功能。

具体分析如下:

a) 全部航线信息的浏览功能

浏览全部系统预设的航线信息,每条航线包含的信息有:终点站名、航班号、飞机号、飞行周日(星期几飞行)、乘员定额和余票量。

b) 订票客户信息的查询功能

根据输入的航班号查询该航线所有订票客户的信息,包括客户姓名、订票数额和舱位等级。

c) 单条航线查询功能根据客户输入的终点站名查看该航线上所涉及的信息。

d) 订票功能根据客户提出的要求(航班号、订票数量)查询该航班票额情况,若尚有余票,则为客户办理

订票手续,输出座位号;若已满员或余票额少于定票额,则询问客户是否愿意排队等候,若愿意,系统则自动登记排队候补。

e) 退票功能根据客户提供的情况(航班、姓名),询问退票张数,然后为客户办理退票手续。接着系统自动查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队候补的客户。2.功能框图

图1 航空订票系统

3.算法设计

(1)浏览航线模块:定义void display( struct airline *info),用info指向结构体struct airline中的每一个成员;调用list()函数输出全部航线信息。

(2)浏览订票客户信息模块:定义订票客户信息的结构体ord_ros,根据输入航班号调用find()函数寻找客户信息。

(3)查询航线模块:顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。

(4)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功, 否则失

败。

(5)退票模块:输入要退票的乘客姓名,查找乘客资料的链表中是否有这位乘客,有则删去此节点,并在空位上加1,无则退票失败。如果此时余票额大于等于候补客户的订票数量,那么候补客户订票成功。

4.界面设计

运行主界面

图2 运行界面

5.系统测试

订票测试

图3 订票测试退票测试

图4 退票测试

四、小组成员分工说明

独立完成

五、总结

1.算法改进设想:

(1)在算法效率上,由于此课程设计所用的是线性表的建立、查找、插入、删除、和队列的建立、插入、删除,所涉及的是查找和排序问题,所以在建立插入时按照客户姓名进行有序,查找时采用分块查找,因此对订票客户信息的存储应采用指针数组存储。

(2)在函数重组,把处理不同问题相同算法思想(如线性表的插入、删除、查找等等)写在一个函数中,其它函数要用到这种操作时只需调用这些函数,这样会减少整个程序的代码量,方便理解、阅读和使用。

2.课程设计期间的主要收获:

看着简单,做着难,我自己眼高收低,心太急,不过敢想敢写感尝试,努力付出还真有蛮多收获。

(1)学与做:做了这次课程设计,我觉得课程设计这种形式真的是我们需要的,可以让我们学到很多,包括书上的、书外的。理论永远不等于实际。我在调试时出现了很多的问题,下面列举几个:程序中定义了一个字符串“new”,但在C-Free中“new"不是以未定义的形式存在,所以把“new”改写成“NEW”就可以了;C-Free中“getchar”表示读取下一个字符的含义,而“getch”不表示,出现“getch”时系统会报错;在编写退票模块的代码时,设计先输入退票数然后进行退票,调试时发现舱位等级的输出出现了混乱,后来经仔细分析才知道,原来