赞
踩
本系统简单实现了库存管理和角色权限管理,管理员可以管理和发布商品,普通用户浏览商品需求
登录页面:
不同角色校验:
管理员页面:
普通用户页面:
本库存管理系统实现了以下功能:
管理员/普通用户权限管理
不同角色登录
商品的增删查
数据库:mysql
开发工具:netbeans(Eclipse、Myeclispe、Idea也可以)
知识点:JavaSwing
由于功能简单,代码都放在了一个包下面:
登录页面:
package com.stock.java; import javax.swing.*; import javax.swing.plaf.InsetsUIResource; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; import java.text.SimpleDateFormat; /** * @Author: wen * @Date: 2020/11/20 22:28 * @Description: 登陆模块 * @Version: 1.0 */ public class Login extends JFrame { private static final long serialVersionUID = 1L; private JPanel jContentPane = null; private JButton jButton21 = null; private JButton jButton22 = null; private JTextField jTextField = null; private JPasswordField jPasswordField = null; private JLabel jLabel = null; public static String storeUserName = null;// 登录用户名 public static String storeUserPassword = null;// 登录密码 static boolean RELOAD = true;// 重新登陆标记 static int login_user_type;// 1表示管理员,0销售 private JLabel jLabel_User = null; private JLabel jLabel_userName = null; private JLabel jLabel_password = null; private JLabel jLabel_privilege = null; private URL imgURL = null; private BtnListener btl = null; private JComboBox jComboBox = null; private JLabel jLabel_tips = null; private void initialize() { jLabel_tips = new JLabel(); jLabel_tips.setBounds(new Rectangle(15, 247, 277, 24)); this.setResizable(false); this.setSize(296, 356); // this.setSize(350, 450); this.setTitle("Welcome Login"); imgURL = this.getClass().getResource( "icon.png"); this.setIconImage(Toolkit.getDefaultToolkit().getImage(imgURL)); this.setLocationRelativeTo(null); // this.setUndecorated(true);//设置无边框 try { UIManager .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");// 使用windows外观 } catch (Exception e) { e.printStackTrace(); } this.setDefaultCloseOperation(EXIT_ON_CLOSE); jButton21 = new JButton(); jButton21.setBounds(new Rectangle(15, 295, 78, 26)); imgURL = this.getClass().getResource("/com/code2life/user/images/icon.png"); jButton21.setText("login"); // 允许回车登录 getRootPane().setDefaultButton(jButton21); jButton22 = new JButton(); jButton22.setBounds(new Rectangle(110, 296, 78, 26)); jButton22.setText("exit"); jTextField = new JTextField(20); jTextField.setBounds(new Rectangle(120, 180, 124, 23)); jPasswordField = new JPasswordField(); jPasswordField.setBounds(new Rectangle(120, 210, 124, 23)); jLabel = new JLabel(); jLabel.setText(""); jLabel.setBounds(new Rectangle(0, -1, 291, 142)); imgURL = this.getClass() .getResource("login.gif"); jLabel.setIcon(new ImageIcon(imgURL)); jLabel_password = new JLabel(); jLabel_password.setBounds(new Rectangle(29, 210, 71, 19)); jLabel_password.setText("password:"); jLabel_userName = new JLabel(); jLabel_userName.setBounds(new Rectangle(29, 181, 71, 19)); jLabel_userName.setText("username:"); jLabel_User = new JLabel(); jLabel_User.setBounds(new Rectangle(10, 147, 275, 98)); jLabel_privilege = new JLabel(); jLabel_privilege.setBounds(new Rectangle(18, 272, 71, 19)); jLabel_privilege.setText("type:"); jComboBox = new JComboBox(); jComboBox.setBounds(new Rectangle(109, 272, 123, 23)); jComboBox.addItem("sale"); jComboBox.addItem("admin"); imgURL = this.getClass().getResource("user.gif"); jLabel_User.setIcon(new ImageIcon(imgURL)); jLabel_User.setText("User"); jContentPane = new JPanel();// 新建jPanel面板 jContentPane.setLayout(null); jContentPane.add(jLabel_userName, null); jContentPane.add(jLabel_password, null); jContentPane.add(jButton21, null); jContentPane.add(jButton22, null); jContentPane.add(jTextField, null); jContentPane.add(jPasswordField, null); jContentPane.add(jLabel, null); jContentPane.add(jLabel_User, null); jContentPane.add(jComboBox, null); jContentPane.add(jLabel_privilege, null); jContentPane.add(jLabel_tips, null); setContentPane(jContentPane); btl = new BtnListener(); jButton21.addActionListener(btl); jButton22.addActionListener(btl); } /** * @author Administrator * @监听类 */ public class BtnListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == jButton21) { GoodsService ud = new GoodsService(); String user = jTextField.getText().trim(); String password = new String(jPasswordField.getPassword()) .trim();// char to String storeUserName = user; storeUserPassword = password; login_user_type = jComboBox.getSelectedIndex(); if ("".equals(user)) { JOptionPane.showMessageDialog(null, "用户名不能为空"); return; } if ("".equals(password)) { JOptionPane.showMessageDialog(null, "密码不能为空"); return; } SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); String dt = sdf.format(new java.util.Date()); // 登陆 if (ud.userLogin(login_user_type, storeUserName, storeUserPassword)) { dispose(); try { UIManager.put("RootPane.setupButtonVisible", false); UIManager.put("ToolBar.isPaintPlainBackground", Boolean.FALSE); UIManager.put("TabbedPane.tabAreaInsets", new InsetsUIResource(0, 0, 0, 0)); UIManager.put("TabbedPane.contentBorderInsets", new InsetsUIResource(0, 0, 2, 0)); UIManager.put("TabbedPane.tabInsets", new InsetsUIResource(3, 10, 9, 10)); Font frameTitleFont = (Font) UIManager .get("InternalFrame.titleFont"); frameTitleFont = frameTitleFont .deriveFont(Font.PLAIN); UIManager.put("InternalFrame.titleFont", frameTitleFont); } catch (Exception e1) { // TODO exception } GoodsFrame mf = new GoodsFrame(user); mf.setVisible(true); } else { JOptionPane.showMessageDialog(null, "login fail"); return; } } else if (e.getSource() == jButton22) { System.exit(0); } } } /** * @param args * @throws Exception * @主函数 */ public static void main(String[] args) throws Exception { try { UIManager.put("RootPane.setupButtonVisible", false); UIManager.put("ToolBar.isPaintPlainBackground", Boolean.FALSE); } catch (Exception e) { // TODO exception } UIManager.put("RootPane.setupButtonVisible", false); UIManager.put("TabbedPane.tabAreaInsets", new InsetsUIResource(0, 0, 0, 0)); UIManager.put("TabbedPane.contentBorderInsets", new InsetsUIResource(0, 0, 2, 0)); UIManager.put("TabbedPane.tabInsets", new InsetsUIResource(3, 10, 9, 10)); Font frameTitleFont = (Font) UIManager.get("InternalFrame.titleFont"); frameTitleFont = frameTitleFont.deriveFont(Font.PLAIN); UIManager.put("InternalFrame.titleFont", frameTitleFont); Login login = new Login(RELOAD); login.setVisible(true); } public Login() { super(); initialize(); } public Login(boolean reload) { super(); initialize(); } }
商品管理页面:
package com.stock.java; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.table.DefaultTableModel; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.JScrollPane; import javax.swing.JButton; import java.awt.event.ActionListener; import java.util.List; import java.awt.event.ActionEvent; public class GoodsFrame extends JFrame { private JPanel contentPane; private JTextField textField_1; private JTable table; private String[] columnCount= {"ID","goods_name","quantity","price","time"}; private List<Goods> list; public static Goods goo; public static GoodsFrame frame; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { frame = new GoodsFrame("admin"); //窗口居中 frame.setLocationRelativeTo(null); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public GoodsFrame(String type) { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 764, 469); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JScrollPane scrollPane = new JScrollPane(); scrollPane.setBounds(29, 58, 692, 332); contentPane.add(scrollPane); table = new JTable(); scrollPane.setViewportView(table); textField_1 = new JTextField(); textField_1.setBounds(30, 22, 40, 23); contentPane.add(textField_1); JButton button = new JButton("query"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { quaryAll(); } }); button.setBounds(80, 22, 70, 23); contentPane.add(button); JButton button_1 = new JButton("add"); button_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { new FromFjame().setVisible(true); } }); button_1.setBounds(400, 22, 70, 23); if (type.equals("admin")){ contentPane.add(button_1); } //全屏 // setExtendedState(JFrame.MAXIMIZED_BOTH); JButton button_3 = new JButton("delete"); button_3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { remove(); quaryAll(); } }); button_3.setBounds(510, 22, 70, 23); // contentPane.add(button_3); if (type.equals("admin")){ contentPane.add(button_3); } JButton button_4 = new JButton("close"); button_4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); button_4.setBounds(650, 22, 70, 23); contentPane.add(button_4); } //查询 public void quaryAll() { String select_val = textField_1.getText(); System.out.println(select_val); GoodsService ss=new GoodsService(); list = ss.queryAll(select_val); if(list==null) { JOptionPane.showMessageDialog(null, "Server is busy!"); return; } Object[][] data = Util.listToArray(list); table.setModel(new DefaultTableModel(data, columnCount)); } //删除 private void remove() { int i = table.getSelectedRow(); Goods s = list.get(i); int code = new GoodsService().delete(s.getId()); if(code==0) { JOptionPane.showMessageDialog(null, "delete success"); return; }else { JOptionPane.showMessageDialog(null,Util.errors.get(code) ); } quaryAll(); } }
提交表单页面:
package com.stock.java; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.time.LocalDate; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import java.awt.event.ItemListener; import java.awt.event.ItemEvent; public class FromFjame extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JPanel contentPane; private JTextField textField; private JTextField textField_1; private JTextField textField_3; private JComboBox comboBox; private JComboBox comboBox_1; private JComboBox comboBox_2; public FromFjame() { setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setBounds(100, 100, 314, 436); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel label = new JLabel("add"); label.setFont(new Font("宋体", Font.PLAIN, 17)); label.setBounds(118, 20, 78, 39); contentPane.add(label); JLabel label_1 = new JLabel("name"); label_1.setBounds(23, 71, 40, 15); contentPane.add(label_1); textField = new JTextField(); textField.setBounds(87, 68, 155, 21); contentPane.add(textField); textField.setColumns(10); JLabel label_2 = new JLabel("quantity"); label_2.setBounds(23, 128, 40, 15); contentPane.add(label_2); textField_1 = new JTextField(); textField_1.setBounds(87, 125, 155, 21); contentPane.add(textField_1); textField_1.setColumns(10); JLabel lblNewLabel = new JLabel("time"); lblNewLabel.setBounds(23, 191, 32, 15); contentPane.add(lblNewLabel); JLabel label_3 = new JLabel("price"); label_3.setBounds(23, 251, 32, 15); contentPane.add(label_3); textField_3 = new JTextField(); textField_3.setBounds(87, 248, 155, 21); contentPane.add(textField_3); textField_3.setColumns(10); comboBox = new JComboBox(); comboBox.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { addDay(); } }); comboBox.setBounds(87, 188, 54, 21); contentPane.add(comboBox); comboBox_1 = new JComboBox(); comboBox_1.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { addDay(); } }); comboBox_1.setBounds(151, 188, 47, 21); contentPane.add(comboBox_1); comboBox_2 = new JComboBox(); comboBox_2.setBounds(202, 188, 40, 21); contentPane.add(comboBox_2); //选择框添加内容 addBirth(); JButton button = new JButton("add"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(GoodsFrame.goo==null) { add(); } } }); button.setBounds(37, 325, 93, 23); contentPane.add(button); JButton button_1 = new JButton("back"); button_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //每次返回清空信息 GoodsFrame.goo=null; //退出 dispose(); } }); button_1.setBounds(169, 325, 93, 23); contentPane.add(button_1); //当点击的行数的信息不为空时,进行下面操作 if(GoodsFrame.goo!=null) { textField.setText(GoodsFrame.goo.getGood_name()); textField_1.setText(GoodsFrame.goo.getQuantity()+""); textField_3.setText(GoodsFrame.goo.getPrice()+""); LocalDate birth =GoodsFrame.goo.getTime(); comboBox.setSelectedItem(birth.getYear()); comboBox_1.setSelectedItem(birth.getMonthValue()); comboBox_2.setSelectedItem(birth.getDayOfMonth()); button.setText("update"); } } //选择框填充内容 private void addBirth() { int year=LocalDate.now().getYear(); for(int i=1970;i<=year;i++) { comboBox.addItem(i); } for(int i=1;i<=12;i++) { comboBox_1.addItem(i); } } private void addDay() { int year=1970; int month=1; int day=0; Object oYear = comboBox.getSelectedItem(); Object oMonth =comboBox_1.getSelectedItem(); if(oYear==null||oMonth==null) { return; }else { year=(int) oYear; month=(int) oMonth; } boolean flag=(year%4==0&&year%100!=0)||year%400==0; switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: day=31; break; case 2: day=flag?28:29; break; default: day=30; break; } comboBox_2.removeAllItems(); for(int i=1;i<=day;i++) { comboBox_2.addItem(i); } } //增加 private void add() { String goods_name=textField.getText(); String quantity=textField_1.getText(); String price=textField_3.getText(); int year=(int)comboBox.getSelectedItem(); int month=(int) comboBox_1.getSelectedItem(); int day=(int) comboBox_2.getSelectedItem(); Goods s=new Goods(goods_name,quantity,Double.parseDouble(price),LocalDate.of(year, month, day)); int insert = new GoodsService().insert(s); if(insert==0) { JOptionPane.showMessageDialog(null, "add success"); textField.setText(""); textField_1.setText(""); textField_3.setText(""); return; }else { JOptionPane.showMessageDialog(null, Util.errors.get(insert)); } } }
如果运行代码中遇到问题,或者需要完整源码和报告,可以加博主V交流:Code2Life2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。