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、退出:

相关文章
|
9月前
|
JavaScript Java 大数据
基于JavaWeb的销售管理系统设计系统
本系统基于Java、MySQL、Spring Boot与Vue.js技术,构建高效、可扩展的销售管理平台,实现客户、订单、数据可视化等全流程自动化管理,提升企业运营效率与决策能力。
|
8月前
|
移动开发 监控 小程序
java家政平台源码,家政上门清洁系统源码,数据多端互通,可直接搭建使用
一款基于Java+SpringBoot+Vue+UniApp开发的家政上门系统,支持小程序、APP、H5、公众号多端互通。涵盖用户端、技工端与管理后台,支持多城市、服务分类、在线预约、微信支付、抢单派单、技能认证、钱包提现等功能,源码开源,可直接部署使用。
575 24
|
8月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
595 8
|
8月前
|
安全 前端开发 Java
使用Java编写UDP协议的简易群聊系统
通过这个基础框架,你可以进一步增加更多的功能,例如用户认证、消息格式化、更复杂的客户端界面等,来丰富你的群聊系统。
293 11
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
397 10
|
8月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
1010 4
|
8月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
653 0
|
9月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
543 158
|
9月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1431 152