文档名称:结构化详细设计说明书
项目名称:酒店住房管理系统
项目负责人:
文档拟制人: 文档校对人: 文档审核人: 文档批准人: 开发单位:
目录
1、引言
1.1 编写的目的„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.2 1.2 项目背景„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.2 1.3 参考文献 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.2
2、任务概述
2.1 详细设计目标„„„„„„„„„„„„„„„„„„„„„„„„„„„„2 2.2详细设计任务„„„„„„„„„„„„„„„„„„„„„„„„„„„„2 2.3 功能模块概述 „„„„„„„„„„„„„„„„„„„„„„„„„„„2 2.4运行环境 „„„„„„„„„„„„„„„„„„„„„„„„„„„„„.3 2.5系统实现平台 „„„„„„„„„„„„„„„„„„„„„„„„„„„.3 2.6条件与 „„„„„„„„„„„„„„„„„„„„„„„„„„„„.3
3、实现关键技术
3.1 ADO数据访问技术„„„„„„„„„„„„„„„„„„„„„„„„„„3 3.2 vc++6.0主要控件的使用„„„„„„„„„„„„„„„„„„„„„„„4 3.3 常用SQL语句的使用„„„„„„„„„„„„„„„„„„„„„„„„„4 3.4 Sql server 2000的使用„„„„„„„„„„„„„„„„„„„„„„„„4
4、实现采用的设计模式„„„„„„„„„„„„„„„„„„„„„„„„„4 5、各模块详细设计及具体算法
5.1登陆模块 „„„„„„„„„„„„„„„„„„„„„„„„„„„„.„5 5.2删除用户模块„„„„„„„„„„„„„„„„„„„„„„„„„„„„5 5.3增加用户模块„„„„„„„„„„„„„„„„„„„„„„„„„„„„6 5.4密码修改模块„„„„„„„„„„„„„„„„„„„„„„„„„„„„7 5.5 客房信息查询模块„„„„„„„„„„„„„„„„„„„„„„„„„„7 5.6员工信息查询与修改模块„„„„„„„„„„„„„„„„„„„„„„„8 5.7旅客信息查询模块„„„„„„„„„„„„„„„„„„„„„„„„„„9 5.8订房模块„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.10 5.9退房模块„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.11 5.10.财务查询模块„„„„„„„„„„„„„„„„„„„„„„„„„„..12
6、测试用例
6.1登陆模块„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.13 6.2添加新用户模块„„„„„„„„„„„„„„„„„„„„„„„„„„.14 6.3删除用户模块„„„„„„„„„„„„„„„„„„„„„„„„„„„.15 6.4修改密码模块„„„„„„„„„„„„„„„„„„„„„„„„„„„.15 6.5客房查询模块„„„„„„„„„„„„„„„„„„„„„„„„„„„.15 6.6员工信息查询,编辑模块„„„„„„„„„„„„„„„„„„„„„„.16 6.7旅客信息查询模块„„„„„„„„„„„„„„„„„„„„„„„„„.16 6.8订房模块„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.16 6.9退房模块„„„„„„„„„„„„„„„„„„„„„„„„„„„„„.16 6.10财务查询模块„„„„„„„„„„„„„„„„„„„„„„„„„„..16
1
1.引言:
1.1 编写目的:
对概要设计结果进一步细化,给出目标系统的精确描述,以便在编码阶段直接翻译成计算机上能够运行的程序代码,即确定系统的算法和数据结构。
1.2 项目背景:
随着信息时代的到来,人们的时间越来越宝贵,所以对效率的要求越来越高,所以我们
为了酒店能在效率化的社会站稳脚跟,我们得更多地考虑到顾客的要求,以及顾客住房过程中可能会遇到的问题。为了保证软件质量,我们在经过需求分析和概要设计阶段后,进一步细化我们的系统设计,以便能设计出一个符合人们的需求并能运行较好的软件系统。
说明:
本项目的名称:酒店住房管理系统 本项目的应用范围:中型酒店
开发者:深圳大学计算机科学与技术软件小组 用户:开发人员
1.3 参考资料: 书名/文档 结构化方法需求分析规格说明书 软件工程 软件工程与软件开发工具 软件工程 软件工程 作者 出版社 出版日期 2006年1月 2004年9月 2004年5月 2004年7月 张海潘(编著) 人民邮电出版社 张虹(主编) 王庆育 编著 清华大学出版社 清华大学出版社 任胜兵、邢琳编 北京邮电出版社 2. 任务概述:
2.1 详细设计目标:
具体地设计所要求的系统,得出新系统的软件详细规格,同时要求设计出的规格简明易懂,便于下一阶段用C++语言在计算机上实现。
2.2详细设计任务:
(1)算法过程的设计:
本详细设计采用的是流程图的方式来表达每个处理过程的算法; (2)数据结构的设计:
对于处理过程中涉及的概念性的数据类型进行确切的定义; (3)测试用例设计:
测试用例包括输入数据和预期结果等内容。
2.3 功能模块概述
本系统共有10个功能模块,分别为财务查询模块,员工信息查询和修改模块,客房信息查询模块,旅客信息查询模块,订房模块,退房模块,增加用户模块,删除用户模块,密码修改模块,登陆模块。
2
该系统分经理,员工,系统管理员三种模式登陆,并且每种模式各自权限又各不相同。经理权限为员工信息选询和修改,财务查询。员工权限为客房信息查询,旅客信息查询,订房,订房。系统管理员权限为增加用户,删除用户。其中密码修改分别为三种模式的用户共享。
2.4运行环境:
Pentium 3, Pentium 4或更高档PC台式机,笔记本电脑 内存:128M以上 硬盘:10G以上
输入输出设备:扫描仪、打印机等。
数据库软件:Microsoft SQL Server 2000 编程工具、编程语言:C、C++
编译软件:Microsoft Visual Studio C++ 6.0 操作系统:
Microsoft Windows 2003 Microsoft Windows Xp1/ Xp2 和其他软件系统的数据接口:ODBC
2.5系统实现平台
(1)编程语言,vc++6.0
(2)软件运行平台 windows 2003,xp1/xp2 (3) 数据库: sqlserver 2000
(4) 硬件要求,cpu:1.0GZ , 256RMB 2.6条件与:
要求酒店工作掌握一般的计算机操作,会中英文输入,同时还要有三四个有一定计算机水平的工人能对本系统进行维护。要求用户界面有好,提供帮助。
3、实现关键技术:
3.1 ADO数据访问技术
ADO是ActiveX Data Objects 的缩写,其提供对各种数据库访问的标准接口。 包括的主要对象有:
连接对象Connection:连接时必须指定要连接到的数据源以及连接所使用的用户名和口令等信息。
命令对象Command:可以通过已建立的连接发出命令,对数据源进行指定的操作。 记录集对象Recordset:查询命令可以将查询结果存储在本地,这些数据以“行”(记录)为单位,返回数据的集合被称为记录集。
字段对象Field:一个记录集行包含一个或多个字段。如果将记录集看作二维网格,字段将排列起来构成列。每一字段(列)都分别包含有名称、数据类型和值的属性。 3.2 vc++6.0主要控件的使用:
如DateGrid, ADO等与数据库连接与操作相关的控件的基本设置与使用。 还有基本对话框,Eidt Box,Check Box,Combox Box 等基本控件的基本操作。
了解windows的消息响应函数,和基于对话框的编程等基本原理及思想。
3
3.3 常用SQL语句的使用:
如select,update,delete等基本sql语句的使用。 3.4 Sql server 2000的使用:
如创建基本表,视图,设置主键等基本操作。
4、实现采用的设计模式:
将对数据库的操作制作成COM组件,实现数据库开发的三层体系结构,即数据库、中间层和前端应用程序。如登陆模块的实现则是采用了三层设计的结构。
用户名和密码以及类型存放在基本表Users中。
数据库的连接以及执行具体的sql语句用类ADOConn 封装起来。
如其成员函数 void ADOConn::OnInitADOConn()则是用来初始化连接数据库。 BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL) 则是用来执行sql。 中间层则是通过CUsers类实现。
其直接提供了对用户名,密码,类型等操作,如void CUsers::GetData(CString cUserName),可以提取相应用户名的密码。void CUsers::SetPwd(CString pwd)则是修改相应用户的密码。
而这些成员函数的功能的实现又离不开对ADOCom类的操作来具体实现。
如void CUsers::GetData(CString cUserName)函数实现细节如下,向定义一个ADOConn m_AdoConn;对象,而后通过其成员函数m_AdoConn.OnInitADOConn();实现初始化,这时Adocom对象连接到了具体的数据库上,(即Users表上)。再通过其执行具体sql语句(\"SELECT * FROM SYSTEM WHERE UserName='\" + cUserName + \"'\";)取出相应用户的密码。然后返回给调用函数。
前端用户层则是通过vc++6.0的相应控件的操作来达到目的的。 如登陆对话框中用CString username来代表Edit Box控件,用户通过该控键输入用户名后,通过调用UpdateData(true)函数则把控件上输入的信息传到变量username上。再通过中间层CUsers实现对Users表的查询操作,以到达检验信息是否符合。
4
5、 各模块详细设计及具体算法
5.1 登陆模块:
方法名: 类型修饰符: 参数: 出错消息:
OnLogin bool
CString username,CString userpassword,CString type 1.用户名为空 2.密码为空 3.用户类型不匹配
访问的文件: 改变的文件: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
数据库Hotel里的SYSTEM表(含用户名,密码,类型)如下 无
如下流程图
用户名,用户密码,用户类型
当发生错误时,调用相应的错误信息,并返回false 成功则调用主界面对话框,并放回true
存储分配: 条件: 测试要点:
分配两个CString的成员变量用于存储用户名和密码,int型的存用户类型 无
看能否正确识别用户类型
5.2.密码修改模
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
OnModifyPwd Bool 无
1.用户名为空 2.原密码为空或不正确 3.两次新密码输入不匹配 数据库Hotel里的SYSTEM表(含用户名,密码,类型) SYSTEM表 如下流程图
用户名,用户原密码,用户新密码
当发生错误时,调用相应的错误信息,返回false。 成功则显示密码修改成功信息,返回true
存储分配: 条件: 测试要点:
分配四个CString的成员变量用于存储用户名和密码(新旧) 无
前后密码输入是否一致
CModifyPwdDlg
5
再输入密码修改模块流程图如左: 是输入名,新旧密码不存在该用户名?否否旧密码一致?是两次新密码确认成功?是成功修改密码否
5.3增加用户模块:
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
OnAddUser Bool 无
1.用户名为空或已存在 2.密码为空 3.用户类型不匹配 数据库Hotel里的SYSTEM表(含用户名,密码,类型) SYSTEM表 如下流程图
用户名,用户新密码,确认密码
当发生错误时,调用相应的错误信息。 成功则显示修改成功信息 分配三个CString的成员变量用于存储用户名和密码 无
该用户名是否已存在
CAddUserDlg
存储分配: 条件: 测试要点:
6
再输入增加用户模块流程图如右: 是输入用户名,密码名为空?否是码为空?否出错提示是是否已存在该用户名?否是密码为空?否出错提示并返回主页面是用户类型权限比登陆高?否添加成功
5.4 密码修改模块
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 程序逻辑:
接口: 调用形式:
传入参数:
OnModify Bool 无
1用户名不存在。 2.前后两次密码不一致 数据库Hotel里的SYSTEM表(详细如表下) SYSTEM表 如下流程图
用户名,用户原密码,用户新密码,用户确认密码
CModifyDlg
7
5.5 客房信息查询模块:
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
OnModify Bool 无
1用户未选择客房类型 2.查询条件不满足 数据库Hotel里的ROOM表(详细如表下) ROOM表 如下流程图
客房类型,客房状态,客房价格,房间人数, 成功则显示相应房间的信息
用四个CCombox控件来代表查询的条件 无
对不同类型的查询条件是否都可以得到相应的结果
CModifyDlg
存储分配: 条件: 测试要点:
5.6员工信息查询与修改模块:
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
OnDelete Bool 员工姓名
未选择相应的用户
数据库Hotel里的WAITER表(详细如表下) WAITER表 如下流程图
员工姓名
删除成功提示信息,返回true 无 无
对不同类型的查询条件是否都可以得到相应的结果
CEmployeeDlg
存储分配: 条件: 测试要点:
8
员工信息查询与修改流程图如右:
再输入是员工姓名为空?否不成功查找成功?成功输入新信息有员工信息有相同?否不成功更新数据库?成功返回主画面
5.7.旅客信息查询模块
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 调用的方法: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
OnSearch Bool
CcustomerDlg
旅客姓名
未选择相应的用户
数据库Hotel里的CUSTOMER表(详细如表下) CUSTOMER表 略
旅客姓名
若有记录,则输出相应的员工信息, 无 无
对不同类型的查询条件是否都可以得到相应的结果
存储分配: 条件: 测试要点:
9
5.8订房模块:
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 调用的方法: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
OnOrderRoom Bool
员工姓名,客户姓名,客户年龄,日期,房间号,定金 1. 客房已订或预定 2.员工姓名或客户姓名等信息不全 数据库Hotel里的OrderList表以及Room表(详细如表下) CUSTOMER表,Room表
如下流程图
员工姓名,客户姓名,客户年龄,日期,房间号,定金 若成功,则提示成功订房信息,否则显示相应的出错信息 无 无
1.客房为维修或为入住情况, 2.各种条件缺失时是否能检测到
COrderRoomDlg
存储分配: 条件: 测试要点:
再输入输入客房旅客信息客房编号为空?否客房已入住?否旅客姓名为空?否入住日期为空?否统计定金否收取定金成功?是打印订单订房模块流程图如右: 是是是写入数据库成功?否返回主界面是
10
5.9退房模块:
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 调用的方法: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
OnCheckout Bool 无
1. 客房为空 2. 客人信息不存在 3.没相应的住房记录 数据库Hotel里的RETREAT表(详细如表下) RETREAT 表
如下流程图
客户姓名,房间号码
若成功,则提示成功退房信息,否则显示相应的出错信息 无 无
1.客房为空闲或为维修情况, 2.各种条件缺失时是否能检测到
CCheckoutDlg
存储分配: 条件: 测试要点:
再输入是编号客房为空?否数据库存在该编号?是已入住?否是客人信息一致?是统计消费金额否否退房模块流程图如右: 否是否已付款?是打印退单否更新数据库?是退回主界面
11
5.10.财务查询模块:
类名: 方法名: 类型修饰符: 参数: 出错消息: 访问的文件: 改变的文件: 调用的方法: 程序逻辑:
接口: 调用形式:
传入参数: 传出参数:
OnCheckout() Bool 无
1. 输入的日期有误
数据库Hotel里的Finance表(详细如表下) Finance表
如下流程图 日期
若成功,则显示相应的财务信息,否则显示相应的出错信息 无 无
CFinanceDlg
存储分配: 条件: 测试要点:
再输入财务查询模块流程图如右: 否确认成功?是进入财务查询画面是输入查询要去时间为空?否读取数据库?成功显示财务信息否提示非空不成功是否退出?是主画面
12
6、测试用例:
从下面的测试用例可以看出,我们的工程界面非常友好,当您操作错误或者您的权限超过了允许的范围时,我们都会有相当的对话框提示。 6.1登陆模块: (1)用户名为空:
(2)当用户密码为空时,会弹出一个对话框来提示用户密码不为空; (3) 当用户明存在,但密码错误时也会有相应的对话框来提示; (4)用户类型不配时,也会出现如图所示的对话框:
6.2添加新用户模块:
(1)若登陆用户的类型非管理员,则会弹出无权限修改的对话框; (2)党新增的用户名为空时,也会弹出相应的提示对话框; (3)两次用户输入密码不一致,显示如下所示:
13
(4)若用户已存在,会弹出以下的对话框:
6.3删除用户模块:
(1)登陆用户的类型非管理员,则会弹出无权限修改的对话框;
(2)没有选中删除的用户,也会有相应的提示框进行提示;
6.4修改密码模块:
当用户名不存在、输入的原密码与已有密码不一致、或两次新密码不一致时会弹出相对应的提示;
6.5客房查询模块:
我们列出的查询条件有按类型查询(入住,维修,空闲)、按价格查询、按客房人数查询、按客房等级查询和直接按房间编号查询,如果你把所有条件都填上的话就得使所有条件都满足才能有显示,当你只填了一部分是,其他空白的部分就可以是任意的在我们许可范围内的数值,(注:房间号没填的时候默认显示为“0”),如下所见的是我们输入所有相应的查询条件以后的图形显示:
14
6.6员工信息查询,编辑模块 1.按员工编号查询 2.按员工姓名查询 3.删除员工 4.编辑员工信息
6.7旅客信息查询模块 1.输入旅客名
6.8订房模块 1. 客房号是否空 2. 该客房是否入住 3. 旅客姓名是否空 4. 定金数额是否空
6.9退房模块 1. 客房号是否空 2. 该客房是否空闲 3. 旅客姓名是否空 4. 旅客是否定了该客房 6.10财务查询模块 1. 按日期查询 2. 按员工姓名查询
15