真難……
數據庫建立不會,中文編碼不會,插入數據不會,刪除不會……
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(); } } }
運行結果:


