Java實現學生信息管理系統(使用數據庫)
Java基礎—學生信息管理系統(使用數據庫),供大傢參考,具體內容如下
前一段時間寫瞭學生信息管理系統(使用ArrayList),今天再來更新一下使用數據庫的管理系統,總體上來說要比用ArrayList簡便一些,同時輸入的數據也能存儲起來。
這次程序是在上一篇的基礎上進行修改的,所以結構上來看十分相似。
在寫程序之前,要先在MySQL上建立Student Info表。
create table Student ( ID varchar(50) primary key not null, Name varchar(30) not null, Gender char(5) not null, Age int not null, Score int not null );
1、就和上一篇博客一樣,先將學生信息進行封裝,這一步並不必要,隻是修改起來方便些。
public class Student { private String stuName; private String stuNo; private String gender; private int age; private int score; public String getStuName() { return stuName; } public void setStuName(String stuName) { this.stuName = stuName; } public String getStuNo() { return stuNo; } public void setStuNo(String stuNo) { this.stuNo = stuNo; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } }
2.新建操作類,因為這次要使用MySql數據庫,所以要使用JDBC將Java與數據庫鏈接起來。
1> 先將mysql-connector-java.jar 加入到lib庫中,之後右鍵Add path。
2> 然後在程序中要先開啟JDBC,加載驅動器,如果驅動器不存在,會拋出異常,所以需要加上try-catch
//開啟JDBC public void getDBconn(){ String url = "jdbc:mysql://localhost:3306/homework"; String user = "root"; String password = "root"; try { /**1.加載JDBC驅動器*/ Class.forName("com.mysql.jdbc.Driver"); /**2.獲取連接*/ conn = DriverManager.getConnection(url, user, password); stat = conn.createStatement(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
3>同樣,在程序結束後一定要關閉連接,防止出問題。如果關閉異常,也要拋出異常。
//關閉JDBC public void closeRs(){ try{ if(rs != null){ rs.close(); } if(stat != null){ stat.close(); } if(conn != null){ conn.close(); } }catch(Exception e){ e.printStackTrace(); } }
3.接下來就是程序的主體:增、刪、改、查四個操作部分,這部分因為筆者偷懶,所以和上一篇使用ArrayList的結構很像,但是內容有較大的修改,每一個try-catch後都加上瞭finally,無論操作是否成功都要關閉連接
//增加學生信息 public void addStu(Student stu){ String sql = "insert into studentinfo values ( '" + stu.getStuNo()+ "', '" + stu.getStuName() + "', '" + stu.getGender() + "', " + stu.getAge() + " , " + stu.getScore() + ")"; try { int affectedRows = stat.executeUpdate(sql); if(affectedRows > 0){ System.out.println("該學生信息已添加!"); }else{ System.out.println("操作有誤,請重新添加!"); append(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeRs(); } } //輸入學生信息 public void append(){ Student stu = new Student(); /** * 通過封裝方法,將學生信息賦給stus */ stu.setStuName(name()); stu.setStuNo(stuNum()); stu.setGender(gender()); stu.setAge(age()); stu.setScore(score()); //將stu中的信息增添到stus中 addStu(stu); } //得到學生姓名 public String name(){ String name; System.out.println("請輸入學生的姓名:"); name = scanner.next(); return name; } //得到學生學號 public String stuNum(){ String stuNum; System.out.println("請輸入學生的學號:"); stuNum = scanner.next(); //如果學號不為11位,則重新輸入,直到學號正確 if(stuNum.length() != 11){ System.out.println("您輸入的學號有誤!請重新輸入!"); stuNum(); } return stuNum; } //得到學生的性別 public String gender(){ String stuGender; System.out.println("請輸入學生的性別:"); stuGender = scanner.next(); if(!stuGender.equals("男") && !stuGender.equals("女") ){ System.out.println("您輸入的學生性別有誤!請重新輸入!"); gender(); } return stuGender; } //得到學生的年齡 public int age(){ int stuAge; System.out.println("請輸入學生的年齡:"); stuAge = scanner.nextInt(); if(stuAge < 0 || stuAge >= 80){ System.out.println("您輸入的年齡有誤!請重新輸入!"); age(); } return stuAge; } //得到學生的成績 public int score(){ int stuScore; System.out.println("請輸入學生的成績:"); stuScore = scanner.nextInt(); if(stuScore < 0 || stuScore > 100){ System.out.println("您輸入的成績有誤!請重新輸入!"); score(); } return stuScore; } /** * * 刪除學生信息 * * @param stuNo */ public void delStu(){ System.out.println("請輸入您想刪除的學號:"); String stuNo = scanner.next(); String sql = "delete from studentinfo where ID = '" + stuNo + "' "; try { int affectedRows = stat.executeUpdate(sql); if(affectedRows > 0){ System.out.println("該學生信息已刪除!"); }else{ System.out.println("操作有誤,請重新輸入!"); delStu(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeRs(); } } /** * 修改學生信息: * 1.姓名 * 2.學號 * 3.性別 * 4.年齡 * 5.成績 * @param stu */ public void updateStu(String stuNo){ String sql = null; information(); int choose = scanner.nextInt(); switch(choose){ case 1: System.out.println("請輸入要更新的名字:"); String Name = scanner.next(); sql = "update studentinfo set Name = '" + Name +"' where ID = '" + stuNo + "'"; break; case 2: System.out.println("請輸入要更新的性別:"); String Gender = scanner.next(); sql = "update studentinfo set Gender = '" + Gender +"' where ID = '" + stuNo + "'"; break; case 3: System.out.println("請輸入要更新的年齡:"); int Age = scanner.nextInt(); sql = "update studentinfo set Age = " + Age +" where ID = '" + stuNo + "'"; break; case 4: System.out.println("請輸入要更新的成績:"); int Score = scanner.nextInt(); sql = "update studentinfo set Score = " + Score +" where ID = '" + stuNo + "'"; break; case 0: System.exit(0); break; } try { int affectedRows = stat.executeUpdate(sql); if(affectedRows > 0){ System.out.println("該學生信息已修改!"); }else{ System.out.println("操作有誤!"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeRs(); } } public void information(){ System.out.println("請選擇您要修改的信息:"); System.out.println("1.姓名"); System.out.println("2.性別"); System.out.println("3.年齡"); System.out.println("4.成績"); System.out.println("0.退出"); System.out.println("請輸入序號:"); } /** * 根據學號查詢學生信息 * 如果存在,輸出學生信息 * @param stuNo */ public void queryStuByStuNo(String stuNo){ String sql = "select * from studentinfo where ID = '" + stuNo + "'"; try { if(stuNo.equals("0")){ sql = "select * from studentinfo"; rs = stat.executeQuery(sql); while(rs.next()){ System.out.print("學號:" + rs.getString("ID") + "\t"); System.out.print("姓名:" + rs.getString("Name") + "\t"); System.out.print("性別:" + rs.getString("Gender") + "\t"); System.out.print("年齡:" + rs.getInt("Age") + "\t"); System.out.println("成績:" + rs.getInt("Score") + "\t"); } }else{ if(rs.next()){ rs = stat.executeQuery(sql); System.out.print("學號:" + rs.getString("ID") + "\t"); System.out.print("姓名:" + rs.getString("Name") + "\t"); System.out.print("性別:" + rs.getString("Gender") + "\t"); System.out.print("年齡:" + rs.getInt("Age") + "\t"); System.out.println("成績:" + rs.getInt("Score") + "\t"); } } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeRs(); } }
4.定義操作菜單,允許用戶輸入選擇要操作的功能。
import java.util.Scanner; public class SystemService { Scanner scanner = new Scanner(System.in); StudentSystem ss = new StudentSystem(); public void serviceChoose(){ System.out.println("-----歡迎使用學生信息管理系統-----"); while(true){ ss.getDBconn(); System.out.println("1.添加學生信息"); System.out.println("2.刪除學生信息"); System.out.println("3.修改學生信息"); System.out.println("4.查詢學生信息"); System.out.println("0.退出系統"); System.out.println("請輸入序號:"); switch(scanner.nextInt()){ case 1: ss.append(); System.out.println(); break; case 2: ss.delStu(); System.out.println(); break; case 3: System.out.println("請輸入要修改的學生的學號:"); ss.updateStu(scanner.next()); System.out.println(); break; case 4: System.out.println("請輸入要查詢的學生的學號(若為0,則查詢所有學生信息):"); ss.queryStuByStuNo(scanner.next()); System.out.println(); break; case 0: System.exit(0);//退出系統 ss.closeRs(); break; } } } }
5.定義主方法,使用該系統
public class Main { public static void main(String[] args) { SystemService ss = new SystemService(); ss.serviceChoose(); } }
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。