收藏 分销(赏)

超市管理系统-软件工程-设计.doc

上传人:丰**** 文档编号:3902066 上传时间:2024-07-23 格式:DOC 页数:21 大小:251.50KB 下载积分:10 金币
下载 相关 举报
超市管理系统-软件工程-设计.doc_第1页
第1页 / 共21页
超市管理系统-软件工程-设计.doc_第2页
第2页 / 共21页


点击查看更多>>
资源描述
超市管理系统 摘 要 根据系统所需功能,决定以Windows作为开发平台,采用B/S模式,选择myeclipse10作为开发工具,利用软件工程思想和方法,用面向对象的语言Java开发,数据库采用开源免费的Mysql。本系统具有进货管理、销售管理、员工管理,并对超市销售情况智能给出建议。 关键词:windows、销售管理、Java、面向对象、mysql 目 录 摘 要 I 1可行性的研究 1 1.1技术可行性研究 1 1.2经济可行性研究 1 1.3操作可行性研究 1 1.4法律可行性研究 1 2 需求分析 1 2.1 用户业务需求 1 2.2 功能需求 2 2.3性能需求 2 3 系统设计 3 3.1 系统概要设计 3 3.2 系统详细设计 3 4 系统实现 11 4.1开发环境搭建 11 4.2超市管理系统首页 12 4.3超市管理系统登录模块 13 4.4商品管理 14 5 系统测试 16 5.1 测试概述 16 5.2 系统测试 16 6 结束语 17 参考文献 17 II 1可行性的研究 1.1技术可行性研究 本系统采用B/S模式,后台采用Java EE技术和apache-tomcat 6.0服务器、mysql数据库。同时,在老师的指导下,我们对此系统有了更加深的认识,并且这些技术能够在小组成员的合作下,完成了对超市管理系统的开发。 1.2经济可行性研究 由于超市的管理繁琐,我们所制作的这套系统,不仅解决了超市原始管理的一些费时、费力的操作,节省了人力、物力、财力,而且增加了超市的营业额,这样使得超市的利润最大化。此外,市场竞争力的日趋加强,这套超市管理系统的应用,必定能够广泛应用。所以,从经济上这套超市管理系统是可行的。 1.3操作可行性研究 超市管理系统是基于B/S模式,浏览器是人们所熟知的软件,只要能对计算机有一定了解的员工都可以轻松上手,并且整个系统的制作,模块清晰,简要明了。在首页对各个方面的主要业务,进行由总到分的进行制作,每个模块都包含各自所对应的功能。所以,这套管理系统在操作上还是比较简便的。 1.4法律可行性研究 超市管理系统是我们自主研发的,不存在版权纠纷,这管理系统只作为超市的管理,在法律上,是可行的。 由此,该超市管理系统在经济上、技术上、操作上、法律上是可行的。综合以上四方面,该系统具有很高的开发可行性。 2 需求分析 2.1 用户业务需求 (1)该系统管理软件可以对库存食品进行资料管理和统计,对产品的进货和销售进行录入跟统计。 (2)该系统管理软件可以对管理员密码进行修改。 (3)该系统管理软件可以对供应商进行添加,管理;当库存不足是,可以即时的打电话,及时的供货。当库存过多时,可以显示出来。 2.2 功能需求 本系统用自定向下方法,其模块功能主要有以下几个部分:员工管理模块、库存管理模块、进货管理模块、销售管理模块、商品信息管理模块和系统模块,具体功能如下: 员工管理:是对超市的员工和供货商信息进行管理,包括查询、添加、删除和修改。 进货管理:是根据超市的情况,进行进货,并可以查询。 库存管理:是对进货和销售的商品,根据库存量进行记录。 销售管理:是对销售的商品进行查询。 商品信息:是对新商品进行添加,并查询。 系统管理:能够对供货商的信息进行添加和查询。 2.3性能需求 (1)数据精确度 商品的进货和销售中,单价、金额都是保留至小数点后两位; 2.4运行环境需求 1.所需服务器端操作系统 Linux或Windows 2、浏览器要求 浏览器的版本必须要IE8及以上版本 3、硬件要求 硬件满足的最低要求: CPU:2.2GHZ及以上 pentium处理器、或者AMD处理器 内存:1G及以上 硬盘:40G及以上自由空间 显示器分辨率:不低于800*600 必备软件 Jre6.0及以上版本 apache-tomcat-6.0 Mysql5.1 3 系统设计 根据前面需求分析的结果,运用面向对象的设计方法,得出了系统的主要功能模块以及每个模块要实现的大概功能,使开发者能对系统进行进一步的设计并进行开发。 3.1 系统概要设计 (1)系统分成几个独立的模块,并对其进行集中式管理,更能清晰的表现出超市管理的系统结构,使得系统一目了然,简便,便于员工的接受,对超市管理系统,增加了它的易操作性。 (2)分层的模块化程序设计思想,系统采用分层的模块化结构设计,具有较强的可操作性和扩展性,这样更具有逻辑性,分层以后,使得超市管理系统更加的简便,易使用。 员工信息管理 商品库存管理 商品信息 管理 商品销售管理 商品进货管理 超市管理系统 3.2 系统详细设计 3.2.1 系统功能结构图 超市管理系统 商品信息管理 员工信息管理 商品进货管理 商品销售管理 商品库存管理 添加商品类别 商品信息维护 添加商品信息 添加员工信息 员工信息维护 商品进货登记 商品进货查询 进货退货登记 进货退货查询 商品销售查询 员工业绩查询 顾客退货办理 商品退货查询 商品库存查询 商品库存报警 商品库存盘点 供应商管理 3.2.2 系统功能设计 系统功能设计是使系统实现超市的进、销、存等功能,让管理员直观的了解超市的运营状况。我们建立对应的数据库,并对信息进行收集、存储,并对信息进行维护。 此系统共包括五大模块,分别是商品信息管理模块、员工信息管理模块、商品进货管理模块、商品销售管理模块、商品库存管理模块。每个模块的功能如下: 商品信息管理模块的功能: (1)实现员工信息的查询; (2)实现员工信息的更新。 员工信息管理模块的功能: (1)实现员工信息的查询; (2)实现员工信息的更新,包括添加、删除和修改功能; (3)实现供货商信息的查询;以及更新,包括添加、删除和修改功能。 商品进货管理模块的功能: (1)实现商品进货的录入; (2)实现商品进货的查询; (3)实现进货退货的录入; (4)实现进货退货的查询。 商品销售管理模块的功能: (1)实现销售信息的查询; (2)实现员工业绩的查询; (3)实现顾客退办货的办理; (4)实现顾客退办货的查询。 商品库存管理模块的功能: (1)实现商品库存的查询; (2)实现商品库存的盘点; (3)实现商品库存的报警。 3.2.3 系统数据库设计 数据库设计是信息开发的核心技术,是建立数据库的技术,具体说数据库设计是将一个应用环境,构造数据库模式,建立数据库的系统,并能够存储数据,满足用户的各种要求,数据库设计室管理系统的重要组成部分。 数据库是存储数据,并可以对数据进行存入、修改、删除等进行操作,目前最流行的软件是Mysql,它的功能相对于其他数据库,比较简单、免费。 3.2.4系统数据库的分析 数据库主要有信息的提供保存、更新、查询等功能。经过对超市管理系统的需求分析,设计了数据结构和数据如下所示: 管理员表(admin):用户名、密码; 商品信息表(goodInfo):销售编号、销售流水号、商品编号、销售价格、销售数量、销售总价、销售时间、售货员编号。 员工信息表(employeeInfo):员工编号、员工姓名、员工密码、员工性别、员工生日、员工学历、员工电话、员工手机、员工身份证、员工邮箱、员工住址; 学历表(educationInfo):学历编号、学历名称; 商品退货登记表(buyBackInfo):退货编号、商品编号供货商名称、单价、数量、总价、退货日期、退货原因、退货加入日期; 商品进货登记表(buyInfo):进货编号、商品编号、供货商名称、单价、数量、总价、进货日期、信息加入日期; 员工销售业绩表(employeeSellResult):员工编号、员工姓名、销售业绩; 库存信息表(goodStockInfo):商品编号、库存数量; 顾客退货信息表(sellInfo):销售编号、销售流水号、商品编号、销售价格、销售数量、销售总价、顾客退货原因、顾客退货时间; 供货商信息表(supplierInfo):供应商名称、供应商法人代表、供应商电话、供应商地址。 3.2.5数据库的概念结构设计 为了清晰的表达用户数据的要求,我们就需要建立一个概念性的数据模型。最常用的表示概念性的数据模型是实体一联系方法(E-R模型). 员工 商品 销售 进货 编号 姓名 性别 身份证号 籍贯 销售单号 编号 商品名称 价格 数量 销售日期 生日 学历层次 手机号码 邮件地址 居住地址 编号 商品名称 进货价 进货数量 进货总价 进货日期 添加时间 编号 单位 名称 类别 规格 售价 商品产地 电话 地址 型号 附加信息 供货商 法人代表 公司名称 退货 编号 价格 数量 原因 总价 日期 3.2.6 数据库的逻辑结构设计 1.用户(admin) 中文字段名 英文字段名 字段类型 主键 允许空 账号 adminUsername Varchar(20) P/F 否 密码 adminPassword Varchar(20) 否 说明:此表存放管理员用户信息。 2.供货商(supplierInfo) 中文字段名 英文字段名 字段类型 主键/外键 允许空 供应商公司名称 SupplierName Nvarchar(50) 否 供应商法人代表 supplierLawyer nvarchar(4) 是 供应商电话 supplierTelephone Varchar(11) 是 供应商地址 supplierAddress Nvarchar(50) 是 说明:此表存放供货商信息。 3.员工(employeeInfo) 中文字段名 英文字段名 字段类型 主键/外键 允许空 员工编号 employeeNo Varchar(20) 否 员工姓名 employeeName Nvarchar(20) 是 登录密码 employeePassword Varchar(30) 是 性别 employeeSex Nchar(1) 是 生日 employeeBrithday datetime 是 学历层次 employeeEducationId int 是 家庭电话 employeeHomeTel Varchar(20) 是 手机 employeeMobile Varchar(20) 是 身份证 employeeCard Varchar(20) 是 邮件地址 employeeEmail Varchar(20) 是 居住地址 employeeAddress Nvarchar(80) 是 说明:此表存放员工信息。 4.供应商退货清单(buyBackInfo) 中文字段名 英文字段名 字段类型 主键/外键 字段约束值 输入商品编号 BuyBackId int P 否 退货价格 goodNo Varchar(20) 是 数量 number Varchar(50) 是 进货总价 totalPrice float 是 退货日期 buyBackDate int 是 退货原因 buyBackReason float 是 退货当前日期 buyBackAddTime datetime 是 说明:此表存放供应商退货信息。 5.商品销售(sellInfo) 中文字段名 英文字段名 字段类型 主键/外键 允许空 单据号 sellInfoId int P 否 商品编号 sellNo Varchar(30) 否 商品名称 goodNo Varchar(20) 是 价格 Price float 是 数量 Number Int 是 出售时间 sellTime datetime 是 说明:此表存放销售信息。 6.商品(goodInfo) 中文字段名 英文字段名 字段类型 主键/外键 允许空 商品编号 GoodNo Varchar(20) P 否 商品类别 goodClassId Int 是 商品名称 goodName Nvarchar(20) 否 商品单位 goodUnit Nvarchar(30) 否 商品型号 goodModel Nvarchar(2) 是 商品规格 goodSpecs Nvarchar(20) 是 商品售价 goodPrice Float 是 商品产地 goodPlace Nvarchar(50) 是 附加信息 goodMemo Char(10) 是 商品添加时间 goodAddTime Datetime 是 说明:此表存放商品信息。 7.商品进货表(buyInfo) 中文字段名 英文字段名 字段类型 主键/外键 允许空 商品编号 ouyId Int P 否 商品名称 goodNo Varchar(20) 是 供应商 supplierName Nvarchar(50) 是 商品进货价格 Price Float 是 商品进货数量 Number Int 是 进货总价 totaPrice Float 是 进货日期 buyDate Datetime 是 添加时间 addTime Datetime 是 说明:此表存放进货信息 8.商品库存表(goodStockInfo) 中文字段名 英文字段名 字段类型 主键/外键 允许空 商品编号 GoodNo Varchar(50) 否 库存数量 goodCount Int 是 说明:此表存放库存信息 3.2.7系统登录 功能:该模块是提供管理员和员工的登录,只有输入正确的用户名和密码才能进入系统。 3.2.8员工管理模块 为了解决超市人员流动问题,我们增添了员工管理模块,用来对新员工信息进行添加,员工信息维护。 新员工录入:在超市招新员工时,对员工基本信息进行录入并存储。 员工信息的修改:当员工登录密码忘记了的时候,可以对员工内的登录密码进行修改。 员工信息维护:可以对员工一段期间的销售业绩进行查询。 4 系统实现 4.1开发环境搭建 为了适应以后系统功能的扩充使用struts2+hibernate+spring框架开发 开发准备: 安装Myeclipse10、tomcat服务器、mysql数据库 整合SSH环境 下载struts-2.3.4、spring-framework-2.5.6、hibernate-distribution-3.3.2 jar包 4.2超市管理系统首页 当session中不存在user对象时,则表示用户没有登录,重定向到登录页面。 当session中存在user对象时,则显示欢饮您xxx <c:if test="${user!=null}"> 欢迎您 ${user.username } <a href="/logout">退出</a> </c:if> <c:if test="${user==null}"> <c:redirect url="login" /> </c:if> 未登录 已登录 4.3超市管理系统登录模块 前端加javascript代码验证用户名和密码是否为空,假如为空则无法提交表单。只有当用户名和密码都不为空时才可以提交表单,然后到后台验证正确性。但假如用户的浏览器禁用了javascript,则前端的验证无效,传到后台的用户名和密码可能为空,所以在后台要注意避免空指针异常。 后台验证:从user表中根据前台输入的用户名和密码查询获得User对象,假如User为空则表示用户名或则密码错误,User不为空则表示登录成功。访问数据库是由hibernate完成的,所以不需要考虑sql注入。 UserDao类根据用户名(username)和密码(password)从数据库中获得User对象代码 @Override public 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("password", 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中没有user时,表示用户没登录,应该重定向到登录页面。假如已登录则看以看到管理页面。 4.4.1显示 从数据库商品表中取出所有已有商品,在浏览器中以表格显示。商品过多可以采用分页显示。 后台数据库记录 显示页面 从数据库中取出所有商品,并保存到list集合中,然后在jsp页面中展现。 GoodsDao类的查询所有商品 @Override public List<Goods> getList() { Session session = sessionFactory.getCurrentSession(); String hql = "from Goods as goods"; Query query = session.createQuery(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用正则表达式验证或者用Java的类Integer.praseInt(String )方法将得到的字符串转成int型,假如出现异常(说明格式错误)则表示输入有误,通知用户。 double price = Double.parseDouble(formGoods.getPrice()); int amount = Integer.parseInt(formGoods.getAmount()); GoodsDao类添加商品 @Override public void add(Goods goods) { Session session = sessionFactory.getCurrentSession(); String hql = "from 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); } 输入的价格不是数字 数据库中的数据 假如商品名称存在不应该添加商品,而是更新商品数据。还要防止表单重复提交。用户在提交后的页面上点刷新时,就会产生表单重复提交问题,可以在产生表单给表单一个id,并将id保存到session中,当提交后将表单的id从session清除掉,想再次提交时从session中找不到id就不予提交。由于本系统用到了struts2,可以用struts2的<s:token />标签防表单重复提交。 5 系统测试 5.1 测试概述 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与意义可以描述为: 目的:发现程序的错误; 意义:通过在计算机上执行程序,暴露程序中潜在的错误,消除软件故障,保证程序的可靠运行。 5.2 系统测试 测试在软件开发过程中一直都是备受关注的,即使在传统的软件工程中,也有一个明确、独立的测试阶段。随着软件危机的频频出现以及人们对于软件本质的进一步认识,测试的地位得到了前所未有的提高。测试已经不仅仅局限于系统开发中的一个阶段,它已经开始贯穿于整个系统开发过程,人们已经开始认识到:测试开始的时间越早,测试执行的越频繁,所带来的整个软件开发成本的下降就会越多。 为了使本软件运行更加稳定,我对它部分功能进行了全面的界面测试和功能测试,系统测试设计表 模块 测试 结果 登陆模块 输入系统管理username:111,密码admin 登陆失败 输入系统管理usernamewild,密码wild 登陆成功 显示商品 未登录 成功显示所有商品 已登录 转到登录页面 添加商品 name price amount 威化饼 7.8 66 添加成功 爽歪歪 7.6 55 更新成功 醒目 4.5s 10 输入有误,添加失败 测试结果:操作结果与数据库中的数据对应,并无不同,系统的准确性和及时性得到了很好的验证,系统的增、删、改是即时完成的。至此系统的测试圆满结束。 6 结束语 经过近一个学期的艰苦努力,在xxx老师的指导下我们终于完成了超市管理系统的设计与实现。从可行性研究到需求分析到设计再到实现最后到测试,本系统是严格按照软件开发的过程来的。通过对这个系统的实现,我们知道团队合作的重要性,初步了解了软件开发。从开始到结束每个成员都积极的参与,遇到不懂的一起查资料,同组的人相互学习,对程序设计和Java等知识都有了很大的提高。首先,我们要感谢x老师,在我们的开发过程中,给了我们极大的帮助,她严谨求实的教学、对工作兢兢业业、孜孜以求的作风和大胆创新的进取精神,深深的影响了我们。这不是单个组员的功劳,是我们大家不懈努力、艰苦奋斗的结果。这次的设计,无论从技术上还是环境的适应能力上讲,都为我们以后步入社会打下了良好的基础。从中我们明白了,团队合作才能够提高工作效率。 参考文献 [1] 张宽海.管理信息系统概论[M].北京:高等教育出版社,2003 [2] 李刚.轻量级Java EE 企业应用实战(第3版)——Struts 2+Spring 3+ Hibernate[M].北京:电子工业出版社,2011.3 [3] 薛华成.管理信息系统[M].北京:清华大学出版 [4] 张孝祥.深入体验Java_Web开发内幕-核心基础[M].北京:电子工业出版社,2006.10 [5] 张海藩.软件工程导论[M].北京:清华大学出版社2009.7 [6] 萨师煊.数据库系统概论(第三版)[M].北京:高等教育出版社,2000 [7] Bruce Eckel(美).Java编程思想[M].北京.机械工业出版社,2007 3、通过活动,使学生养成博览群书的好习惯。 B比率分析法和比较分析法不能测算出各因素的影响程度。√ C采用约当产量比例法,分配原材料费用与分配加工费用所用的完工率都是一致的。X C采用直接分配法分配辅助生产费用时,应考虑各辅助生产车间之间相互提供产品或劳务的情况。错 C产品的实际生产成本包括废品损失和停工损失。√ C成本报表是对外报告的会计报表。× C成本分析的首要程序是发现问题、分析原因。× C成本会计的对象是指成本核算。× C成本计算的辅助方法一般应与基本方法结合使用而不单独使用。√ C成本计算方法中的最基本的方法是分步法。X D当车间生产多种产品时,“废品损失”、“停工损失”的借方余额,月末均直接记入该产品的产品成本 中。× D定额法是为了简化成本计算而采用的一种成本计算方法。× F“废品损失”账户月末没有余额。√ F废品损失是指在生产过程中发现和入库后发现的不可修复废品的生产成本和可修复废品的修复费用。X F分步法的一个重要特点是各步骤之间要进行成本结转。(√) G各月末在产品数量变化不大的产品,可不计算月末在产品成本。错 G工资费用就是成本项目。(×) G归集在基本生产车间的制造费用最后均应分配计入产品成本中。对 J计算计时工资费用,应以考勤记录中的工作时间记录为依据。(√) J简化的分批法就是不计算在产品成本的分批法。(×) J简化分批法是不分批计算在产品成本的方法。对 J加班加点工资既可能是直接计人费用,又可能是间接计人费用。√ J接生产工艺过程的特点,工业企业的生产可分为大量生产、成批生产和单件生产三种,X K可修复废品是指技术上可以修复使用的废品。错 K可修复废品是指经过修理可以使用,而不管修复费用在经济上是否合算的废品。X P品种法只适用于大量大批的单步骤生产的企业。× Q企业的制造费用一定要通过“制造费用”科目核算。X Q企业职工的医药费、医务部门、职工浴室等部门职工的工资,均应通过“应付工资”科目核算。X S生产车间耗用的材料,全部计入“直接材料”成本项目。X S适应生产特点和管理要求,采用适当的成本计算方法,是成本核算的基础工作。(×) W完工产品费用等于月初在产品费用加本月生产费用减月末在产品费用。对 Y“预提费用”可能出现借方余额,其性质属于资产,实际上是待摊费用。对 Y引起资产和负债同时减少的支出是费用性支出。X Y以应付票据去偿付购买材料的费用,是成本性支出。X Y原材料分工序一次投入与原材料在每道工序陆续投入,其完工率的计算方法是完全一致的。X Y运用连环替代法进行分析,即使随意改变各构成因素的替换顺序,各因素的影响结果加总后仍等于指标的总差异,因此更换各因索替换顺序,不会影响分析的结果。(×) Z在产品品种规格繁多的情况下,应该采用分类法计算产品成本。对 Z直接生产费用就是直接计人费用。X Z逐步结转分步法也称为计列半成品分步法。√ A按年度计划分配率分配制造费用,“制造费用”账户月末(可能有月末余额/可能有借方余额/可能有贷方余额/可能无月末余额)。 A按年度计划分配率分配制造费用的方法适用于(季节性生产企业) 19
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服