2011级软件工程综合设计《网上订餐系统》详细设计承担单位:***********************总负责人:XXX小组成员:YYY、ZZZ编撰人:XXX、YYY、ZZZ完成日期:YYYY.MM.DD (宋体三号+加黑)修订记录目录1. 导言 (1)1.1目的 (1)1.2范围 (1)1.3缩写说明 (1)1.4术语定义 (1)1.5引用标准 (2)1.6参考资料 (2)2 系统设计概述 (2)3 详细设计概述 (3)4用户登录模块的详细设计 (3)5用户管理模块的详细设计 (3)5.2餐品搜索浏览 (5)6管理员模块的详细设计 (6)6.1订单管理处理 (6)6.2管理员添加 (7)7复用的模块 (8)7.1客户标签库 (8)7.2数据库的基本操作 (10)12.3结果显示 (14)8配置文件 (14)8.1W EB.XML配置文件 (14)8.2 STRCUT-CONFIG.X ML配置文件 (16)1. 导言1.1 目的该文档的目的是描述《网上订餐系统》项目的详细设计,其主要内容包括:-系统功能简介-系统详细设计简述-各个模块的三层划分-最小模块组件的伪代码本文档的预期的读者是:●开发人员●项目管理人员●测试人员1.2 范围该文档定义了系统的各个模块和模块接口,但未确定单元的具体实现,这部分内容将在实现中确定。
1.3 缩写说明JSPJava Server Page(Java服务器页面)的缩写,一个脚本化的语言。
MVCModel-View-Control(模式-视图-控制)的缩写,表示一个三层的结构体系。
1.4 术语定义1.5引用标准[1] 《企业文档格式标准》V1.1北京长江软件有限公司[2] 《软件详细设计报告格式标准》V1.1北京长江软件有限公司软件工程过程化组织1.6 参考资料[1] 《实战struct》〔美〕TedHusted机械工业出版社2 系统设计概述根据《网上订餐系统》的概要设计,本系统按照功能角度分解,可以分为客户端子系统和管理端子系统。
客户端子系统包括用户注册、用户登录、个人信息维护、餐品信息浏览、维护购物车、生成订单等六个模块。
管理端子系统包括登陆管理、维护顾客信息、维护餐品信息、管理订单等四个模块,他们的关系如图2-1,以下将分小节对各个部分分别进行详细设计。
图2—13 详细设计概述本系统总共有两大主要模块,分别是客户模块和管理员模块。
每个模块分别有不同的权限和使用功能。
4用户登录模块的详细设计图4.1登录流程图5用户管理模块的详细设计用户的主要功能是浏览,订餐。
浏览与自己相关的美食信息,订单信息等。
用户要下订单之前美食车要把详细食物信息列出,物品的单价,购买的数量,总共的价钱,可修改和删除购买,当符合顾客要求的时候,顾客就可以下订单。
下订单时首先会让用户确定一下订单是否符合要求,确认无误后,进入填写接收信息后生成订单。
然后对数据库进行操作完成。
顾客模块详细设计主要涉及到顾客下订单和餐品搜索浏览两大功能,分别见图5.1,图5.2顾客可以通过此功能对自己选中的东西下订单,等待服务商送货或自己取货。
5.1顾客下订单图5.1下单流程图据图5.2餐品搜索浏览搜索控件,为顾客提供更为方便快捷的服务。
顾客可以快速找到自己想要下订的美食。
图5.2搜索模块流程图6管理员模块的详细设计6.1 订单管理处理图6.1理员订单处理程序流程图6.2 管理员添加图6.2添加流程图7复用的模块复用是本系统设计的一个重要原则,尤其struct体系本身也遵循了复用的原理,本系统复用的部分主要包括标签库、数据库基本操作以及结果的显示等环节。
7.1客户标签库客户标签库主要包括(一)Struct标准标签库本系统中使用了Struct Html标签、Struct Bean标签和Struct Logic,他们是Struct 标准标签库。
(二)自定义标签库CV标签是系统自定义的标签库,表C-13是CV标签库的标签模块。
表C-13:CV标签库的标签模块表C-14是身份验证的伪代码说明,用户登录后进入的每个页面,为了安全的考虑管理端都需要进行用户验证,以防止非法登录,验证每个页面的JSP都可以标签的方式使用这个复用的。
表C-14:身份验证的伪代码/*** @System: Online CV System* @Version: 1.0* @Copyright (C) 2006 by XXX, Inc. All Rights Reserved.* @Class:ValidateSessionTag* @Summary: 对用户的身份验证* @Create: 2006.03.28 郭士榕* @Update:package tag;import javax.servlet.http.HttpSession;import javax.servlet.jsp.JspException;import javax.servlet.jsp.tagext.TagSupport;import mons.logging.Log;import mons.logging.LogFactory;/*** ValidateSessionTag是客户端标签,以判断用户是否具有访问当前页面的权限* 通过保持、判断一个session实现*/public final class ValidateSessionTag extends TagSupport{private String name = "username";private String page = "/login.jsp";private Log log =LogFactory.getLog(this.getClass().getName());public int doEndTag() throws JspException{boolean valid = false;HttpSession session = pageContext.getSession();//判断session中是否有用户信息存在//如果用户存在则不做任何处理//用户不存在则跳转到指定的页面}public int doStartTag() throws JspException{return (SKIP_BODY);}//获取用户信息public String getName(){。
}//获取用户当前访问的页面public String getPage(){。
}//如果用户没有当前页面的访问访问权限,则返回到指定页面,设置这个指定页面public void release(){。
}//设置用户信息public void setName(String name){。
}//设置当前页面public void setPage(String page){。
}}7.2数据库的基本操作所有的模块都需要进行数据库的操作,应该有一个通用的,高质量的数据库操作模块,其实所有的模型层的模块也都调用这个模块的。
这个模块的名称是DBUtil,类名DB。
表C-15是它的伪代码描述。
表C-15:数据库的基本操作/*** @System: Online CV System* @Version: 1.0* @Copyright (C) 2006 by changjiang company, Inc. All Rights Reserved.* @Class:DB* @Summary: 取得数据库连接并对数据库进行查询、增加记录、删除记录操作* @Create: 2006.04.27 李林* @Update:*/package com.changjiangcompany.struts.javashare;import java.sql.*;import java.util.*;import com.microsoft.jdbcx.sqlserver.SQLServerDataSource;public class DB {private Statement stmt=null;private ResultSet rs=null;public DBConnect(){//初始化连接。
}/*** 方法:executeQuery* 描述:执行查询记录操作* 输入参数:String strsql 要执行操作的sql语句* 返回:ArrayList ArrayRs 查询的结果* 异常:SQLException*/public ArrayList executeQuery(SQLServerDataSource source,String strSql) throws SQLException{/** 连接数据库*//** 执行SQL的查询语句*/。
/** 将每条记录写入ArrayList里*/。
}/*** 方法:executeInsert* 描述:执行插入记录操作* 输入:String strsql 要执行操作的sql语句* 返回:boolean类型,插入操作是否正确执行* 异常处理:SQLException*/public boolean executeInsert(SQLServerDataSource source,String strSql) throws SQLException{/** 连接数据库*//** 执行SQL的插入语句*/。
/** 返回SQL插入语句执行的正确或者错误*/}/*** 方法:executeUpdate* 描述:执行更新操作* 输入:String strsql 要执行操作的sql语句* 返回:int 更新操作的记录数* 异常处理:SQLException*/public int executeUpdate(SQLServerDataSource source,String strSql) throws SQLException{/** 连接数据库*//** 执行SQL的修改语句*/。
/** 返回SQL修改语句执行的记录数*/}/*** 方法:executeDelete* 描述:执行删除操作* 输入:String strsql 要执行操作的sql语句* 返回:int 删除操作的记录数* 异常处理:SQLException*/public int executeDelete(SQLServerDataSource source,String strSql) throws SQLException{/** 连接数据库*//** 执行SQL的删除语句*/。
/** 返回SQL删除语句记录数*/}12.3结果显示为了保证系统显示结果的一致性和统一性,系统中所有的结果显示要调用统一的结果显示页面,表C-16是结果显示一览表。