Java实现超市管理系统(含数据库)

简介: Java实现超市管理系统(含数据库)

序言: 学Java已经有几个月了,上一次总结是针对GUI界面写的简易计算器,实现加减乘除功能以及计算器标准型和科学型之间的转换,有兴趣可以看看 Java混合计算器以及界面切换 . 这次写的超市管理系统,实现的功能有账户的注册、登录,超市商品类别的添加、修改和删除以及商品的添加、修改和删除的功能。用户注册之后把注册信息导入数据库;用户登录时候查询用户表,方可登录进去;商品类别和商品的增加也如注册信息一样,把信息导入商品类别表和商品表。由于快期末考试了,超市管理系统的一些功能还没有完善,后续还会更新顾客登录超市系统后,只能拥有查询商品的权限,并且还可以实现购买商品的功能,哈~哈 ~…

1、首先是建立数据库表:

2、实现主页面:

3、实现用户注册:

核心代码:

public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Register().setVisible(true);
            }
        });
    }
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String name=this.jTextField1.getText();
        String age=this.jTextField3.getText();
        String QQ=this.jTextField4.getText();
        String userName=this.jTextField5.getText();
        String password1=this.jPasswordField1.getText();
        String password2=this.jPasswordField2.getText();
        if(StringUtil.isEmpty(name)){
            JOptionPane.showMessageDialog(null,"姓名不能为空");
            return;
        }
        if(StringUtil.isEmpty(age)){
            JOptionPane.showMessageDialog(null,"年龄不能为空");
            return;
        }
        if(StringUtil.isEmpty(QQ)){
            JOptionPane.showMessageDialog(null,"QQ不能为空");
            return;
        }
        if(StringUtil.isEmpty(userName)){
            JOptionPane.showMessageDialog(null,"注册账号不能为空");
            return;
        }
        if(StringUtil.isEmpty(password1)){
            JOptionPane.showMessageDialog(null,"注册密码不能为空");
            return;
        }
        if(StringUtil.isEmpty(password2)){
            JOptionPane.showMessageDialog(null,"确认密码不能为空");
            return;
        }
        if(!password1.equals(password2)){
            JOptionPane.showMessageDialog(null,"两个密码填写不一致");
            return;
        }
        User user=new User(userName,password1);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            int n=userDao.add(con,user);
            if(n==1){
                JOptionPane.showMessageDialog(null,"用户注册成功!");

            }else{
                JOptionPane.showMessageDialog(null,"注册失败!!");
            }
        }catch (Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"注册失败!!");
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }

        }
    }
    //上一步
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        dispose();
        new HomePage().setVisible(true);
    }

注册成功之后可以返回上一步,重新登录

4、实现用户登录:

核心代码:

 //重置
    private void resetValueActionPerformed(ActionEvent evt) {
        this.userNameTxt.setText("");
        this.passwordTxt.setText("");
    }
    //登录事件处理
    private void loginActionPerformed(ActionEvent evt) {
        String userName=this.userNameTxt.getText();
        String password=new String(this.passwordTxt.getPassword());
        if(StringUtil.isEmpty(userName)){
            JOptionPane.showMessageDialog(null,"用户名不能为空!");
            return;
        }
        if(StringUtil.isEmpty(password)){
            JOptionPane.showMessageDialog(null,"密码不能为空");
            return;
        }
        User usr=new User(userName,password);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            User currentUser=userDao.login(con,usr);
            if(currentUser!=null){
                dispose();
                new MainFrm().setVisible(true);

            }else{
                JOptionPane.showMessageDialog(null,"登录失败,用户名密码错误!");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }
        }

    }

接下来是商品类别和商品的实现,主要是在JFrame窗口中加入Inter窗口

5、主菜单之关于:

核心代码:

6、主菜单之商品类别管理:

核心代码:

 private void jButton1ActionPerformed(ActionEvent evt) {
        String goodsTypeName=this.goodsTypeNameTxt.getText();
        String goodsTypeDesc=this.goodsTypeDescTxt.getText();
        if(StringUtil.isEmpty(goodsTypeName)){
            JOptionPane.showMessageDialog(null,"商品类别不能为空");
            return;
        }
        GoodsType goodsType=new GoodsType(goodsTypeName,goodsTypeDesc);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            int n=goodsTypeDao.add(con,goodsType);
            if(n==1){
                JOptionPane.showMessageDialog(null,"商品类别添加成功!");
                jButton2ActionPerformed(evt);
            }else{
                JOptionPane.showMessageDialog(null,"添加失败!!");
            }
        }catch (Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"添加失败!!");
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }

        }
    }
    //重置

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        this.goodsTypeNameTxt.setText("");
        this.goodsTypeDescTxt.setText("");
    }
