mysq数据库实战小型管理系统


前后用了一天多时间断断续续独立完成编码,成功跑起来的时候激动坏了, 第一次用了软件工程课上学到的方法工具来规划整个小项目,最后抽象出八个类  ,使用经典的工厂类设计模式。

ps:睡觉,,,


1: 工厂类
2:关闭工具类
3:增删改查类
4:增加界面类
5:删除界面类
6:查询界面类
7:选择操作界面类
8:登陆界面类




工厂类:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class FactoryClass {
    public Connection getConnection()  {
        Connection con = null ;
        String url = "org.gjt.mm.mysql.Driver" ;
        try
        {
         Class.forName(url) ;
        }catch(ClassNotFoundException cfe)  {
            cfe.printStackTrace();
        };
        try  {
                 con = DriverManager.getConnection("jdbc:mysql://localhost:3306/student","root","include") ;
        }catch(SQLException se)  {
            se.printStackTrace();
        }
        return con ;
    }

}



操作工具类

import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;


public class JDBCUtils {
    /**关闭结果集,语句块,连接
     *
     * @param rs
     * @param st
     * @param con
     */
    public static void close(ResultSet rs,PreparedStatement st,Connection con)  {
        try  {
            rs.close() ;
            st.close() ;
            con.close() ;
        }catch(SQLException se)  {
            se.printStackTrace();
        }
    }
   
    /**关闭语句块与连接
     *
     * @param st
     * @param con
     */
    public static void close(PreparedStatement st,Connection con)  {
        try  {
            st.close();
            con.close();
        }catch(SQLException se) {
            se.printStackTrace();
        }   
    }
   
    /**
     * 关闭连接
     *
     */
    public static void close(Connection con)  {
        try  {
            con.close();
        }catch(SQLException se)  {
            se.printStackTrace();
        }
    }
   
    /**
     * 关闭结果集
     */
    public static void close(ResultSet rs)  {
        try  {
            rs.close();
        }catch(SQLException se)  {
            se.printStackTrace();
        }
    }
   
    /**
     * 关闭语句块
     */
    public static void close(PreparedStatement st)  {
        try  {
            st.close();
        }catch(SQLException se)  {
            se.printStackTrace();
        }
    }

}


基础增删改查类

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class PeopleBiz {
   
    /*展示所有成员
     *
     */
    public void showAll() throws SQLException  {
        FactoryClass factory = new FactoryClass() ;
        Connection con = factory.getConnection() ;
        String sql = "select * from people" ;
        PreparedStatement ps  = con.prepareStatement(sql) ;
        ResultSet rs = ps.executeQuery() ;
        while(rs.next())  {
            String nameResult = rs.getString(2) ;
            String passwordResult = rs.getString(3) ;
            System.out.println("姓名:"+nameResult+"   密码:"+passwordResult) ;
        }
        JDBCUtils.close(rs,ps,con);
       
    }
   
    /**
     * 插入新成员
     * @throws SQLException
     */
    public void insertData(String name,String password) throws SQLException {
        FactoryClass factory = new FactoryClass() ;
        Connection con  = factory.getConnection() ;
        String sql = "insert into people(name,password) values('"+name+"','"+password+"') ";
        PreparedStatement ps =  con.prepareStatement(sql) ;
        ps.executeUpdate() ;
        JDBCUtils.close(ps,con);
    }
   
    /**
     * 按照名字为索引删除成员
     * @throws SQLException
     */
   
    public void deleteByName(String name) throws SQLException  {
        FactoryClass factory = new FactoryClass() ;
        Connection con = factory.getConnection() ;
        String sql = "delete from people where name= '"+name+"' " ;
        PreparedStatement ps = con.prepareStatement(sql) ;
        ps.executeUpdate() ;
        JDBCUtils.close(ps,con);
       
    }
   
   
    /**
     * 更改数据库中的成员
     * @throws SQLException
     */
    public void updateDate(String name,String password) throws SQLException  {
        FactoryClass factory = new FactoryClass() ;
        Connection con = factory.getConnection() ;
        String sql = "update people set(name,password) values('"+name+"' , '"+password+"')" ;
        PreparedStatement ps = con.prepareStatement(sql) ;
        ps.executeUpdate() ;
        JDBCUtils.close(ps,con);
    }
   
    public String[] selectByName(String name) throws SQLException  {
        FactoryClass factory = new FactoryClass() ;
        Connection con = factory.getConnection() ;
        String sql  = "select * from people where name= '"+name+"' " ;
        PreparedStatement ps = con.prepareStatement(sql) ;
        ResultSet rs = ps.executeQuery() ;
        String data[] = new String[2] ;
        while(rs.next())  {
            data[0] = rs.getString(1) ;
            data[1] = rs.getString(2) ;
        }
        return data ;
    }
   
   
   
}
   


