1、课程设计汇报 课程名称 基于J2EE项目开发 设计题目 超市管理系统 专业班级 软件1231 姓 名 刘香弟 学 号 成 绩 评 定 考评 内容 设计 表现 设计 汇报 答辩 综合评 定成绩 成 绩 计算机技术和工程学院 友好 勤奋 求是 创新 目 录 1题目选择和系统分析 3 1.1项目标功效分析 3 1.1.1用户功效性需求 3 1.1.2管理员功效性需求 4
2、 2 模块设计 5 2.1系统总体设计 5 2.2模块设计 5 2.2.1登录模块 7 2.2.2商品信息查看模块 8 2.3.3购物车模块 8 3数据库数据表设计和映射 9 3.1数据库表设计 9 4 系统具体设计和实现 11 4.1综合描述 11 4.2系统运行界面描述 12 4.3关键Java类和其功效 25 4.4系统测试 27 4.4.1测试目标和方法 27 4.4.2测试用例 27 1题目选择和系统分析 1.1项目标功效分析 功效性需求是整个需求分析章节最为关键部分。它直接决定了系统模块划分,业务逻辑,明确了使用者对小型超市信息管理
3、系统功效要求。一个完善,明确,具体功效性需求分析是开发一个系统关键。成功功效性需求分析能够避免后期对系统大范围改动甚至是推倒重建,所以,本部分极为关键。 1.1.1用户功效性需求 1>不用输入用户名,密码 ,直接登录超市管理系统商品页面; 2>查看商品基础信息,包含 商品编号,单价,余量,厂家,生产日期,保质期; 3>在购物车中查看自己选中商品名称,价格,数量,并能够从购物车中移除一些商品,查看总价,并能够选择结账或选择继续购物; 4>点击结账后显示结账成功并退出系统。 相关用例图见图1-1。 图1-1 用户用例图 用户用例 “查看商品基础信息”用例描述见表1-1。其
4、它用例类似于此,不再一一赘述。 表1-1 用例描述-查看商品基础信息 使用者 用户 用例 查看商品基础信息 参与者 用户,小型超市信息管理系统 数据 用户向超市信息管理系统发送商品相关信息,如商品名,商品类型,商品编号等 激励 超市信息管理系统依据用户发送字段,查询后台数据库 响应 超市信息管理系统返回查询商品结果 备注 无 1.1.2管理员功效性需求 1>打开网站后,进入登录页面。输入用户名,密码 登录系统。 2>登陆后,选择进入系统人员管理页面或商品信息管理页面。在系统人员管理页面中,查看其它管理员信息,并能够
5、添加新管理员。在商品信息管理页面,能够查看全部商品信息,包含商品编号,进价,单价,余量,厂家,生产日期,保质期。 3>进入商品信息管理页面进货管理页面,能够填写进货单,实现相关产品数量增加。 4>进入商品信息管理页面销售查看页面,能够查看近期各项商品销售情况。 5>点击页面右上角退出按钮,直接退出系统并跳转到登录页面。 相关用例图见图1-2 管理员功效性需求用例图。 图1-2 管理员功效性需求用例 2 模块设计 2.1系统总体设计 系统总体设计图图4-1所表示。当使用人员登录系统后,按身份不一样进入各自页面,并使用系统提供功效。管理员人员信息管理属于操作者全部,在此本系统
6、默认管理员能够操作其它管理员信息。 图2-1 系统总体设计图 2.2模块设计 本处将对小型超市信息管理系统进行分模块设计,明确各个模块操作步骤,功效怎样使用等问题。 1> 登录模块 超市信息管理系统使用者关键有两种:一般用户和管理员。 根据日常生活中超市运作步骤,一般用户不需要为其设置专门数据表,所以只需要实现管理员登录模块。 使用者进入系统后,首优异入欢迎界面。一般用户点击“开始购物旅程”超链接,直接进入购物界面。管理员点击“进入后台系统”超链接,进入管理员登陆界面。 因为管理员对系统有操作,查看等权限,所以不许可在登陆页面注册新管理员。 登陆成功后跳转至管理员管理页面
7、不然显示“Login fail”登陆失败。 当输入正确姓名,密码后,界面自动跳转到管理员管理欢迎界面。 2> 商品信息管理模块 管理员进入后台管理界面后,点击“商品信息管理页面”超链接,进入商品信息管理页面。 页面查询后台数据库数据,将全部商品信息展示在右侧页面上。若管理员需要对相关商品信息作出修改,或删除某项商品信息。则点击对应超链接进行操作。删除成功后系统会提醒“删除成功”。 点击“更新”,系统会进入商品信息更新页面。在页面中,已经预先填好了所选商品信息。这许可管理员仅对需要修改字段内容修改,避免了全盘输入麻烦。 若管理员需要添加新商品,则点击“添加新商品”链接。系统跳转到
8、商品信息添加页面。 在此页面填入对应商品信息,点击“添加”按钮。若各个字段值全部符合要求,则系统提醒“添加成功”。再点击左侧“商品信息管理页面”,则能够看到刚才插入商品信息。 3> 进货单管理模块 进货是超市正常运行,立即跟进市场最新动态,调整售货方向最关键手段。进货单管理模块用来实现进货功效,管理员能够填写进货单实现对商品表及进货单表更新。在 管理员管理欢迎界面 点击“进货单管理页面”,系统跳转到进货单管理页面。 因为进货操作是管理员对超市经营情况搜集信息关键路径,所以不许可对进货单进行修改操作,方便进行对账,累计等操作。点击“增加进货单”链接,系统跳转至进货信息添加页面。 在进货
9、信息添加页面中,当管理员填写好对应字段后,点击“添加”按钮。系统在后台会自动查找填入商品名。假如以前存在同名商品,则在原来商品基础上,对数量作出修改。假如查不到填入商品名,则在商品表中新建一条统计。最终,在进货单表中生成对应进货统计。 4> 管理员信息管理模块 在管理员管理欢迎界面,点击“管理员信息管理页面”。系统跳转至管理员信息管理界面。在此界面上,能够实现对管理员信息增删改,在此不再一一赘述。 5> 交易信息查看模块 用户每次在超市消费全部会有对应统计。因为小型超市规模限制,不可能大量保留每笔交易具体信息,所以系统以交易流水号形式表示每笔交易。此模块就是供管理员查看交易信息统计。
10、 因为交易信息是对超市中已存在交易行为统计,所以不许可管理员对交易信息进行修改,只能在统计较多时删除某条统计。 6> 退出模块 管理员在左侧菜单点击“退出”链接,进入“确定退出页面”。 7> 购物模块 在开始页面点击“开始购物旅程”链接,跳转到购物页面。 点击一项商品后添加至购物车链接,会提醒添加成功,并选择查看购物车或继续购物。 点击“查看购物车”进入购物车管理页面。能够实现对购物车中商品数量修改,查看现在已购置商品价格总计,或选择删除购物车中某项商品,甚至清空购物车。 点击“结账”链接,系统在新页面中会生成一个交易流水号,继续点击“结账”,假如后台保留成功,则提醒交易完成,点
11、击链接离开。 2.2.1登录模块 登录步骤图2-3。管理员在登录表单填写用户名,密码,将表单和Flag标志提交至Servlet。系统依据XML文件配置,调用相关Servlet类(MemberController.java)。Servlet依据Flag值,调用对应函数,查询数据库表(member)并进行判定,假如用户名和密码匹配,则跳转到管理页面(manage.jsp),不然,输出登录失败页面。 图2-2 登录模块步骤图 2.2.2商品信息查看模块 在Left.jsp 中点击“商品信息管理页面”,链接为”Goods.do?flag=1” 。系统依据XML配置文件,调用Good
12、sController.java 。接收到Flag=1 ,调用FindAll()方法,查询MysqL数据库中goods表,查询全部商品信息,返回一个List
13、个链接,分别为:“Goods.do?flag=2&id=<%=list.get(i).getID()%>”,“Goods.do?flag=5&id=<%=list.get(i).getID()%>”。点击链接,能够调用GoodsController.java 中对应函数,传输参数为ID,进行删除或更新操作。 相关步骤见图2-3。 图2-3 商品信息查看模块步骤图 2.3.3购物车模块 添加商品至购物车时,会对购物车中商品进行校验,若商品已在购物车中,则不在购物车中添加新项目,而是只修改商品数量。 用户能够在购物车中编辑商品信息,包含修改商品数量,删除一些不想要商品,或清空购物车
14、每点击相关链接就调用servlet对应函数对session中ShoppingCart进行操作。假如点击“结账”,则进入生成流水号页面。结账成功后,则对数据库中商品余量进行修改,自动减去用户购置商品数量。 购物车步骤图图5-11所表示。 图5-11 购物车模块步骤图 3数据库数据表设计和映射 3.1数据库表设计 商品基础信息表见表3-1。 表3-1 商品基础信息表 名称 含义 类型 约束 备注 GoodsID 商品ID Int 20 主键 自动增加 GoodsName 商品名称 Varchar 10 唯一值
15、 GoodsType 商品类型 Int 20 不为空 GoodsPrice 单价 Int 10 不为空 GoodsPurchasePrice 进价 Int 10 不为空 GoodsAmount 商品数量 Int 10 不为空 GoodsGetTime 进货日期 Date 不为空 GoodsMaintainTime 保质期 Int 10 不为空 单位为(天) GoodsFactory 生产厂家 Varchar 50 不为空 职员信息表见表 3-2。 表3-2
16、 职员信息表 名称 含义 类型 约束 备注 MemberID 职员ID Int 20 主键 自动增加 MemberName 职员姓名 Varchar 10 不为空 MemberPassword 职员密码 Varchar 6 不为空 MemberSex 职员性别 Int 1 不为空 1:男 2:女 MemberAge 职员年纪 Int 10 可为空 进货单表见表3-3。 表3-3 进货单表 名称 含义 类型 约束 备注 Input_ID 进货单ID Int
17、 50 主键 自动增加 Input_GoodsID 商品ID Int 20 不为空 Input_GoodsName 商品名称 Varchar 10 唯一值 Input_GoodsType 商品类型 Int 20 不为空 Input_GoodsPrice 单价 Int 10 不为空 Input_GoodsPurchasePrice 进价 Int 10 不为空 Input_GoodsAmount 商品数量 Int 10 不为空 Input_GoodsGetTime 进货日期 Date 不为空 Input_Go
18、odsMaintainTime 保质期 Int 10 不为空 单位为(天) Input_GoodsFactory 生产厂家 Varchar 50 不为空 订单表见表3-4。 表3-4 订单表 名称 含义 类型 约束 备注 Account__ID 订单ID Int 20 主键 自动增加 Account_GoodsID 商品ID Int 20 不为空 Account_Code 交易流水号 Varchar 50 外键 参考Sale表code 不为空 Account_GoodsC
19、ount 购置商品数量 Int 10 不为空 交易单表见表3-5。 表3-5 交易单表 名称 含义 类型 约束 备注 Sale_ID 交易单ID Varchar 20 主键 自动增加 Sale_Date 交易日期 Date 不为空 Sale_Accountcode 交易流水号 Varchar 50 不为空 4 系统具体设计和实现 4.1综合描述 因为小型超市信息管理系统结构比较简单,相对大型,成熟超市采取管理系统来说,不管在系统性能,结构复杂度,安全性上面全部无法和之相比
20、所以在进行系统设计时,应尽可能做到结构清楚,编码方法合理,代码和系统可维护性较高。在本章节中,选择小型超市信息管理系统关键模块进行设计叙述。关键模块有登录模块,商品信息查看模块,购物车模块三部分。 相关本系统文件结构以下: 4.2系统运行界面描述 此处为小型超市信息管理系统关键模块具体描述,并附上相关代码和截图。在代码关键处加以说明,以方便读者阅读。 相关代码以下: Login.jsp: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="" prefi
21、x="c"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %>
22、
27、"color: #F00">登录失败!请重新登陆
说明:登录表单中,将姓名和密码字段 “name”属性分别设置为“userName”,“userPassword”,向后台进行参数传输。点击submit按钮,根据action中路径调用方法,传输方法类型为“post”,将提交至servletdopost方法。 public interface UserService { // 判定用户登录是否成功 public User ifLogin(String name, String password); // 依据用户名查询用户表中数据 public List28、indUserInfoByName(String userName);
// 获取数据库中用户表中数据并封装在集合中
public List
29、页面中对应用户信息 public int deleteUserInfoById(int userId); // 分页获取用户信息 public PageSize getUserInfoByPage(int currPage); // 修改用户密码 public int updateUserPwdInfo(int userId, String userNewPwd); }说明:login方法,接收前台页面传输过来用户名和密码,并利用编码转换类将用户名转换为UTF-8编码类型,处理了乱码问题。实例化一个MemberDao类,调用其Login方法,返回实体类Member。假如返回值为空,
30、则输出登录失败页面。不然,跳转至管理员管理页面manage.jsp。
public interface UserDao {
// 判定用户登录是否成功
public User ifLogin(String name, String password);
// 依据用户名查询用户表中数据
public List
31、olean add(User user); // 依据用户编号修改用户管理页面中用户信息 public int updateUserInfo(User user, int userId); // 依据用户名编号查询用户表中数据 public User findUserInfoById(int userId); // 依据用户编号删除用户管理页面中对应用户信息 public int deleteUserInfoById(int userId); //分页获取用户信息 public PageSize getUserInfoByPage(int currPage);
32、 //修改用户密码 public int updateUserPwdInfo(int userId,String userNewPwd); } 说明:Login方法对数据库进行操作。首先连接至数据库,利用前台传来用户名,密码字段对数据库进行查询,以结果集形式进行返回。并实例化user类,将结果集中数据输出,返回user类型。 相关界面设计见图4-1,图4-2,图4-3。 图4-1 超市信息管理系统欢迎界面 图4-2 超市管理员登陆界面 相关代码以下: <%@ page language="java" import="java.util.*" pageEncodi
33、ng="UTF-8"%>
<%@ taglib uri="" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
34、ead>
39、 登录失败!请重新登陆
说明:FindAll方法调用gooddaoselectGoods方法,将全部商品信息读出,以集合形式存入变量“goods”中,在中进行调用。
相关页面设计见图。
图4-3商品添加页面