进销存管理系统
《面向对象程序设计》
课程设计报告
题目:进销存管理系统
院(系):信息科学与工程学院
专业班级:软件工程1xxx班
学生: xxx
学号: xxxxx
指导教师: xx
20 15 年 6 月 15 日至20 15 年 6 月 26 日
武昌首义学院制
面向对象程序设计课程设计任务书
目录
1系统分析 (1)
1.1需求分析 (1)
1.2 系统模块分析 (1)
2 UML分析与设计 (3)
2.1 系统用例图 (3)
2.1.1 业务功能用例 (3)
2.1.2 管理员功能用例 (5)
2.2系统类图 (6)
3 数据库分析与设计 (7)
3.1 数据库设计 (7)
3.1.1表设计 (7)
3.1.2视图设计 (8)
3.1.3 存储过程设计 (9)
3.2 数据库DDL脚本 (9)
4 功能实现与系统测试 (11)
4.1 功能实现 (11)
4.2 系统测试 (21)
总结 (25)
1 系统分析
随着我国市场经济的蓬勃发展和人们对计算机的普遍应用,批发、零售行业正处在一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强部管理,提高运营效率。而我国大部分小型批发、零售企业在信息机制上还没有摆脱原有的手工模式,企业部没有形成完善的、有效的信息化管理机制,企业发展的动力不足,从而影响企业的持续、稳定、快速的发展。
该篇设计编写的一个用于小型企业进销存管理系统。其中拥有功能比较全面的进销存管理系统。该系统包括进货信息处理、出货信息处理、库存的查询、销售信息处理及系统设置等几个模块。
1.1需求分析
进销存管理系统,就是通过计算机技术,实现对小型企业进货管理、销售管理、库存处理、信息查询及系统管理。其主要功能包括以下方面:
(1)进货管理
进货管理主要是生成进货单,以及进货退货的处理。进货单存在对进货单的
增加、删除、查找、修改;
(2)销售管理
销售管理主要是生成销售单,以及销售退货处理。销售单存在对销售单的怎
增加、删除、查找、修改
(3)库存管理
库存管理主要是库存盘点以及价格的调整,库存盘点包括库存统计、入库登
记、出库登记。
(4)系统管理
系统管理主要是密码的更改、操作员管理、登陆退出系统
1.2系统模块分析
根据对本系统的需求分析,可以归纳出系统主要功能如下:
(1)进货。进货的消息查询、录入、修改、删除。
(2)销售。销售的消息查询、录入、修改、删除。
(3)库存。库存信息的查询、录入、修改、删除。
(4)系统管理。系统管理员对整个系统人员的查询、修改、删除、增加
图1-1系统模块分析图
2 UML分析与设计
UML是一种功能强大的、面向对象的可视化系统分析的建模语言,它采用一整套成熟的建模技术,可从不同的视角为系统建模,广泛地适用于各个应用领域。它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠、更完善的系统模型。从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性。
2.1 系统用例图
需求分析的目标就是建立需求模型,即从功能需求出发建立用例模型,UML的用例图从用户的需求中提取,以盒图的方式描述待开发的系统的功能需求。每个用例都指定了客户的需求即他们需要系统干什么。用例图为设计活动不仅记录需求而且还提供了一种挖掘的信息,它记录了需求到设计结果之间的映射关系,能够确保设计结果具有明确的根据或者说具有可维护性,基于UML的软件开发过程是以用例驱动的。
2.1.1基于业务功能的用例
图2-1进销存系统的业务用例图
(1
(2
(3
用例# 销售管理
使用语境有权限并登陆到该系统的用户
围销售管理员
级别
主执行者销售管理员
前置条件销售管理员必须登录到该系统
后置条件
触发事件销售管理员进行销售管理
描述步骤活动
1 销售管理员输入用户名、密码登录到该系统
2 点击销售单单管理,便可以到销售单页面
3 输入销售单的信息点击新增就可添加到数据库
里面。
2.1.2基于管理员的业务用例图
图2-2进销存系统的系统管理业务用例图
(1
用例# 管理员管理
使用语境有权限并登陆到该系统的用户
围管理员
级别
主执行者管理员
前置条件管理员必须登录到该系统
后置条件
触发事件管理员进行人员管理
描述步骤活动
1 管理员输入用户名、密码登录到该系统
2 点击管理员身份,便可以登录管理员页面
3 输入添加以及变更的信息就可添加到数据库里
面。
2.2 系统类图
系统中所有类图(含类之间的关系)。通过以上从不同角度对本系统的分析,可以获得系统类图,如图所示。
图2-3进销存系统的类图
3 数据库分析与设计
3.1 数据库设计
3.1.1 表设计
(1)用户表user_table(员工编号(eId),员工(eName),员工性别(eSex),员工年龄(eAge),员工类别(eMark))
(2)进货单buyOrder_table(进货单编号(bId),商品编号(gId),单价(gPrice),单位(unit),进货时间(jhDate),员工编号(eId))
(3)销售表sales_table(销售单编号(sId),商品编号(gId),客户名称(customerName),单价(gPrice),数量(gNum),销售日期(xsDate),员工编号(eId))
(4)库存信息表(tb_table)(库存编号(tId),商品编号(gId),商品数量(gNum),入库时间(rkDate),员工编号(eId))
3.1.2 视图设计
视图是一种常用的数据库对象,是关系数据库系统提供给用户以多种角度来观察数据的一种重要机制。使用视图是的用户能够以更多样而且更有弹性的方式来访问数据,这不仅可以确保数据库的安全性,而且可以提高其使用的便利性。视图的作用是可以间接的访问其他的表或者视图中的数据。
考虑到系统的安全性和查询性能的需要,可以对个别查询通过在数据库服务器端,建立数据库对象---视图来实现。
3.1.3 存储过程设计
存储过程是一组为了完成特定功能的表达式集合,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数来执行。存储过程可以包括程序流、逻辑以及对数据库的查询,可以接受输入参数、输出参数、返回单个或多个结果集以及返回值。存储过程结合了SQL的数据操作能力和过程化语言的流程控制能力,是SQL的过程化扩展。
为提高业务处理的性能、事务操作、安全性的需要,可适当在数据库端建立存储过程,来实现数据的存取。可对以下操作,创建存储过程。
3.2 数据库DDL脚本
--创建用户信息表
CREATE TABLE `user_table` (
`eId` varchar(20) NOT NULL,
`eName` varchar(30) DEFAULT NULL,
`eSex` varchar(10) DEFAULT NULL,
`eAge` int(11) DEFAULT NULL,
`eMark` varchar(30) DEFAULT NULL,
`ePassword` varchar(20) DEFAULT NULL,
PRIMARY KEY (`eId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--创建进货单
CREATE TABLE `buyorder_table` (
`bId` varchar(20) NOT NULL,
`gId` varchar(20) DEFAULT NULL,
`gPrice` int(11) DEFAULT NULL,
`unit` varchar(20) DEFAULT NULL,
`jhDate` date DEFAULT NULL,
`eId` varchar(20) DEFAULT NULL,
`gItem` varchar(30) DEFAULT NULL,
`rmark` int(11) DEFAULT NULL,
`supporter` varchar(45) DEFAULT NULL,
`rtime` date DEFAULT NULL,
PRIMARY KEY (`bId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--创建销售表
CREATE TABLE `sales_table` (
`sId` varchar(30) NOT NULL,
`gId` varchar(30) DEFAULT NULL,
`customerName` varchar(30) DEFAULT NULL, `gPrice` float DEFAULT NULL,
`gNum` float DEFAULT NULL,
`xsDate` date DEFAULT NULL,
`eId` varchar(30) DEFAULT NULL,
`cmark` int(11) DEFAULT NULL,
`ctime` date DEFAULT NULL,
PRIMARY KEY (`sId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--创建库存信息表
CREATE TABLE `tb_table` (
`tId` varchar(30) NOT NULL,
`gId` varchar(30) DEFAULT NULL,
`gNum` int(11) DEFAULT NULL,
`rkDate` date DEFAULT NULL,
`eId` varchar(30) DEFAULT NULL,
PRIMARY KEY (`tId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4 功能实现与系统测试
本系统由18个类文件和25个jsp文件来实现本系统的功能
其中其中18个类文件分别放在5个包中
(1)dao:EmpDao.java,JhDao.java,KcDao.java,XsDao.java
(2)daoImpl:EmpDaoImpl.java,JhDaoImpl.java,KcDaoImpl.java,XsDaoImpl.java (3)dbc:DatabassConnection.java
(4)servlet:EmpServlet.java,JhServlet.java,KcServlet.java,XsServlet.java
(5)vo:BuyOrder.java,Goods.java,KuCun.java,SaleOrder.java,User.java
25个JSP文件则调用这些包中的类文件中的方法来实现与数据库的交互操作。
4.1 功能实现
(1)用户登录功能
该功能来实现四种类型的用户登录,包括进货员、销售经理、库存管理员和系统管理员。<%page contentType="text/html"pageEncoding="utf-8"%>
<%page import="java.sql.*"%>
(2)员工管理功能
该功能是系统管理员的对各个员工类的增删查改功能
<%page contentType="text/html"pageEncoding="utf-8"%>
<%page import="dao.impl.*,vo.*,dao.*"%>
<%page import="java.util.*"%>
<%page import="java.text.*"%>
<%request.setCharacterEncoding("utf-8");
String username=(String)session.getAttribute("username");
if(username!=null){%>
欢迎<%=username%>系统管理员光临本系统,注销
员工管理
<%
try{
String keyWord=request.getParameter("empno");
keyWord=new String(keyWord.getBytes("ISO-8859-1"),"utf-8");
if(keyWord==null){
keyWord="";
}
EmpDao EDAO= new EmpDaoImpl();
List
Iterator
%>
员工编号 | 员工 | 员工性别 | 年龄 | 身份 | 密码 | 操作 |
<%=emp.getEid() %> | <%=emp.getEname() %> | <%=emp.getEsex() %> | <%=emp.getEage() %> | <%=emp.getEmark() %> | <%=emp.getEpassword() %> | <%String y="show"; %> <%String s="delete"; %> | 添加员工 |
<%
}catch(Exception e){
e.printStackTrace();
}
%>
<%
} else {
%>
请先进行系统的登陆!
<%
}
%>
(3)进货员管理功能
该功能实现了进货员对进货单的增删查改功能以及进货单统计和管理入库功能
<%page language="java"import="java.util.*"pageEncoding="utf-8"%>
<%page import="vo.*,dao.impl.*,dao.*"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
<%request.setCharacterEncoding("utf-8");
String username=(String)session.getAttribute("username");
if(username!=null){%>
欢迎<%=username%>进货员光临本系统,注销
进货单管理 | href="input_count.jsp"> 进货单统计 | 申请入库 |
进货单管理
<%
try{
int count=0;
String keyWord=request.getParameter("kword");
keyWord=new String(keyWord.getBytes("ISO-8859-1"),"utf-8");
if(keyWord==null){
keyWord="";
}
JhDao EDAO= new JhDaoImpl();
List
Iterator
%>
进货单编号 | 商品编号 | 商品单价 | 单位 | 进货时间 | 员工编号 | 商品类别 | 入库标志 | 入库时间 | 供应商 | 操作 | ||||||||||
<%=order.getBid()%> | <%=order.getGid() %> | <%=order.getGprice() %> | <%=order.getUnit() %> | <%=order.getJhdate() %> | <%=order.getEid() %> | <%=order.getGitem() %> | <%=order.getRmark()%> | <%=order.getRtime()%> | <%=order.getSupporter()%> | <% String y="show"; %> <% String s="delete"; %> | 增加进货信息 | 共有<%=count %>条进货信息 |
<%
}catch(Exception e){
e.printStackTrace();
}
} else { // 没有session,则应该给出提示,先去登陆
%>
请先进行系统的登陆!
<%
}
%>
(4)销售经理管理功能
该功能实现了销售经理管理销售单,并且对其的增删查改和销售统计及申请出库功能<%page language="java"import="java.util.*"pageEncoding="utf-8"%>
<%page import="vo.*,dao.impl.*,dao.*"%>
<%
String path = request.getContextPath();
String basePath =
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>