//表格行点击事件
    private void jTable1MousePressed(java.awt.event.MouseEvent evt) {
        int row=jTable1.getSelectedRow();//获取行数
        idTxt.setText((String)jTable1.getValueAt(row,0));
        goodsTypeNameTxt.setText((String)jTable1.getValueAt(row,1));
        goodsTypeDescTxt.setText((String)jTable1.getValueAt(row,2));

    }
    //鼠标单击后,删除
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
        String id=idTxt.getText();
        if(StringUtil.isEmpty(id)){
            JOptionPane.showMessageDialog(null,"请选择要删除的记录");
            return;
        }
        int n=JOptionPane.showConfirmDialog(null,"Are you 确定delete this记录?");
        if(n==0){
            Connection con=null;
            try{
                con=dbUtil.getCon();
                int deleteNum=goodsTypeDao.delect(con,id);
                //System.out.println(deleteNum);
                if(deleteNum==1){
                    JOptionPane.showMessageDialog(null,"删除成功");
                    this.resetValue();
                    this.fillTable(new GoodsType());
                }else{
                    JOptionPane.showMessageDialog(null,"删除失败");
                }

            }catch (Exception e){
                e.printStackTrace();
            }finally {
                try{
                    dbUtil.closeCon(con);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
    //鼠标单击后,修改
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        String id=idTxt.getText();
        String goodsTypeName=goodsTypeNameTxt.getText();
        String goodsTypeDesc=goodsTypeDescTxt.getText();
        if(StringUtil.isEmpty(id)){
            JOptionPane.showMessageDialog(null,"请选择要修改的记录");
            return;
        }
        GoodsType goodsType=new GoodsType(Integer.parseInt(id),goodsTypeName,goodsTypeDesc);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            int modifyNum=goodsTypeDao.update(con,goodsType);
            if(modifyNum==1){
                JOptionPane.showMessageDialog(null,"修改成功");
                this.resetValue();
                this.fillTable(new GoodsType());
            }else{
                JOptionPane.showMessageDialog(null,"修改失败");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }
        }


    }
    //查询商品类型
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String t_goodsTypeName=this.jTextField2.getText();
        GoodsType goodsType=new GoodsType();
        goodsType.setGoodsTypeName(t_goodsTypeName);
        this.fillTable(goodsType);
    }
    //插入商品类型
    private void fillTable(GoodsType goodsType){
        DefaultTableModel dtm=(DefaultTableModel)jTable1.getModel();
        dtm.setRowCount(0);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            ResultSet rs=goodsTypeDao.list(con,goodsType);
            while(rs.next()){
                Vector v=new Vector();
                v.add(rs.getString("id"));
                v.add(rs.getString("goodsTypeName"));
                v.add(rs.getString("goodsTypeDesc"));
                dtm.addRow(v);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    //修改后重置
    private void resetValue(){
        this.idTxt.setText("");
        this.goodsTypeNameTxt.setText("");
        this.goodsTypeDescTxt.setText("");
    }

7、主菜单之商品管理:

核心代码:

//查询
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        String t_goodsName=this.s_goodsNameTxt.getText();
        Goods goods=new Goods();
        goods.setGoodsName(t_goodsName);
        this.fillTable(goods);
    }
    //下拉框
    private void fillGoodsType(String type){
        Connection con=null;
        GoodsType goodsType=null;
        try{
            con=dbUtil.getCon();
            ResultSet rs=goodsTypeDao.list(con,new GoodsType());
            if("search".equals(type)){
                goodsType=new GoodsType();
                goodsType.setGoodsTypeName("请选择");
                goodsType.setId(-1);
                this.s_goodsJcb.addItem(goodsType);
            }
            while(rs.next()){
                goodsType=new GoodsType();
                goodsType.setGoodsTypeName(rs.getString("goodsTypeName"));
                goodsType.setId(rs.getInt("id"));
                if("search".equals(type)){
                    this.s_goodsJcb.addItem(goodsType);
                }else if("modify".equals(type)){

                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }

        }
    }
    //表
    private  void  fillTable(Goods goods){
        DefaultTableModel dtm=(DefaultTableModel) jTable1.getModel();
        dtm.setRowCount(0);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            ResultSet rs=goodsDao.list(con,goods);
            while(rs.next()){
                Vector v=new Vector();
                v.add(rs.getInt("id"));
                v.add(rs.getString("goodsName"));
                v.add(rs.getFloat("price"));
                v.add(rs.getString("goodsDesc"));
                dtm.addRow(v);
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
    //鼠标点击表格事件
    private void jTable1MousePressed(java.awt.event.MouseEvent evt) {
        int row=jTable1.getSelectedRow();
        this.idTxt.setText((Integer)jTable1.getValueAt(row,0)+"");
        this.goodsNameTxt.setText((String)jTable1.getValueAt(row,1));
        this.priceTxt.setText((Float)jTable1.getValueAt(row,2)+"");
        this.goodsDescTxt.setText((String)jTable1.getValueAt(row,3));

    }
    //鼠标单击后,修改
    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
        String id=this.idTxt.getText();
        if(StringUtil.isEmpty(id)){
            JOptionPane.showMessageDialog(null,"请选择要修改的记录");
            return;
        }
        String goodsName=this.goodsNameTxt.getText();
        String price=this.priceTxt.getText();
        String goodsDesc=this.goodsDescTxt.getText();
        if(StringUtil.isEmpty(goodsName)){
            JOptionPane.showMessageDialog(null,"商品名称不能为空");
            return;
        }
        if(StringUtil.isEmpty(price)){
            JOptionPane.showMessageDialog(null,"商品价钱不能为空");
            return;
        }
        if(StringUtil.isEmpty(goodsDesc)){
            JOptionPane.showMessageDialog(null,"商品描述不能为空");
            return;
        }
        Goods goods=new Goods(Integer.parseInt(id),goodsName, Float.parseFloat(price),goodsDesc);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            int modifyNum=goodsDao.update(con,goods);
            if(modifyNum==1){
                JOptionPane.showMessageDialog(null,"修改成功");
                this.resetValue();
                this.fillTable(new Goods());
            }else{
                JOptionPane.showMessageDialog(null,"修改失败");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }
        }

    }
    //鼠标单击后删除
    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
        String id=idTxt.getText();
        if(StringUtil.isEmpty(id)){
            JOptionPane.showMessageDialog(null,"请选择要删除的记录");
            return;
        }
        int n=JOptionPane.showConfirmDialog(null,"Are you 确定delete this记录?");
        if(n==0){
            Connection con=null;
            try{
                con=dbUtil.getCon();
                int deleteNum=goodsDao.delete(con,id);
                if(deleteNum==1){
                    JOptionPane.showMessageDialog(null,"删除成功");
                    this.resetValue();
                    this.fillTable(new Goods());
                }else{
                    JOptionPane.showMessageDialog(null,"删除失败");
                }

            }catch (Exception e){
                e.printStackTrace();
            }finally {
                try{
                    dbUtil.closeCon(con);
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
    //修改后重置
    private void resetValue(){
        this.idTxt.setText("");
        this.goodsNameTxt.setText("");
        this.goodsDescTxt.setText("");
    }
private void jButton2ActionPerformed(ActionEvent evt) {
        this.resetValue();
    }
    //商品添加
    private void jButton1ActionPerformed(ActionEvent evt){
        String goodsName=this.goodsNameTxt.getText();
        String price=this.priceTxt.getText();
        String goodsDesc=this.goodsDecTxt.getText();
        if(StringUtil.isEmpty(goodsName)){
            JOptionPane.showMessageDialog(null,"商品类别名称不能为空");
            return;
        }
        if(StringUtil.isEmpty(price)){
            JOptionPane.showMessageDialog(null,"商品价格不能为空");
            return;
        }
        GoodsType goodsType=(GoodsType)goodsTypeJcb.getSelectedItem();
        int goodsTypeId=goodsType.getId();
        Goods goods=new Goods(goodsName,Float.parseFloat(price),goodsDesc);
        Connection con=null;
        try{
            con=dbUtil.getCon();
            int addNum=goodsDao.add(con,goods);
            if(addNum==1){
                JOptionPane.showMessageDialog(null,"商品添加成功");
                resetValue();
            }else{
                JOptionPane.showMessageDialog(null,"商品添加失败");
            }
        }catch (Exception e){
            e.printStackTrace();
            JOptionPane.showMessageDialog(null,"商品添加失败");
        }finally {
            try{
                dbUtil.closeCon(con);
            }catch (Exception e){
                e.printStackTrace();
            }
        }

    }

    /**
     * 重置表单
     */
    private void resetValue(){
        this.goodsNameTxt.setText("");
        this.priceTxt.setText("");
        this.goodsDecTxt.setText("");
        if(this.goodsTypeJcb.getItemCount()>0){
            this.goodsTypeJcb.setSelectedIndex(0);

        }
    }
    //初始化商品类别下拉框
    private void fillGoodsType(){
        Connection con=null;
        GoodsType goodsType=null;
        try{
            con=dbUtil.getCon();
            ResultSet rs=goodsTypeDao.list(con,new GoodsType());
            while(rs.next()){
                goodsType=new GoodsType();
                goodsType.setId(rs.getInt("id"));
                goodsType.setGoodsTypeName(rs.getString("goodsTypeName"));
                this.goodsTypeJcb.addItem(goodsType);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {

        }
    }

8、退出:

相关文章
|
4天前
|
XML Java 数据库连接
性能提升秘籍:如何高效使用Java连接池管理数据库连接
在Java应用中,数据库连接管理至关重要。随着访问量增加,频繁创建和关闭连接会影响性能。为此,Java连接池技术应运而生,如HikariCP。本文通过代码示例介绍如何引入HikariCP依赖、配置连接池参数及使用连接池高效管理数据库连接,提升系统性能。
27 5
|
12天前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
42 3
|
16天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
16天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
33 2
|
16天前
|
Java 数据库连接 数据库
如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面
本文介绍了如何构建高效稳定的Java数据库连接池,涵盖连接池配置、并发控制和异常处理等方面。通过合理配置初始连接数、最大连接数和空闲连接超时时间,确保系统性能和稳定性。文章还探讨了同步阻塞、异步回调和信号量等并发控制策略,并提供了异常处理的最佳实践。最后,给出了一个简单的连接池示例代码,并推荐使用成熟的连接池框架(如HikariCP、C3P0)以简化开发。
35 2
|
18天前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
25 4
|
16天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
16天前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
32 1
|
16天前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
17 1
|
18天前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
37 2