基于JavaSwing+Mysql的仓库管理系统设计和实现
Posted java李阳勇
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于JavaSwing+Mysql的仓库管理系统设计和实现相关的知识,希望对你有一定的参考价值。
前言:
本项目是使用Java swing开发,可实现仓库管理系统登陆/注册/重置、登录后可以进行系统管理、原料管理、成品管理、管理记录以及注销退出等几大模块。界面设计比较简介、适合作为Java初学者课设设计以及学习技术使用。
摘要:
现如今,许多企业存在的问题:信息化不足,计算机使用率不高,大量的日常工 作皆是手工处理,因此工作效率低,企业内部沟通不良等等问题很难克服。要提升企 业竞争力,企业内部信息化是不可缺少的一个步骤。所以要实施先进的自动化系统, 实现企业内部信息管理、共享及交流,才能让企业在竞争激烈的 21世纪取得先机。仓 库管理系统就是对货物和信息以及金钱进行规划和实行流控制。它将入库、出库、库 存形成一个统一的整体,使企业处于全面受控状态,压缩投资规模,加快资金周转。 在实时反映的基础上,修正企业在日常生产经营过程中各个环节上的偏差,降低成品 成本和货物的积压。 本设计为一个基本的仓库管理系统 ,程序功能比较简单,贴近实际。系统对企业中 常见的出库、入库、库存管理等商业活动以及相关的供应商等基本信息都进行了有效 的管理。因而具有普遍的适用性 ,能够满足一般企业仓库的需要。 本系统是采用 My SQL 数据库管理软件和 mysql 作为系统的开发平台,使用 JavaSwing图形化编程语言进行程序开发。
主要模块:
用户登录、注册、重置
原料管理:《原料进入、原料退料、原料库存、生产开单、生产退料、生产废料》
成品管理:《成品进入、成品库存、成品退货、成品返修、成品退货》
记录管理:《操作记录、废料记录、出货记录、原料记录、成品记录》
帮助中心:《帮助、关于、退出系统》
功能截图:
登录
系统主页功能
系统管理:
进入系统管理页面、可以注册新用户、删除用户、以及数据整理查看
原料管理:
原料管理:包括原料进入、原料退料、原料库存、生产开单、生产退料、生产废料等数据录入和查看等
成品管理:
成品管理:包括成品进入、成品库存、成品退货、成品返修、成品退货的数据录入和查看操作等
记录管理:
记录管理:包括 操作记录、废料记录、出货记录、原料记录、成品记录的数据查看操作
其他:
部分关键代码:
用户登录注册:
public class Logo implements ActionListener{
public static final String logoon = "登录";
public static final String helpt = "帮助";
public static final String logooff ="退出";
public static final String user = "用 户:";
public static final String password = "密 码:";
private javax.swing.JTextField userText;
private javax.swing.JPasswordField userpwd;
private javax.swing.JPanel jp = new javax.swing.JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
if(!isOpaque()){return;}
Graphics2D g2d = (Graphics2D) g;
//int rule = AlphaComposite.SRC_OVER;
AlphaComposite opaque = AlphaComposite.SrcOver;
//AlphaComposite blend = AlphaComposite.getInstance(rule, 0.6f);
//AlphaComposite set = AlphaComposite.Src;
int width = getWidth();
int height = getHeight();
GradientPaint gradientPaint = new GradientPaint(0,0,java.awt.Color.green,width/2,height/2,java.awt.Color.yellow,false);
g2d.setComposite(opaque);
g2d.setPaint(gradientPaint);
g2d.fillRect(0, 0, width,height);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
}
};
private javax.swing.JButton logoin = null;
private JFrame logo_Frame = new JFrame(logoon);
/*public Logo() {
// TODO 自动生成构造函数存根
}
*/
public Logo(){
try{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
}catch(Exception exe){System.err.print(exe.getMessage());}
JFrame.setDefaultLookAndFeelDecorated(true);
Toolkit tools = logo_Frame.getToolkit();
Image logo = tools.getImage("res/logo.jpg");
logo_Frame = new JFrame(logoon);
logo_Frame.setIconImage(logo);
jp.setLayout(new GridBagLayout());
jp.setBackground(java.awt.Color.pink);
javax.swing.ImageIcon pic = new javax.swing.ImageIcon("res/logo1.jpg");
javax.swing.JLabel picture = new javax.swing.JLabel(pic);
setupComponent(picture,0,0,GridBagConstraints.ABOVE_BASELINE_LEADING,1,true);
javax.swing.JLabel users = new javax.swing.JLabel(user);
setupComponent(users,0,1,1,1,false);
javax.swing.JLabel pas = new javax.swing.JLabel(password);
setupComponent(pas,0,2,1,1,false);
userText = new javax.swing.JTextField(12);
userText.requestFocus();
userText.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){
if((e.getKeyChar() == KeyEvent.VK_ENTER )&&(userText.getText().trim() != "")){
userpwd.requestFocus();
}
}
});
setupComponent(userText,1,1,1,1,false);
userpwd = new javax.swing.JPasswordField(12);
userpwd.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e){}
public void keyPressed(KeyEvent e){
if((e.getKeyChar() == KeyEvent.VK_ENTER) && (userpwd.getText().trim() != "")){
logoin.requestFocus();
}
else{
userpwd.requestFocus();
}
}
public void keyReleased(KeyEvent e){
}
});
setupComponent(userpwd,1,2,1,1,false);
logoin = new javax.swing.JButton(logoon);
logoin.addKeyListener(new KeyListener(){
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void keyPressed(KeyEvent e){
if((e.getKeyChar()==KeyEvent.VK_ENTER )){
if(("".equals(userText.getText().trim())) ){
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入用户名!","输入用户名",JOptionPane.ERROR_MESSAGE);
userText.requestFocus();
return;
}
if(("".equals(userpwd.getText().trim()))){
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入密码!","输入密码",JOptionPane.ERROR_MESSAGE);
userpwd.requestFocus();
return;
}
boolean b = USeDB.logoon(userText.getText().trim(), userpwd.getText().trim());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String day = sdf.format(date);
String s ="'"+day+"','"+userText.getText().trim()+"','"+"登录"+"'";
String sql = "insert into handle_record values("+s+")";
USeDB.UpdateDB(sql);
if(b){
logo_Frame.dispose();
new My_MainFrame(userText.getText().trim());
}
userText.setText("");
userpwd.setText("");
userText.requestFocus();
}
}
});
logoin.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println(userText.getText());
if(("".equals(userText.getText().trim()))){
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入用户名!","输入用户名",JOptionPane.ERROR_MESSAGE);
userText.requestFocus();
return;
}
if(("".equals(userpwd.getText().trim()))){
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "必须输入密码!","输入密码",JOptionPane.ERROR_MESSAGE);
userpwd.requestFocus();
return;
}
if(userText.getText().trim()!=""&& userpwd.getText().trim()!=""){
boolean b = USeDB.logoon(userText.getText().trim(), userpwd.getText().trim());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String day = sdf.format(date);
String s ="'"+day+"','"+userText.getText().trim()+"','"+"登录"+"'";
String sql = "insert into handle_record values("+s+")";
USeDB.UpdateDB(sql);
if(b==true){
logo_Frame.dispose();
new My_MainFrame(userText.getText().trim());
}else{
userText.setText("");
userpwd.setText("");
userText.requestFocus();
javax.swing.JOptionPane.showMessageDialog(logo_Frame, "用户名或密码错误","错误提示",JOptionPane.ERROR_MESSAGE);
}
}
}
});
setupComponent(logoin,0,3,1,1,true);
javax.swing.JButton help = new javax.swing.JButton(helpt);
DB连接 :
public class DBUtil{
private static String dbUrl="jdbc:mysql://localhost:3307/stock_manager2?characterEncoding=utf8"; // 数据库连接地址
private static String dbUserName="root"; // 用户名,这里是你的mysql用户名,一般是root
private static String dbPassword="crit@2019"; // 密码,mysql密码,密码为空的话不要写,我的是空,所以没写
private static String jdbcName="com.mysql.jdbc.Driver"; // 驱动名称
//private static String driver="sun.jdbc.odbc.JdbcOdbcDriver";//声明驱动类字符串
//声明数据库连接字符串
//private static String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=db/mydb.mdb";
private static Connection con=null;//声明数据库连接对象引用
private static Statement stat=null;//声明语句对象引用
private static PreparedStatement psInsert=null;//声明预编译语句对象引用
private static ResultSet rs=null;//声明结果集对象引用
public DBUtil() {
// TODO 自动生成构造函数存根}
public static Connection getConnection(){//得到数据库连接的方法
try{
Class.forName(jdbcName);//加载驱动类
con=DriverManager.getConnection(dbUrl,dbUserName,dbPassword);//得到连接
}
catch(Exception e){e.printStackTrace();}
return con;//返回连接
}
public static void closeCon(){//关闭数据库连接的方法
try{
if(rs!=null){rs.close(); rs=null;}//如果结果集不为空关闭结果集并赋值null
if(stat!=null){stat.close(); stat=null;}//如果语句对象不为空关闭语句对象并赋值null
if(con!=null){con.close(); con=null;}//如果连接不为空关闭连接并赋值null
}
catch(Exception e){e.printStackTrace();}
}
}
数据库设计:
用户表:
CREATE TABLE `NewTable` (
`user_id` int(11) NOT NULL AUTO_INCREMENT ,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`u_text` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`user_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=5
ROW_FORMAT=DYNAMIC
;
原料录入表:
CREATE TABLE `NewTable` (
`product_ID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`product_client` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_spec` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_unit` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`product_value` float NULL DEFAULT NULL ,
`product_make` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stock_date` datetime NULL DEFAULT NULL ,
`product_text` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`product_ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;
出货记录表:
CREATE TABLE `NewTable` (
`scrap_id` int(11) NOT NULL AUTO_INCREMENT ,
`user_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`handle_date` datetime NULL DEFAULT NULL ,
`scrap_text` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
PRIMARY KEY (`scrap_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=3
ROW_FORMAT=DYNAMIC
;
废料信息表:
CREATE TABLE `NewTable` (
`stuff_ID` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`stuff_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_company` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_people` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`check_people` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_unit` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_value` int(11) NULL DEFAULT NULL ,
`stuff_spec` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_color` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stuff_place` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`stock_date` datetime NULL DEFAULT NULL ,
`stuff_text` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL ,
PRIMARY KEY (`stuff_ID`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
ROW_FORMAT=DYNAMIC
;
总结:
通过这次课程设计。我学到了许多令我受益匪浅的知识。感觉java的界面设计和 mfc差不多。只是java没有可视化的界面做起来太累了。其他主要是类和对象的问题。实现起来还是挺简单的。使用一个拥有很高稳定性与安全性的数据库 mysql ,把 2 个软件联合起来,完成系统的设计与开发。也充分考虑了用户的需求,。操作者可以在任何时间在所有的信息查询,和每个模块提供了信息浏览功能。 本系统实现了在用户登录后可以进行系统管理、原料管理、成品管理、管理记录等操作、 因为本人在知识,经验不足,在发展过程中的时间较短,所以系统 会有一些缺陷和不足。在未来将更加努力完善这个系统、但是作为学生学习参考以及课程设计还是不错的选择。
完整源码下载地址
JavaSwing系列项目推荐:
打卡JavaSwing项目更新 9 / 100篇
大家可以点赞、收藏、关注、评论我啦
以上是关于基于JavaSwing+Mysql的仓库管理系统设计和实现的主要内容,如果未能解决你的问题,请参考以下文章