學生成績管理系統 1.0(Java+MySql)


真難……

數據庫建立不會,中文編碼不會,插入數據不會,刪除不會……

Java讀入數據不會……數據庫連接不會……

你也好意思說自己是學計算機的啊魂淡……

我會慢慢寫2.0,3.0版的……噗……

 

src/wenr/entity/Student.java

package wenr.entity;

/**
數據庫定義

CREATE TABLE Student (
    sid CHAR(10) PRIMARY KEY,
    sname CHAR(20) NOT NULL,
    sc DOUBLE(5,2),
    sm DOUBLE(5,2),
    se DOUBLE(5,2),
    st DOUBLE(5,2)
);

*/

public class Student {
    private String id;
    private String name;
    private double scoreChinese;
    private double scoreMath;
    private double scoreEnglish;
    private double scoreTot;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getScoreChinese() {
        return scoreChinese;
    }
    public void setScoreChinese(double scoreChinese) {
        this.scoreChinese = scoreChinese;
    }
    public double getScoreMath() {
        return scoreMath;
    }
    public void setScoreMath(double scoreMath) {
        this.scoreMath = scoreMath;
    }
    public double getScoreEnglish() {
        return scoreEnglish;
    }
    public void setScoreEnglish(double scoreEnglish) {
        this.scoreEnglish = scoreEnglish;
    }
    public double getScoreTot() {
        return scoreTot;
    }
    public void setScoreTot(double scoreTot) {
        this.scoreTot = scoreTot;
    }

}

 

src/wenr/oper/Mainpage.java

package wenr.oper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

import wenr.db.DBClose;
import wenr.db.DBConnection;
import wenr.tool.InputNumber;

public class Mainpage {
    
    static Statement statement = null; 
    
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int choose = 0;
        
        statement = DBConnection.getconnection();
        
        do {
            
            System.out.println("===============================\n" + 
                                "\t學生成績管理系統\n\n" + 
                                "\t1.查詢個人信息\n" + 
                                "\t2.查詢全部信息\n" + 
                                "\t3.添加信息\n" + 
                                "\t4.刪除信息\n" +
                                "\t0.退出\n" +
                                "===============================\n");

            choose = InputNumber.SimpleInteger(0, 4);
            if (choose == 1) {
                System.out.print("輸入要查詢的學號:");
                String qid = in.next();
                String result = query(qid);
                if (result.equals("")) {
                    System.out.println("結果為空.");
                } else {
                    System.out.println(result);
                }
            } else if (choose == 2) {
                System.out.println("1.按語文成績排序\n2.按數學成績排序\n3.按英語成績排序\n4.按總成績排序\n");
                int qKind = InputNumber.SimpleInteger(1, 4);
                String result = queryAll(qKind);
                if (result.equals("")) {
                    System.out.println("結果為空.");
                } else {
                    System.out.println(result);
                }
            } else if (choose == 3) {
                add();
            } else if (choose == 4){
                delete();
            }
            
        } while (choose != 0);
        
        System.out.println("Bye~");
        
        in.close();
        
