JDBC的封装

分离原则:

界面——逻辑的分离

数据——功能的分离

对数据访问来说,对多个表的操作分离

 

无论是数据类,还是数据操作类,都不负责输出 

 

大体上分为三类:    1数据类(get  set)   2数据操作类(加载驱动,增删改查的方法)     3界面类(main函数)

1.数据类  :成员变量,  get   set

package com.maya.shuju;

public
class KuCun { private String WzName; private int Num; private String Unit; private int Price; public String getWzName() { return WzName; } public void setWzName(String wzName) { WzName = wzName; } public int getNum() { return Num; } public void setNum(int num) { Num = num; } public String getUnit() { return Unit; } public void setUnit(String unit) { Unit = unit; } public int getPrice() { return Price; } public void setPrice(int price) { Price = price; } }

2.数据操作类:   (驱动类操作数据类

    【1】驱动类   四个成员变量,一个成员方法

package com.maya.fangwen;

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

public class DBConnection {
    public static String Driver="com.mysql.jdbc.Driver";
    public static String jdbc="jdbc:mysql://127.0.0.1:3306/myab?characterEncoding=GBK";
    public static String uid="root";
    public static String pwd="";
    
    public static Connection conn() throws Exception{
        
        Class.forName(Driver);
        
        Connection conn = DriverManager.getConnection(jdbc,uid,pwd);
        
        
        return conn;
    }
}

    【2】数据操作类:一个构造函数,四种数据操作方法(增删改查)

package com.maya.fangwen;

import java.sql.*;
import java.util.*;
import com.maya.shuju.*;

public class KuCunDao {

    
    private Connection conn;
    private PreparedStatement  stat;
    private ResultSet re;
    
    //构造函数
    public KuCunDao() throws Exception{
        
        conn=DBConnection.conn();
        
    }
    
    //增加项目
    public void insert(String name ,int shuliang,String danwei,int danjia){
        try{
        String sql="insert into kc values (?,?,?,?)";
        stat=conn.prepareStatement(sql);
        stat.setString(1, name);
        stat.setInt(2, shuliang);
        stat.setString(3, danwei);
        stat.setInt(4, danjia);
        stat.executeUpdate();
        }
        catch(Exception e){
            System.out.println("添加出错");
        }
        finally{
                try {
                    conn.close();
                } 
                catch (SQLException e) {
                    e.printStackTrace();
                }
        }
    }

    //增加更改物资的数量
    public void insert(String name ,int shuliang){
        try{
        String sql="update kc set Num=Num+? where WzName=? ";
        stat=conn.prepareStatement(sql);
        stat.setInt(1, shuliang);
        stat.setString(2, name);
        stat.executeUpdate();
        }
        catch(Exception e){
            System.out.println("更改数量出错");
        }
        finally{
            try {
                conn.close();
            } 
            catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    
    //查询物资剩余数量
    public ArrayList<KuCun> select(){
        ArrayList<KuCun> list=new ArrayList<KuCun>();
        try{
        String sql="select * from kc";
        stat=conn.prepareStatement(sql);
        re=stat.executeQuery();
            
            while(re.next()){
                KuCun s=new KuCun();
                s.setWzName(re.getString(1));
                s.setNum(re.getInt(2));
                s.setUnit(re.getString(3));
                s.setPrice(re.getInt(4));
                
                list.add(s);
            }
            
        }
        catch(Exception e){
            System.out.println("查询出错了!!!");
        }
        finally{
                try {
                    
                    conn.close();
                    
                } catch (SQLException e) {
                    
                    e.printStackTrace();
                }
        }
        return list;

    }
    //查询2
    public ArrayList<KuCun> select(String mz) throws Exception{
        ArrayList<KuCun> list=new ArrayList<KuCun>();
        String sql="select * from kc where WzName=?";
        stat=conn.prepareStatement(sql);
        stat.setString(1, mz);
        re=stat.executeQuery();
        while(re.next()){
            KuCun kc=new KuCun();
            kc.setPrice(re.getInt(4));
            kc.setNum(re.getInt(2));
            kc.setUnit(re.getString(3));
            list.add(kc);
        }
        conn.close();
        return list;
        
    }
    
    
}

 

 

 

3.界面类,调用方法  

package com.maya.jiemian;

import java.sql.*;
import java.text.*;
import java.util.*;
import com.maya.fangwen.*;
import com.maya.shuju.*;


public class JieMian {

    public static void main(String[] args) throws Exception {
        Calendar shijian=Calendar.getInstance();
        SimpleDateFormat gs=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String sjzf=gs.format(shijian.getTime());
        
        
        
        Scanner sc=new Scanner(System.in);
        System.out.println("赈灾物资发放登记系统");
        System.out.println("1.物资库存维护");
        System.out.println("2物资库存列表");
        System.out.println("3物资发放");
        System.out.println("4物资发放统计");
        System.out.println("5退出系统");
        String s=sc.nextLine();
        
        if(s.equals("1")){
            System.out.println("添加项目还是添加库存?");
            String tj=sc.nextLine();
            if(tj.equals("添加项目")){
                System.out.println("请输入名称");
                String name=sc.nextLine();
                System.out.println("请输入添加数量");
                int shu=Integer.parseInt(sc.nextLine());
                System.out.println("输入单位");
                String dw=sc.nextLine();
                System.out.println("添加商品单价");
                int dj=Integer.parseInt(sc.nextLine());
                new KuCunDao().insert(name, shu,dw , dj);
                System.out.println("添加成功!!!");
                
                
            }
            else if(tj.equals("添加库存")){
                System.out.println("请输入添加物资的名称");
                String name=sc.nextLine();
                System.out.println("请输入添加物资的数量");
                int shuliang=Integer.parseInt(sc.nextLine());
                new KuCunDao().insert(name, shuliang);
                System.out.println("添加成功!!!");
                
                
            }
             main(args);
        }

        else if(s.equals("2")){
            ArrayList<KuCun> cx=new KuCunDao().select();
            System.out.println("********************************");
            System.out.println("物资名称"+"\t"+"库存数量"+"\t"+"单价(元)");
                for(int i=0; i<cx.size();i++){
                    System.out.println(cx.get(i).getWzName()+"\t"+cx.get(i).getNum()+"\t"+cx.get(i).getPrice());
                }
                System.out.println("********************************");
                main(args);
            
        }
               
        
        else if(s.equals("3")){
            
            System.out.println("物资发放");
            System.out.print("请输入发放物资");
            String mz=sc.nextLine();
            ArrayList<KuCun> ls= new KuCunDao().select(mz);
            System.out.println("当前单价"+ls.get(0).getPrice());
            System.out.println("当前库存"+ls.get(0).getNum());
            System.out.print("请输入发放数量");
            int sl=Integer.parseInt(sc.nextLine());
            System.out.print("请输入领取人的姓名");
            String xingming=sc.nextLine();
            new FaFangDao().insert(mz, sl, ls.get(0).getUnit(), ls.get(0).getPrice(), sjzf, xingming);
            new KuCunDao().insert(mz, (-sl));    
            main(args);
        }
              
        
        else if(s.equals("4")){
            ArrayList<FaFang> f=new FaFangDao().select();
            System.out.println("************************************");
            System.out.println("物资名称"+"\t"+"发放数量"+"\t"+"单价(元)"+"\t"+"接收人");
            for(int i=0;i<f.size();i++){
                System.out.println(f.get(i).getWzName()+"\t"+f.get(i).getFaNum()+"\t"+f.get(i).getFaPrice()+"\t"+f.get(i).getReceiver());
            }
            System.out.println("************************************");
            main(args);
            
        }
        else if(s.equals("5")){
            System.out.println("已退出");
        }
        else{
            System.out.println("请输入正确的数字");
            main(args);
        }
        

    }

}

 

posted @ 2017-01-10 21:28  赵天成123  阅读(419)  评论(0编辑  收藏  举报