超市管理系统软件工程设计.docx
《超市管理系统软件工程设计.docx》由会员分享,可在线阅读,更多相关《超市管理系统软件工程设计.docx(22页珍藏版)》请在冰豆网上搜索。
超市管理系统软件工程设计
超市管理系统
摘要
根据系统所需功能,决定以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
1可行性的研究
1.1技术可行性研究
本系统采用B/S模式,后台采用JavaEE技术和apache-tomcat6.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.2jar包
4.2超市管理系统首页
当session中不存在user对象时,则表示用户没有登录,重定向到登录页面。
当session中存在user对象时,则显示欢饮您xxx
iftest="${user!
=null}">
欢迎您${user.username}退出
if>
iftest="${user==null}">
redirecturl="login"/>
if>
未登录
已登录
4.3超市管理系统登录模块
前端加javascript代码验证用户名和密码是否为空,假如为空则无法提交表单。
只有当用户名和密码都不为空时才可以提交表单,然后到后台验证正确性。
但假如用户的浏览器禁用了javascript,则前端的验证无效,传到后台的用户名和密码可能为空,所以在后台要注意避免空指针异常。
后台验证:
从user表中根据前台输入的用户名和密码查询获得User对象,假如User为空则表示用户名或则密码错误,User不为空则表示登录成功。
访问数据库是由hibernate完成的,所以不需要考虑sql注入。
UserDao类根据用户名(username)和密码(password)从数据库中获得User对象代码
@Override
publicUserfind(Stringname,Stringpassword){
Sessionsession=sessionFactory.getCurrentSession();
Stringhql="fromUserasuserwhereuser.username=:
nameanduser.password=:
password";
Queryquery=session.createQuery(hql);
query.setString("name",name);
query.setString("password",password);
List
>list=query.list();
returnlist.size()==0?
null:
(User)list.get(0);
}
Hibernate查询后台展现的的sql语句
Hibernate:
selectuser0_.idasid0_,user0_.passwordaspassword0_,user0_.usernameasusername0_from_useruser0_whereuser0_.username=?
anduser0_.password=?
4.4商品管理
商品管理也面分为显示和添加,当session中没有user时,表示用户没登录,应该重定向到登录页面。
假如已登录则看以看到管理页面。
4.4.1显示
从数据库商品表中取出所有已有商品,在浏览器中以表格显示。
商品过多可以采用分页显示。
后台数据库记录
显示页面
从数据库中取出所有商品,并保存到list集合中,然后在jsp页面中展现。
GoodsDao类的查询所有商品
@Override
publicListgetList(){
Sessionsession=sessionFactory.getCurrentSession();
Stringhql="fromGoodsasgoods";
Queryquery=session.createQuery(hql);
returnquery.list();
}
Hibernate查询后台展现的的sql语句
Hibernate:
selectgoods0_.idasid1_,goods0_.amountasamount1_,goods0_.nameasname1_,goods0_.priceasprice1_from_goodsgoods0_
4.4.2添加
添加时要判断添加的格式是否符合要求,价格和数量必须是数字,不是数据要提示输入错误。
同样在前端用javascript验证,在后台还是要验证一下。
将从前台传过来的price和amount用正则表达式验证或者用Java的类Integer.praseInt(String)方法将得到的字符串转成int型,假如出现异常(说明格式错误)则表示输入有误,通知用户。
doubleprice=Double.parseDouble(formGoods.getPrice());
intamount=Integer.parseInt(formGoods.getAmount());
GoodsDao类添加商品
@Override
publicvoidadd(Goodsgoods){
Sessionsession=sessionFactory.getCurrentSession();
Stringhql="fromGoodsasgoodswheregoods.name=:
name";
Queryquery=session.createQuery(hql);
query.setString("name",goods.getName());
List
>list=query.list();
if(list.size()!
=0){
doubleprice=goods.getPrice();
goods=(Goods)list.get(0);
goods.setPrice(price);
}
session.save(goods);
}
输入的价格不是数字
数据库中的数据
假如商品名称存在不应该添加商品,而是更新商品数据。
还要防止表单重复提交。
用户在提交后的页面上点刷新时,就会产生表单重复提交问题,可以在产生表单给表单一个id,并将id保存到session中,当提交后将表单的id从session清除掉,想再次提交时从session中找不到id就不予提交。
由于本系统用到了struts2,可以用struts2的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]李刚.轻量级JavaEE企业应用实战(第3版)——Struts2+Spring3+Hibernate[M].北京:
电子工业出版社,2011.3
[3]薛华成.管理信息系统[M].北京:
清华大学出版