Java之學生資訊管理系統升級版(資料庫程式設計)

sust_ly發表於2018-07-23

經過了幾天的學習後,我覺得如果僅僅使用檔案來儲存資料,不僅十分繁瑣而且資料也不安全,如果檔案丟失或者出現異常,那麼將無法挽回。這時候使用資料庫MySQL來儲存則更好。

學生類:

package Student;

public class Student {
    private String Name;
    private int StNo;
    private int StAge;
    private String Sex;
    public void SetStudent(String name,int StNo,int StAge,String sex){
        this.Name = name;
        this.StNo = StNo;
        this.StAge = StAge;
        this.Sex = sex;
    }
    public void print(){
        System.out.println("學號:"+this.StNo+" "+"姓名:"+this.Name+" "+"年齡:"+this.StAge);
    }
    public int GetNO()
    {
        return this.StNo;
    }
    public String GetName(){
        return this.Name;
        
    }
    public int GetAge(){
        return this.StAge;
    }
    public String GetSex(){
        return this.Sex;
    }
}
資料庫類:

package Student;

import java.sql.*;
import java.util.Scanner;

public class StuSql {
    public boolean idIsUsed(Connection con, int id){
        Statement stat = null;
        try {
            stat = con.createStatement();
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResultSet result = null;
        try {
            result = stat.executeQuery("select * from test");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            while (result.next())
            {    
                if(id == result.getInt("id")){
                    return true;
                }
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }
    public Connection getconnection(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            System.out.println("成功載入MySql驅動器");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            System.out.println("找不到MySql驅動器");
            e.printStackTrace();
        }
        String url="jdbc:mysql://localhost:3306/hello";   //JDBC的URL,hello為資料庫名字
        // MySQL配置時的使用者名稱
        String user = "root"; 
        // MySQL配置時的密碼
        String password = "123456";
        //呼叫DriverManager物件的getConnection()方法,獲得一個Connection物件
        Connection con = null;
        try {
            con = DriverManager.getConnection(url,user,password);
            System.out.println("成功連線到資料庫");
    }catch (SQLException e) {
        e.printStackTrace();
    }
        return con;    
    }
    public void insertStuSql(Connection con){
        Student st = new Student();
        System.out.println("請輸入學號姓名年齡和性別:");
        @SuppressWarnings("resource")
        Scanner sc = new Scanner(System.in);
        int StNo = sc.nextInt();
        String name = sc.next();
        int StAge = sc.nextInt();
        String sex = sc.next();
        st.SetStudent(name, StNo, StAge, sex);
        if (!idIsUsed(con, StNo) && StNo > 0) {
            java.sql.PreparedStatement stat = null;
            try {
                stat = con.prepareStatement("insert into test values(?, ?, ?, ?)");
            } catch (SQLException e4) {
                // TODO Auto-generated catch block
                e4.printStackTrace();
            }
            try {
                stat.setInt(1, st.GetNO());
            } catch (SQLException e3) {
                e3.printStackTrace();
            }
            try {
                stat.setString(2, st.GetName());
            } catch (SQLException e2) {
                e2.printStackTrace();
            }
            try {
                stat.setInt(3, st.GetAge());
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
            try {
                stat.setString(4, st.GetSex());
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                stat.execute();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        else{
            System.out.println("無法新增,id已使用!");
        }
    }
    public void reviseStuSql(Connection con,int StuNo)
    {
        if (idIsUsed(con, StuNo) && StuNo > 0) {
            Statement stat = null;
            try {
                stat = con.createStatement();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            String sql = "delete from test where id=" + StuNo;
            try {
                stat.executeUpdate(sql);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else{
            System.out.println("無法刪除,使用者不存在!");
        }
    }
    public void updateStuSql(Connection con,int StuNo){
        if (idIsUsed(con, StuNo) && StuNo > 0) {
            @SuppressWarnings("resource")
            Scanner sc = new Scanner(System.in);
            System.out.println("請輸入更新後的名字年齡性別:");
            String name = sc.next();
            int age = sc.nextInt();
            String sex = sc.next();
            String sql = "update test set name='" + name + "',age='"+age+"',sex='"+sex+"' where id='"
                    + StuNo + "'";
            PreparedStatement pstmt = null;
            try {
                pstmt = (PreparedStatement) con.prepareStatement(sql);
                int i = pstmt.executeUpdate();
                System.out.println("resutl: " + i);
                if (i < 1) {
                    System.out.println("使用者不存在!");
                }
                pstmt.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        else {
            System.out.println("無法更新,使用者不存在!");
        }
    }
    public void selectStuSql(Connection con){
        Statement stat = null;
        try {
            stat = con.createStatement();
        } catch (SQLException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        ResultSet result = null;
        try {
            result = stat.executeQuery("select * from test");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            System.out.println("當前資料如下:");
            while (result.next())
            {    
                System.out.println(result.getInt("id") + " " + result.getString("name") + " " + result.getInt("age")+" " + result.getString("sex"));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
展示類:

package Student;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Scanner;

public class StList {
    public void Show(){
        @SuppressWarnings("resource")
        Scanner scanner = new Scanner(System.in);
        StuSql sql = new StuSql();
        Connection con = sql.getconnection();
        int value;
        while(true){
            System.out.println("學生管理系統");
            System.out.println("請輸入相應的數字選擇功能方式:");
            System.out.println("1:增加\t2:刪除\t3:修改\t4:檢視\t5:退出");
            value = scanner.nextInt();
            switch (value) {
            case 1:
                sql.insertStuSql(con);
                break;
            case 2:
                System.out.println("請輸入要刪除的學號:");
                int index = scanner.nextInt();
                sql.reviseStuSql(con, index);
                break;
            case 3:
                System.out.println("請輸入要修改的學號!");
                int inde = scanner.nextInt();
                sql.updateStuSql(con, inde);
                break;
            case 4:
                sql.selectStuSql(con);
                break;
            case 5:
                System.out.println("程式已退出!");
                try {
                    con.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return;
            default:
                System.out.println("您的輸入有誤!");
                break;
            }
        }
    }
    public static void main(String[] args){
        StList list = new StList();
        list.Show();
    }
}
 

 

web版:https://blog.csdn.net/pycharm_u/article/details/85727570

相關文章