        try {
            if (statement != null)
                statement.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public static String query(String qid) {
        StringBuilder result = new StringBuilder();
        String sql = "select * from student where sid = \'" + qid + "\'";
        ResultSet resultSet = null;
        try {
            resultSet = statement.executeQuery(sql);
            if (resultSet.next()) {
                result.append("學號\t\t姓名\t語文\t數學\t英語\t 總成績");
                result.append("\n"   + resultSet.getString("sid"));
                result.append("\t" + resultSet.getString("sname"));
                result.append("\t" + resultSet.getString("sc"));
                result.append("\t" + resultSet.getString("sm"));
                result.append("\t" + resultSet.getString("se"));
                result.append("\t" + resultSet.getString("st") + "\n");                
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        DBClose.close(resultSet);
        return result.toString();
    }
    
    public static String queryAll(int qKind) {
        String sql = "select * from student order by ";
        if (qKind == 1) sql += "sc";
        if (qKind == 2) sql += "sm";
        if (qKind == 3) sql += "se";
        if (qKind == 4) sql += "st";
        StringBuilder result = new StringBuilder();
        ResultSet resultSet = null;
        try {
            resultSet = statement.executeQuery(sql);
            boolean first = true; 
            while (resultSet.next()) {
                if (first) { result.append("學號\t\t姓名\t語文\t數學\t英語\t 總成績"); first = false; }
                result.append("\n"   + resultSet.getString("sid"));
                result.append("\t" + resultSet.getString("sname"));
                result.append("\t" + resultSet.getString("sc"));
                result.append("\t" + resultSet.getString("sm"));
                result.append("\t" + resultSet.getString("se"));
                result.append("\t" + resultSet.getString("st"));                
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        DBClose.close(resultSet);
        return result.toString();
    }
    
    public static void add() {
        Scanner in = new Scanner(System.in);
        System.out.print("請輸入學號(10個數字):");
        String id = InputNumber.getId();
        System.out.print("輸入姓名:");
        String name = in.next();
        System.out.print("輸入語文成績:");
        double sChinese = InputNumber.getScore();
        System.out.print("輸入數學成績:");
        double sMath = InputNumber.getScore();
        System.out.print("輸入英語成績:");
        double sEnglish = InputNumber.getScore();
        double sTot = sChinese + sMath + sEnglish;
        String sql = "insert into student values(\'" + id + "\',\'" + name + "\', "
                + sChinese + "," + sMath + "," + sEnglish + "," + sTot + ")";
        try {
            statement.executeUpdate(sql);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public static void delete() {
        Scanner in = new Scanner(System.in);
        System.out.println("輸入要刪除的學號:");
        String qid = in.next();
        String result = query(qid);
        if ("".equals(result)) {
            System.out.println("不存在該學號.");
        } else {
            System.out.println(result);
            System.out.print("確認刪除?(1確定,0返回):");
            int choose = InputNumber.SimpleInteger(0, 1);
            if (choose == 1) {
                String sql = "delete from student where sid= \'" + qid + "\'";
                System.out.println(sql);
                try {
                    statement.executeUpdate(sql);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                System.out.println("已刪除");
            }
        }
    }

}

 

src/wenr/tool/InputNumber.java

package wenr.tool;

import java.util.Scanner;

public class InputNumber {
    public static int SimpleInteger(int low, int high) {
        Scanner in = new Scanner(System.in);
        int result = -1;
        String input = null;
        
        System.out.print("請按提示輸入單個數字:");
        
        while (true) {
            input = in.next();
            if (input.length() == 1 && Character.isDigit(input.charAt(0))){
                result = Integer.parseInt(input);
                if (result <= high && result >= low) break;
            }
            System.out.print("輸入錯誤.請按提示輸入單個數字:");
        }
        return result;
    }
    
    public static String getId() {
        Scanner in = new Scanner(System.in);
        String id = null;
        
        re:
        while (true) {
            id = in.next();
            if (id.length() == 10) {
                for (int i = 0; i < 10; i++) {
                    if (!Character.isDigit(id.charAt(i))) break;
                    if (i == 9) break re;
                }
            }
            System.out.print("輸入錯誤.請輸入學號(10個數字):");
        }
        return id;
    }
    
    public static double getScore() {
        Scanner in = new Scanner(System.in);
        String score = null;
        while (true) {
            score = in.next();
            if (score.matches("\\d+(.\\d+)?")) break;
            System.out.print("輸入成績格式不正確,請重新輸入:");
        }
        double result = 0;
        try {
            result = Double.parseDouble(score);
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return result;
    }
}

 

src/wenr/db/DBConnection.java

package wenr.db;

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

public class DBConnection {

    //MySQL JDBC驅動字符串
    public static final String DRIVER_MYSQL = "com.mysql.jdbc.Driver";    
    //數據庫Url,用來標識要連接的數據庫,其中數據庫名、用戶名、密碼是根據你自己的數據庫情況設定
    public static final String URL = "jdbc:mysql://localhost:3306/SSMS?"
            + "user=root&password=123456&useUnicode=true&characterEncoding=UTF-8";
    
    public static Statement statement;
    
    public static Statement getconnection() {
        Connection connection = null;
        
        try {
            Class.forName(DRIVER_MYSQL);     //加載JDBC驅動

            connection = DriverManager.getConnection(URL);    //創建數據庫連接對象
            statement = connection.createStatement();       //創建Statement對象
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return statement;
    }
}

 

src/wenr/db/DBClose.java

package wenr.db;

import java.sql.ResultSet;
import java.sql.SQLException;

public class DBClose {
    public static void close(ResultSet resultSet) {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

 

運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM