宾馆入住管理的设计与实现.docx

上传人:b****0 文档编号:12767332 上传时间:2023-04-22 格式:DOCX 页数:16 大小:165.31KB
下载 相关 举报
宾馆入住管理的设计与实现.docx_第1页
第1页 / 共16页
宾馆入住管理的设计与实现.docx_第2页
第2页 / 共16页
宾馆入住管理的设计与实现.docx_第3页
第3页 / 共16页
宾馆入住管理的设计与实现.docx_第4页
第4页 / 共16页
宾馆入住管理的设计与实现.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

宾馆入住管理的设计与实现.docx

《宾馆入住管理的设计与实现.docx》由会员分享,可在线阅读,更多相关《宾馆入住管理的设计与实现.docx(16页珍藏版)》请在冰豆网上搜索。

宾馆入住管理的设计与实现.docx

宾馆入住管理的设计与实现

学号:

课程设计

 

设计题目

宾馆入住管理的设计与实现

专业

计算机科学与技术

班级

姓名

指导教师

 

2010

7

9

计算机基础强化训练任务书

学生姓名:

专业班级:

指导教师:

工作单位:

计算机科学与技术学院

题目:

宾馆入住管理的设计与实现

初始条件:

理论:

学完计算机基础知识,掌握C++语言编程基础和VC开发平台的使用。

实践:

计算机科学系实验中心提供计算机及软件开发环境。

要求完成的主要任务:

(1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。

(2)系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。

要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。

至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。

(2)编制好程序后,设计若干测试用例,上机测试所设计的程序。

(4)设计报告按格式要求书写。

设计报告正文的内容应包括:

1)系统描述包括问题说明、数据需求和功能需求。

2)系统设计包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。

3)系统测试包括测试用例的描述、测试方法和测试结果。

4)设计的特点、不足、收获和体会。

时间安排:

1、第19周(7月5日至7月9日)完成。

2、7月9日8:

00到计算机学院实验中心(三楼)检查程序、交课程设计报告、源程序(CD盘)。

指导教师签名:

2010年月日

系主任(或责任教师)签名:

2010年月日

1.系统描述

1.1问题说明

此次的课程设计题目是宾馆入住管理的设计与实现,要求用链表作为数据的存储结构,所谓宾馆房间信息的查询,添加和修改都是对链表中结点的查看、添加和修改的操作。

程序编程结束后要求有向导性的界面,能完成关于宾馆入住管理的相关的操作。

问题描述:

(1)文件处理。

所用入住房间的信息都是通过一个文件保存的,因此每次在程序执行时都要先从文件中读取出入住房间的信息,同时也要在每次登记入住信息后,再将这些信息保存至文件中,从而实现对于文件的读写操作。

(2)用户可以根据程序在运行窗口所显示的功能提示菜单进行选择,从而实现宾馆客户入住信息的登记(即添加),查询和修改等操作,对于一些特殊的情况也应该能够进行特殊的处理,系统能够给出相关的提示和说明。

1.2数据需求

int型

房间号

char型

客户姓名

char型

身份证号

bool型

客房是否为空

int型

住宿天数

1.3功能需求

操作

相关功能说明

查询

显示当前客房信息:

包括单人房,双人房,三人房已入

住用户信息由文件读入后添加到链表中,然后输出显示。

空房查询:

输出无人入住的客房号,并说明并有多少空房。

添加

登记入住:

客户说明住宿人数与天数,选择住宿方案,然

后登记客户信息

预定客房:

客户说明住宿人数与天数,选择预定方案

存储

保存至文件:

将客户登记好的信息保存至文件中

读取

由文件将已经入住客户的房间的信息去取并保存至链表中

修改

修改客户信息:

根据客户姓名,进一步修改客户相关信息

2.系统设计

2.1内存数据结构设计

#defineroom_kinds4//房间种类

#defineroom_num30//每种房间数目

structroom{

intnum;//房间号

charname[20];//用户姓名

charid[20];//用户身份证号

boolisempty;//客房是否为空

intusetime;//住宿天数

room*next;

};

structhotel{

intnum[room_kinds];//存不同种类房间的用户数

intbook[room_kinds];//存不同种类房间的预定数

room*header[room_kinds];//存不同种类房间的头指针

};

2.2数据文件设计

使用文本文件”hotel.txt”存储已入住房间的相关信息。

程序在每次执行中可以选择“保存至文件”将本次执行过程中的入住用户信息保存至该文本文件中,下次执行程序时,程序自动从文件中读取相关信息,并保存在初始化的链表中。

主要利用到如下语句:

ifstreamfin("hotel.txt");从文件hotel.txt中读取数据

fin.get(c);//可以从文件中读取单个的字符

fin.eof();//文件结束的标志

fin>>kinds;fin>>temp;//从文件中读取整个数据项

ofstreamhotel(filename);//将数据写到文件名为filename的文件中

hotel<num<<"\t"<name<<"\t"<id<<"\t"<usetime<

hotel.close();//关闭文件

2.3代码设计

voidinit_rooms()

初始条件:

文件hotel.txt存在。

操作结果:

各种房间都建立各自的链表,并已初始化。

若文件hotel.txt中有入住房间的信息,则从文件中读取信息,并存入链表之中。

charfunction_print()

初始条件:

链表的初始化操作已顺利进行。

操作结果:

输出本程序的各种功能,给以用户操作提示。

并将用户的选择返回给主函数。

voidprint_livein(inti)

初始条件:

客户选择了入住方案,并入住房间。

操作结果:

输出已入住客户的信息,以及入住客户的总数。

voidprint_book(inti)

初始条件:

客户选择了预定方案,并预定房间。

操作结果:

输出被预订房间的信息,以及已预定房间的总数。

voidprint_cusinf()

初始条件:

有入住额客户。

操作结果:

输出各种房间的入住信息。

intprint_chose(intregnum,intregday)

初始条件:

输入入住人数与住宿天数。

操作结果:

根据入住人数提供房间选择方案,并显示各种方案的花费,以供客户进行选择。

voidreg_livein(intserial,intregday)

voidRegist()

初始条件:

客户选择了某一种入住方案。

操作结果:

根据客户的选择方案,登记客户信息,并将其记录在链表中。

voidbook_room()

初始条件:

客户选择了某一种预定方案。

操作结果:

根据客户的选择方案,登记客户信息,并将其记录在链表中。

voidQuery(inti)

voidQueryempty()

初始条件:

选择所要查询的客房种类。

操作结果:

输出显示该种房间剩余的房间号。

voidSave(charfilename[])

初始条件:

建立一个文本文件。

操作结果:

将所有入住房间的信息记录到文本文件”hotel.txt”中。

voidmodify()

初始条件:

需修改信息的客户名称,并且存在该客户入住的房间信息。

操作结果:

对于三个存储房间信息的链表进行查找,若存在,则进行修改选择并修改,若不存在,则退出修改。

2.4其他设计

2.4.1输入/输出设计

程序每次执行时,首先从文本文件hotel.txt中利用ifstreamfin(“hotel.txt”)和类如fin>>kinds的语句提取数据生成链表,若文件hotel.txt中无房间信息,则输出“文件中无内容可以导入”,然后输出操作提示。

输入命令提示中的序号便可以选择相应的命令,增加记录时逐项提示输入入住人数和入住天数,然后提示各种可行方案供旅客选择,根据提示,选择相应的序号后,再通过登记,就可以将信息添加到链表中。

查询分为查询空房和查询已住用户信息,在主菜单中按照命令提示进行选择。

如果查询空房,就将未入住旅客的各种类型客房显示在命令中,用户按照提示命令进行选择,就可以将空房的房间号码输出;查询已住客房的信息时,根据提示操作可以查看三种不同类型房间的入住信息。

保存至文件即将链表中的信息写到文件中。

选择主菜单中的退出则退出程序。

2.4.2用户界面设计

(1)菜单界面

cout<<"\t\t宾馆客房管理(请按数字选择)"<

cout<<"\t*****************************************"<

cout<<"\t\t\t1.显示当前客房信息"<

cout<<"\t\t\t2.登记入住"<

cout<<"\t\t\t3.预定客房"<

cout<<"\t\t\t4.空房查询"<

cout<<"\t\t\t5.保存至文件"<

cout<<"\t\t\t6.修改客户信息"<

cout<<"\t\t\t7.退出程序"<

cout<<"\t*****************************************"<

(2)显示当前客房信息

cout<<"************************************************"<

cout<<"\t\t1.单人房"<

cout<<"\t\t2.双人房"<

cout<<"\t\t3.三人房"<

cout<<"\t\t4.退出"<

cout<<"************************************************"<

cout<<"请选择"<

(3)修改客户信息

cout<<"\t------------请选择要修改的内容-------------"<

cout<<"\t\t1.身份证号"<

cout<<"\t\t2.住宿天数"<

cout<<"\t\t3.退出修改"<

cout<<"\t-------------------------------------------"<

2.4.3处理过程设计

首先,程序开始执行先将文本文件hotel.txt中的数据读取并存储在链表中,然后按照功能操作提示进行选择,客户经过登记入住后便可以的到一个新的链表,最终可以选择“保存至文件”进行文件保存操作。

本程序可以实现的功能包括:

查询,添加,修改。

现已修改操作为例讲解一下处理过程设计。

修改操作则是通过客户输入所要修改信息的客户名称来进行查找的,首先利用for()循环语句确定链表的信息中是否含有该用户,若存在该用户,则变换命令提示界面,客户根据提示再次进行所要修改的数据的选择,根据用户输入的选择是哪一项,利用switch()进行分别的修改操作,switch()语句下的每个case都有具体的输入数据提示和输入语句。

若选择退出修改,则会跳转回原先的菜单界面供用户进行其他操作。

整体的用户界面是通过do..while()语句使得菜单界面循环显示,每次执行完一个命令后再次显示出菜单界面,直到选择退出命令,循环终止,程序停止执行。

3.系统测试

