目 录
引言 ............................................................................................................................................. 2 一、系统分析 ............................................................................................................................. 2
(一)选题的背景 .............................................................................................................. 2 (二)系统需求分析 .......................................................................................................... 3 (三)系统的开发及功能描述 .......................................................................................... 4 (四)系统逻辑模型 .......................................................................................................... 5 二、系统设计 ............................................................................................................................. 6
(一)系统总体结构设计 .................................................................................................. 6 (二)数据库设计 .............................................................................................................. 6 (三)系统功能模块的详细设计 ...................................................................................... 7 三、系统实现 ........................................................................................................................... 11 四、系统开发总结 ................................................................................................................... 16 参考文献 ................................................................................................................................... 16 附 录 ................................................................................................................................... 17
1 1 / 24
商品库存管理系统课程设计
引言
随着我国市场经济的蓬勃发展和人们对物质水平需求的增加,各行各业都处于一个飞速发展的时期,行业的快速发展必然导致各企业之间的竞争更加激烈,为了使自己的企业在竞争中能够站稳脚跟,不被激烈的竞争环境所压倒,必然要求企业加强对自身的管理,提高企业的经营效率。
本库存管理系统的开发主要包括前端应用程序以及后台数据库的建立和维护两个方面。经过分析,我选用myeclipse来开发系统,利用其提供的各种面向对象的开发工具,来操纵数据库。
本论文正文分为五部分。第一部分介绍了开发库存管理系统的必要性以及如何开发,并简要概述了myeclipse和SQL Server 2000。第二部分介绍系统开发前的准备,包括系统的需求说明及系统总体结构设计和详细设计。第三部分并着重阐述了系统主要功能模块的具体实现。第四部分是系统开发的后期工作,讲到了该系统的不完善之处及本次系统开发过程中一些切身的感受与想法,是我做这次课程设计的心得体会
一、系统分析
(一)选题的背景
企业的库存物资管理往往是很复杂、很繁琐的。由于所掌握的物资种类众多,订货、管理、发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计报表繁多,因此仓库的库存管理必须编制一套库存管理信息系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。
由于超市的行业特殊性,产品种类繁多,业务量巨大,若仍然采用人工记账的方式,必然不能满足企业的需求,企业需要利用计算机来进行库存管理,因此需要构造一个库存管理系统。
一个完整的企业物资供应管理系统应包括采购计划管理,合同收托管理、仓库库存管理、定额管理、统计管理、财务管理等模块。其中仓库的库存管理是整个物资供应管理系统的核心。因此有必要开发一套独立的库存管理系统来提高企业工作效率, 而所使用的这套库存管理系统是企业生产经营管理活动中的核心,此系统必须可以用来控制合理的库存费用、适时适量的库存数量,使企业生产活动效率最大化。通过对这些情况的仔细调查,我开发了下面的仓库库存管理系统。
2 / 24
商品库存管理系统课程设计
(二)系统需求分析
系统需求分析就是在用户需求调研的基础上,确定系统的总体结构方案,完成相应的需求分析报告。在确定系统的总体结构方案过程中,包括确定应用程序的结构、系统开发环境和开发工具的选择。
1.应用程序结构确定
从用户应用角度来看,可把应用程序系统的组成部分分成数据存储层、业务处理层和界面表示层等3个层次,而应用程序结构可归纳为:集中式应用程序结构、单机板应用程序结构、多层服务器应用程序结构、浏览器/服务器应用程序结构、客户机/服务器应用程序结构等5种类型。
本库存管理系统就采用了单机版应用程序结构,将数据库和应用程序置于一台机器上,这样更加节约成本,适合中小规模的超市使用。用户可以轻松将其拷贝到其他计算机上,可以同时运行程序。
2.确定系统开发环境
由于大多数公司内部使用的计算机平台都是基于Windows环境的。为了降低系统成本,应最大程度地利用现有的资源、兼容现有的环境,可确定使用下面的开发环境:
★数据库:Microsoft SQL Server 2000; ★前端开发工具:myeclipse; 3.开发工具的选择
可视化程序设计是一种全新的程序设计方法,全面采用面向对象的程序设计技术,使用事件驱动机制进行程序设计。利用可视化开发工具可以快速、高效地开发应用程序。可视化的开发工具很多。
myeclipse是集成开发环境,是目前最流行的 Windows 平台应用程序开发环境。它是把代码的编写、程序的调试、编译、运行以及其他的相关操作都集成在一起的“编程工具”。 作用是程序员通过它这个平台,利用编程语言来写程序,调试,运行。
SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统。该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。
经分析,本库存管理系统选用myeclipse来设计界面,选用SQL Server 2000来建立后台数据库。
3 / 24
商品库存管理系统课程设计
(三)系统的开发及功能描述 1.开发方法的选择
信息系统的开发是一项比较复杂的工作,因此我们必须选用科学有效的开发方法。本系统的开发采用了生命周期法。在系统设计时遵循系统调查研究、系统分析、系统设计和系统实施四个主要阶段进行设计,而在具体的设计上,则通过在系统的使用及对系统了解的不断加深中,对某一部分或几部分进行重新分析、设计、实施,使系统逐步完善。
2.系统功能描述及系统安全性
本库存管理系统是一套对货品入库、出库、库存进行全面管理的系统。 在管理内容上,它的主要功能包括:
进货管理:进行填写货品信息,货品采购入库,入库单据的填写和修改最低库存量。 出货管理:进行货品出库,出货单据的填写和获取采购员信息。
信息查询:货品信息查询,库存信息查询,入库、出库单据查询,日报表、月报表查询。
统计报表:完整的日报表、月报表统计查询功能,每张单据每次业务金额都可以清楚地反映。
系统管理:身份验证,修改本人密码,注册用户,修改删除用户。
由于库存管理系统包含比较重要的信息,因此,在系统设计时除了注重用户的需求,还要保证系统的安全性和一致性,体现如下:
(1)安全性:本系统中共分为三类不同的用户,分别具有不同的权限。
(2)一致性:系统的数据要保证一致性、准确性,当某一数据库中记录发生改变时,与之相关联的数据库也随之变化。 (四)系统逻辑模型
本系统的逻辑模型以系统流图为主要描述工具。我们用不同的符号代表这四个元素: →表示数据流;
=表示文件(数据存储); ○表示加工;
4 / 24
商品库存管理系统课程设计
操作员个人信息表 信息查询 信息查询 查询结果 系统管理员 用户编号 密码 身份验证 仓库信息表 采购员表 客户信息表 操作员个人信息表 系统管理员 修改要求 数据维护 修改结果 采购员表 货品信息表库存信息表 仓库管理员 进货管理 进货管理 进货结果 库存管理系统 用户编号 密码 出货管理 身份验证 出货管理 出货结果 报表统计 操作员个人信息表 月报表统计 统计结果 操作员个人信息表 采购员表 库存信息表日报表 信息查询 经理 用户编号 身份验证 信息查询 查询结果 经理 密码 日报表 货品信息表 库存信息表 入库单 出库单 月报表 图1-2 库存管理系统的第二层图
5 / 24
商品库存管理系统课程设计
二、系统设计
(一)系统总体结构设计 1.系统功能分析
本库存管理系统需要完成的功能有:
(1)库存管理的各种信息的输入,包括入库、出库、货品信息的输入等。 (2)库存管理的各种信息的查询、修改和维护。 (3)入库单、出库单的生成,日报表、月报表的生成。
(4)在货品库存中加入所允许的最低库存字段,对所有库存物资实现监控和报警。 2.系统功能模块图
根据系统功能分析,画出系统功能模块图如下:
库存管理系统 系统管理 进货管理 出货管理 报表统计 信息查询 身份验证 注册用户 修改删除用户 修改密码 出库单填写 获取采购员信息 日报表 月报表 入库单填写 填写货品信息 修改最低库存 货品查询 库存查询 报表查询
(二)数据库设计
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
1. 数据库概念结构设计
6 / 24
商品库存管理系统课程设计
货品编号 货品名称 单位 规格型号 货品 n n n 采购 存储 1 1 仓库 客户编号 采购的货品类别 联系电话 订购 m 客户 采购员 客户名称 仓库名称 负责人 采购员编号 图2-2 库存管理系统E-R图
(三)系统功能模块的详细设计
本库存管理系统是本着用户操作界面友好、清晰、易学易用的原则进行设计的。 1.身份验证模块的设计
库存管理系统 用户编号: 密码: 登陆 退出
图2-3 用户登录模块界面设计 该模块的流程图如图2-4所示:
7 / 24
商品库存管理系统课程设计
开 始 用 户 选择身份 登 录 否 判断用户类型 是否为合法用户? 否 是 进入系统 结 束
此外,对一个完整的系统而言,用户是应该可以修改自己的密码的,因此系统中应该具有修改密码的功能,提高数据的安全性。
请输入新密码 请确认新密码 确认 取消
图2-5 修改密码界面设计
2.系统主界面的实现
8 / 24
商品库存管理系统课程设计
系统管理 删除报表 查询修改信息 退出系统
图2-6 主界面(admin)设计
修改密码 进货管理 出货管理 报表统计
图2-7 主界面(仓管)设计
修改密码 信息查询 退出系统
图2-8 主界面(经理)设计
3.进货管理模块的实现
进货管理模块包括填写货品信息、入库单、修改最低库存三个子模块。 (1)填写货品信息
9 / 24
商品库存管理系统课程设计
填写货品信息 货品编号 货品类别 规格型号 货品名称 单位 颜色 确定 取消
(2)入库单
入库单 凭证编号 库别 进货单价 采购人编号 货品编号 数量 入库时间 制单人 确定 取消 (3)修改最低库存
修改最低库存 货品编号 最低库存 确定 取消
4.出库管理模块的实现
出库管理包括填写出库单,获取采购员信息两个子模块。
10 / 24
商品库存管理系统课程设计
(1)出库单
出库单 凭证编号 库别 出货单价 客户编号 货品编号 数量 出库时间 制单人 确定 取消
(2)获取采购员信息
获取采购员信息 货品编号 搜索的信息: 搜索 确定
5.报表统计模块的实现
本系统的报表分为日报表和月报表,日报表在添加入库单和出库单时就已经自动添加进数据库中的日报表了,所以在此只需再手动添加月报表。
三、系统实现
系统实现包括用户需求实现,系统界面实现和数据库实现三方面。 1.用户登录界面
用户通过该界面登录进入系统。
11 / 24
商品库存管理系统课程设计
图3-1 系统登录界面 3.1 系统管理
修改密码界面 以下是注册用户界面:
系统管理员注册用户界面
注册前数据库中操作员个人信息表如图3-7:
12 / 24
商品库存管理系统课程设计
注册前的操作员个人信息表数据库 注册用户成功界面:
13 / 24
商品库存管理系统课程设计
系统管理员修改删除用户界 删除报表界面如下图:
系统管理员删除报表界面 3.2 进货管理 仓库管理员填写入库单界面如下图:
仓库管理员填写入库单界面 界面自动跳转到如下图:
仓库管理员填写入库单界面
14 / 24
商品库存管理系统课程设计
仓库管理员填写货品信息界面
入库单填写的信息会自动加入入库单数据库,并且更改库存信息表和日报表中的相 关信息。
未添加信息前的入库单
入库单未添加前的库存信息表 填写完入库单的图如下:
15 / 24
商品库存管理系统课程设计
四、系统开发总结
此次库存管理系统开发让我学习到很多知识,现总结如下:
系统开发的过程中,我深刻体会到了以前上课老师经常提起的一个问题,那就是:一个系统开发的过程中编码不是最重要的,重要的是对系统进行分析以及建立恰当的系统模型。
在该库存管理系统设计中,从系统的实用性出发,我能够在开发该系统时站在用户的角度看问题,本着用户操作界面友好、清晰、易学易用的原则进行设计。
总之,这次的系统开发,实现了我自己动手完成一个系统开发的目标,也学习到很多东西,不只是实践经验,还有一些做事的道理:在工作时,要尽量把要遇到的问题考虑周全,提前做好准备,那样就不会在遇到问题时有措手不及的感觉。
参考文献:
[1] 梅玫: 《物资库存的计算机管理》,黑龙江科技信息,2009年7月25日.
[2] 申冠楠,郭宗义《百货店商品的库存管理系统的设计与实现》,现代商业,2010年1月18日. [3] 刘志坚: 《中小制造企业库存管理系统的开发与设计》,中北大学,2009年4月25日. [4] [美]c.j.date:《数据库系统导论(英文版第七版)》,机械工业出版社,2002年. [5] 邓良松:《软件工程》,西安电子科技大学出版社,2004年.
[6] 邓远志:《数据库设计方法》,《南昌教育学院学报》,2005年第20卷第4期. [7]萨师煊等编著 ,《数据库系统概论》 , 高等教育出版社, 2000年. [8]东方人华主编,《JSP范例入门与提高》, 清华大学出版社, 2003年.
[9]李佳, 付强, 丁宁等编著,《java开发技术大全》, 清华大学出版社, 2009年. [10]欧立奇,康祥顺,马煜编著,《java案例开发集锦》 , 电子工业出版社 ,2005年. [11] 邝孔武,王晓敏编著,《信息系统分析与设计》,清华大学出版社,1999年. [12] 史济民:《软件工程-原理、方法与应用》,高等教育出版社,2002年. [13] 薛华成:《管理信息系统》,清华大学出版社,1999年. [14] 张金城:《管理信息系统》,北京大学出版社,2004年. [15]马士华:《供应链管理》,机械工业出版社,2000年.
[16]李玉良,邵新宇:《CPFR——供应链库存管理技术的新趋势》,机械设计与制造工程,2001年第30卷第3期.
16 / 24
商品库存管理系统课程设计
附 录
源代码: import tongji.*; import danjuchaxun.*;
import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JFrame; import javax.swing.JButton; import java.awt.Rectangle;
public class Danjuchaxun extends JFrame {
private static final long serialVersionUID = 1L;
ImageIcon beijing = new ImageIcon(\"pic/danjuchaxunbeijing.jpg\"); private JPanel jContentPane = null;
private JButton jButton = null;
private JButton jButton1 = null; private JButton jButton2 = null; private JButton jButton3 = null; private JButton jButton4 = null; private JButton jButton5 = null; private JButton jButton6 = null; private JButton jButton7 = null; private JButton jButton8 = null; private JButton jButton9 = null; private JButton jButton10 = null;
private JButton jButton11 = null;
//private JButton jButton12 = null; private JButton jButton13 = null;
JLabel backgroundall = new JLabel(beijing); /**
* This is the default constructor */
public Danjuchaxun() {
17 / 24
商品库存管理系统课程设计
} /**
* This method initializes this * @return void */
private void initialize() { } /**
* This method initializes jContentPane * @return javax.swing.JPanel */
private JPanel getJContentPane() {
if (jContentPane == null) {
jContentPane = new JPanel(); jContentPane.setLayout(null); jContentPane.setOpaque(false); jContentPane.add(getJButton(), null); jContentPane.add(getJButton1(), null); jContentPane.add(getJButton2(), null); jContentPane.add(getJButton3(), null); jContentPane.add(getJButton4(), null); jContentPane.add(getJButton5(), null);
18 / 24
this.setBounds(233, 218, 156, 303); this.setContentPane(getJContentPane()); this.setTitle(\"单据查询\"); this.setUndecorated(true); this.setResizable(false); this.getLayeredPane()
.add(backgroundall, new Integer(Integer.MIN_VALUE));
super(); initialize();
backgroundall.setBounds(0, 0, beijing.getIconWidth(), beijing
.getIconHeight());
this.setVisible(true);
商品库存管理系统课程设计
} /**
* This method initializes jButton * @return javax.swing.JButton */
private JButton getJButton() { } /**
* This method initializes jButton1 * @return javax.swing.JButton */
private JButton getJButton1() {
if (jButton1 == null) {
19 / 24
if (jButton == null) { }
return jButton;
jButton = new JButton();
jButton.setBounds(new Rectangle(8, 8, 140, 22)); jButton.setText(\"进货单据查询\");
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { }
new ChaxundanjuJH();
}
return jContentPane;
jContentPane.add(getJButton6(), null); jContentPane.add(getJButton7(), null); jContentPane.add(getJButton8(), null); jContentPane.add(getJButton9(), null); jContentPane.add(getJButton10(), null); jContentPane.add(getJButton11(), null); //jContentPane.add(getJButton12(), null); jContentPane.add(getJButton13(), null);
});
商品库存管理系统课程设计
} /**
* This method initializes jButton2 * @return javax.swing.JButton */
private JButton getJButton2() { } /**
* This method initializes jButton3 * @return javax.swing.JButton */
private JButton getJButton3() {
if (jButton3 == null) {
20 / 24
if (jButton2 == null) { }
return jButton2;
jButton2 = new JButton();
jButton2.setBounds(new Rectangle(8, 52, 140, 22)); jButton2.setText(\"退货出库单据查询\");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { }
new ChaxundanjuTHCK();
}
return jButton1;
jButton1 = new JButton();
jButton1.setBounds(new Rectangle(8, 30, 140, 22)); jButton1.setText(\"出货单据查询\");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { }
new ChaxundanjuCH();
});
});
商品库存管理系统课程设计
}
}
return jButton3;
jButton3 = new JButton();
jButton3.setBounds(new Rectangle(8, 74, 140, 22)); jButton3.setText(\"客户退货单据查询\");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) { }
new ChaxundanjuTHRK();
});
This method initializes jButton4 * @return javax.swing.JButton
*/
private JButton getJButton4() {
if (jButton4 == null) {
jButton4 = new JButton();
jButton4.setBounds(new Rectangle(8, 96, 140, 22)); jButton4.setText(\"库存调拨单据查询\");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new ChaxundanjuDB();
return jButton4;
}* This method initializes jButton5 * @return javax.swing.JButton */
private JButton getJButton5() {
if (jButton5 == null) {
jButton5 = new JButton();
jButton5.setBounds(new Rectangle(8, 118, 140, 22)); jButton5.setText(\"供货商统计\");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new TongjiGHS();
21 / 24
商品库存管理系统课程设计
return jButton5;
}* This method initializes jButton6 * @return javax.swing.JButton */
private JButton getJButton6() {
if (jButton6 == null) {
jButton6 = new JButton();
jButton6.setBounds(new Rectangle(8, 140, 140, 22)); jButton6.setText(\"客户统计\");
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new TongjiKH();
return jButton6;
* This method initializes jButton7 * @return javax.swing.JButton */
private JButton getJButton7() {
if (jButton7 == null) {
jButton7 = new JButton();
jButton7.setBounds(new Rectangle(8, 162, 140, 22)); jButton7.setText(\"库存统计\");
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new TongjiKC();
return jButton7;
}
/**
* This method initializes jButton8 * @return javax.swing.JButton */
private JButton getJButton8() {
if (jButton8 == null) {
jButton8 = new JButton();
jButton8.setBounds(new Rectangle(8, 184, 140, 22));
22 / 24
商品库存管理系统课程设计
jButton8.setText(\"采购统计\");
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new TongjiCG();
return jButton8;* This method initializes jButton9 * @return javax.swing.JButton */
private JButton getJButton9() {
if (jButton9 == null) {
jButton9 = new JButton();
jButton9.setBounds(new Rectangle(8, 206, 140, 22)); jButton9.setText(\"出货统计\");
jButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new TongjiCH();
}
}});
return jButton9;}
* This method initializes jButton10 @return javax.swing.JButton
private JButton getJButton10() {
if (jButton10 == null) {
jButton10 = new JButton();
jButton10.setBounds(new Rectangle(8, 228, 140, 22)); jButton10.setText(\"退货出库统计\");
jButton10.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new TongjiTHCK();
}return jButton10;
}* This method initializes jButton11 * @return javax.swing.JButton */
private JButton getJButton11() {
if (jButton11 == null) {
jButton11 = new JButton();
jButton11.setBounds(new Rectangle(8, 250, 140, 22));
23 / 24
商品库存管理系统课程设计
jButton11.setText(\"客户退货统计\");
jButton11.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new TongjiTHRK();
}});}return jButton11;
} * This method initializes jButton12 * @return javax.swing.JButton *//*
private JButton getJButton12() {
if (jButton12 == null) {
jButton12 = new JButton();
jButton12.setBounds(new Rectangle(8, 272, 140, 22)); jButton12.setText(\"统计\");}
return jButton12;
}*/
* This method initializes jButton13
* @return javax.swing.JButton */
private JButton getJButton13() {
if (jButton13 == null) {
jButton13 = new JButton();
jButton13.setBounds(new Rectangle(8, 272, 140, 22)); jButton13.setText(\"退出\");
jButton13.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
dispose();}});}
return
jButton13}} // @jve:decl-index=0:visual-constraint=\"10,10\"
24 / 24
因篇幅问题不能全部显示,请点此查看更多更全内容