Java课程设计:基于Javaweb的超市商品管理系统

一、项目介绍

  • 管理员用户:需要能够添加商品类型以及商品,能够对商品进行管理,能够查询用户信息,能够查询出售记录;
  • 普通用户:需要能够搜索商品并执行购买商品操作。能够查询购买记录,能够对余额进行充值。
  • 注册:能够进行新用户的注册。

在这里插入图片描述
功能

1.注册、登录功能。
2.管理员有商品类别管理、商品管理、用户管理、出售记录查询等功能。
3.普通用户有查看购物车、购物卡充值、修改密码、购买商品等功能。

二、项目展示

登录
在这里插入图片描述
主页
在这里插入图片描述
全部商品类
在这里插入图片描述
商品添加类
在这里插入图片描述
查询页面
在这里插入图片描述
用户列表
在这里插入图片描述

三、源码展示

连接数据库

public class JDBCUtils {
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    private static ResourceBundle bundle;
   
    
    static{
        bundle = ResourceBundle.getBundle("db");
        driver = bundle.getString("jdbc.driverClass");
        url = bundle.getString("jdbc.jdbcUrl");
        username = bundle.getString("jdbc.username");
        password = bundle.getString("jdbc.password");
    }
 
    /**
     * 
     *
     * @return
     */
    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

   
    public static void release(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
  

    public static void release(Connection conn, PreparedStatement pstmt) {
        if (pstmt != null) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (pstmt != null) {
            try {
                pstmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
}

登录类

public class Login extends JFrame {

	private JPanel contentPane;
	private JTextField txtT;
	private JPasswordField passwordField;

	private UserDao userDao = new UserDao();
	
	/**
	 * Create the frame.
	 */
	public Login() {
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 542, 482);
		contentPane = new JPanel();
		contentPane.setBackground(SystemColor.menu);
		contentPane.setForeground(Color.LIGHT_GRAY);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		
		JLabel lblNewLabel_1 = new JLabel("密码");
		lblNewLabel_1.setFont(new Font("微软雅黑", Font.BOLD, 15));
		
		JButton btnNewButton = new JButton("登录");
		btnNewButton.setFont(new Font("微软雅黑", Font.BOLD, 15));
		
		
		txtT = new JTextField();
		txtT.setFont(new Font("微软雅黑", Font.BOLD, 15));
		txtT.setColumns(10);
		
		JButton btnNewButton_1 = new JButton("注册");
		
		btnNewButton_1.setFont(new Font("微软雅黑", Font.BOLD, 15));
		
		JButton btnNewButton_2 = new JButton("重置");
		
		btnNewButton_2.setFont(new Font("微软雅黑", Font.BOLD, 15));
		
		passwordField = new JPasswordField();
		
		
		JLabel lblNewLabel = new JLabel("用户名:");
		lblNewLabel.setFont(new Font("微软雅黑", Font.BOLD, 15));
		GroupLayout gl_contentPane = new GroupLayout(contentPane);
		
		gl_contentPane.setHorizontalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_contentPane.createSequentialGroup()
					.addGap(108)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING, false)
						.addGroup(gl_contentPane.createSequentialGroup()
							.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
								.addGroup(gl_contentPane.createSequentialGroup()
									.addGap(8)
									.addComponent(lblNewLabel_1))
								.addGroup(gl_contentPane.createSequentialGroup()
									.addPreferredGap(ComponentPlacement.RELATED)
									.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 60, GroupLayout.PREFERRED_SIZE)))
							.addGap(18)
							.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
								.addComponent(passwordField, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)
								.addComponent(txtT, GroupLayout.DEFAULT_SIZE, 199, Short.MAX_VALUE)))
						.addGroup(gl_contentPane.createSequentialGroup()
							.addComponent(btnNewButton, GroupLayout.PREFERRED_SIZE, 71, GroupLayout.PREFERRED_SIZE)
							.addGap(33)
							.addComponent(btnNewButton_1, GroupLayout.PREFERRED_SIZE, 71, GroupLayout.PREFERRED_SIZE)
							.addPreferredGap(ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
							.addComponent(btnNewButton_2, GroupLayout.PREFERRED_SIZE, 71, GroupLayout.PREFERRED_SIZE)))
					.addContainerGap(141, Short.MAX_VALUE))
		);
		gl_contentPane.setVerticalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_contentPane.createSequentialGroup()
					.addContainerGap(150, Short.MAX_VALUE)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblNewLabel, GroupLayout.PREFERRED_SIZE, 38, GroupLayout.PREFERRED_SIZE)
						.addComponent(txtT, GroupLayout.PREFERRED_SIZE, 31, GroupLayout.PREFERRED_SIZE))
					.addGap(33)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(lblNewLabel_1, GroupLayout.PREFERRED_SIZE, 38, GroupLayout.PREFERRED_SIZE)
						.addComponent(passwordField, GroupLayout.PREFERRED_SIZE, 30, GroupLayout.PREFERRED_SIZE))
					.addGap(41)
					.addGroup(gl_contentPane.createParallelGroup(Alignment.BASELINE)
						.addComponent(btnNewButton)
						.addComponent(btnNewButton_2)
						.addComponent(btnNewButton_1))
					.addContainerGap(108, Short.MAX_VALUE))
		);
		contentPane.setLayout(gl_contentPane);
		 ImageIcon bg=new ImageIcon(Login.class.getResource("/image/login.jpg"));
		  this.setSize(bg.getIconWidth(),bg.getIconHeight());
		  JLabel label=new JLabel(bg); 
		  label.setSize(bg.getIconWidth(),bg.getIconHeight());
		  JPanel pan=(JPanel)this.getContentPane();
		  pan.setOpaque(false); 
		  this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
		 
		  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		  this.setLocationRelativeTo(null);
		  
		  /**
		   * 点击方法
		   */
		  btnNewButton.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					check();
				}
			});
		  btnNewButton_1.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					
					dispose();
					new FirstLogin().setVisible(true);
				}
			});
		  btnNewButton_2.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					txtT.setText("");
					passwordField.setText("");
				}
			});
		  passwordField.addKeyListener(new KeyAdapter() {
				@Override
				public void keyPressed(KeyEvent e) {
					if(e.getKeyCode()==10) {
						check();
					}
				}
			});
		
	}
	/**
	 * 登录检查
	 */
	private void check() {
		String userName = txtT.getText();
		String password = passwordField.getText();
		Connection conn = JDBCUtils.getConnection();
		if(StringUtils.isEmpty(userName, password)) {
			JOptionPane.showMessageDialog(null, "用户名或密码不能为空");
			return;
		}
		User user = new User(userName,password);
		UserId userid = null;
		try {
			userid = userDao.login(conn,user);//返回权限
			if(userid!=null) {
				if(userid.getUserid()==1) {
					LoginConfig.writeUser(userName,userid.getId().toString(),password,userid.getMoney().toString());
					JOptionPane.showMessageDialog(null, "欢迎你管理员");
					dispose();
					AdminFrm adminfrm = new AdminFrm();
					adminfrm.setVisible(true);
					return;
				}else if(userid.getUserid()==0){
					LoginConfig.writeUser(userName,userid.getId().toString(),password,userid.getMoney().toString());
					JOptionPane.showMessageDialog(null, "登录成功");
					dispose();
					UserFrm userfrm = new UserFrm();
					userfrm.setVisible(true);
					return;
				}
			}else {
				JOptionPane.showMessageDialog(null, "登录失败");
				return;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}

登录主页

public class AdminFrm extends JFrame {

    private JMenu mnNewMenu;
    private JPanel contentPane;
    public JDesktopPane desk = new JDesktopPane();
    //为了实现一次点击只能打开一个窗口,打开变为false,关闭变为true
    public static boolean flagGoodsTypeAdd = true;
    public static boolean flagIntroduce = true;
    public static boolean flagGoodsAll = true;
    public static boolean flagGoodsTypeAll = true;
    public static boolean flagUserList = true;
    public static boolean flagUserShopHistory = true;
    public static boolean flagUpdatePassword = true;
    public static boolean flagChongMoney = true;

    /**
     * Create the frame.
     */
    public AdminFrm() {
        setTitle("管理员界面");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(893, 813);

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        mnNewMenu = new JMenu("");
        menuBar.add(mnNewMenu);

        mnNewMenu = new JMenu();
        mnNewMenu.setIcon(new ImageIcon(UserFrm.class.getResource("/image/user2.jpg")));
        mnNewMenu.setFont(new Font("Microsoft YaHei UI", Font.BOLD | Font.ITALIC, 15));
        //mnNewMenu.setBackground(new Color(0, 204, 255));
        menuBar.add(mnNewMenu);


        JMenuItem paswordUpd = new JMenuItem("修改密码");
        paswordUpd.setIcon(new ImageIcon(UserFrm.class.getResource("/image/password.jpg")));
        paswordUpd.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        mnNewMenu.add(paswordUpd);


        JMenuItem logout = new JMenuItem("退出登录");
        logout.setIcon(new ImageIcon(UserFrm.class.getResource("/image/logout.jpg")));
        logout.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        mnNewMenu.add(logout);

        JMenu mnNewMenu_1 = new JMenu("商品维护");
        //mnNewMenu_1.setBackground(Color.ORANGE);
        mnNewMenu_1.setFont(new Font("Microsoft YaHei UI", Font.BOLD | Font.ITALIC, 15));
        menuBar.add(mnNewMenu_1);

        JMenu menu = new JMenu("商品类别管理");
        menu.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        mnNewMenu_1.add(menu);

        JMenuItem typeAll = new JMenuItem("商品类别维护");

        typeAll.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        menu.add(typeAll);

        JMenuItem typeAdd = new JMenuItem("商品类别添加");

        typeAdd.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        menu.add(typeAdd);

        JMenu menu_1 = new JMenu("商品管理");
        menu_1.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        mnNewMenu_1.add(menu_1);

        JMenuItem shopAll = new JMenuItem("商品维护");

        shopAll.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        menu_1.add(shopAll);

        JMenuItem shopAdd = new JMenuItem("商品添加");

        shopAdd.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        menu_1.add(shopAdd);

        JMenu mnNewMenu_3 = new JMenu("出售情况");
        mnNewMenu_3.setFont(new Font("Microsoft YaHei UI", Font.BOLD | Font.ITALIC, 15));
        menuBar.add(mnNewMenu_3);

        JMenuItem mntmNewMenuItem_1 = new JMenuItem("用户列表");

        mntmNewMenuItem_1.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        mnNewMenu_3.add(mntmNewMenuItem_1);

        JMenuItem mntmNewMenuItem_2 = new JMenuItem("出售记录");

        mntmNewMenuItem_2.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        mnNewMenu_3.add(mntmNewMenuItem_2);

        JMenu mnNewMenu_2 = new JMenu("关于我们");
        mnNewMenu_2.setFont(new Font("Microsoft YaHei UI", Font.BOLD | Font.ITALIC, 15));
        menuBar.add(mnNewMenu_2);
        JMenuItem mntmNewMenuItem = new JMenuItem("介绍");
        mntmNewMenuItem.setFont(new Font("Microsoft YaHei UI", Font.BOLD, 15));
        mnNewMenu_2.add(mntmNewMenuItem);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new BorderLayout(0, 0));
        desk.setBackground(new Color(72, 209, 204));
        contentPane.add(desk, BorderLayout.CENTER);

        this.setExtendedState(JFrame.MAXIMIZED_BOTH);


        /**
         * 点击生成界面
         */
        //介绍界面
        mntmNewMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Introduce introduce = Introduce.getIntroduce();
                if (flagIntroduce) {
                    introduce.setVisible(true);
                    desk.add(introduce);
                    flagIntroduce = false;
                }
            }
        });
        //商品类别管理界面
        typeAll.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                GoodsTypeAll goodsTypeAll = GoodsTypeAll.getGoodsTypeAll();
                if (flagGoodsTypeAll) {
                    goodsTypeAll.setVisible(true);
                    goodsTypeAll.fillJComboBox2();
                    desk.add(goodsTypeAll);
                    flagGoodsTypeAll = false;
                }
            }
        });
        //商品添加界面
        typeAdd.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                GoodsTypeAdd goodsTypeAdd = GoodsTypeAdd.getGoodsTypeAdd();
                if (flagGoodsTypeAdd) {
                    goodsTypeAdd.setVisible(true);
                    desk.add(goodsTypeAdd);
                    flagGoodsTypeAdd = false;
                }
            }
        });
        //商品管理界面
        shopAll.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                GoodsAll goodsAll = GoodsAll.getGoodsAll();
                if (flagGoodsAll) {
                    goodsAll.setVisible(true);
                    goodsAll.fillJComboBox2();
                    desk.add(goodsAll);
                    flagGoodsAll = false;
                }

            }
        });
        //商品添加界面
        shopAdd.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                GoodsAdd goodsAdd = GoodsAdd.getGoodsAdd();
                goodsAdd.setVisible(true);
                goodsAdd.fillJComboBox();
                desk.add(goodsAdd);
            }
        });
        //用户列表界面
        mntmNewMenuItem_1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                UserList userlist = UserList.getUserList();
                if (flagUserList) {
                    userlist.setVisible(true);
                    userlist.fillTable(null);
                    desk.add(userlist);
                    flagUserList = false;
                }
            }
        });
        //销售记录界面
        mntmNewMenuItem_2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                UserShopHistory usershophistory = UserShopHistory.getShopHistory();
                if (flagUserShopHistory) {
                    usershophistory.setVisible(true);
                    usershophistory.fillTable();
                    desk.add(usershophistory);
                    flagUserShopHistory = false;
                }
            }
        });
        this.fillName();

        //修改密码界面
        paswordUpd.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                UpdatePassword updatePassword = UpdatePassword.getUpdatePassword();
                updatePassword.setVisible(true);
                desk.add(updatePassword);
            }
        });
        //充值界面
        mntmNewMenuItem.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                ChongMoney chongMoney = ChongMoney.getChongMoney();
                if (flagChongMoney) {
                    chongMoney.setMoney();
                    chongMoney.setVisible(true);
                    desk.add(chongMoney);
                    flagChongMoney = false;
                }

            }
        });
        //退出登录
        logout.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(null, "退出成功");
                dispose();
                new Login().setVisible(true);
            }
        });
//		logout.addMouseListener(new MouseAdapter() {
//			@Override
//			public void mouseClicked(MouseEvent mouseEvent) {
//				JOptionPane.showMessageDialog(null, "退出成功");
//				dispose();
//				new Login().setVisible(true);
//			}
//		});
    }

    private void fillName() {
        ArrayList useList = LoginConfig.getUserList();
        String userName = useList.get(0).toString();
        mnNewMenu.setText(userName);
    }
}

四、源码获取

因为页面与源码太多了,所以页面与源码只展示了一部分,完整源码已经打包了,点击下面蓝色链接获取!

点我获取源码

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值