1、资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。 学习报告封皮格式不允许修改, 分数5分软件工程课程名称不是教材名称: 超市管理系统题目名称: 学生姓名: 学号: 课程成绩: 二零一六 年 十二 月目 录1 前言11.1 系统的背景及开发意义11.2 系统的开发环境及工具12 系统需求分析22.1 系统功能需求分析22.1.1用户分析需求描述22.1.2 系统功能分析建模22.2 系统数据需求分析32.2.1系统数据信息描述32.2.2系统数据分析建模42.3 其它需求分析53 系统总体设计73.1 整体架构设计73.2 系统总体结构设计73.3 系统数据库设计84 系统详细设计及编
2、码实现134.1 公共模块的设计与实现134.1.1 公共模块的功能134.1.2 员工管理模块134.2超市管理系统首页134.3超市管理系统登录模块144.4商品管理155 系统测试 195.1 测试的目的及技术195.1 测试概述195.2 系统测试191 前言5分1.1 系统的背景及开发意义(1) 系统背景介绍随着超市的出现, 为实现超市管理的系统化、 规范化和自动化, 超市管理系统应运而生.它依靠现代化的计算机信息处理技术来管理超市, 这能够快速反映出商品的进销存状况和各种反馈信息分析, 使管理人员快速对市场的变化做出相应决策, 加快超市的系统建立的技术基础;为超市提供方便, 快捷的
3、结账体系, 准确, 高效的库存和财务管理系统等; 让顾客在超市购物更加快捷方便, 让超市的管理和运行工作更加完善, 方便.( 2) 系统开发的意义使用最少的人力, 来完成超市中的日常工作。1.2 系统的开发环境及工具( 1) 系统开发的环境硬件: 西数 ( 1 TB / 7200 转/分 )硬盘 、 8GB ( DDR3 1333MHz )内存软件: Windows 7 旗舰版 64位 SP1 ( 2) 系统开发的工具系统采用myeclipse10、 SQL Server 数据库开发工具、 C/S结构。下面对开发中采用的工具进行说明: MyEclipse简介MyEclipse, 是在eclip
4、se 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境, 主要用于Java、 Java EE以及移动应用的开发。MyEclipse的功能非常强大, 支持也十分广泛, 特别是对各种开源产品的支持相当不错。 SQL Server 数据库简介SQL Server 在Microsoft的数据平台上发布, 能够组织管理任何数据。能够将各种文档的数据直接存储到数据库中。能够对数据进行多种操作。这个平台具有可信任、 高效、 智能三大特点。 B/S结构简介B/S结构( Browser/Server, 浏览器/服务器模式) , 是WEB兴起后的一种网络结构模式, WEB浏览器是客户端最主要的应用软件。
5、这种模式统一了客户端, 将系统功能实现的核心部分集中到服务器上, 简化了系统的开发、 维护和使用。客户机上只要安装一个浏览器( Browser英 braz美 braz) , 如Netscape Navigator或Internet Explorer, 服务器安装SQL Server、 Oracle、 MYSQL等数据库。浏览器经过Web Server 同数据库进行数据交互。2 系统需求分析2.1 系统功能需求分析2.1.1用户分析需求描述需求描述10分(1)该系统管理软件能够对库存食品进行资料管理和统计, 对产品的进货和销售进行录入跟统计。(2)该系统管理软件能够对管理员密码进行修改。(3)该
6、系统管理软件能够对供应商进行添加, 管理; 当库存不足是, 能够即时的打电话, 及时的供货。当库存过多时, 能够显示出来。2.1.2 系统功能分析建模功能模型12分本系统采用数据流图的模型工具建模。( 1) 数据流图( DFD) 的介绍数据流图简称DFD图, 是SA方法中用于表示系统逻辑模型的一种工具, 它以图形的方式描绘数据在系统中流动和处理的过程, 它只反映系统必须完成的逻辑功能, 是一种功能模型。本系统用自定向下方法, 其模块功能主要有以下几个部分: 员工管理模块、 库存管理模块、 进货管理模块、 销售管理模块、 商品信息管理模块和系统模块, 具体功能如下: 员工管理: 是对超市的员工和
7、供货商信息进行管理, 包括查询、 添加、 删除和修改。进货管理: 是根据超市的情况, 进行进货, 并能够查询。库存管理: 是对进货和销售的商品, 根据库存量进行记录。销售管理: 是对销售的商品进行查询。商品信息: 是对新商品进行添加, 并查询。系统管理: 能够对供货商的信息进行添加和查询。2.2 系统数据需求分析数据模型12分2.2.1系统数据信息描述本系统的数据信息有商品信息表、 员工信息表、 学历表、 商品退货登记表、 商品进货登记表、 员工销售业绩表。商品信息表 :销售编号、 销售流水号、 商品编号、 销售价格、 销售数量、 销售总价、 销售时间、 售货员编号。员工信息表 :员工编号、
8、员工姓名、 员工密码、 员工性别、 员工生日、 员工学历、 员工电话、 员工手机、 员工身份证、 员工邮箱、 员工住址; 学历表 : 学历编号、 学历名称; 商品退货登记表 : 退货编号、 商品编号供货商名称、 单价、 数量、 总价、 退货日期、 退货原因、 退货加入日期; 商品进货登记表 : 进货编号、 商品编号、 供货商名称、 单价、 数量、 总价、 进货日期、 信息加入日期; 员工销售业绩表 : 员工编号、 员工姓名、 销售业绩; 库存信息表 :商品编号、 库存数量; 顾客退货信息表 : 销售编号、 销售流水号、 商品编号、 销售价格、 销售数量、 销售总价、 顾客退货原因、 顾客退货时
9、间; 供货商信息表 :供应商名称、 供应商法人代表、 供应商电话、 供应商地址。2.2.2系统数据分析建模(1) 实体-关系模型建立员工商品销售进货编号姓名性别身份证号籍贯销售单号编号商品名称价格数量销售日期生日学历层次手机号码邮件地址居住地址编号商品名称进货价进货数量进货总价进货日期添加时间编号单位名称类别规格售价商品产地电话地址型号附加信息供货商法人代表公司名称退货编号价格数量原因总价日期实体-关系模型简记E-R图是指以实体、 关系、 属性三个基本概念概括数据的基本结构, 从而描述静态数据结构的概念模式。2.3 其它需求分析6分( 1) 系统性能需求分析 数据精确度需求: 商品的进货和销售
10、中, 单价、 金额都是保留至小数点后两位 响应时间需求: 无论是客户端和服务端, 当用户登录进行操作时, 系统反应的时间应在5秒以内。系统应能及时反映各种非正常情况, 避免用户出现长时间等待甚至系统无响应。 用户使用性需求 : 界面设计易于操作, 在用户使用时在客户端服务器端进行验证, 并提示用户输入正确数据和正确的操作系统。 安全保密性需求: 每个用户都有权限设置, 对用户的登录密码进行加密设置, 非本系统用户不能登录使用。 操作性需求: 支持Windows 及以上的操作系统, 设计连接SQL Server数据库。( 2) 系统输入/输出需求分析符合精度的设定, 数据的输入输出都应该为数字、
11、 字母及汉字, 不应该含有字符形式。( 3) 系统错误处理需求分析 数据库存储空间不够, 引起数据库访问变慢等问题需要对磁盘进行扩展和维护。 执行程序非正常退出, 响应确实, 修改源代码前应备份。 数据库没启动引起访问问题, 须启动数据库服务器。3 系统总体设计3.1 整体架构设计5分根据系统所需功能, 决定以Windows作为开发平台, 采用B/S模式, 选择myeclipse10作为开发工具, 利用软件工程思想和方法, 用面向对象的语言Java开发, 数据库采用开源免费的Mysql。本系统具有进货管理、 销售管理、 员工管理, 并对超市销售情况智能给出建议。模块功能主要有以下几个部分: 员
12、工管理模块、 库存管理模块、 进货管理模块、 销售管理模块、 商品信息管理模块和系统模块3.2 系统总体结构设计10分(1)系统分成几个独立的模块, 并对其进行集中式管理, 更能清晰的表现出超市管理的系统结构, 使得系统一目了然, 简便, 便于员工的接受, 对超市管理系统, 增加了它的易操作性。(2)分层的模块化程序设计思想, 系统采用分层的模块化结构设计, 具有较强的可操作性和扩展性, 这样更具有逻辑性, 分层以后, 使得超市管理系统更加的简便, 易使用。(3) 系统功能结构图超市管理系统商品信息管理员工信息管理商品进货管理商品销售管理商品库存管理添加商品类别商品信息维护添加商品信息添加员工
13、信息员工信息维护商品进货登记商品进货查询进货退货登记进货退货查询商品销售查询员工业绩查询顾客退货办理商品退货查询商品库存查询商品库存报警商品库存盘点供应商管理3.3 系统数据库设计10分本系统的数据库名称是Csgl.mdf, 里面包含8个表, 下面将对这些表格一一介绍。1用户( admin) 中文字段名英文字段名字段类型主键允许空账号adminUsernameVarchar(20)P/F否密码adminPasswordVarchar(20)否说明: 此表存放管理员用户信息。2.供货商( supplierInfo) 中文字段名英文字段名字段类型主键/外键允许空供应商公司名称SupplierNam
14、eNvarchar(50)否供应商法人代表supplierLawyernvarchar(4)是供应商电话supplierTelephoneVarchar(11)是供应商地址supplierAddressNvarchar(50)是说明: 此表存放供货商信息。3.员工( employeeInfo) 中文字段名英文字段名字段类型主键/外键允许空员工编号employeeNoVarchar(20)否员工姓名employeeNameNvarchar(20)是登录密码employeePasswordVarchar(30)是性别employeeSexNchar(1)是生日employeeBrithdaydat
15、etime是学历层次employeeEducationIdint是家庭电话employeeHomeTelVarchar(20)是手机employeeMobileVarchar(20)是身份证employeeCardVarchar(20)是邮件地址employeeEmailVarchar(20)是居住地址employeeAddressNvarchar(80)是说明: 此表存放员工信息。4.供应商退货清单( buyBackInfo) 中文字段名英文字段名字段类型主键/外键字段约束值输入商品编号BuyBackIdintP否退货价格goodNoVarchar(20)是数量numberVarchar(5
16、0)是进货总价totalPricefloat是退货日期buyBackDateint是退货原因buyBackReasonfloat是退货当前日期buyBackAddTimedatetime是说明:此表存放供应商退货信息。5.商品销售( sellInfo) 中文字段名英文字段名字段类型主键/外键允许空单据号sellInfoIdintP否商品编号sellNoVarchar(30)否商品名称goodNoVarchar(20)是价格Pricefloat是数量NumberInt是出售时间sellTimedatetime是说明: 此表存放销售信息。6.商品( goodInfo) 中文字段名英文字段名字段类型
17、主键/外键允许空商品编号GoodNoVarchar(20)P否商品类别goodClassIdInt是商品名称goodNameNvarchar(20)否商品单位goodUnitNvarchar(30)否商品型号goodModelNvarchar(2)是商品规格goodSpecsNvarchar(20)是商品售价goodPriceFloat是商品产地goodPlaceNvarchar(50)是附加信息goodMemoChar(10)是商品添加时间goodAddTimeDatetime是说明: 此表存放商品信息。7.商品进货表(buyInfo)中文字段名英文字段名字段类型主键/外键允许空商品编号ou
18、yIdIntP否商品名称goodNoVarchar(20)是供应商supplierNameNvarchar(50)是商品进货价格PriceFloat是商品进货数量NumberInt是进货总价totaPriceFloat是进货日期buyDateDatetime是添加时间addTimeDatetime是说明: 此表存放进货信息8.商品库存表( goodStockInfo) 中文字段名英文字段名字段类型主键/外键允许空商品编号GoodNoVarchar(50)否库存数量goodCountInt是4 系统详细设计及编码实现20分4.1 公共模块的设计与实现4.1.1 公共模块的功能系统登录功能: 该模
19、块是提供管理员和员工的登录, 只有输入正确的用户名和密码才能进入系统。4.1.2 员工管理模块为了解决超市人员流动问题, 我们增添了员工管理模块, 用来对新员工信息进行添加, 员工信息维护。新员工录入: 在超市招新员工时, 对员工基本信息进行录入并存储。员工信息的修改: 当员工登录密码忘记了的时候, 能够对员工内的登录密码进行修改。员工信息维护: 能够对员工一段期间的销售业绩进行查询。4.2超市管理系统首页当session中不存在user对象时, 则表示用户没有登录, 重定向到登录页面。当session中存在user对象时, 则显示欢饮您xxx 欢迎您 $user.username 退出未登录
20、已登录4.3超市管理系统登录模块前端加javascript代码验证用户名和密码是否为空, 假如为空则无法提交表单。只有当用户名和密码都不为空时才能够提交表单, 然后到后台验证正确性。但假如用户的浏览器禁用了javascript, 则前端的验证无效, 传到后台的用户名和密码可能为空, 因此在后台要注意避免空指针异常。后台验证: 从user表中根据前台输入的用户名和密码查询获得User对象, 假如User为空则表示用户名或则密码错误, User不为空则表示登录成功。访问数据库是由hibernate完成的, 因此不需要考虑sql注入。UserDao类根据用户名(username)和密码(passwo
21、rd)从数据库中获得User对象代码Overridepublic User find(String name, String password) Session session = sessionFactory.getCurrentSession();String hql = from User as user where user.username=:name and user.password=:password;Query query = session.createQuery(hql);query.setString(name, name);query.setString(passwo
22、rd, password);List list = query.list();return list.size()=0?null:(User)list.get(0);Hibernate查询后台展现的的sql语句Hibernate: select user0_.id as id0_, user0_.password as password0_, user0_.username as username0_ from _user user0_ where user0_.username=? and user0_.password=?4.4商品管理商品管理也面分为显示和添加, 当session中没有u
23、ser时, 表示用户没登录, 应该重定向到登录页面。假如已登录则看以看到管理页面。4.4.1显示从数据库商品表中取出所有已有商品, 在浏览器中以表格显示。商品过多能够采用分页显示。后台数据库记录显示页面从数据库中取出所有商品, 并保存到list集合中, 然后在jsp页面中展现。GoodsDao类的查询所有商品Overridepublic List getList() Session session = sessionFactory.getCurrentSession();String hql = from Goods as goods;Query query = session.createQ
24、uery(hql);return query.list();Hibernate查询后台展现的的sql语句Hibernate: select goods0_.id as id1_, goods0_.amount as amount1_, goods0_.name as name1_, goods0_.price as price1_ from _goods goods0_4.4.2添加添加时要判断添加的格式是否符合要求, 价格和数量必须是数字, 不是数据要提示输入错误。同样在前端用javascript验证, 在后台还是要验证一下。将从前台传过来的price和amount用正则表示式验证或者用Ja
25、va的类Integer.praseInt(String )方法将得到的字符串转成int型, 假如出现异常( 说明格式错误) 则表示输入有误, 通知用户。double price = Double.parseDouble(formGoods.getPrice();int amount = Integer.parseInt(formGoods.getAmount();GoodsDao类添加商品Overridepublic void add(Goods goods) Session session = sessionFactory.getCurrentSession();String hql = f
26、rom Goods as goods where goods.name=:name;Query query = session.createQuery(hql);query.setString(name, goods.getName();List list = query.list();if(list.size() != 0) double price = goods.getPrice();goods = (Goods) list.get(0);goods.setPrice(price);session.save(goods);输入的价格不是数字数据库中的数据假如商品名称存在不应该添加商品,
27、而是更新商品数据。还要防止表单重复提交。用户在提交后的页面上点刷新时, 就会产生表单重复提交问题, 能够在产生表单给表单一个id, 并将id保存到session中, 当提交后将表单的id从session清除掉, 想再次提交时从session中找不到id就不予提交。由于本系统用到了struts2, 能够用struts2的标签防表单重复提交。5 系统测试 10分5.1 测试的目的及技术5.1 测试概述测试的定义: 程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与意义能够描述为: 目的: 发现程序的错误; 意义: 经过在计算机上执行程序, 暴露程序中潜在的错误, 消除软件故障,
28、 保证程序的可靠运行。5.2 系统测试测试在软件开发过程中一直都是备受关注的, 即使在传统的软件工程中, 也有一个明确、 独立的测试阶段。随着软件危机的频频出现以及人们对于软件本质的进一步认识, 测试的地位得到了前所未有的提高。测试已经不但仅局限于系统开发中的一个阶段, 它已经开始贯穿于整个系统开发过程, 人们已经开始认识到: 测试开始的时间越早, 测试执行的越频繁, 所带来的整个软件开发成本的下降就会越多。为了使本软件运行更加稳定, 我对它部分功能进行了全面的界面测试和功能测试, 系统测试设计表模块测试结果登陆模块输入系统管理username:111, 密码admin登陆失败输入系统管理us
29、ernamewild, 密码wild登陆成功显示商品未登录成功显示所有商品已登录转到登录页面添加商品namepriceamount威化饼7.866添加成功爽歪歪7.655更新成功醒目4.5s10输入有误, 添加失败测试结果: 操作结果与数据库中的数据对应, 并无不同, 系统的准确性和及时性得到了很好的验证, 系统的增、 删、 改是即时完成的。至此系统的测试圆满结束。本系统采用测试技术有黑盒测试技术和白盒测试技术, 采用的测试步骤有单元测试、 集成测试和确认测试。(1) 测试的目的系统测试其目的是经过与系统的需求相比较, 发现所开发的系统与用户需求不符或矛盾的地方, 从而提出更加完善的方案, 尽可能彻底地检查出程序中的错误, 提高软件系统的可靠性。(2) 测试的技术 黑盒测试技术黑盒测试是经过使用整个软件或某种软件功能来严格地测试, 在测试时只检查程序功能是否按照需求规格说明书的规定正常使用, 程序是否能适当地接收和正确的输出。 白盒测试技术 白盒测试是经过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法, 溢出, 路径, 条件等等中的缺点或者错误, 进而加以修正。