3.1测试用例的描述

(1)当文件中含有有关入住房间信息的信息时,对于程序所要实现的各项功能的测试(具体数据见下一部分3.2测试方法中);

(2)当文件中没有任何数据时,程序所能实现的功能与

(1)中一致,因此不再进行测试验证,

仅仅对文件为空时,程序开始运行时的情况进行说明。

3.2测试方法

(1)当文件中的初始数据如下图所示时

下面四张图是测试程序的第一项功能:

1.显示当前客户信息

如上图所示,程序顺利将文件中的信息导入并且正确的显示各类房间的入住信息。

下面两图是对2.登记入住与5.保存至文件两项功能的测试

如上即为最终执行“保存至文件”命令后文件中显示的结果,验证了操作顺利执行。

如下图是对3.预定客房功能的测试

图中所出现的预定房间号为2,是由于号码为1的房间已经入住(由文件中导入的信息)

如下两图是对4.空房查询功能的测试

上面两图中左图是说明选择查询双人房中的空房;右图则是显示双人房中空房的号码,其中的1、2、3号房是因为已经入住(由文件中导入的信息),因此没有显示。

下面的四个图表是对6.修改客户信息功能的测试

上面两个表分别为执行修改操作前后的文件中数据,可以看到,修改前客户王五的住宿天数为3,修改后客户王五的住宿天数为6。

上面两个图显示了运行窗口的提示操作和修改的过程。

下图是对最后一项7.退出程序功能的测试

如上所示,当输入为7时,程序正常的退出,停止执行。

(2)当文件起始没有任何数据时,程序开始运行时可以给出相关说明如下所示。

窗口中第一句给出提示语“文件中没有内容可以导入!

此种情况下功能的测试方法与文件中有数据时是基本一致的。

3.3测试结果

具体的测试结果在上一部分3.2测试方法中已给出,可返回查看。

4.设计小结及体会

本次课程设计是宾馆入住管理的设计和实现,在编写的程序中,利用链表存储从文件中读取的数据,并且实现了一些添加,查询,修改和保存的操作。

选择命令的是switch()语句,通过操作提示选择所要进行的操作,刚开始的时候对于程序所要实现的功能和操作不是很熟悉,后来通过查阅资料,了解到更多有关的信息,比如房间的类型可以有很多种,进行登记的也可以是进行预订房间的,查询可以分为查询入住房间的信息和空房信息。

另外,根据课程设计的实验要求,还要能够将入住登记过程中的客户信息及房间信息存储到文件中,还应该能够实现对客户信息的简单修改,因此,所编写的程序应该实现添加,查询,保存,修改等操作。

至于登记的信息数据项,关于入住客户的信息只需要登记姓名和身份证号即可;关于房间的信息数据项应该是比较多的,基本包括房间种类,房间号,是否为空,住宿时间等。

在定义结构体的时候,分别建立两个结构体为hotel和room。

旅馆的信息包括各种房间的已入住的数目和已预订的数目,以及三类房间的链表的头指针。

程序运行时直接将文件中的信息读入,然后再通过入住登记向链表中加入信息,最后再将链表中的信息保存到文件中。

由于在以前的编程过程中,对于有关文件的操作使用很少,因此在设计过程中耗费了较多的功夫才使得文件的读取得以实现,通过实验,掌握了一些基本的文件操作,了解了文件操作方面的一些函数,基本完成了实验要求。

但是本次实验依然存在着不足之处,比如说整个程序实验代码略显累赘,看起来比较繁,虽然实现了文件的读取操作,但是在保存文件的时候,仅仅把入住的房间的信息保存在文本文件中,而被预订的房间的信息则没有被保存,因此在从文件读取的信息只包括了入住房间的信息,有待进一步的改进。

另外还有一个不足之处,是对客户信息进行修改,没有实现对于客户锁住房间的修改,即可以修改客户住房的种类和房间号。

通过本次课程设计,熟悉了一些对于文件的操作,巩固了以前所学过的编程知识和思想,感觉这次利用所学到的知识做了一件比较有意义的事情,编写出了一个较具有使用价值的小软件。

5.参考文献

[1]《c++程序设计教程》,闵联营,何克右,出版社:

武汉理工大学出版社,时间:

2005年7月

[2]《数据结构(C语言版)》,严蔚敏,吴伟民编著,出版社:

清华大学出版社,出版或修订时间:

1997年4月

[3]《数据结构习题集(C语言版)》,严蔚敏,吴伟民,米宁编著,清华大学出版社,出版或修订时间:

1999年2月

 

本科生课程设计成绩评定表

班级:

       姓名:

       学号:

序号

评分项目

满分

实得分

1

学习态度认真、遵守纪律

20

2

报告分析合理性

30

3

报告观点正确性,专业认识深刻程度

30

4

设计报告的规范性

20

总得分/等级

评语:

注:

最终成绩以五级分制记。

优(90-100分)、良(80-89分)、中(70-79分)、

及格(60-69分)、60分以下为不及格

 

                  指导教师签名:

                  2010年7月 日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1