酒店客房预订管理系统范文Word格式文档下载.docx
《酒店客房预订管理系统范文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《酒店客房预订管理系统范文Word格式文档下载.docx(51页珍藏版)》请在冰点文库上搜索。
PC
处理器:
奔四或更高
内存:
512M或更高
硬盘:
4G或更高
输入输出设备:
键盘、扫描仪、打印机、显示器等。
数据库软件:
Notepad
编程工具、编程语言:
visualC++
编译软件:
MicrosoftVisualC++6.0
操作系统:
MicrosoftWindowsXP
第二章系统需求分析
2.1用户需求
该酒店预订管理系统使用户能迅速而便捷的了解和查询酒店信息,根据自己的需求来预订房间。
一个方便地实现对客房变更、房价及预订信息的自动化操作。
使用该系统全面管理酒店信息,为用户节省时间和人力,更能全面、有效地掌握酒店基本情况,及时获取最新的准确资料和信息。
该软件能系统管理酒店的信息,功能与实现方面有相当的针对性和实用性。
该系统的主要功能有酒店信息管理,房间类型管理,订单信息管理,业务人员编辑和系统用户管理。
2.2功能需求
本系统主要具备以下几个基本功能:
(1)客房预订:
按照客户需求,为新客户分配新客房。
(2)退房管理:
删除已退客户信息,及时更新客房留存状态,方便新客户入住。
(3)客房设置:
可以添加新客房,修改客房描述(房间等级,内部设施等),删除客房。
(4)客户设置:
可以添加新客户,修改客户信息,删除已退订客户等,可准确了解每一客
户的预订信息。
(5)房间预订情况查询:
可按客户号、房号查询,方便实用,在众多房间、客户中准确查询到某一个房间或客户。
2.3性能需求
1.技术可行性
该客房预订信息管理系统是在VisualC++6.0平台下设计开发,以TXT文档为后台数据库,采用面向对象的语言开发而成,系统的客户端在Windows平台下运行,服务器端可在Windows平台或UNIX平台下运行。
2.经济可行性
该系统节省人力资源成本的同时,可以提高业务效率,并能够及时、准确、迅速地满足顾客服务的需求,系统的开发成本低,现有的PC机即可提供该系统开发工作需要的所有硬件设备环境。
3.操作可行性
直接浏览网页的形式,利用鼠标进行傻瓜式的操作,操作中的每一步都会有相应的提示,这样可以让更多的人群在最短的时间内学会使用他。
2.4出错处理需求
在进行每一步操作时,都会有相应的提示操作,当系统出错时,会有相应的提示信息让你寻找错误,它的简单,易学的特性使得能够广泛普及,让更多的人去使用。
(为了更好地阐述需求更能,我们做了详细的图形说明)
2.5系统功能图
2.6系统数据流图
2.7E-R图
第三章系统总体设计
3.1系统功能设计
该系统充分考虑用户的操作简便性,实现快捷操作。
它有以下几个功能:
(5)房间预订情况查询:
可按客户号、房号查询,方便实用,在众多房间、客户中准确查询到某个房间或客户。
4.2系统功能模块图
根据上述系统功能分析,能得出下面系统软件功能模块图:
3.2.1整体模块分配
它有以下四大模块:
(1)订房:
(2)退订:
(3)客房信息:
可以添加新客房,修改客房描述(房间等级,内部设施等),删除客房以及查看所有客房的状态信息。
(4)客户信息:
可以添加新客户,修改客户信息(客户编号,客户姓名),删除已退订客户信息以及查看所有客户的订房状态信息。
3.2.2客户信息子模块
(1)新增:
录入客户编号、客户姓名等信息
(2)更改:
更改相应客户的个人信息。
(3)删除:
删除相应客户的个人信息。
(4)查询:
查询所需客户的订房信息。
(5)显示:
显示所有预订客户的个人信息以及预订房号。
(6)全删:
删除所有客户信息。
3.2.3客房信息子模块
录入客房编号、客房描述等相关信息。
更改相应客房的信息。
删除相应客户及客房的信息。
查询所需客房的订房状态。
显示所有客房的房号以及预订状态信息。
删除所有客房信息。
第四章系统详细设计
4.1系统详细设计进度规划
甘特图如下
4.2系统详细设计任务
1.算法过程的设计:
本详细设计采用的是流程图的方式来表达每个处理过程的算法。
2.数据结构的设计:
对于处理过程中涉及的概念性的数据类型进行确切的定义。
3.测试用例设计:
测试用例包括输入数据和预期结果等内容。
4.3系统物理方案配置设计
1.设计指标
1)系统的可靠性:
该系统要求24小时不间断工作工作,发生错误的概率低于0.01%。
系统吞吐量
2)要提高系统的吞吐量:
要求使用具有大吞吐量的计算机。
应该选择具有较高性能的计算机。
3)系统响应时间:
响应时间不超过2秒
4)系统处理方式:
该系统采用主机系统方式。
2.计算机硬件配置
计算机硬件选择取决于要运行的软件系统,本系统建议最低采取如下配置:
512MB;
CPU:
奔四1.8GHZ以上;
空余空间4G。
4.4系统输入输出设计
4.4.1输入设计原则
1.输入数据量设计:
需要输入客户数据,数据量不大。
2.输入错误检测:
检测客户登记状态,确保不会重复登记或登记错误。
4.4.2数据输入设备的选择
本系统选择键盘、鼠标人工输入方式。
4.4.3输入检验设计
本系统对输入检验设计的地方有如下几处:
1.当前台工作人员输入客户数据时,系统会自动检测该信息是否已在系统中存在。
2.当业务员输入房间号时,系统会检测该房间号是否存在,若不存在会提示酒店没该房间。
4.4.4输出设计内容
1.输出信息应包括系统的使用者,如客户、酒店管理人员、前台服务人员等。
2.信息应以表格及文档形式输出。
3.输出设备:
打印机、终端显示器。
4.输出介质:
输出到专用纸张及电脑屏幕上。
4.4.5错误改正方法
系统出现错误时,将弹出提示框。
并允许工作人员改正。
4.5系统程序流程图
第五章模块设计思路分析
本程序共有五大功能模块:
新建模块、更改模块、删除模块、查询模块和显示模块。
各模块在功能上互相补充,在程序中互相融合,才能实现一个具有多种功能的管理系统。
(1)新建模块:
实现所有客房、订房客户的录入工作。
(2)更改模块:
提供数据的修改,包括客户姓名、客房描述等。
(3)删除模块:
将已退订的客户从数据库中删除。
(4)查询模块:
本程序最重要的模块,也是本系统的精髓所在。
通过房间号或客户号实现客房的预订情况以及客户入住情况的查询工作。
(5)显示模块:
显示所有客房、订房客户的基本信息。
在程序设计上,我们的目标就是先实现单个模块,进而实现整个程序。
本程序正是本着这种思想,一步一步,有条不紊的进行规划与设计。
本程序通过四个类:
客户类、客户库类、客房类、客房库类,并通过主函数调用类函数实现了这五大功能模块的功能。
第6章使用说明
(1)程序主界面:
界面简洁明了,一目了然,便于操作。
选择数字0-6进入相应功能。
(2)订房:
主界面选择1进入订房功能
(3)查询房间预订情况:
主界面选择3进入该功能
(4)增删客户信息:
主界面选择4进入该功能
1.增加客户信息:
系统提示输入客户号码、姓名等信息,按要求录入即可。
2.删除个人信息:
系统提示输入要更改的客户号,输入后即可更改该客户的个人信息。
3.返回:
返回主界面。
(5)增删房间信息:
主界面选择5进入客房信息管理菜单。
1.新增:
系统提示输入房间号、房间描述等信息,按要求录入即可。
2.删除:
系统提示输入要删除的房间号,输入后即可删除该房间。
(6)查询客户和房间总信息量:
主界面选择6进入该功能,
通过读取文件信息、预订然后将信息输出显示。
(7)退房:
主界面选择2进入退房功能。
(8)退出:
主界面选择0退出程序。
(9)文件中读取房间信息room
(10)文件读取客户信息customer
第七章程序源代码
程序源代码包含三大块:
类定义、各功能函数定义及实现和主函数实现
类定义源代码:
#ifndefINFO_H
#defineINFO_H
#include<
fstream>
string>
cstdlib>
usingnamespacestd;
namespaceinfo_space
{
classCustomer
public:
Customer();
stringname;
intnumber;
//客户编号
};
classRoom
Room();
introom_number;
introom_level;
//房间等级,1-5级
stringroom_config;
//房间配置:
高级,优,良,中等,普通
classCustomerBase
CustomerBase();
voidadd(Customertemp);
//前条件,temp已经含有值
voidremove(Customertemp);
Customerthe_customer;
CustomerBase*next;
classRoomBase
RoomBase();
voidadd(Roomtemp);
voidremove(Roomtemp);
Roomthe_room;
RoomBase*next;
classInfoBase
intcustomer_number;
InfoBase();
voidadd(InfoBase*&
temp_ptr,intcnum,intrnum);
voidremove(InfoBase*&
temp_ptr,intcnum);
boolcheck(InfoBase*&
boolcheckall(InfoBase*&
voidoutput(InfoBase*&
temp_ptr);
InfoBase*next;
typedefCustomerBase*CBasePtr;
typedefRoomBase*RBasePtr;
typedefInfoBase*IBasePtr;
Customer:
:
Customer()//构造函数
name="
"
;
number=-1;
}
Room:
Room()
room_number=-1;
room_level=0;
room_config="
CustomerBase:
CustomerBase()
next=NULL;
RoomBase:
RoomBase()
InfoBase:
InfoBase()
voidpause()
charget;
cout<
<
请按下任何键继续……"
endl;
cin.get(get);
}//info_space的结尾
#endif//INFO_H
各功能函数源代码:
#ifndefINFO_FUN_H
#defineINFO_FUN_H
iostream>
#include"
info.h"
voidreadinstream,CBasePtr&
temp)//从文件中读取客户数据
{
intt_number=-1;
stringt_name="
CBasePtrt_temp=newCustomerBase;
instream>
>
t_name;
while(!
instream.eof())
{
instream>
t_number;
t_temp->
the_customer.name=t_name;
the_customer.number=t_number;
if(instream.eof())return;
next=temp;
temp=t_temp;
t_temp=NULL;
t_temp=newCustomerBase;
//循环创建用户信息类
}
}
voidwriteoutstream,CBasePtr&
temp)//信息写入文件中
if(temp==NULL)return;
CBasePtrt_temp=temp;
//为了防止写完文件后,指针到达指针尾
while(t_temp!
=NULL)
if(t_temp->
the_customer.name=="
)
t_temp=t_temp->
next;
if(t_temp==NULL)break;
//这两个if语句用来判别输出客户信息
outstream<
t_temp->
the_customer.name<
"
<
the_customer.number<
t_temp=t_temp->
voidreadinstream,RBasePtr&
temp)//读取文件函数的重载
intnumber=-1;
intlevel=0;
stringconfig="
RBasePtrt_temp=newRoomBase;
number;
level;
config;
the_room.room_number=number;
the_room.room_level=level;
the_room.room_config=config;
t_temp=newRoomBase;
voidwriteoutstream,RBasePtr&
temp)
RBasePtrt_temp=temp;
the_room.room_number==-1)
//这两个if语句用来判别输出房间信息
the_room.room_number<
the_room.room_level<
the_room.room_config<
boolcheck(CBasePtr&
temp_ptr,intnumber)//若找到相同编号则返回true,否则返回false
CBasePtrthe_ptr=temp_ptr;
while(the_ptr!
=NULL)
if(the_ptr->
the_customer.number==number)
returntrue;
elsethe_ptr=the_ptr->
returnfalse;
boolcheck(RBasePtr&
temp_ptr,intnumber)//核对预订的客户和客房信息,看是否还有空房
RBasePtrthe_ptr=temp_ptr;
the_room.room_number==number)
voidCustomerBase:
add(Customertemp)//添加客户信息
if(temp.name=="
||temp.number==-1)
cout<
用户信息未填写完整,请重新填写!
return;
else
ifstreaminstream;
ofstreamoutstream;
instream.open("
E:
\\customer.txt"
);
CBasePtrtemp_ptr=NULL;
read);
//读取文件中的客户信息,存入temp_ptr中
CBasePtrtt_ptr=temp_ptr;
//用此临时指针获取指针尾部指针,从而让新客户信息加到指针尾部,写入的时候也会相应写到文件尾部
while(tt_ptr->
next!
tt_ptr=tt_ptr->
if(check(temp_ptr,temp.number))
{
cout<
客户编号已经存在,请核查!
return;
}
else
CBasePtrptr=newCustomerBase;
ptr->
the_customer=temp;
tt_ptr->
next=ptr;
outstream.open("
//open函数会刷新文档,里面存储的内容全失
write);
//将新的链表信息写入文件中
remove(Customertemp)//删除客户信息
intflag=0;
//设置一个标记,用来检验删除是否成功
ifstreaminstream;
ofstreamoutstream;
instream.open("
CBasePtrtemp_ptr=NULL;
read);
if(!
check(temp_ptr,temp.number))
不存在此编号!
CBasePtrbefore=temp_ptr,after=temp_ptr;
//创建一个前指针和后指针,方便删除对应元素
if(before->
the_customer.number==temp.number)