JAVA课程设计进销存管理系统.docx
《JAVA课程设计进销存管理系统.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计进销存管理系统.docx(34页珍藏版)》请在冰豆网上搜索。
JAVA课程设计进销存管理系统
进销存管理系统
摘要
进销存系统是在研究了SAPR/3系统运作的的基础之上,结合了中国的国情以及开发人员能力所研制开发的一套进销存系统,这套系统将用户设定为存在进销存业务的企业,即此用户并不负责生产以及组装,而仅涉及到对商品的采购,对商品的存储,以及最终对商品的销售,在这一过程中实现商品的增值,以及企业利润和资本的增加。
系统包括了基本信息,进货管理,销货管理,存货管理以及系统管理五大模块来实现其具体功能.
本文通过对系统开发的意义、背景以及面向企业的进销存系统基本原理和特点作以概述,并结合国内外现状阐述了系统研究的可行性。
经过认真地调研,对系统的开发进行了全面的需求分析,通过对系统的业务流程图、数据流程图及数据字典的描述与定义,确定了系统的总体流程。
在本文介绍了系统的总体结构、功能模块划分、系统的总体流程、系统数据库的设计以及系统的开发特点。
同时详细介绍了系统的实现,并对系统进行了相关分析,阐述了系统实施的可行性。
最后通过对本系统的测试与功能完善,说明了系统各部分的测试过程及其出现问题的解决方案。
本套系统采用的是素有快速开发精灵的VisualBasic6.0作为开发工具,采用SQLSever2000作为数据库的后台支持,基于C/S架构所开发出来的一套进销存系统.
关键字:
SAPR/3;进销存系统;VisualBasic;SQLServer;C/S架构
1前言
1。
1课题的目标和意义
在市场经济中,销售是企业运行的重要环节.为了更好地推动销售,不少企业建立了分公司和代理制,通过分公司或代理把产品推向最终用户。
这些分公司或代理商大都分布在不同的地理位置,跨时空,跨时间的频繁业务信息交流是这些企业业务的活动的主要特点。
在这种形式下,传统的依靠管理人员人工传递信息和数据的管理方式就无法满足企业日益增长的业务需求了。
课题研究目的通过进销存管理系统,利用信息化手段把先进的企业管理方法引入企业的实践,为企业的管理改革提供切实易行的途径。
更重要的是,进销存管理系统可以及时通过信息技术把企业数据快速转化为企业信息,进而为相关管理者提供决策依据。
1。
2国内外发展现状
1.2。
1国外研究现状
国外目前做的进销存管理系统,虽然产品都已经比较成熟,但由于中西文化的差异,进销存系统中的财务管理模块根本无法在企业中使用.国外原先选择的进销存产品,跟他们的财务管理实际流程相差很多。
如在他们的财务管理模块中,增值税发票与应收帐款是合在一起管理的。
但是在国内,大部分企业都是先产生应收帐款,然后再进行开票。
而且,有时候需要把几笔应收帐款和在一起进行开票。
现在把增值税发票与应收帐款和在一起的话,财务人员在实际工作中就很难操作。
另外在报表的格式上也有很大的差异,国外项目很难直接拿到中国企业中使用。
1。
2.2国内研究现状
根据目前从网上可查到的信息,国内进销存管理系统多种多样,如美萍商业进销存管理系统9。
7,其中包含商品销售管理系统,库存管理系(仓库管理系统).软件界面设计简洁,美观,其人性化的软件流程,使普通用户不需培训也能很快掌握软件操作使用方法,上手极易,但是基于C/S结构,系统维护维护,升级开销很大。
1。
2。
3本人见解
在各种先进技术中,基于Web的进销存管理系统方便与用户交互,升级,界面设计需要简洁,美观,人性化的软件流程,才能吸引更多的用户.
2进销存管理系统主要功能
本系统是根据人们在日常生活中的实际需求而开发的,完全能够实现人们对各类商品信息及各类信息查询的功能,通过本系统可以达到以下目标:
(1)系统最大限度地实现了易使用性、易维护性;
(2)系统运行稳定,安全可靠;
(3)操作灵活,界面友好,充分满足各类企业的进销存管理需求;
(4)实施规范的进、销、存一体化业务管理;
(5)强大的查询分析功能;
(6)灵活、细分的权限控制功能.
本系统是一款将进货、销售、库存进行一体化管理的系统.系统由基本信息、进货管理、销售管理、库存管理和系统管理等模块组成.特规划功能模块如下:
(1)基础信息模块:
商品信息、供应商信息、客户信息。
(2)进货管理:
商品进货、进货退货。
(3)销售管理:
商品销售、客户退货。
(4)库存管理:
库存查询、库存盘点。
(5)系统管理模块:
用户管理、更改资料。
2.1系统主模块图
基基本信息
进进货管理
系系统管理
销销货管理
库存货管理
基于java进销存管理系统
图1系统主模块图
3系统分析
3。
1可行性分析
3.1。
1技术可行性分析
企业进销存管理系统的开发基于B/S模式,主要包括前端应用程序的开发以及后台数据库的建立和维护两个方面.对于前者要求应具备功能完备、易于使用等特点,而对于后者则要求能建立数据一致性和完整性强、数据安全性好的库.本系统拟采用JSP和SQLSever分别作为前端和后端的开发工具.JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准.JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*。
htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*。
jsp)。
用JSP开发的Web应用是跨平台的,JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑.网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。
JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易.SQLSever作为微软在Windows系列平台上开发的数据库,一经推出就以其易用性得到了很多用户的青睐,相信大多数将自己的业务建立在Windows平台上的用户都会对它有相当的亲切感。
区别于FoxPro、Sql2005小型数据库,SQLSever是一个功能完备的数据库管理系统。
它包括支持开发的引擎、标准的SQL语言、扩展的特性等功能.而像存储过程、触发器等特性,也是大型数据库才拥有的。
因此从技术方面讲开发此系统是可行的。
3。
1。
2经济可行性分析
企业进销存管理系统从中小企业的实际出发,可有效地管理企业的进销存情况,并降低企业运营成本、及时调整营销策略、提高库房的利用率。
当前许多中小型企业都使用人工管理方式(即纸和笔)来管理企业的进销存,这样的管理方式既困难又浪费时间和成本,并且容易出现漏账、差账的情况,因此中小企业应该向大型企业那样采用先进的管理方式,提高企业效率、降低企业运营成本。
企业进销存管理系统是一个信息化、智能化和先进管理理念的集合体。
而管理是一个动态过程,在其运行过程中要采取多项措施。
所以在管理中获得经济效益是一个综合效益,要对它进行直接定量的分析是比较困难的。
一般新系统带来的经济效益是简介的,其最主要的表现就是减少了企业管理费用和人力开支。
而其它一些繁琐的步骤都通过新系统来加以分析解决,不仅节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来巨大的经济效益.
3.1.3操作可行性分析
本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。
而整个企业进销存管理系统采用最友好的交互界面,简介明了,不需要对数据库进行深入的了解。
由此,该系统的操作是可行的,有必要开发该系统。
综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济上还是操作上。
因此,可以设计该系统的数据流程图,建立数据字典。
3。
2需求性分析
通过调研和分析,本文将系统分成销售,进货,库管,基本信息管理,系统管理五大子模块。
其操作范围内的系统内容信息进行操作管理,完成满足日常经营、管理的要求。
3.2。
1销售子系统需求
(1)用户登录
要进入系统的用户都要进行登陆才能进入系统界面,
用户打开登陆框,输入用户名和密码:
用户名和密码输入正确方可进入系统。
注:
此用户名和密码都是管理员事先分配好的,此用户只能有更改自己密码的权限。
(2)商品销售
此用户具有查看并填写销售业务单,查看历史销售业务单,并可以更改,删除本用户负责的销售单。
(3)客户退货
此用户具有查看并填写客户退货单,查看历史客户退货单,并可以更改,删除本用户负责的客户退货单。
销售管理子系统
基用户登陆
系客户退货管理
销销售管理
图2销售管理子系统的主要功能图
3。
2。
2仓库管理子系统需求
(1)用户登录
要进入系统的用户都要进行登陆才能进入系统界面,
用户打开登陆框,输入用户名和密码:
用户名和密码输入正确方可进入系统。
注:
此用户名和密码都是管理员事先分配好的,此用户只能有更改自己密码的权限.
(2)仓库盘点
此用户具有查看并填写,删除,修改其负责仓库产品入库,出库的功能.
(3)仓库管理
管理员具有查看并填写,删除,修改仓库的功能。
仓库管理子系统
基用户登陆
系仓库管理
销仓库盘点
图3仓库管理模块功能图
3。
2.3进货管理子系统需求
(1)用户登录
要进入系统的用户都要进行登陆才能进入系统界面,
用户打开登陆框,输入用户名和密码:
用户名和密码输入正确方可进入系统.
注:
此用户名和密码都是管理员事先分配好的,此用户只能有更改自己密码的权限。
(2)进货管理
此用户具有查看并填写进货单,查看历史进货单,并可以更改,删除本用户负责的进货单。
(3)进货退货单
此用户具有查看并填写进货退货单,查看历史进货退货单,并可以更改,删除本用户负责的进货退货单。
进货管理子系统
基用户登陆
系退货管理
销进货管理
图4进货模块功能图
3.2.4基本信息管理子系统需求
(1)用户登录
要进入系统的用户都要进行登陆才能进入系统界面,
用户打开登陆框,输入用户名和密码:
用户名和密码输入正确方可进入系统。
注:
此用户名和密码都是管理员事先分配好的,此用户只能有更改自己密码的权限。
(2)产品基本信息管理
用户具有查看并填写产品基本信息单,查看产品基本信息单,并可以更改,删除的产品基本信息单。
(3)客户基本信息管理
用户具有查看并填写客户基本信息单,查看客户基本信息单,并可以更改,删除的客户基本信息单.
(4)供应商基本信息管理
用户具有查看并填写供应商基本信息单,查看供应商基本信息单,并可以更改,删除的供应商基本信息单。
基本信息管理子系统
供应商基本信息管理
客户基本信息管理
产品基本信息管理
用户登录
图5基本信息功能图
4系统总体设计
4。
1系统总体架构与设计
4。
1。
1设计原则
根据商品贸易原则,实现买卖双方有效交易,特别在销售,库存,以及进货这三个模块之间实现互联,以达到对产品信息进行及时更新及记录。
4。
1。
1模块设计
整个系统的模块划分如下:
图7各模块在导航栏的体现
4。
2系统E—R图
图8进销存管理系统E—R图
4。
3数据库设计
本系统采用微软公司的SQLServer2000数据库管理系统,下面就该系统的数据库表做如下设计(主键都是自动增长):
产品基本信息表:
产品的信息,与销售,库存,进货产品之间的信息一一对应,product_id用来标记产品编号,产品ID不一样则无法进行该品的进货,销售,库存功能,表结构见附录一
5功能模块详细设计及实现
5.1系统主界面
模块是本系统的界面,在本界面上集成了本系统的所有功能,共有五个功能菜单和10个子菜单(功能模块),从而实现了本系统从销售管理,进货管理,产品基本信息管理,库存管理,系统管理等系统的具体功能。
系统主界面如图所示.
图9系统主界面
5。
2基本信息管理
5。
2.1功能分析
方便用户对产品基本信息,客户信息,供应商信息进行多条件查询,增加,修改,删除.
5。
2.2实现原理
用hibernate语句里的查询、增加、修改、删除语句,对数据库里对应的产品信息表,供应商信息表,客户信息表进行相应的操作.
图10产品基本信息管理界面
图11客户信息管理界面
图12供应商信息管理界面
5。
2.3核心代码
/**
*数据库中获取所有
*@paramcondtions保存前台传递的数据
*@return
*/
publicListRangefindAll(Mapconditions){
//数据库读出的所有顾客信息
ListfindAll();
if(list。
size()〉0){
//转换成所需要的格式,传递到前台显示
infoList=convertFormat(list);
returnPageShow。
pageHandle(conditions,infoList);
}else{
infoList。
add(newCustomer());
returnnewListRange(infoList。
subList(0,1).toArray(),infoList。
size());
}
}
5。
3销售管理
5.3.1功能分析
销售货物时,用户可以填写销售单,并可以查看,修改,删除销售单,同时仓库中该产品数量发生相应变动.
顾客退货时,用户可以填写销售退货单,并可以查看,修改,删除销售退货单,同时仓库中产品数量发生相应变动。
5.3。
2实现原理
用hibernate语句里的查询、增加、修改、删除语句,对数据库里对应的销售单信息,销售退货表信息,客户信息表进行相应的操作。
同时对产品仓库表中的产品数量进行相应变动。
图13销售登记界面
图14销售退货界面
图15填写销售单界面
5.3.3核心代码
/**
*增加销售单
*@params
*@return最后一个销售单ID
*/
publicintsave(ios。
web.form.sale。
Sales){
Saless=newSale();
Customerc=newCustomer();//根据顾客ID增加
c。
setCustomerId(s。
getSalCustomerId());
ss。
setCustomer(c);//用户的ID保存在session中,从session中获得
ios.pojo。
sys.Useru=newios.pojo。
sys。
User();
u。
setUserId(s。
getSalUserId());
ss。
setUser(u);
ios.pojo.iosinfo。
Productp=newios.pojo。
iosinfo.Product();
p。
setProductId(s。
getSalProductId());
ss。
setProduct(p);
ss。
setSadate(s.getSadate());
ss.setSanumber(s.getSanumber());
sd。
save(ss);//同时产品仓库表中相应的产品数量减少
StoreHandle.decreNum(p,u,s。
getSanumber());
returnsd.findlastID();
}
5。
4进货管理
5。
4.1功能分析
进货时,用户可以填写进货单,并可以修改,查看,删除进货单,同时仓库中相应产品信息发生相应变动.
进货退货时,用户可以填写进货退货单,并可以修改,查看,删除进货退货单,同时仓库中相应产品信息发生相应变动.
5。
4。
2实现原理
用hibernate语句里的查询、增加、修改、删除语句,对数据库里对应的进货退货单信息表,进货信息表进行相应的操作。
同时对产品仓库表中的产品数量进行相应变动。
图16购买进货界面
图17进货退货界面
5。
4。
3核心代码
/**
*更新
*@params
*@return
*/
publicbooleansaveorupdate(ios。
web。
form。
purchase。
Purchases){
Purchasess=newPurchase();
Supplyc=newSupply();//根据顾客ID增加
c。
setSupplyId(s。
getPsupplyId());
ss。
setSupply(c);
ios。
pojo。
sys。
Useru=newios。
pojo。
sys。
User();
u.setUserId(s。
getPuserId());
ss.setUser(u);
ios。
pojo.iosinfo。
Productp=newios。
pojo。
iosinfo.Product();
p。
setProductId(s.getPproductId());
ss。
setProduct(p);
ss。
setPudate(s.getPudate());
ss.setPunumber(s.getPunumber());
ss。
setPurchaseId(s.getPurchaseId());
booleanisSuccess=true;
try{
pojod。
saveorupdate(ss);
}
catch(Exceptione){
isSuccess=false;
e.printStackTrace();
System.out。
println(”修改失败”);
}
returnisSuccess;
}
5。
5库存管理
5。
5。
1功能分析
仓库盘点时,用户可以进行产品入库,产品出库,入库修改操作,同时可以进行相应地查询。
仓库管理时,用户可以分配仓库,修改仓库,查询、删除仓库.
5。
5.2实现原理
用hibernate语句里的查询、增加、修改、删除语句,对数据库里对应的产品仓库表,仓库表进行相应的操作.
图19仓库管理界面
5。
5.3核心代码
/**
*根据条件查询
*@paramcondtions
*@return
*/
publicListRangegetSaleByParames(Mapconditions){
StringproductName=”";
Stringusername=””;//仓库名字
Stringdbasename=”";
try{productName=(conditions.get(”pname”)!
=null)?
(conditions。
get(”pname”).toString()):
"”;
username=(conditions.get(”username”)!
=null)?
(conditions。
get(”username”)。
toString()):
”";
dbasename=(conditions.get(”dbase")!
=null)?
(conditions.get(”dbase”)。
toString()):
””;
}catch(Exceptionef){
ef。
printStackTrace();}
System。
out.println(”-—-—-———-—-——————-—传递的"+productName+username+dbasename);
//条件SQL语句
Stringsql="fromStoreasmwherem.flag=1andm。
storeId!
=0”;
if(!
(”"。
equals(productName))){
sql=sql+”andm。
product。
pname=’”+productName+"'";}
if(!
("”。
equals(dbasename))){
sql=sql+”andm.dbase。
dbasename='”+dbasename+”'”;}
if(!
(””。
equals(username))){
sql=sql+"andm.user.username='”+username+”'";}
System。
out。
println("sqlis:
"+sql);
List〈Store>slist=pojod.findByPropertysSQL(sql);
if(slist。
size()〉0){
returnPageShow.pageHandle(conditions,convertFormat(slist));
}else{
infoList。
add(newStore());
returnnewListRange(infoList。
subList(0,1)。
toArray(),infoList.size());}
}
5.6系统管理
5.6。
1功能分析
管理员可以进行分配用户,修改用户信息,同时查看,删除用户信息。
5。
6.2实现原理
用hibernate语句里的查询、增加、修改、删除语句,对数据库里对应的用户表进行相应的操作。
图20用户管理界面
5。
6。
3核心代码
/**
*逻辑删除
*@paramids要删除的ID存放在数组当中
*@return
*/
publicbooleandelete(Listids){
booleanisSuccess=true;
intsaleId=0;
try{
for(inti=0;isize();i++){
saleId=(Integer)ids。
get(i);
Users=pojod.findById(saleId);
s.setFlag
(2);
pojod。
saveorupdate(s);}
}catch(Exceptione){
isSuccess=false;
e.printStackTrace();
System。
out。
println(”删除失败");}//返回产ID
returnisSuccess;
}
6系统测试
6。
1系统开发环境
操作系统:
Windows7;
开发工具:
Myeclipse6.0。
1;
开发语言:
UML;
应用数据库:
SQLServer2000;
应用服务器:
Tomcat6。
0;
6.2系统测试
6。
2.3测试项目说明
在测试过程中对每个功能逐一测试,其具体操作如下:
(1)测试是否能够正常登陆
当用户输入用户名不存在,或用户名与其所输入的密码不准确时,就无法正常登陆.必须输入正确的用户名和密码。
(2)测试基本信息,销售,进货,仓库管理,系统管理五个模块功能是否正常执行
在测试销售管理下添加销售单时,要输入产品数量,否则无法变更仓库中相应的产品数量,只有准确输入各个产品信息才能成功添加销售单;在测试进货管理下添加进货单时,要输入产品数量,否则无法变更仓库中相应的产品数量,只有准确输入各个产品信息才能成功添加进货单;在测试仓库管理下分配仓库管理时,仓库与用户必须保证一对一的关系,否则提示“添加不成功”;在测试基本信息下添加产品时,必须要输入产品所有信息,否则会提示