
由于物资生产的重要地位,生产管理具有举足轻重的作用,起计算机化在发达国家已达到95%以上,而我国在全国范围内推广计算机在管理中的应用,是在20世纪80年代初开始的。我国的计算机化管理起步虽晚,但发展快。特别是微型计算机的出现和普及,为信息处理提供了物美价廉的手段,对于推动我国管理信息处理现代化起到了重要作用。
入库、库存、出库还是现在企业生产管理的常规基本模式,虽然,最近又出现了很多新的管理模式,如:基于零库存思想的沃尔玛管理方式,但这些新的思想在中国大部分企业的管理中还是难以实现的。所以如何设计好生产管理系统,尽量减少生产管理的重复性和低效性就成为当前最重要的问题。商品生产管理的核心是入库、库存和出库之间的联系,如何处理好三者之间的关系是系统最为关键的部分。另外,员工信息和商品信息管理也是生产管理中一个必不可少的部分,它提供着与入库和出库相关的一些信息,使得整个系统更加完整、实用。我们通过对生产管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,从而设计出本系统,本系统是一个适应现今商品生产管理要求的计算机信息管理系统,具有一定的实际开发价值和使用价值。
本系统目标是实现入库、库存和出库统一管理,帮助企业实现产品信息化管理。通过统一管理,企业在入库、库存和出库各个环节的物流流向清晰,即可以动态掌握订单的执行情况,又可以随时掌握货存的现存量信息,从而减少盲目采购,避免库存积压。另外本系统采用JAVA语言进行开发,使系统具有兼容性好、速度快和安全性高的特点。
关键词 产品管理系统、产品进销存、JAVA程序、JBuilder、数据库设计。
目 录
摘要………………………………………………………………………………………..Ⅰ
1引言………………………………………………………………………………………1
2设计内容…………………………………………………………………………………2
2.1小组总体框架……………………………………………………………………….2
2.2本次负责设计的功能模块………………………………………………………….2
2.3 小组分工表…………………………………………………………………………2
3 数据库设计……………………………………………………………………………...4
3.1数据库需求分析…………………………………………………………………….4
3.2数据库表设计……………………………………………………………………….4
4详细设计…………………………………………………………………………………7
4.1主界面模块………………………………………………………………………….7
4.2库存信息管理模块………………………………………………………………….8
4.1.2库存信息管理IPO图……………………………………………………. .8
4.1.3此部分功能代码……………………………………………………………9
4.3数据操作模块………………………………………………………………………13
结论………………………………………………………………………………………..15
致谢………………………………………………………………………………………..16
参考文献…………………………………………………………………………………..17
1引言
由于物资生产的重要地位,生产管理具有举足轻重的作用,起计算机化在发达国家已达到95%以上,而我国在全国范围内推广计算机在管理中的应用,是在20世纪80年代初开始的。我国的计算机化管理起步虽晚,但发展快。特别是微型计算机的出现和普及,为信息处理提供了物美价廉的手段,对于推动我国管理信息处理现代化起到了重要作用。
入库、库存、出库还是现在企业生产管理的常规基本模式,虽然,最近又出现了很多新的管理模式,如:基于零库存思想的沃尔玛管理方式,但这些新的思想在中国大部分企业的管理中还是难以实现的。所以如何设计好生产管理系统,尽量减少生产管理的重复性和低效性就成为当前最重要的问题。商品生产管理的核心是入库、库存和出库之间的联系,如何处理好三者之间的关系是系统最为关键的部分。另外,员工信息和商品信息管理也是生产管理中一个必不可少的部分,它提供着与入库和出库相关的一些信息,使得整个系统更加完整、实用。我们通过对生产管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,从而设计出本系统,本系统是一个适应现今商品生产管理要求的计算机信息管理系统,具有一定的实际开发价值和使用价值。
本系统目标是实现入库、库存和出库统一管理,帮助企业实现产品信息化管理。通过统一管理,企业在入库、库存和出库各个环节的物流流向清晰,即可以动态掌握订单的执行情况,又可以随时掌握货存的现存量信息,从而减少盲目采购,避免库存积压。另外本系统采用JAVA语言进行开发,使系统具有兼容性好、速度快和安全性高的特点。
2设计内容
2.1小组总体框架
该项目是对一个鞋厂的产品信息及出入库情况进行管理的系统,主要包括操作员的权限管理、产品信息管理、产品入库、产品入库信息查询与修改、产品出库、产品出库信息查询与修改、产品库存信息查询与修改、产品库存情况图形化显示等几个部分。
系统主要划分为以下七个模块:
操作员管理模块:实现操作员的登录及操作用户的添加,更改密码和删除用户的管理。
产品信息管理模块:负责对产品信息进行添加和更新管理。并可查询所有产品信息。
入库操作模块:产品入库及入库管理。
出库操作模块:产品出库及出库管理。
库存信息管理模块:对库存信息进行管理。
库存信息图形显示模块:对指定查询进行分析,得到图形化的显示。
数据操作模块:封装对数据库的操作。
系统总体结构如(图2-1所示)。
2.2本次设计负责的功能模块
本次课程设计所负责的是关于库存信息管理模块:对库存信息进行管理;库存信息图形显示模块:对指定查询进行分析,得到图形化的显示以及数据操作模块:封装对数据库的操作。
2.3 小组分工表
本次课程设计小组组员分工情况(如表2-1所示)。
表2-1 小组组员分工情况表
| 模块 姓名 | 宋益存 | 刘涛 | 孙诚安 | 鞠利 |
| 操作员管理模块 | √ | |||
| 产品信息管理模块 | √ | |||
| 入库操作模块 | √ | |||
| 出库操作模块 | √ | |||
| 库存信息管理模块 | √ | |||
| 库存信息图形显示模块 | √ | |||
| 数据操作模块 | √ |
图2-1 产品管理系统总体结构图
3 数据库设计
3.1数据库需求分析
该系统包括产品信息表Productinfo(如表3-1所示)、产品入库信息表ProductIn(如表3-2所示)、产品出库信息表ProductOut(如表3-3所示)、产品库存信息表ProductStore(如表3-4所示)和用户表User(如表3-5所示)。
3.2数据库表设计
表3-1 产品信息表Productinfo
| 名称 | 字段名称 | 数据类型 | 主键 | 非空 |
| 标识 | ID | 自动编号 | Yes | Yes |
| 名称 | Name | 文本 | No | Yes |
| 负责人 | Principal | 文本 | No | Yes |
| 所属部门 | Department | 文本 | No | No |
| 单位 | Unit | 文本 | No | No |
| 单价 | Unitprice | 文本 | No | No |
| 商品描述 | Comment | 文本 | No | No |
| 名称 | 字段名称 | 数据类型 | 主键 | 非空 |
| 标识 | ID | 自动编号 | Yes | No |
| 款型 | Model | 文本 | No | Yes |
| 颜色 | Color | 文本 | No | Yes |
| 入库日期 | Datein | 文本 | No | Yes |
| 操作员 | Operator | 文本 | No | Yes |
| 备注 | Comment | 文本 | No | Yes |
| 本鞋号数量 | Number36 | 数字 | No | Yes |
| 本鞋号数量 | Number37 | 数字 | No | Yes |
| 本鞋号数量 | Number38 | 数字 | No | Yes |
| 本鞋号数量 | Number39 | 数字 | No | Yes |
| 本鞋号数量 | Number40 | 数字 | No | Yes |
| 本鞋号数量 | Number41 | 数字 | No | Yes |
| 本鞋号数量 | Number42 | 数字 | No | Yes |
| 本鞋号数量 | Number43 | 数字 | No | Yes |
| 本鞋号数量 | Number44 | 数字 | No | Yes |
| 名称 | 字段名称 | 数据类型 | 主键 | 非空 |
| 标识 | ID | 自动编号 | Yes | No |
| 款型 | Model | 文本 | No | Yes |
| 颜色 | Color | 文本 | No | Yes |
| 入库日期 | Datein | 文本 | No | Yes |
| 操作员 | Operator | 文本 | No | Yes |
| 备注 | Comment | 文本 | No | Yes |
| 本鞋号数量 | Number36 | 数字 | No | Yes |
| 本鞋号数量 | Number37 | 数字 | No | Yes |
| 本鞋号数量 | Number38 | 数字 | No | Yes |
| 本鞋号数量 | Number39 | 数字 | No | Yes |
| 本鞋号数量 | Number40 | 数字 | No | Yes |
| 本鞋号数量 | Number41 | 数字 | No | Yes |
| 本鞋号数量 | Number42 | 数字 | No | Yes |
| 本鞋号数量 | Number43 | 数字 | No | Yes |
| 本鞋号数量 | Number44 | 数字 | No | Yes |
| 名称 | 字段名称 | 数据类型 | 主键 | 非空 |
| 标识 | ID | 自动编号 | Yes | No |
| 款型 | Model | 文本 | No | Yes |
| 颜色 | Color | 文本 | No | Yes |
| 本鞋号数量 | Number36 | 数字 | No | Yes |
| 本鞋号数量 | Number37 | 数字 | No | Yes |
| 本鞋号数量 | Number38 | 数字 | No | Yes |
| 本鞋号数量 | Number39 | 数字 | No | Yes |
| 本鞋号数量 | Number40 | 数字 | No | Yes |
| 本鞋号数量 | Number41 | 数字 | No | Yes |
| 本鞋号数量 | Number42 | 数字 | No | Yes |
| 本鞋号数量 | Number43 | 数字 | No | Yes |
| 本鞋号数量 | Number44 | 数字 | No | Yes |
| 名称 | 字段名称 | 数据类型 | 主键 | 非空 |
| 标识 | ID | 自动编号 | Yes | No |
| 用户名 | Username | 文本 | No | Yes |
| 密码 | Password | 文本 | No | Yes |
| 权限种别 | Power | 文本 | No | Yes |
首先建立一个名为ProductManager的工程文件,再在其中建立一个名为Manager的应用程序,然后开始以下操作工作。
4.1主界面模块
主模块负责应用程序的主界面,由它调用其他模块。因此主模块应该具有操作性好、界面清晰的特点,使用户能够很方便地找到所需功能(如图4-1所示)。
图4-1 产品管理系统主界面
根据功能需求和总体设计的结果,主界面模块应该由操作员登陆、操作员管理、入库管理、出库管理和库存管理组成。可以通过点击菜单项进入相应的功能模块。其中帮助为待加项,留待日后扩充和完善。
4.2库存信息管理模块
4.2.1库存信息管理IPO图
这部分要实现对产品库存信息进行查询及修改的操作。我们所要显示的信息包括:款型、颜色和相应鞋码鞋的数量。由于查询结果是多条的,因此要可以显示查询结果集中的所有记录。我们在窗体上添加了“第一条”、“前一条”、“后一条”、“最后一条”4个按钮用于循环显示查询结果。另外由于要实现对数据库中记录的修改操作,还添加了“更新”和“删除”两个按钮。由于我们要由此进入图形分析页面,还要有打开图形分析结果显示的窗口。修改窗体布局为XYLayout(如图4-2所示)。
图4-2 库存信息管理窗口
我们设计的是产品库存信息查询,在操作员输入查询的相关资料后,系统首先验证输入字符的有效性,然后根据用户要求再执行更新过程。
输入:款型和颜色。
处理:
1)校验输入的有效性,检验有关文本框是否为空。比如款型和颜色是查询的必选项目,不许为空。用户在输入后单击“查询”,系统会执行校验过程,若不满足条件会弹出相应的提示信息。
2)执行查询过程。将目前的rs中的数据显示在窗体上。用户也可以通过“第一条”、“前一条”、“后一条”和“最后一条”来查询所有的数据。
3)根据需要执行相应的更新或删除操作。
4)关闭本窗体。
输出:更新或删除操作成功或失败信息。
4.2.2此部分功能代码
//由于涉及ResultSet对象,因此需要在代码头部引入import Java.sql.*包
import Java.sql.*;
//定义所用的结果集
ResultSet rs;
//定义sql语句变量
String sql;
//定义DBManager对象,利用其中的方法来操作数据库
private DBManager db = new DBManager();
//接下来是入库信息管理的过程。我们要实现的是对用户输入的查询条件进行检索,若输入为空则检索所有记录,然后绑定查询的信息到窗体,并可以根据用户要求执行更新和删除操作
//我们先编写绑定resultset中的数据到窗体的过程,用于在窗体上绑定出与当前游标状态下的rs中的值
void showResult(){
try {
jTextkuanxing.setText(rs.getString("Model") );
jCombocolor.setSelectedItem(rs.getString("Color") ) ;
jText36.setText(rs.getString("Number36") );
jText37.setText(rs.getString("Number37") );
jText38.setText(rs.getString("Number38") );
jText39.setText(rs.getString("Number39") );
jText40.setText(rs.getString("Number40") );
jText41.setText(rs.getString("Number41") );
jText42.setText(rs.getString("Number42") );
jText43.setText(rs.getString("Number43") );
jText44.setText(rs.getString("Number44") );
}
catch (SQLException ex) {
System.out.println(ex.toString() ) ;
}
}
//在jButtonSearch的actionPerformed事件中执行制定查询条件下的查询操作
void jButtonSearch_mouseClicked(MouseEvent e) {
//定义变量,用来判断是否是第一个查询条件
boolean isfirst =true;
sql="select * from ProductStore ";
if (jTextkuanxing.getText().trim().length() ==0)
//如果款型的查询条件不为空
{}
else
{
sql=sql+" where Model='"+jTextkuanxing.getText().trim()+"'";
isfirst=false;
}
//如果颜色的查询条件不为空
if (jCombocolor.getSelectedItem().toString().trim() .length() ==0)
{}
else
{
if (isfirst)
//如果是第一个查询条件
sql=sql+" where Color='"+jCombocolor.getSelectedItem().toString().trim() +"'";
else //如果是第二个查询条件
sql=sql+" and Color='"+jCombocolor.getSelectedItem().toString().trim() +"'";
}
//执行数据库的查询操作
rs =db.getResult(sql);
try {
if(! rs.equals(null) )
//判断返回的结果集是否为空,若不为空显示第一条记录
{ rs.next();
showResult();
}
}
catch (SQLException ex) {
}
}
//这样我们所需要的数据就可以从数据库中检索出来,然而我们要实现的是对所有结果查询显示,这样就需要我们利用按钮来遍历结果集中的所有记录。以下是具体实现过程
//游标移动到第一条,显示纪录
void jButtonfirst_mouseClicked(MouseEvent e) {
try {
rs.first() ;
showResult();
}
catch (SQLException ex) {
}
}
//游标移动到前一条,显示纪录
void jButtonpre_mouseClicked(MouseEvent e) {
try {
if(! rs.isFirst() )
{ rs.previous();
showResult();
}
}
catch (SQLException ex) {
}
}
//游标移动到后一条,显示纪录
void jButtonnext_mouseClicked(MouseEvent e) {
try {
if(! rs.isLast())
{ rs.next();
showResult();
}
}
catch (SQLException ex) {
}
}
//游标移动到最后一条,显示纪录
void jButtonlast_mouseClicked(MouseEvent e) {
try {
rs.last();
showResult();
}
catch (SQLException ex) {
}
}
//到这里,所有实现的问题就全部解决了,接下来我们要实现对绑定数据的更新和删除操作
//更新操作过程
void jButtonupdate_mouseClicked(MouseEvent e) {
sql="update ProductStore set Number36='"+jText36.getText().trim() +"',";
sql=sql+" Number37='"+jText37.getText().trim() +"',";
sql=sql+" Number38='"+jText38.getText().trim() +"',";
sql=sql+" Number39='"+jText39.getText().trim() +"',";
sql=sql+" Number40='"+jText40.getText().trim() +"',";
sql=sql+" Number41='"+jText41.getText().trim() +"',";
sql=sql+" Number42='"+jText42.getText().trim() +"',";
sql=sql+" Number43='"+jText43.getText().trim() +"',";
sql=sql+" Number44='"+jText44.getText().trim() +"' ";
sql=sql+" where Model='"+jTextkuanxing.getText().trim() +"'";
sql=sql+" and Color ='"+jCombocolor.getSelectedItem().toString().trim() +"'";
//使用DBManager对象执行操作 ,并返回成功或失败信息
if(db.executeSql(sql))
JOptionPane.showMessageDialog(null,"操作成功!");
else
JOptionPane.showMessageDialog(null,"操作失败!");
}
//删除操作过程
void jButtondelete_mouseClicked(MouseEvent e) {
sql="delete from ProductStore where Model='"+jTextkuanxing.getText().trim() +"'";
sql= sql+" and Color ='"+jCombocolor.getSelectedItem().toString().trim() +"'";
//使用DBManager对象执行操作 ,并返回成功或失败信息
if(db.executeSql(sql))
JOptionPane.showMessageDialog(null,"操作成功!");
else
JOptionPane.showMessageDialog(null,"操作失败!");
}
//当然作为一个完整的窗体,我们还需要“退出”按钮,用来退出此窗口
void jButtonexit_mouseClicked(MouseEvent e) {
this.dispose();
}
}
4.3数据操作模块
这一部分是数据库技术的核心和基础。由于整个应用程序要多次用到对数据库的操作,因此把所有需要的数据库操作封装到一个类中,只要每次实例化这个类然后调用其中的方法就可以了,不用每次都要重新创建连接对象等操作,方便了应用程序的编写,提高了开发效率。
以下是这个类的核心代码及简要说明。
package Manager;
//引入sql包
import java.sql.*;
//数据库操作类
public class DBManager {
//定义返回结果集
ResultSet rs ;
//创建指定数据库的URL
String strurl="jdbc:odbc:myProduct";
//缺省构造方法
public DBManager() {
}
//查询方法,返回查询结果集
public ResultSet getResult(String sql){
try{
//加载驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
//创建连接
Connection conn=DriverManager.getConnection(strurl) ;
//创建statement对象
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
//执行SQL语句,返回结果集
ResultSet rs=stmt.executeQuery(sql);
//返回
return rs;
}
//异常处理
catch(Exception e){
System.out.println( "getResult------"+e.toString() );
//若有异常,返回null
return null;
}
}
//执行更新,删除语句方法
public boolean executeSql(String sql){
try{
//加载驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
//创建连接
Connection conn=DriverManager.getConnection(strurl) ;
//创建statement对象
Statement stmt=conn.createStatement();
//执行SQL语句,返回结果集
stmt.executeUpdate(sql);
//提交到数据库
conn.commit();
//返回true,表示操作成功
return true;
}
catch(Exception e){
System.out.println( "executeSql------"+e.toString() );
//返回false,表示操作失败
return false;
}
}
}
结 论
。
致 谢
参考文献
⑴ 侯捷/王建兴.Thinking in Java 2中文版.北京:外文出版社
⑵ Harvey M.Deitel/Paul J.Deitel.java 2程序设计教程.北京:机械工业出版社
⑶ 黄明/梁旭/曹利超.Java信息系统设计与开发实例.北京:机械工业出版社
⑷ 陈烨/张蓓.JDK1.5类库大全.北京:清华大学出版社