/*
  * 下面开始编写测试主函数Tester
 */
/*class Tester  {
    public static void main(String args[]) throws Exception  {
        PeopleBiz p = new PeopleBiz() ;
        p.insertData("王如意", "include");
        //p.deleteByName("王") ;
        p.showAll();
    }
}*/



登陆界面类

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;


public class Login extends JFrame   {
   
    private JTextField nameText ;
    private JPasswordField passText ;
    public Login()  {
        this.setTitle("数据库登陆");
        this.setSize(330,230);
        this.setLocation(300,300);
        this.setResizable(false);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.setVisible(true);
        JPanel mainpanel = new JPanel() ;
        mainpanel.setLayout(null);
        Border border = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED) ;
       mainpanel.setBorder(BorderFactory.createTitledBorder(border,"输入登陆信息",TitledBorder.CENTER,TitledBorder.TOP));
        this.add(mainpanel,BorderLayout.CENTER) ;
        mainpanel.setLayout(null)      ;  
        JLabel nameLabel = new JLabel("输入用户名: ") ;
        nameLabel.setBounds(30,30,80,22);
        mainpanel.add(nameLabel) ;
        nameText = new JTextField() ;
        nameText.setBounds(115,30,120,22);
        mainpanel.add(nameText) ;
        JLabel passLabel = new JLabel("请输入密码: ") ;
        passLabel.setBounds(30,60,80,22);
        mainpanel.add(passLabel) ;
        passText = new JPasswordField() ;
        passText.setBounds(115,60,120,22) ;
        mainpanel.add(passText);
        JButton reset = new JButton("重置") ;
        JButton login = new JButton("登陆") ;
        reset.setBounds(40,90,60,20) ;
        login.setBounds(130,90,60,20);
        mainpanel.add(login) ;
        mainpanel.add(reset) ;
        reset.addActionListener(new ActionListener()  {
            public void actionPerformed(ActionEvent e)  {
                nameText.setText("");
                passText.setText("") ;
            }
        });
       
        login.addActionListener(new ActionListener() {
           
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                if(nameText.getText().equals("daemon") && passText.getText().equals("include"))  {
                    JOptionPane.showMessageDialog(null, "欢迎进入系统","登陆成功",JOptionPane.INFORMATION_MESSAGE);
                    new Option() ;
                }
                else JOptionPane.showMessageDialog(null, "古文!!!","doubi",JOptionPane.INFORMATION_MESSAGE);
               
            }
        });
       
           
    }

}

class Tester {
    public static void main(String args[])throws Exception  {
        new Login() ;
       
    }
}




选择操作类


import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class Option extends JFrame  {
    JButton addButton = new JButton("增加") ;
    JButton deleteButton = new JButton("删除") ;
    JButton queryButton = new JButton("查询") ;
    public Option()  {
        this.setTitle("请选择操作") ;
        this.setSize(330,230);
        this.setVisible(true);
        JPanel panel = new JPanel() ;   
        panel.add(addButton) ;
        panel.add(deleteButton) ;
        panel.add(queryButton) ;
        this.add(panel,BorderLayout.CENTER);
       
        /**
         * 下面开始为三个时间按钮添加事件响应
         */
       
        addButton.addActionListener(new ActionListener()  {
            public void actionPerformed(ActionEvent e)  {
                new Add() ;
            }
        });
       
        deleteButton.addActionListener(new ActionListener()  {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                // TODO Auto-generated method stub
                new Delete() ;
               
            }
        });
       
        queryButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                new Query() ;
               
            }
        });
       
    }

}



以下为具体实现增删改查

