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月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
5月前
|
前端开发 数据库
会议室管理系统源码(含数据库脚本)
会议室管理系统源码(含数据库脚本)
96 0
|
5月前
|
Java 数据库
jsp CRM客户管理系统(含数据库脚本以及文档)
jsp CRM客户管理系统(含数据库脚本以及文档)
121 10
|
6月前
|
前端开发 Java 关系型数据库
基于ssm的社区物业管理系统,附源码+数据库+论文+任务书
社区物业管理系统采用B/S架构,基于Java语言开发,使用MySQL数据库。系统涵盖个人中心、用户管理、楼盘管理、收费管理、停车登记、报修与投诉管理等功能模块,方便管理员及用户操作。前端采用Vue、HTML、JavaScript等技术,后端使用SSM框架。系统支持远程安装调试,确保顺利运行。提供演示视频和详细文档截图,帮助用户快速上手。
230 17
|
6月前
|
前端开发 Java 关系型数据库
基于ssm的超市会员(积分)管理系统,附源码+数据库+论文,包安装调试
本项目为简单内容浏览和信息处理系统,具备管理员和员工权限。管理员可管理会员、员工、商品及积分记录,员工则负责积分、商品信息和兑换管理。技术框架采用Java编程语言,B/S架构,前端使用Vue+JSP+JavaScript+Css+LayUI,后端为SSM框架,数据库为MySQL。运行环境为Windows,JDK8+Tomcat8.5,非前后端分离的Maven项目。提供演示视频和详细文档,购买后支持免费远程安装调试。
289 19
|
6月前
|
前端开发 JavaScript Java
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
250 17
|
6月前
|
前端开发 Java 关系型数据库
基于ssm的网络直播带货管理系统,附源码+数据库+论文
该项目为网络直播带货网站,包含管理员和用户两个角色。管理员可进行主页、个人中心、用户管理、商品分类与信息管理、系统及订单管理;用户可浏览主页、管理个人中心、收藏和订单。系统基于Java开发,采用B/S架构,前端使用Vue、JSP等技术,后端为SSM框架,数据库为MySQL。项目运行环境为Windows,支持JDK8、Tomcat8.5。提供演示视频和详细文档截图。
158 10
|
6月前
|
前端开发 Java 关系型数据库
基于ssm的台球厅管理系统,附源码+数据库+论文
本项目为新锐台球厅管理系统,支持管理员和会员两种角色。管理员可进行会员管理、台球桌管理、订单管理等;会员可查看台球桌、预约、购买商品等。技术框架基于Java,采用B/S架构,前端使用Vue+HTML+JavaScript+CSS+LayUI,后端使用SSM框架,数据库为MySQL。运行环境为Windows,JDK8+MySQL5.7+Tomcat8.5。提供演示视频及详细文档截图。
|
6月前
|
人工智能 NoSQL 关系型数据库
阿里云连续五年获评为Gartner®云数据库管理系统魔力象限领导者
阿里云连续五年获评为Gartner®云数据库管理系统魔力象限领导者
|
6月前
|
存储 监控 数据挖掘
消防行业如何借助时序数据库 TDengine 打造高效的数据监控与分析系统
本篇文章来自“2024,我想和 TDengine 谈谈”征文活动的优秀投稿,深入探讨了如何在消防行业中运用 TDengine 进行业务建模。文章重点介绍了如何通过 TDengine 的超级表、标签设计和高效查询功能,有效管理消防监控系统中的时序数据。作者详细阐述了实时监控、报警系统以及历史数据分析在消防行业中的应用,展示了 TDengine 在数据压缩、保留策略和分布式架构下的强大优势。
184 0