资源描述
本 科 毕 业 论 文
论 文 题 目 :进销存管理系统设计与实现
指 导 老 师 :xxx
学 生 姓 名 :xxx
学 号 :xxx
院 系 :网络教育学院
专 业 :计算机科学与技术
写 作 批 次 : 2014秋
原 创 承 诺 书
我承诺所呈交的毕业论文是本人在老师指导下进行的研究工作及取得的研究成果。据我查证,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果。若本论文及资料与以上承诺内容不符,本人愿意承担一切责任。
毕业论文作者签名:___xxx_____
日期:2014 年 10月 18 日
目 录
摘要 I
Abstract II
1 概述 1
2 总体设计 2
2.1 项目规划 2
2.2 系统功能结构图 3
2.3 开发及运行环境 3
2.4 编码设计 3
2.5 系统流程图 4
2.6 数据库表设计 5
3 系统详细设计 7
3.1系统需求分析 7
3.2系统角色说明 8
3.3系统主要功能模块 8
3.3.1客户信息 8
3.3.2 销售订单 12
3.3.3 生产通知单 21
3.4主要程序清单 30
4 测试与运行 30
5 结束语 33
5.1论文主要工作与结果 33
5.2问题与展望 33
6 致谢 34
参考文献 34
附录一 客户信息 34
附录二 销售订单 40
附录三 生产通知单 57
摘要
中小企业在我国经济发展中具有重要地位,目前我国的中小企业数量多,地区分布广泛,行业分布跨度大。我国中小企业的信息化水平还很低,相比国外企业,还只处于刚开始始用的阶段。随着技术发展,电脑操作及管理日趋简化,电脑知识日趋普及,同时市场经济快速多变,竞争激烈,企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必然。
从系统开发的实际情况出发,经过对采购、销售、物管部门需求调研分析,以及大数据的分析,确立了本系统采用C/S架构,外部访问用VPN,数据库:SQL Server 2008R2,服务器:Jboos4.2,开发工具:NetBeans IDE 6.9.1,开发技术:JDK1.6+Swing+EJB3.0。本文概括了总体设计、项目规划、系统功能结构图、开发及运行环境、编码设计、系统流程图、数据库表设计、详细设计。实现客户的资料管理,销售订单管理,生产通知单管理。开通系统权限的用户可以通过客户端输入用户名、密码进入系统,实现时时查看到客户的资料联系人信息,客户的合同订单信息、客户的产品生产信息,生产进度查询和统计打印。测试表明,该系统运转正常,能使客户资料、合同管理、生产管理工作清晰简单,极大提高工作效率。
关键词:进销存管理系统、产品采购、产品销售、产品库存
Abstract
Small and medium-sized enterprises in our country has the important status in the economic development, the number of small and medium-sized enterprises at present in our country, region are widely distributed, industry distribution span.Information level of small and medium-sized enterprises in our country is still very low, compared with foreign enterprises, still only at the first beginning with the stage.With the development of technology, the computer operation and management of increasingly simplified, increasingly popularization of computer knowledge, at the same time, fast changing market economy, the competition is intense, enterprise use computer manage stock, inventory, sales, and many other link also has become a trend and necessity.
Starting from the actual situation of system development, through the tube department of procurement, sales, demand analysis, research and data analysis, established this system USES C/S architecture, external access to use VPN, database, SQL Server 2008 r2, Server: Jboos4.2, development tools: NetBeans IDE 6.9.1, development technology: JDK1.6 + EJB3.0 +Swing.This article summarizes the overall design, project planning, system function structure, the development and running environment design, coding, system flow chart, database table design, detailed design.To reach the customer information management, sales order management, order management.Opened system permissions users can through the client input user name and password to enter system, implementation always check the information to the customer contact information, customer order information of the contract, the customer product information, print production schedule query and statistics.Tests show that the system operating normally, can make the customer information, contract management, production management work clear and simple, greatly improve work efficiency.
1 概述
经济大环境的变化使得规模经济的优势不再突出。固定的硬设备、人员数量、大量资金等资源投入占企业效益的比重变少,而软投入如管理、人力资源价值、服务、品牌附加值、渠道等要素资源的投入却能增加企业的效益。“速度冲击规模”的速度经济概念已经向企业提出,目前,我国中小企业的信息化水平还很低,相比国外企业,还只处于发展阶段。
那么对于日益发展壮大的企业集团,怎样才能找到一套功能强大\可任意拓展、低运行成本、安全可靠的管理解决方案,来跟上企业的发展,跟上时代的发展呢?
我们认为最好的办法是利用Internet这个工具,架构自己的供需链管理平台,使无处不在的互联网为你所用,实现无处不在的管理目标。让Internet像电一样融入到企业的管理之中,提高企业在新经济时代的核心竞争力,通过对Internet的高效率使用,在激烈的市场竞争中,首先打赢第一仗“信息战”。正是基于对Internet的这种深刻认识,针对中国企业特点提出了基于Internet的网络商务管理解决方案——企业进销存管理系统。
2 总体设计
2.1 项目规划
企业进销存管理系统是一个典型的数据库开发应用程序,由基础信息模块、采购管理模块、库存管理模块、产品销售模块、查询统计模块、系统设置模块等部分组成,规划系统功能模块如下:
q 基础信息模块
该模块主要管理产品信息、客户信息、供应商信息、出入库类型、行业类型、地区管理、 销售类型、部门、员工资料。
q 采购管理模块
该模块主要管理请购单、采购订单、采购报验、采购退货、供应商价格对照表。
q 库存管理模块
该模块主要管理库存查询、调拨管理、期初入库、采购入库、其它入库、领料出库、销售出库、其它出库。
q 产品销售模块
该模块主要管理销售订单、生产通知单、发货通知单、销售退货报验、销售价格对照表。
q 查询统计模块
该模块主要管理销售订单明细查询、销售订单跟踪查询、出入库明细查询、采购退货明细查询、采购订单跟踪。
q 系统设置模块
该模块主要管理模块管理、角色管理、工作流、单据类型、功作流角色、公司信息设置、修改密码。
2.2 系统功能结构图
企业进销存管理系统功能结构如图1所示。
图1 系统功能结构图
2.3 开发及运行环境
硬件平台:
q CPU:P41.8GHz。
q 内存:256MB以上。
软件平台:
q 操作系统:Windows 7/Windows XP/ Windows 2000。
q 数据库:SQL Server 2008R2。
q 服务器:Jboos4.2。
q NetBeans IDE 6.9.1
q JDK1.6+Swing+EJB3.0
q VPN
q 分辨率:最佳效果1024×768像素。
2.4 编码设计
编码设计是数据库系统开发的前提条件,是系统不可缺少的重要内容。编码是指与原来名称对应的编号、符号或记号。它是进行信息交换、处理、传输和实现信息资源共享的关键。编码也用于指定数据的处理方法、区别数据类型,并指定计算机处理的内容等。
本系统内部信息编码采用了统一的编码方式情况。
(1)采购编号为字母“C”、单据分类(两位)+年(后两位)+月+日+4位流水号。例如,C011205010001。
(2)入库单据编号为字母“W”、单据分类(两位)+年(后两位)+月+日+4位流水号。例如,W011205010001。
(3)出库单据编号为字母“W”、单据分类(两位)+年(后两位)+月+日+4位流水号。例如,W021205010001。
(4)销售单据编号为字母“X”、单据分类(两位)+年(后两位)+月+日+4位流水号。例如,X011205010001。
2.5 系统流程图
销售流程图
图2 销售流程
2.6 数据库表设计
表1:客户信息表(bi_client)
字段名
类型(长度)
允许空
默认值
说明
id
numeric(19,0)
N
id
code
VARCHAR(100)
N
客户编号
fullName
VARCHAR(255)
N
客户全称
shortName
VARCHAR(255)
N
客户简称
address
VARCHAR(500)
N
地址
tel
VARCHAR(50)
Y
电话
fax
VARCHAR(50)
Y
传真
contact
VARCHAR(50)
Y
联系人
mobilePhone
VARCHAR(20)
Y
手机
natureOfFirms
VARCHAR(50)
Y
企业性质
area_id
numeric(19,0)
N
区域
dataDict
VARCHAR(100)
Y
行业信息
salesPerson_id
numeric(19,0)
Y
销售人
clientCategory
VARCHAR(100)
N
客户类别
memo
NUMBER(18,2)
Y
备注
deleteFlag
tinyint
N
假删除
表2:客户联系人表(bi_clientcontact)
字段名
类型(长度)
允许空
默认值
说明
Client_id
numeric(19,0)
N
客户ID
name
VARCHAR(20)
N
联系人
tel
VARCHAR(15)
Y
固定电话
mobile
VARCHAR(11)
Y
手机
departement
VARCHAR(50)
Y
部门
position
VARCHAR(50)
Y
职位
email
VARCHAR(100)
Y
Email
表3:销售订单表(so_salesOrder)
字段名
类型(长度)
允许空
默认值
说明
id
numeric(19,0)
N
id
docCode
VARCHAR(20)
N
单据编号
Creator_id
numeric(19,0)
N
制单人id
createDate
datetime
N
制单日期
Client_id
numeric(19,0)
N
客户
Area_id
numeric(19,0)
Y
区域
orderDate
datetime
Y
订单日期
deliveryDate
datetime
Y
交货日期
salesPerson_id
numeric(19,0)
Y
销售人员id
Department_id
numeric(19,0)
Y
部门id
area_id
numeric(19,0)
N
区域
discount
numeric(12,2)
Y
折扣
deposit
numeric(12,2)
Y
定金
moneyName
VARCHAR(100)
N
货币名称
moneyIdentifying
VARCHAR(100)
N
原币标识
exchangeRate
numeric(12,2)
N
原币与本币汇率
taxRate
numeric(12,2)
N
税率
contractNo
VARCHAR(100)
N
合同号
orderCategory
VARCHAR(100)
N
销售类型
craftClaim
VARCHAR(100)
N
工艺要求
memo
NUMBER(18,2)
Y
备注
deleteFlag
tinyint
N
假删除
表4:销售订单明细表(so_salesOrderItem)
字段名
类型(长度)
允许空
默认值
说明
id
numeric(19,0)
N
id
salesOrder_id
numeric(19,0)
N
销售订单id
Part_id
datetime
N
产品id
quantity
float
N
销售数量
originalCurrencyPrice
float
N
原币单价
unitPrice
float
N
本币单价
taxRate
float
N
税率
discountPercent
float
N
折扣率
memo
NUMBER(18,2)
Y
备注
deleteFlag
tinyint
N
假删除
表5:生产通知单表(pp_productionInformOrder)
字段名
类型(长度)
允许空
默认值
说明
id
numeric(19,0)
N
id
docCode
VARCHAR(20)
N
单据编号
Creator_id
numeric(19,0)
N
制单人id
createDate
datetime
N
制单日期
parentDocCode
VARCHAR(20)
N
被引用单据编号
part_id
numeric(19,0)
N
产品
quantity
float
N
数量
completeDate
datetime
N
发货日期
salesPerson_id
numeric(19,0)
Y
销售人员id
contractNo
VARCHAR(100)
N
合同号
orderCategory
VARCHAR(100)
N
销售类型
craftClaim
VARCHAR(100)
N
工艺要求
specialRequire
VARCHAR(1000)
Y
特殊要求
cardInformation
VARCHAR(1000)
Y
贴牌信息
colorClaim
VARCHAR(1000)
Y
颜色要求
packInformation
VARCHAR(1000)
Y
包装信息
sendMachineState
VARCHAR(100)
Y
发机状态
memo
NUMBER(18,2)
Y
备注
deleteFlag
tinyint
N
假删除
表6:生产通知单配置明细表(pp_productionInformOrderItem)
字段名
类型(长度)
允许空
默认值
说明
id
numeric(19,0)
N
id
productionInformOrder_id
numeric(19,0)
N
生产通知id
dataDict1
VARCHAR(100)
N
配置名称
dataDict2
VARCHAR(100)
N
配置选项
memo
NUMBER(18,2)
Y
备注
deleteFlag
tinyint
N
假删除
3 系统详细设计
3.1系统需求分析
通过调查,要求系统需要具有以下功能:
q 由于操作人员的计算机知识普遍较差,要求有良好的人机界面。
q 由于该系统的使用对象多,要求有较好的权限管理。
q 方便的数据查询,支持多条件查询。
q 基础信息管理与查询(包括产品信息、客户信息、供应商信息)。
q 通过计算机,能够直接“透视”仓库存储情况。
q 完善的产品采购信息、产品销售信息进行管理。
q 方便、健全的结账功能。
q 产品销售统计。
q 当外界环境(停电、网络病毒)干扰本系统时,系统可以自动保护原始数据的安全。
q 数据计算自动完成,尽量减少人工干预。
q 系统退出。
3.2系统角色说明
系统使用者角色定义,并说明其工作内容、注意事项、以及能够通过系统获得的数据与相关信息。
1) 系统管理员:负责系统模块、角色、单据类型、工作流、公司信息、销售管理模块、所有相关模块、审批流程定义。
2) 订单文员:负责销售管理模块的客户信息、销售订单、生产通知单、发货通知单的录入、修改、删除、查询。
3.3系统主要功能模块
3.3.1客户信息
操作人员:订单文员
描述:订单文员通过业务员提供的成交客户录入客户信息,客户信息添加会验证客户是否存在。
操作界面:基础资料/客户信息
客户信息列表:可按客户名、客户编码、联系人信息、地址查询。
图3 客户信息列表
客户信息新增:点击新增按钮,系统出现如下输入栏目,客户编码以C+6位流水号自动生成,客户全称、简称、企业性质、客户类型、行业类别、联系人、联系电话等红色字体必填。
图4 客户信息新增
客户信息新增:添加联系人界面,可添加多个联系人,填写完后按保存按钮。
图5 客户信息新增添加联系人
客户信息列表查询,较完整代码请参见“附录”:
/**
* 客户列表管理
* @author agh
*/
public class ClientList_Panel extends WorkSpaceBase_Panel {
private FreeTableModel tableModel = null;//表模型
private List<Client> list = null; //客户列表
private HashMap keywords = new HashMap();
private DefaultTreeModel dtm = null; //所在地区树模型
private DefaultMutableTreeNode currentNode = null;//所在地区树模节点
private User selectEmp = null; //销售员
public ClientList_Panel() {//构造方法
initComponents();
setupTable();
}
private void setupTable() {//设置表模型
this.tableModel = new FreeTableModel(Pub.tableConfigDir + "baseinfo/Client.xml", "Client", this.jTable_list);
}
public void refreshToolbar() {//权限控制
AppMain.enableForwardButton(false);
AppMain.enablePrintButton(false);
if (AppMain.isInPower("/BaseInfoModule/ClientManager/Create", false)) {//新增权限
AppMain.enableCreateButton(true);
} else {
AppMain.enableCreateButton(false);
}
if (AppMain.isInPower("/BaseInfoModule/ClientManager/Delete", false)) {//删除权限
AppMain.enableDeleteButton(true);
} else {
AppMain.enableDeleteButton(false);
}
AppMain.setForwardButtonText("前进");
AppMain.enableBackButton(false);
AppMain.enableReloadButton(true);
AppMain.enableSaveButton(false);
AppMain.enableSearchButton(true);
AppMain.enableCloseButton(true);
}
//查询方法
public void loadFromDB() {
this.keywords = new HashMap();
String keyword = this.jTextField_keyword.getText().trim();
if (!"".equals(keyword)) {
this.keywords.put("keyword", keyword);
}
this.list= EJBClientRemote.getClientSessionRemote().getClientList(keywords);
}
public void load() {//加载方法
int i = 1;
if (this.list != null) {
List newItems = new ArrayList();//设置序列号
for (Client bean : list) {
bean.setSerNum(i);
i++;
newItems.add(bean);
}
this.tableModel.load(newItems);
}
}
@Override
public boolean beforeDelDocument() {//删除方法前提示是否删除
return (this.tableModel.confirmRemove(AppMain.getMainFaceFrame().getFrame()));
}
@Override
public boolean delDocFromDB() {//删除方法
List dellist = this.tableModel.getPendingRemovalItemList();
List removalList = new ArrayList();
for (Iterator it = dellist.iterator(); it.hasNext();) {
Object obj = it.next();
removalList.add(Long.valueOf(((Client) obj).getId()));
}
//调用EJB3.0远程方法删除
EJBClientRemote.getClientSessionRemote().removeClients(removalList);
AppMain.refreshCurrent();
return true;
}
}
3.3.2 销售订单
操作人员:订单文员
描述:订单文员通过业务员提供的成交销售合同录入销售订单,审核结案后会生成生产通知单。
操作界面:销售管理/销售订单
销售订单列表:可按签单日期、发货日期、单号、合同号、销售员、客户名查询。
图6 销售订单列表
销售订单新增:点击新增按钮,系统出现如下输入栏目,单据信息(单据编号、制单人、制单日期、审批人、审批日期、单据状态)保存后自动生成,下单日期、合同号、销售类型、发机日期、工艺要求、客户、联系人、付款方式、办事处、所属区域销售员等红色字体必填。
图7 销售订单新增
销售订单明细新增:添加订单明细界面,可添加多条明细,填写完后按保存按钮。
图8 销售订单明细新增
销售订单列表查询,较完整代码请参见“附录”:
/**
* 销售订单列表
* @author agh<agh_alan@>
*/
public class SaleOrderList_Panel extends WorkSpaceBase_Panel implements SaveButton_Interface, SelectSingleObject_Interface {
private FreeTableModel tableModel = null;//表模型
private List<SalesOrder> itemList = null; //销售订单列表
private DataSet dataSet = null; //通用查询集合
private QueryConditionSetting querySetting = null;//查询条件设定
private int state = 0;//0为待审核,1为已审核
/** Creates new form RoleList_Panel */
public SaleOrderList_Panel() {
initComponents();
this.jInputDatePanel_endDate.setParentFrame(this);//申请日期
this.jInputDatePanel_startDate.setParentFrame(this);//申请日期
setupTable();
//单据类型
vouchType = EJBClientRemote.getWorkflowSessionBeanRemote().getVouchTypeName("销售订单");
if (vouchType != null) {//审批工作流
AuditWorkflow auditWorkflow = EJBClientRemote.getWorkflowSessionBeanRemote().getAuditWorkflowId(vouchType.getAuditWorkflow().getId());
//单据状态:下拉菜单设值
for (AuditWorkflowItem auditWorkflowItem : auditWorkflow.getAuditWorkflowItems()) {
jComboBox_state.addItem(auditWorkflowItem.getDocQueryStatus());
}
}
}
private void setupTable() {
String configFile = Pub.tableConfigDir + "/sale/SalesOrder.xml";
this.tableModel = new FreeTableModel(configFile, "SalesOrder", this.jTable_Part);
}
//权限处理
public void refreshToolbar() {
AppMain.enableForwardButton(false);
//AppMain.enablePrintButton(false);
AppMain.enableBackButton(false);
if (AppMain.isInPower("/SaleModule/SalesOrder/Create", false)) {//新增权限
AppMain.enableCreateButton(true);
} else {
AppMain.enableCreateButton(false);
}
if (AppMain.isInPower("/SaleModule/SalesOrder/Delete", false)) {//删除权限
AppMain.enableDeleteButton(true);
} else {
AppMain.enableDeleteButton(false);
}
AppMain.getDeleteButton().setText("作废");
AppMain.enableReloadButton(true);
AppMain.enableSaveButton(false);
AppMain.enablePrintButton(false);
AppMain.enableSearchButton(true);
AppMain.enableCloseButton(true);
AppMain.enableWorkflowButton(false);
}
public void clear() {
throw new UnsupportedOperationException("Not supported yet.");
}
public void beforeLoad() {
if (querySetti
展开阅读全文