//添加成员类
import java.awt.BorderLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Add extends JFrame  {
    private JTextField nametext ;
    private JTextField passtext ;
    public Add()  {
        this.setTitle("请输入要插入的成员信息");
        this.setSize(400,400);
        this.setVisible(true);
        JPanel panel = new JPanel() ;
        panel.setLayout(null);
        JLabel namelab = new JLabel("姓名") ;
        namelab.setBounds(30,30,80,22);
        panel.add(namelab) ;
        this.nametext = new JTextField() ;
        this.nametext.setBounds(115,30,120,22);
        panel.add(nametext) ;
        JLabel passlab = new JLabel("密码") ;
        passlab.setBounds(30,60,80,22);
        panel.add(passlab) ;
        passtext = new JTextField() ;
        passtext.setBounds(115,60,120,22);
        panel.add(passtext) ;
        this.add(panel,BorderLayout.CENTER) ;
        JButton ok = new JButton("插入") ;
        this.add(ok,BorderLayout.SOUTH) ;
       
        ok.addActionListener(new ActionListener()  {
            public void actionPerformed(ActionEvent e)  {
                String nameinput = nametext.getText();
                String passinput = passtext.getText() ;
                boolean flag = false;
                PeopleBiz pb = new PeopleBiz() ;
                try {
                    pb.insertData(nameinput, passinput);
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                JOptionPane.showMessageDialog(null, "数据插入成功","插入结果",JOptionPane.INFORMATION_MESSAGE);
               
            }
        });
       
    }
}


//删除成员类
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Delete extends JFrame {
    private JTextField nametext ;
    private JButton ok ;
    public Delete()  {
        this.setTitle("输入要删除的姓名") ;
        this.setVisible(true) ;
        this.setSize(400,400);
        JPanel panel = new JPanel() ;
        panel.setLayout(null) ;
        JLabel namelab= new JLabel("姓名") ;
        namelab.setBounds(30,30,80,22);
        panel.add(namelab) ;
        nametext = new JTextField() ;
        nametext.setBounds(115,30,120,22) ;
        panel.add(nametext) ;
        this.add(panel,BorderLayout.CENTER) ;
        this.ok = new JButton("确认删除") ;
        this.add(this.ok,BorderLayout.SOUTH) ;
       
        this.ok.addActionListener(new ActionListener()  {
            public void actionPerformed(ActionEvent e)  {
                String deletename = nametext.getText() ;
                PeopleBiz p = new PeopleBiz() ;
                try {
                    p.deleteByName(deletename);
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                JOptionPane.showMessageDialog(null, "数据删除成功","反馈信息!",JOptionPane.INFORMATION_MESSAGE);
            }
        });
       
    }

}


//查询界面类
import java.awt.BorderLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Query extends JFrame  {
    private JTextField nametext ;
    private JTextField passtext ;
    public Query()  {
        this.setTitle("所有查询成员信息!");
        this.setSize(400,400);
        this.setVisible(true);
        JPanel panel = new JPanel() ;
        panel.setLayout(null);
        JLabel namelab = new JLabel("姓名") ;
        namelab.setBounds(30,30,80,22);
        panel.add(namelab) ;
        this.nametext = new JTextField() ;
        this.nametext.setBounds(115,30,120,22);
        panel.add(nametext) ;
        JLabel passlab = new JLabel("密码") ;
        passlab.setBounds(30,60,80,22);
        panel.add(passlab) ;
        passtext = new JTextField() ;
        passtext.setBounds(115,60,120,22);
        panel.add(passtext) ;
        this.add(panel,BorderLayout.CENTER) ;
        JButton ok = new JButton("查询") ;
        this.add(ok,BorderLayout.SOUTH) ;
       
        ok.addActionListener(new ActionListener()  {
            public void actionPerformed(ActionEvent e)  {
                String nameinput = nametext.getText();
                boolean flag = false;
                PeopleBiz pb = new PeopleBiz() ;
                try {
                    String res[]=pb.selectByName(nameinput);
                    passtext.setText(res[1]);
                    JOptionPane.showMessageDialog(null, "查询结果已显示在密码框!","查询结果",JOptionPane.INFORMATION_MESSAGE);
                } catch (SQLException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                JOptionPane.showMessageDialog(null, "数据插入成功","插入结果",JOptionPane.INFORMATION_MESSAGE);
               
            }
        });
       
    }
}




  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1、项目计划       1.1系统开发目的       1.2背景说明       1.3项目确立       1.4应用范围       1.5定义       1.6参考资料      2、逻辑分析与详细分析       2.1系统功能       2.2数据流图       2.3用户类型与职能       2.4系统开发步骤       2.5系统环境需求       2.6系统安全问题      3、基于UML的建模       3.1语义规则       3.2 UML模型       3.3系统实现图      4、概要设计文档 5、逻辑设计文档 6、物理设计文档 7、小结 1、项目计划   1.1系统开发目的   (1)大大提高超市的运作效率;   (2)通过全面的信息采集和处理,辅助提高超市的决策水平; (3)使用本系统,可以迅速提升超市的管理水平,为降低经营成本, 提高效益,增强超市扩张力, 提供有效的技术保障。 1.2背景说明    21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。    1.3项目确立    针对超市的特点,为了帮助超市解决现在面临的问题,提高小型超市的竞争力,我们将开发以下系统:前台POS销售系统后台管理系统,其中这两个子系统又包含其它一些子功能。    1.4应用范围       本系统适应于各种小型的超市。
目  录 1 引 言 1 1.1课程设计选题 1 1.2课程设计的目的 1 1.3本选题的设计背景 1 2 系统分析与设计 2 2.1 功能及性能分析 2 2.1.1 功能需求 2 2.1.2 性能需求 2 2.2 系统开发运行环境 3 2.3 系统总体设计 3 3 数据库设计 4 3.1 数据库概念结构 4 3.2 数据库逻辑结构 6 3.2.1 关系模型 6 3.2..2视图的设计 8 3.3 数据库的实现 8 3.3.1表 8 4 详细设计与实现 11 4.1 登录模块 11 4.2 入库模块 11 4.3 员工管理模块 12 4.4 财务管理模块 13 4.5 销售管理模块 14 结  论 14 参 考 文 献 15 附录 15 1 引 言 1.1课程设计选题 《超市管理系统》 1.2课程设计的目的 通过数据库系统课程设计,熟悉了SQL SERVER数据库管理系统的结构与组成;掌握了SQL SERVER数据库管理系统应用技术和的使用;应用JSP开发工具实践了《学生选课管理系统》的数据库应用系统设计方法、开发过程和SQL SERVER数据库的管理与维护。最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。 1.3本选题的设计背景 超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。商店自动化的产品管理在欧美等国家早已经实现,也是零售业管理的基础。它最主要的特点是能够实时的和准确的控制店内的销售情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望在超市购物中能基本上都能购得所需的商品,并且还要既保证商品质量还要享受优质,方便的服务 随着小超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长。超市时时刻刻都需要对商品各种信息进行统计分析。而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。 超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块:系统权限的设定、原始数据录入、数据的汇总及查询等。从而,实现对进货、销售及员工信息等实现全面、动态、及时的管理。 2.1 功能及性能分析 2.1.1 功能需求 整个系统基本包括了小型超市所要用到的模块。包括收款操作,库存查询,填写资金支出表,采购管理,库存管理,销售管理,资金管理,员工管理等。 1. 库存管理: 综合查询库存明细记录。 仓库信息搜索。仓库调度以及仓库货物信息查询。 2、商品录入:根据超巿业务特点制定相关功能,可以通过输入商品名称等来实现精确或模糊的商品录入。其中将商品划分成不同的类型,方便管理和查询。 3. 财务管理:通过直接输入商品名称系统自动显示该商品的详细信息。明确显示折扣,现卖价,以及仓库剩余量,自动计算本次交易的总金额和判断购买数量的准确性。如果顾客是本店会员并持有本人会员卡,则在交易时选择顾客类型,并对所购物品全部实行等级折扣优惠,并将所购物品的总金额累计到该会员的总消费金额中。 4、 进货管理: 根据销售情况及库存情况,制定进货计划(亦可手工制定修改),强大的查询功能可以避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询进货与入库记录及金额。 5. 销售管理: 商品正常销售、促销与限量、限期及禁止销售控制。 综合查询各种销售明细记录、各地收银员收银记录以及交结账情况等。 按多种方式统计生成销售排行榜,灵活察看和打印商品销售日、月、年报表。 6. 员工管理:基本信息登记管理。 员工操作权限管理。 客户销售权限管理。信息查询,修改更新,已经删除。 7. 安全性:对每位员工进行权限限制。其中超市管理员具有最高权限。根据工作类型的不同现实相应系统的不同部分,避免了非法操作。 8、资金管理:系统采用每日自动报帐及报帐查询,用户可以按照自己的需要进行某个时间段的查询,查看订货情况,销售情况,财务支出收益情况,最终计算出此段时间内运营成本和销售利润,结算出最终的利润。 9. 供货商管理:对供货商基本信息进行登记管理,通过基本信息进行查询,修改更新,删除 2.2 系统开发运行环境 本系统开发平台: jsp + sql server 2000 本系统采用架构: petshop 本系统运行环境: windows xp 或以上版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值