数据结构课程设计报告书

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

课程设计说明书

课程名称数据结构课程设计

设计课题模拟旅馆管理系统

课程设计任务书设计题目:模拟旅馆管理系统的一个功能——床位的分配与回收设计内容与要求:

某旅馆有n个等级的房间,第I等级有a

i 个房间,每个等级有b

i

个床位(1≤i

≤n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。

[基本要求]

(1)输入数据

分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级。

回收时,输入房间等级、房间号和床位号。

(2)输出数据

分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。

分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。

2014 年 12 月16日

课程设计评语

成绩:

指导教师:

年月日

【问题描述】

某旅馆有n个等级的房间,第I等级有a

i 个房间,每个等级有b

i

个床位(1

≤i≤n)。试模拟旅馆管理系统中床位分配和回收的功能,设计能为单个旅客分配床位,在其离店便回收床位(供下次分配)的算法。

【基本要求】

(1)输入数据

分配时,输入旅客姓名、年龄、性别、到达日期和所需房间等级。

回收时,输入房间等级、房间号和床位号。

(2)输出数据

分配成功时打印旅客姓名、年龄、到达日期、房间等级、房间号码和床位号码。

分配不成功时,如所有等级均无床位,则打印“客满”信息;如旅客需要的等级均无空床位,则打印“是否愿意更换等级?”的询问信息。若旅客愿意更换,则重新输入有关信息,再进行分配,否则分配工作结束。

【测试数据】

旅客姓名:w性别:男年龄:20入住时间:2015 3 4所需等级:1

旅客姓名:d性别:男年龄:22入住时间:2015 1 2所需等级:2

【模块划分】

本程序主要划分为四个模块

【算法思想】

采用链表方式,进行旅店的初始化操作。给旅店的等级设置了头结点。该程序有三条链表,等级构成一条链表,房间构成一条链表,旅客构成一条链表。入住时,先输入旅客所需的等级,判断是否有该等级,依次判断有无房间和床位。有该等级的房间时,采用尾插法判断是否有空床位,有就进行旅客的入住操作。床位没有设头结点,所以第一个床位要进行判断。退房时,需要输入等级号、房间号、床位号来进行查找,从而完成退房操作。查询时,通过输入旅客的姓名进行查询,存在此人时,打印客人信息。统计宾馆的人数时,先一个等级一个等级的统计,统计这个等级的每一个房间和每个房间当前的所有人数。

旅客住宿登记

旅客退房

【数据结构】

typedef struct traver//旅客结构体{char name[20];//姓名

int sex; //性别

int age; //年龄

int g;//旅客住宿的等级

int bednum;//床号

int year;

int month;

int day;

struct traver*next;//下一个旅客}tra;

typedef struct hotel//旅店结构体{int l_num;//旅店等级

struct hotel*next;//下一个等级struct room*r_next;//指向房间

}hotel;

typedef struct room//房间结构体{int r_num;//房间号

int max;//房间的最大床位数

int renshu;//房间当前的人数

struct room*next;//下一个房间struct traver*tra_next;//指向旅客}room;

【测试情况】

房间的初始化。

旅客入住登记测试

旅客退房测试记录查询测试

统计测试

【心得】

这周是我们自己选题做课程设计的的时间,我选的题目是做一个旅店管理系统,对床位进行分配和回收。本程序采用了三个链表,刚拿到这个题目时,我觉得很这个应该和学生管理系统差不多,但是,在对床位的分配时,要采用链表。刚开始我本来想把房间作为一个数组,将床位构成一个单链表。当时,没有考虑到房间的等级,最后又想了一下,改变了我原来的想法。将房间的等级、房间、旅客各构成一个链表,采用链表的好处是节约空间,有几个人就申请多大的空间,不会造成很大的浪费。在编写代码的过程中,先对旅馆每个等级的每个房间进行初始化,旅客的住宿这个函数对于我是最难的,因为要先判断旅客所需等级的房间存不存在,存在时,要判断这个房间有没有空床位,没有空床位时,链表的指针指向下一个房间。如果没有这个等级的房间时,征询旅客是否要更换房间等级。在他同意更换的情况下,再重复上述过程进行登记。给旅客进行床位分配时,是按照床位号的大小顺序依次分配的。如果这个房间的所有床位都住满的话,再给同等级的另一间房间进行分配。在写退房的函数时,要输入等级、房间号、床位号,找到相应的旅客打印旅客信息确认正确再进行退房操作。统计住宿的人数时,统计同等级的每一个房间的所有旅客。旅客的链表不空时,计数器就加加。

进行编程的时候,一定要先清楚自己的思路,比如我写的住宿函数,要入住就必须先判断有没有空房间和空床位,有的话才能进行分配。该程序的链表比较多,自己写的时候,一个一个子函数写,写完调试好了再进行下一个函数的编写。定义了三个结构体,一定要清楚每个结构体中所包含的量,切不可混淆。编写时if和else语句比较多,要清楚哪个与哪个对应,每个循环结束的条件。调试代码的时候有时就是一个很小的错导致整个程序不能运行,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终还是一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件!同时,通过此次课程设计使我了解到数据结构可以说是计算机里一门基础课程,它需要把理论

相关文档
最新文档