1、文档编号:LMS-3版 本 号: V1.0 文档名称: 详细设计阐明书 项目名称: 餐馆点菜系统 项目负责人: 王晓凤、曹春美 编写: 王晓凤、曹春美 12月11日校对: 曹春美 12月12 日审核: 王晓凤 12月12日目 录1 引言41.1 编写目41.2 项目背景41.3 定义41.4 参照资料42 总体设计43 程序描述73.1 主模块73.2 点菜模块8 3.2.1菜编号查验模块9 3.2.2有关信息获取模块10 3.2.3点菜登记模块113.3 修改模块11 3.3.1 加菜模块13 3.3.2删菜模块14 3.3.3 查询模块143.4 删除菜单模块16 3.4.1 菜单查询模块
2、17 3.4.2有关信息获取模块18 3.4.3 删菜模块193.5 菜单查询模块203.6 登陆模块(建立连接)233.7 退出模块243.8 结账模块243.9 系统操作模块24 3.9.1 系统操作权限查验24 3.9.2菜单库操作24 1 引言1.1 编写目通过对该餐馆点菜系统项目进行详细调查研究,初拟系统实现报告,对软件开发中将要面临问题及其解决方案进行可行性分析。明确开发风险及其所带来经济效益。本报告经审核后,交由软件经理审查。该需求规格阐明书采访对象是XXX餐馆点菜系统软件小组研发工程师、测试工程师、销售工程师,版权归XXX所有,禁止外传。1.2 项目背景项目名称:餐馆点菜系统
3、顾客:餐馆 阐明:随着国内市场经济迅速发展,各行业都呈现出生机勃勃发展景象。在餐饮业竞争越来越激烈今天,酒店如何提高服务质量、管理能力显得越来越重要。如果单凭手工操作,不但效率低下,并且会极大地影响到酒店服务质量。酒店餐饮点菜系统作为餐饮管理规划一某些,集点菜、结帐、查询、记录、设立等各种功能为一体,对于提高餐饮管理效率、增长收入发挥不可代替作用。1.3 定义餐馆点菜系统是合用在餐馆,酒店等公共就餐场合一款软件,该系统开发可以加快客人就餐速度,以便商家运营,变化老式点餐模式。本系统用ASP开发,运用此系统,使得前台服务不再和此前同样使用纸笔记录,只是轻点键盘就能完毕,减少错误地发生,避免不必要
4、损失。1.4参照资料1张海藩.软件工程导论(第3版) 人民邮电出版社2费贤举.Java面向对象程序设计 中华人民共和国电力出版社2 总体设计主模块顾客界面子模块系统操作删菜加菜输出顾客输入点菜点菜模块 选取桌号菜单确认菜单记录选取菜系输入数量选取菜品数据库操作操作命令生成数据库查询 加菜模块输入菜名、单价菜单确认菜单记录查询到该菜添加进该顾客菜单数据库操作操作命令生成数据库查询系统操作模块子模块调用顾客界面系统操作权限查验数据记录数据恢复数据备份系统设立菜单库操作输出输入 菜单库系统事务解决顾客界面获取记录数据库操作更新当前记录ID查验输入ID移动到指定ID删除记录加入记录输出更新显示输入数据
5、库查询3 程序描述3.1 主模块l 功能建立与数据库连接获取系统设立运营主对话框依照输入调用子模块退出系统时断开与数据库连接l 输入项目顾客鼠标点击输入l 程序逻辑见右图l 存储分派内部数据:数据库连接con = DriverManager.getConnection 数据库连接指针stmt = con.createStatement(); 数据库连接批示子对话框jiudian.diancai() 点菜对话框Jiudian.xiugai() 修改菜单对话框 Xiugai.chauxn() 查询 Xiugai.tianjia() 添加 Xiugai.shanchu() 删除Jiudian.cha
6、xun() 菜单查询对话框Jiudain.jiezhang() 系统操作对话框l 测试要点数据库连接状况:正常状况,数据库文献缺少,外部系统异常。系统设立获取:正常状况,外部系统异常。对顾客输入响应:合法输入,可以正常调用子模块; 非法输入,系统能否辨别,并作出响应(提出警告); 子模块异常状况,系统能否及时做出响应。 初始化结账模块菜单查询模块 删菜模块 加菜模块 点菜模块3.2 点菜模块l 功能按键进行点菜,建立菜单运营点菜对话框数据库调用和更改、保存,以修改数据库中汇总菜单信息l 输入项目 菜名字,桌号,菜系,或者是价格;l 输出项目顾客已点菜有关信息(单价,数量,菜编号);l 程序逻辑
7、初始化菜单点菜 noyes输入菜名(菜系,桌号) yes 输入数量 结束 加入菜单l 存储分派内部数据:数据库 Connection con 数据库连接指针顾客界面 String name 欲点菜名称内部参数String m 当前顾客桌号l 测试要点模块正常运营流程顾客输入数据检查(顾客桌号),涉及数据合理性检查,以及合法性检查数据库操作数据库连接异常时响应状况 3.3 修改模块3.3.1加菜模块l 功能运营加菜对话框查验输入菜编号对合法输入登录加菜信息显示有关信息(本次加菜操作信息,以点菜有关信息)l 输入项目菜编号(顾客输入)l 输出项目有关信息(本次加菜操作信息,以点菜有关信息)l 程序
8、逻辑 连接数据库连接数据库 no yes 加菜 yes通过桌号在数据库中找到菜单no查询菜单并进行加菜操作 断开数据库 保存数据库 结束l 接口调用形式:xiugai()传入参量:con(数据库连接指针常量)提供数据库连接传出参量:无l 存储分派内部变量:数据库 Connection con 数据库连接指针Statement stmt 数据库查询成果集指针顾客界面cname 欲加菜名称m 顾客桌号显示l 测试要点模块正常工作流程对输入查验,涉及输入值合法性与合理性检查数据库连接异常能否做出恰当解决数据库数据异常时能否判断并予以恰当解决3.3.2删菜模块l 功能运营删菜对话框查验输入菜编号对合法
9、输入登录点菜信息显示有关信息(本次删菜操作信息,尚未删除菜单有关信息)l 输入项目菜编号(顾客输入)l 输出项目有关信息(本次删菜操作信息,尚未删除菜单信息)l 程序逻辑 连接数据库 删菜yesno yes通过桌号在数据库中找到菜单 查询菜单并进行删菜操作删除此项并释放空间保存数据库断开数据库 结束l 存储分派内部变量:数据库 Connection con 数据库连接指针Statement stmt 数据库查询成果集指针 顾客界面 cname 欲加菜名称m 顾客桌号显示l 测试要点模块正常工作流程对输入查验,涉及输入值合法性与合理性检查数据库连接异常能否做出恰当解决数据库数据异常时能否判断并予
10、以恰当解决3.3.2.1顾客输入查验模块l 功能查验输入桌号与否合法(即与否存在与该桌号相应菜单记录)l 输入项目顾客桌号(整型常数)l 输出项目查验成果(BOOL值)l 程序逻辑生成数据库查询语句调用数据库查询模块IF返回成果集为空(不存在该桌号)返回”非法桌号”ELSE返回”合法桌号”l 测试要点数据库连接正常时输入合理合法参数输入参数不合理输入参数不合法数据库连接异常;数据库数据异常(读者姓名为空)3.3.2.2菜名称查验模块l 功能查验输入菜编号与否合法l 输入项目菜编号(整型常量)l 输出项目查验成果(BOOL值)l 程序逻辑生成数据库查询语句调用数据库查询模块IF返回成果集为空(不
11、存在这种菜)返回”非法菜名”ELSE返回”合法菜名”l 存储分派局部变量:数据库menu Statement stmt 数据库查询成果集指针l 测试要点数据库连接正常数据库数据正常输入编号合理合法输入编号不合理输入编号不合法数据库数据异常数据库连接异常3.3.2.2查询模块l 功能查询顾客与否有点该菜l 输入项目菜名称(字符串)、桌号(字符型常量)输出项目该菜与否在该顾客菜单中,对话框提示。如存在,则显示该菜信息。l 程序逻辑生成数据库查询语句调用数据库查询模块IF返回成果集为空(菜单中不存在这种菜)返回”不存在该菜”ELSE返回”该菜信息”l 存储分派局部变量:数据库menu Stateme
12、nt stmt 数据库查询成果集指针l 测试要点数据库连接正常数据库数据正常输入桌号合理合法输入桌号不合理输入桌号不合法数据库数据异常数据库连接异常3.5 菜单查询模块l 功能依照给定查询条件,查询数据库,获取菜单信息l 输入项目该顾客桌号(字符型常量)l 输出项目查询成果在对话框中显示(菜名、价格、数量)初始化对话框l 程序逻辑查询生成查询命令查询数据库显示成果列表退 出l 存储分派内部变量:数据库内部数据:数据库 menu rr = con.createStatement(); ResultSet rr=stmt.executeQuery(select * from menu);数据库查询
13、命令 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) 数据库查询连接 con = DriverManager.getConnection(jdbc:odbc:menu,) l 测试要点数据库连接正常数据库数据正常获得对的查询成果并显示数据库数据异常给出警告数据库连接异常给出警告3.5.1数据库查询模块l 功能依照输入查询命令查询数据库l 输入项目查询命令(传入参数)l 输出项目数据库查询成果(返回值);数据库查询成果集(公共变量)l 程序逻辑查询数据库IF 操作成功返回”操作成功”ELSE返回”操作失败”l 存储分派 数据库:menu 查询参数stmt
14、= con.createStatement(); stmt.executeUpdate(insert); 数据库查询命令 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) con = DriverManager.getConnection(jdbc:odbc:menu,) 数据库查询连接l 测试要点数据库连接正常输入查询命令合法获取非空查询成果集返回“真”返回值,查询成果保存在查询成果集中获取空查询成果集返回“真”返回值,查询成果集为空输入查询命令不合法返回“假”返回值,查询成果集指针指向空,给出警告数据库连接异常3.5.2菜单显示模块l 功能按一定格式列
15、表显示查询成果,并依照顾客规定重排列l 输入项目查询成果集(传入参数);输出项名称(传入参数);查询成果表参数,涉及行数、列数(传入参数)l 输出项目顾客界面显示l 程序逻辑初始化(设立行数、列数、列名称,载入输入查询成果集内数据)显示列表WHILE 顾客未输入“返回”IF 顾客拖动列标题栏重新设立列位置排序刷新显示返回l 存储分派内部数据:数据库 menu stmt = con.createStatement(); stmt.executeUpdate(insert);数据库查询命令 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) con = Driv
16、erManager.getConnection(jdbc:odbc:menu,) 数据库查询连接l 测试要点查询成果正常查询成果集为空显示消息框提示查询成果集不为空正常显示成果列表,并依照顾客输入调节输出查询成果异常显示警告3.6结账模块功能依照输入规定记录数据库中各种信息,生成成果列表显示l 输入项目数据库连接(传入参数)l 输出项目无l 程序逻辑初始化(获取数据库连接,显示对话框)WHILE 顾客未输入”返回”显示控制IF 顾客输入”开始”禁止”开始”按钮生成数据库查询命令查询数据库显示查询成果使能”开始”按钮关闭对话框l 存储分派 内部数据:数据库 menu rr = con.creat
17、eStatement(); ResultSet rr=stmt.executeQuery(select * from menu);数据库查询命令 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) 数据库查询连接 con = DriverManager.getConnection(jdbc:odbc:menu,) l 测试要点数据库连接正常模块正常流程,对顾客界面控制,对子模块调用数据库连接异常给出警告3.6.1 查询命令生成模块l 功能依照顾客界面输入生成查询命令,并提供一定对输入数据检查l 输入项目顾客界面各个输入变量(公共变量)l 输出项目数据库查询命
18、令(返回值)l 程序逻辑读入界面设立生成查询条件生成输出项生成查询语句返回查询语句l 存储分派数据库 menu查询语句:Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);con = DriverManager.getConnection(jdbc:odbc:menu,);stmt = con.createStatement();ResultSet rs=stmt.executeQuery(select);l 测试要点顾客输入数据合理合法生成对的数据库查询语句顾客输入数据不合理或不合法给出警告3.6.2数据查询模块l 功能依照输入数据库查询命令,查询数据库数
19、据,生成查询成果集l 输入项目查询命令(传入参数)l 输出项目查询成功/失败标志(返回值);查询成果集(公共变量)l 程序逻辑查询数据库IF 操作成功返回”操作成功”ELSE返回”操作失败”l 存储分派内部数据:数据库 menu rr = con.createStatement(); ResultSet rr=stmt.executeQuery(select * from menu);数据库查询命令 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) 数据库查询连接 con = DriverManager.getConnection(jdbc:odbc:me
20、nu,) l 测试要点数据库连接正常查询命令合法获取成果集为空返回“真”,成果集为空获取成果集非空返回“假”,成果集记录相应成果查询命令非法返回“假”,给出警告数据库连接异常3.6.3删除菜单模块l 功能将已经结过账菜单从数据库中删除l 输入项目查询成果集(传入参数);输出项名称(传入参数);查询成果表参数,涉及行数、列数(传入参数)l 输出项目顾客界面显示l 程序逻辑初始化(设立行数、列数、列名称,载入输入查询成果集内数据)显示列表WHILE 顾客未输入“返回”IF 顾客拖动列标题栏重新设立列位置排序刷新显示返回l 接口调用形式:CListShowDlg:ShowList(const _Re
21、cordsetPtr pRecords,CString *strArray,const int cols,const int rows)传入参数:pRecords(数据库查询成果集指针)需要显示查询成果 strArray(字符串数组头指针)显示项名称(列名) cols(整型常量)列表列数 rows(整型常量)列表行数传出参数:无l 存储分派内部数据:数据库 menu rr = con.createStatement(); ResultSet rr=stmt.executeQuery(select * from menu);数据库查询命令 Class.forName(sun.jdbc.odbc.
22、JdbcOdbcDriver) 数据库查询连接 con = DriverManager.getConnection(jdbc:odbc:menu,) l 测试要点查询成果正常查询成果集为空显示消息框提示查询成果集不为空正常显示成果列表,并依照顾客输入调节输出查询成果异常显示警告3.7登陆模块(建立连接)l 功能进入点菜系统与数据库、服务器建立连接、检查登陆者信息并拟定其操作权限l 输入项目顾客按键输入输入服务员编号、密码l 程序逻辑DO输入服务员和餐桌编号IF编号对的且日期对的THEN与数据库和服务器连接ELSE发出“错误信息”ENDIF 开始输入桌号对的 no yes与服务器、数据库建立连接
23、输入错误信息 结束l 测试要点数据库连接状况:正常状况,数据库文献缺少,外部系统异常。 系统设立获取:正常状况,外部系统异常。对顾客输入响应:合法输入,可以正常调用子模块; 非法输入,系统能否辨别,并做出响应(提出警告); 子模块异常状况,系统能否及时作出响应。3.8 退出模块l 功能断开点菜系统与数据库、服务器连接l 输入项目退出标志l 输出项目数据库查询成果(返回值);数据库查询成果集(公共变量)l 程序逻辑结束标志 结束与服务器、数据库断开连接l 测试要点对退出系统响应:合法输入,可以正常退出;不合法输入,输出警告信息。3.9 系统操作模块l 功能验证输入系统操作员账号以及口令,完毕权限
24、管理运营系统操作对话框,依照顾客输入调用各子模块,完毕:菜单库操作(浏览、修改、增长、删除);数据记录;更改口令;系统管理(修改系统设立,浏览、修改、增长、删除系统操作员);l 输入项目数据库连接(传入参数)l 输出项目无l 接口调用形式:CSysDlg:ManageSys(const _ConnectionPtr pConnection)传入参数:pConnection (数据库连接指针)传出参数:无l 存储分派内部数据:数据库 menu rr = con.createStatement(); ResultSet rr=stmt.executeQuery(select * from menu
25、);数据库查询命令 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) 数据库查询连接 con = DriverManager.getConnection(jdbc:odbc:menu,) l 测试要点数据库连接正常正常执行过程输入账号口令合法依照权限进行显示控制,正常调用各子模块输入账号口令不合法警告数据库连接异常3.9.1系统操作权限查验模块l 功能查验输入系统操作员账号以及口令与否合法,并返回合法操作员权限级别l 输入项目系统操作员口令(传入参数)l 输出项目操作员权限级别(返回值)l 程序逻辑生成数据库查询命令查询数据库IF 操作成功IF 查询成果集
26、非空返回权限级别ELSE显示警告”非法账号或口令”返回 -1ELSE显示警告”不能查询数据库”返回 -1内部数据:数据库 menu rr = con.createStatement(); ResultSet rr=stmt.executeQuery(select * from menu);数据库查询命令 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) 数据库查询连接 con = DriverManager.getConnection(jdbc:odbc:menu,) l 测试要点数据库连接正常数据库数据正常合法账号口令获取相应权限级别非法账号口令返回错误
27、批示,给出警告数据库数据异常数据库连接异常3.9.2 菜单库操作模块l 功能依照输入提供对菜单库浏览、数据修改、增长、删除记录等操作增长记录时,提供对生成菜单编号唯一性验证删除记录时,提供对所删除记录有关性检查l 输入项目数据库连接(传入参数)l 输出项目无l 程序逻辑初始化(获取数据库连接,显示对话框)WHILE 顾客未输入退出IF 顾客输入”下一种”更新当前记录移动至下一种记录刷新显示IF 顾客输入”上一种”更新当前记录移动至上一种记录刷新显示IF 顾客输入”移动到”更新当前记录规定输入菜单编号IF 该编号存在移动到指定记录刷新显示ELSE显示警告”该菜单编号不存在”IF 顾客输入”加入”
28、更新当前记录规定输入菜单编号IF 该编号已存在显示警告”该编号已存在” 与否继续加这个菜ELSE插入指定菜单编号新记录记录总数加一光标移动至新记录处IF 顾客输入”删除”更新当前记录给出警告”拟定继续”IF 顾客确认继续给出警告”删除有关点菜记录”IF 顾客确认删除有关点菜记录ELSE中断操作删除该点菜记录记录总数减一IF 最后一条记录被删除移动至前一条记录ELSE移动至下一条记录显示刷新更新记录l 存储分派内部数据:数据库 menu rr = con.createStatement(); ResultSet rr=stmt.executeQuery(select * from menu);数据库查询命令 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver) 数据库查询连接 con = DriverManager.getConnection(jdbc:odbc:menu,) l 测试要点数据库连接正常记录集为空与否工作状态正常记录集非空对各种顾客输入响应数据库连接异常