院 系: 计算机科学学院
专业年级: 2010计科(X)班
课程名称: 软件工程
项目名称: 酒店客房预订理系统
学号姓名:
学号姓名:
学号姓名:
学号姓名:
指导教师:
2012 年X月X日
目录
第章 系统概述 1
11 系统开发背景意义 1
12 开发语言简介 1
13系统简介 1
14 系统运行环境 2
第二章 系统需求分析 2
21 户需求 2
22 功需求 3
23 性需求 3
24 出错处理需求 3
25 功图 3
26 数流图 4
27 ER图 5
第三章 系统总体设计 5
31 系统功设计 5
32 系统功模块图 6
第四章 系统详细设计 8
41 系统详细设计进度规划(甘特图) 8
42 系统详细设计务 8
43 系统物理方案配置设计 9
44 系统输入输出设计 9
45 系统程序流程图 11
第五章 模块设计思路分析 11
第六章 说明 12
第七章 程序源代码 16
结束语 36
参考文献 37
第章 系统概述
11 系统开发背景意义
着类社会进入信息时代计算机越越活跃社会领域成缺少工具尤理方面理软件出现量繁琐复杂问题变简单易行民生活水提高时餐饮住宿娱乐业服务行业中占越越重位前酒店行业日趋激烈竞争中脱颖出必须努力发展理方面特色避免传统理方法失误酒店信誉理方面够出现零失误理者普通营业员带操作方便整酒店方面业务带快捷方便高效服务理软件成功处
现酒店宾馆规模断扩客户数量急剧增加关客户种信息成倍增长尤量客房预订信息面庞信息量需客户信息理系统提高客户理工作效率通样系统做信息规范理科学统计快速查询减少理方面工作量前许酒店正逐步完善客户信息理工作需满足部理需求提高理效率应系统进行部理许酒店年发展规模断扩客流量成倍增长积累量客户信息急需进行统理防信息流失许酒店需功全面客户信息理系统进行理理客户信息工作该系统配合更加高效便捷
12 开发语言简介
酒店客房预订信息理系统客户全方面理程序该客房预订信息理系统Visual C++ 60台设计开发TXT文档台数库
利Visual C++ 60提供种面象开发工具首先短时间建立系统应原型然初始原型系统进行需求迭代断修正改进直形成户满意行系统MicrosoftVisual C++ 60作种面网络支持种户终端开发台环境推动新代特网发展真正时间点通设备信息
13系统简介
现代化酒店组织庞服务项目信息量想提高劳动生产降低成提高服务质量理水进促进济效益必须助计算机进行现代化信息理酒店理系统正设计优秀酒店客房理系统操作方便灵活性系统安全性高运行稳定设计程序目系统针户客户客房理采常CS结构设计采面象语言开发成实现客户预订信息基理包括订房退房客房信息客户信息添加修改查询
14 系统运行环境
机型:PC
处理器:奔四更高
存:512M更高
硬盘:4G更高
输入输出设备:键盘扫描仪印机显示器等
数库软件:Notepad
编程工具编程语言visual C++
编译软件:Microsoft Visual C++ 60
操作系统:Microsoft Windows XP
第二章 系统需求分析
21 户需求
该酒店预订理系统户迅速便捷解查询酒店信息根需求预订房间方便实现客房变更房价预订信息动化操作 该系统全面理酒店信息户节省时间力更全面效掌握酒店基情况时获取新准确资料信息该软件系统理酒店信息功实现方面相针性实性该系统功酒店信息理房间类型理订单信息理业务员编辑系统户理
22 功需求
系统具备基功:
(1)客房预订:客户需求新客户分配新客房
(2)退房理:删已退客户信息时更新客房留存状态方便新客户入住
(3)客房设置:添加新客房修改客房描述(房间等级部设施等)删客房
(4)客户设置:添加新客户修改客户信息删已退订客户等准确解客
户预订信息
(5)房间预订情况查询:客户号房号查询方便实众房间客户中准确查询某房间客户
23 性需求
1 技术行性
该客房预订信息理系统Visual C++ 60台设计开发TXT文档台数库采面象语言开发成系统客户端Windows台运行服务器端Windows台UNIX台运行
2 济行性
该系统节省力资源成时提高业务效率够时准确迅速满足顾客服务需求系统开发成低现PC机提供该系统开发工作需硬件设备环境
3 操作行性
直接浏览网页形式利鼠标进行傻瓜式操作操作中步会相应提示样更群短时间学会
24 出错处理需求
进行步操作时会相应提示操作系统出错时会相应提示信息寻找错误简单易学特性够广泛普更
(更阐述需求更做详细图形说明)
25 系统功图
26 系统数流图
27 ER图
第三章 系统总体设计
31 系统功设计
该系统充分考虑户操作简便性实现快捷操作功:
(1)客房预订:客户需求新客户分配新客房
(2)退房理:删已退客户信息时更新客房留存状态方便新客户入住
(3)客房设置:添加新客房修改客房描述(房间等级部设施等)删客房
(4)客户设置:添加新客户修改客户信息删已退订客户等准确解客
户预订信息
(5)房间预订情况查询:客户号房号查询方便实众房间客户中准确查询某房间客户
42 系统功模块图
根述系统功分析出面系统软件功模块图:
321 整体模块分配
该系统充分考虑户操作简便性实现快捷操作四模块:
(1)订房:客户需求新客户分配新客房
(2)退订:删已退客户信息时更新客房留存状态方便新客户入住
(3)客房信息:添加新客房修改客房描述(房间等级部设施等)删客房查客房状态信息
(4)客户信息:添加新客户修改客户信息(客户编号客户姓名)删已退订客户信息查客户订房状态信息
322客户信息子模块
(1)新增:录入客户编号客户姓名等信息
(2)更改:更改相应客户信息
(3)删:删相应客户信息
(4)查询:查询需客户订房信息
(5)显示:显示预订客户信息预订房号
(6)全删:删客户信息
323 客房信息子模块
(1)新增:录入客房编号客房描述等相关信息
(2)更改:更改相应客房信息
(3)删:删相应客户客房信息
(4)查询:查询需客房订房状态
(5)显示:显示客房房号预订状态信息
(6)全删:删客房信息
第四章 系统详细设计
41 系统详细设计进度规划
甘特图
42 系统详细设计务
1算法程设计:
详细设计采流程图方式表达处理程算法
2数结构设计:
处理程中涉概念性数类型进行确切定义
3测试例设计:
测试例包括输入数预期结果等容
43 系统物理方案配置设计
1设计指标
1)系统性:该系统求24时间断工作工作发生错误概率低001
系统吞吐量
2)提高系统吞吐量:求具吞吐量计算机应该选择具较高性计算机
3)系统响应时间:响应时间超2秒
4)系统处理方式:该系统采机系统方式
2计算机硬件配置
计算机硬件选择取决运行软件系统系统建议低采取配置:存:512MBCPU:奔四18GHZ硬盘:空余空间4G
44 系统输入输出设计
441输入设计原
1输入数量设计:需输入客户数数量
2输入错误检测:检测客户登记状态确保会重复登记登记错误
442数输入设备选择
系统选择键盘鼠标工输入方式
443输入检验设计
系统输入检验设计方处:
1前台工作员输入客户数时系统会动检测该信息否已系统中存
2业务员输入房间号时系统会检测该房间号否存存会提示酒店没该房间
444输出设计容
1输出信息应包括系统者客户酒店理员前台服务员等
2信息应表格文档形式输出
3输出设备:印机终端显示器
4输出介质:输出专纸张电脑屏幕
445错误改正方法
系统出现错误时弹出提示框允许工作员改正
45 系统程序流程图
第五章 模块设计思路分析
程序五功模块:新建模块更改模块删模块查询模块显示模块模块功互相补充程序中互相融合实现具种功理系统
(1)新建模块:实现客房订房客户录入工作
(2)更改模块:提供数修改包括客户姓名客房描述等
(3)删模块:已退订客户数库中删
(4)查询模块:程序重模块系统精髓通房间号客户号实现客房预订情况客户入住情况查询工作
(5)显示模块:显示客房订房客户基信息
程序设计目标先实现单模块进实现整程序程序正着种思想步步条紊进行规划设计程序通四类:客户类客户库类客房类客房库类通函数调类函数实现五功模块功
第六章 说明
(1)程序界面:界面简洁明目然便操作选择数字06进入相应功
(2) 订房:界面选择1进入订房功
(3) 查询房间预订情况:界面选择3进入该功
(4) 增删客户信息:界面选择4进入该功
1增加客户信息:系统提示输入客户号码姓名等信息求录入
2删信息:系统提示输入更改客户号输入更改该客户信息
3返回:返回界面
(5)增删房间信息:界面选择5进入客房信息理菜单
1新增:系统提示输入房间号房间描述等信息求录入
2删:系统提示输入删房间号输入删该房间
3返回:返回界面
(6)查询客户房间总信息量:界面选择6进入该功
通读取文件信息预订然信息输出显示
(7)退房:界面选择2进入退房功
(8)退出:界面选择0退出程序
(9) 文件中读取房间信息room
(10) 文件读取客户信息customer
第七章 程序源代码
程序源代码包含三块:类定义功函数定义实现函数实现
类定义源代码:
#ifndef INFO_H
#define INFO_H
#include
#include
#include
using namespace std
namespace info_space
{
class Customer
{
public
Customer()
string name
int number 客户编号
}
class Room
{
public
Room()
int room_number
int room_level房间等级15级
string room_config房间配置:高级优良中等普通
}
class CustomerBase
{
public
CustomerBase()
void add(Customer temp)前条件temp已含值
void remove(Customer temp)
Customer the_customer
CustomerBase* next
}
class RoomBase
{
public
RoomBase()
void add(Room temp)
void remove(Room temp)
Room the_room
RoomBase* next
}
class InfoBase
{
public
int customer_number
int room_number
InfoBase()
void add(InfoBase*& temp_ptrint cnumint rnum)
void remove(InfoBase*& temp_ptrint cnum)
bool check(InfoBase*& temp_ptrint cnum)
bool checkall(InfoBase*& temp_ptrint cnumint rnum)
void output(InfoBase*& temp_ptr)
InfoBase* next
}
typedef CustomerBase* CBasePtr
typedef RoomBase* RBasePtr
typedef InfoBase* IBasePtr
CustomerCustomer() 构造函数
{
name
number1
}
RoomRoom()
{
room_number1
room_level0
room_config
}
CustomerBaseCustomerBase()
{
nextNULL
}
RoomBaseRoomBase()
{
nextNULL
}
InfoBaseInfoBase()
{
nextNULL
}
void pause()
{
char get
cout<<请键继续……<
cinget(get)
}
}info_space结尾
#endif INFO_H
功函数源代码:
#ifndef INFO_FUN_H
#define INFO_FUN_H
#include
#include
#include
#include
#include infoh
namespace info_space
{
void readfile(ifstream& instreamCBasePtr& temp) 文件中读取客户数
{
int t_number1
string t_name
CBasePtr t_tempnew CustomerBase
instream>>t_name
while(instreameof())
{
instream>>t_number
t_temp>the_customernamet_name
t_temp>the_customernumbert_number
if(instreameof()) return
t_temp>nexttemp
tempt_temp
t_tempNULL
t_tempnew CustomerBase 循环创建户信息类
instream>>t_name
}
}
void writefile(ofstream& outstreamCBasePtr& temp) 信息写入文件中
{
if(tempNULL) return
CBasePtr t_temptemp 防止写完文件指针达指针尾
while(t_tempNULL)
{
if(t_temp>the_customername)
t_tempt_temp>next
if(t_tempNULL) break 两if语句判输出客户信息
outstream<
<
}
}
void readfile(ifstream& instreamRBasePtr& temp) 读取文件函数重载
{
int number1
int level0
string config
RBasePtr t_tempnew RoomBase
instream>>number
while(instreameof())
{
instream>>level
instream>>config
t_temp>the_roomroom_numbernumber
t_temp>the_roomroom_levellevel
t_temp>the_roomroom_configconfig
if(instreameof()) return
t_temp>nexttemp
tempt_temp
t_tempNULL
t_tempnew RoomBase
instream>>number
}
}
void writefile(ofstream& outstreamRBasePtr& temp)
{
if(tempNULL) return
RBasePtr t_temptemp
while(t_tempNULL)
{
if(t_temp>the_roomroom_number1)
t_tempt_temp>next
if(t_tempNULL) break 两if语句判输出房间信息
outstream<
<
<
}
}
bool check(CBasePtr& temp_ptrint number)找相编号返回true否返回false
{
CBasePtr the_ptrtemp_ptr
while(the_ptrNULL)
{
if(the_ptr>the_customernumbernumber)
return true
else the_ptrthe_ptr>next
}
return false
}
bool check(RBasePtr& temp_ptrint number) 核预订客户客房信息否空房
{
RBasePtr the_ptrtemp_ptr
while(the_ptrNULL)
{
if(the_ptr>the_roomroom_numbernumber)
return true
else the_ptrthe_ptr>next
}
return false
}
void CustomerBaseadd(Customer temp) 添加客户信息
{
if(tempname||tempnumber1)
{
cout<<户信息未填写完整请重新填写
return
}
else
{
ifstream instream
ofstream outstream
instreamopen(E\\customertxt)
CBasePtr temp_ptrNULL
readfile(instreamtemp_ptr) 读取文件中客户信息存入temp_ptr中
CBasePtr tt_ptrtemp_ptr
时指针获取指针尾部指针新客户信息加指针尾部写入时候会相应写文件尾部
while(tt_ptr>nextNULL)
tt_ptrtt_ptr>next
if(check(temp_ptrtempnumber))
{
cout<<客户编号已存请核查<
}
else
{
CBasePtr ptrnew CustomerBase
ptr>the_customertemp
tt_ptr>nextptr
}
outstreamopen(E\\customertxt) open函数会刷新文档里面存储容全失
writefile(outstreamtemp_ptr) 新链表信息写入文件中
}
}
void CustomerBaseremove(Customer temp) 删客户信息
{
int flag0 设置标记检验删否成功
ifstream instream
ofstream outstream
instreamopen(E\\customertxt)
CBasePtr temp_ptrNULL
readfile(instreamtemp_ptr) 读取文件中客户信息存入temp_ptr中
if(check(temp_ptrtempnumber))
{
cout<<存编号<
}
CBasePtr beforetemp_ptraftertemp_ptr 创建前指针指针方便删应元素
if(before>the_customernumbertempnumber)
{
temp_ptrtemp_ptr>next 果第元素删元素直接删
afterNULL 元素已删直接写入文件中设置afterNULL跳while循环
flag1
}
while(afterNULL)
{
if(after>the_customernumbertempnumber)
{
before>nextafter>next
flag1 删成功设置标志1
}
else
{
beforebefore>next
afterbefore>next
}
}while循环结束
if(flag0) cout<<存编号<
{
outstreamopen(E\\customertxt)
writefile(outstreamtemp_ptr) 新链表写入文件
}
}
void RoomBaseadd(Room temp) 文件中存房间信息
{
if(temproom_number1||temproom_level0||temproom_config)
{
cout<<房间信息未填写完整请重新填写
return
}
else
{
ifstream instream
ofstream outstream
instreamopen(E\\roomtxt)
RBasePtr temp_ptrNULL
readfile(instreamtemp_ptr) 读取文件中房间信息存入temp_ptr中
RBasePtr tt_ptrtemp_ptr
时指针获取指针尾部指针新房间信息加指针尾部写入时候会相应写文件尾部
while(tt_ptr>nextNULL) tt_ptrtt_ptr>next
if(check(temp_ptrtemproom_number))
{
cout<<房间编号已存请核查<
}
else
{
RBasePtr ptrnew RoomBase
ptr>the_roomtemp
tt_ptr>nextptr
}
outstreamopen(E\\roomtxt)
writefile(outstreamtemp_ptr) 新链表信息写入文件中
}
}
void RoomBaseremove(Room temp)
{
int flag0 设置标记检验删否成功
ifstream instream
ofstream outstream
instreamopen(E\\roomtxt)
RBasePtr temp_ptrNULL
readfile(instreamtemp_ptr) 读取文件中房间信息存入temp_ptr中
if(check(temp_ptrtemproom_number))
{
cout<<存编号<
}
RBasePtr beforetemp_ptraftertemp_ptr 创建前指针指针方便删应元素
if(before>the_roomroom_numbertemproom_number)
{
temp_ptrtemp_ptr>next 果第元素删元素直接删
afterNULL 元素已删直接写入文件中设置afterNULL跳while循环
flag1
}
while(afterNULL)
{
if(after>the_roomroom_numbertemproom_number)
{
before>nextafter>next
flag1 删成功设置标志1
}
else
{
beforebefore>next
afterbefore>next
}
}while循环结束
if(flag0) cout<<存编号<
{
outstreamopen(E\\roomtxt)
writefile(outstreamtemp_ptr) 新链表写入文件
}
}
void InfoBaseadd(IBasePtr& temp_ptrint cnumint rnum) 增加预定信息
{
if(cnum<0||rnum<0)
{
cout<<请填写正整数编号
return
}
else
{
IBasePtr ptrnew InfoBase
ptr>customer_numbercnum
ptr>room_numberrnum
ptr>nexttemp_ptr
temp_ptrptr
}
}
void InfoBaseremove(IBasePtr& temp_ptrint cnum) 退订删相关预定信息
{
IBasePtr beforetemp_ptraftertemp_ptr
if(before>customer_numbercnum)
{
temp_ptrtemp_ptr>next
cout<<退订成功<
}
while(afterNULL)
{
if(after>customer_numbercnum)
{
before>nextafter>next
cout<<退订成功<
}
else
{
beforebefore>next
afterbefore>next
}
}
}
bool InfoBasecheck(IBasePtr& temp_ptrint cnum) 检查该客户否预定房间
{
IBasePtr ptrtemp_ptr
while(ptrNULL)
{
if(ptr>customer_numbercnum)
return true
else ptrptr>next
}
return false
}
bool InfoBasecheckall(IBasePtr& temp_ptrint cnumint rnum)
{
IBasePtr ptrtemp_ptr
while(ptrNULL)
{
if(ptr>customer_numbercnum)
{
cout<<该客户已预订房间<
}
else if(ptr>room_numberrnum)
{
cout<<该房间已预订<
}
else ptrptr>next
}
return false
}
void InfoBaseoutput(IBasePtr& temp_ptr)
{
if(temp_ptrNULL)
{
cout<<没房间预订信息查<
}
else
{
IBasePtr ptrtemp_ptr
while(ptrNULL)
{cout<
#include
#include
#include Infoh 包含类定义
#include info_funh 包含函数定义
using namespace info_space
int main()
{
int choice
int customer_numberroom_number
CBasePtr CB_ptrNULL
RBasePtr RB_ptrNULL
IBasePtr IB_ptrNULL
Customer the_customer
Room the_room
ifstream in_customer
in_customeropen(E\\customertxt) 开存储客户信息文件
ifstream in_room
in_roomopen(E\\roomtxt) 开存储房间信息文件
label_menu
cout<<房间预订菜单<
if(choice>6||choice<0)
{
cout<<输入数字误请重新输入<
goto label_menu
}
switch(choice)
{
case 1{
cout<<请输入客户编号房间编号<
cout<<房间编号:<
readfile(in_customerCB_ptr) 读取文件客户信息
if(check(CB_ptrcustomer_number))
{
cout<<客户编号存请核查<
system(cls)
goto label_menu
}
readfile(in_roomRB_ptr)读取文件房间信息
if(check(RB_ptrroom_number))
{
cout<<房间编号存请核查<
system(cls)
goto label_menu
}
if(IB_ptr>checkall(IB_ptrcustomer_numberroom_number)) 客户没预订房间房间没预订
IB_ptr>add(IB_ptrcustomer_numberroom_number)
break
}
case 2
{
cout<<请输入客户编号:<
readfile(in_customerCB_ptr) 读取文件客户信息
if(check(CB_ptrcustomer_number))
{
cout<<客户编号存请核查<
system(cls)
goto label_menu
}
if(IB_ptr>check(IB_ptrcustomer_number)) 检查该客户否已预定房间
IB_ptr>remove(IB_ptrcustomer_number)
else
{
cout<<该客户未预定房间请核查<
system(cls)
goto label_menu
}
break
}
case 3
{
IB_ptr>output(IB_ptr)
break
}
case 4
{
int choose
cout<<1………………增加客户信息<
switch(choose)
{
case 1
{
string name
int number1
Customer temp
cout<<请输入客户名称编号:<
cout<<客户编号:<
tempnamename tempnumbernumber
CB_ptr>add(temp)
break
}
case 2
{
string name
int number1
Customer temp
cout<<请输入客户编号:<
tempnamename tempnumbernumber
CB_ptr>remove(temp)
break
}
case 3
{
system(cls)
goto label_menu
}
}
break
}
case 5
{
int choose
cout<<1………………增加房间信息<
switch(choose)
{
case 1
{
int number1
int level0
string config
Room temp
cout<<请输入房间编号等级(15级)配置(高级优良中等普通):<
cout<<房间等级:<
cout<<房间配置:<
temproom_numbernumber
temproom_levellevel
temproom_configconfig
RB_ptr>add(temp)
break
}
case 2
{
int number1
int level0
string config
Room temp
cout<<请输入房间编号:<
temproom_numbernumber
temproom_levellevel
temproom_configconfig
RB_ptr>remove(temp)
break
}
case 3
{
system(cls)
goto label_menu
}
}
break
}
case 6
{
readfile(in_customerCB_ptr)
readfile(in_roomRB_ptr) 读取两文件信息
CBasePtr cptrCB_ptr
RBasePtr rptrRB_ptr 修改两变量指容定义两时变量
cout<<客户信息:<
{
cout<<没客户信息<
}
while(cptrNULL)
{
if(find_info(IB_ptrcptr>the_customernumber))
{
cout<
else cout<
cptrcptr>next
}
cout<<房间信息:<
{
cout<<没房间信息<
}
while(rptrNULL)
{
if(find_info(IB_ptrrptr>the_roomroom_number))
{
cout<
<
else cout<
<
rptrrptr>next
}
break
}
case 0
{
exit(0)
}
defaultgoto label_menu
}
pause()
system(cls)
goto label_menu
return 0
}
结束语
通段时间设计编写该酒店理系统终较完整框架现心体会总结:
时间仓促暂时简单理系统设计系统程中感受关软件工程方面知识实际工作中应开发该系统程中始终坚持项原相应目标拢:
1实
系统应该户需求终目标方便户高原进融入先进理验技巧该系统努力根户实际需求功情况力求满足现未种需求真正理决策提供强力支持
2稳定
软件设计硬件制造中稳定压倒切理系统通选先进开发软件成熟网络结构安全数库配合硬件优化选型保证系统性容错性
3维护扩展方便
系统设计均遵循现行标准进行提高系统开放性方便业务扩展系统扩容便软硬件维护升级等系统适应企业未需
酒店理系统市场前景广阔利润回报丰厚事实酒店业身早进入微利甚亏损时代加市场竞争激烈软件开发商单项目利润前导致实力足开发商淘汰出局该系统酒店失原开发商技术支持更换软件系统造成投资浪费酒店业涉信息系统产品众缺乏统行业标准供应商相互协调方面造成资源浪费互兼容方面阻碍整体水提高法完全符合酒店需
技术开发酒店需求酒店IT现存需求供矛盾:
技术功酒店需求错位目前理软件系统未效解决酒店目前面关键问题销售成控制现酒店理软件部运作理诉求点提高效率谈直接降低成某种程度酒店运电脑工成未必降低甚增加运计算机仅理量化程度提高数流转速度加快然酒店迫眉睫矛盾行业景气情况总权衡投入成产出效益重中国酒店行业尚处较困难现阶段开源节流尤重直接市场技术求日益凸显目前酒店直接面市场销售手段停留拜访电话发传真等传统形式现软件直接帮助开源节流目前技术需求差距软件开发商发出样感叹:目前酒店软件酒店营特色客直接影响酒店愿意IT方面投入更
二科技服务体错位目前酒店IT未直接客户服务作幕英雄进行辅助理
总体言国酒店IT技术开发现状:1需求明确酒店项目工程性强产品化足开发商总体成居高研发缺乏原动力2没行业统标准厂商政市场分化导致产品整合难度3产品推广赖行政手段关系网抑制新技术引进技术创新利形成产品特色质量控制4国外优秀品牌低价进入垄断国高星级市场开发商利润空间微
参考文献
[1] 张海藩软件工程导(第五版)清华学出版社2008年
[2](美)Walter Savitch C++面象程序设计(第6版)清华学出版社2009年
[3] 彭伟民基需求酒店理系统建模实现微机发展200510
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档