1. 程式人生 > >資料庫學生管理系統(StudentManagerSystemDB_V1.0)

資料庫學生管理系統(StudentManagerSystemDB_V1.0)

package cn.sxb.day1102;

public class Student {
	private String name;
	private int number;
	private int age;
	private int sex;//0:男  1:女
	
	public Student(){
		
	}
	public Student(String name, int number, int age, int sex) {
		this.name = name;
		this.number = number;
		this.age = age;
		this.sex = sex;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getNumber() {
		return number;
	}

	public void setNumber(int number) {
		this.number = number;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getSex() {
		return sex;
	}

	public void setSex(int sex) {
		this.sex = sex;
	}
}

package cn.sxb.day1102;

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

public class UtilDB {
	private static final String URL = "jdbc:mysql://192.168.5.17:3306/db1606";
	private static final String USER = "test";
	private static final String PASSWORD = "123321";

	/**
	 * 構造方法載入驅動
	 */
	public UtilDB() {
		try {
			Class.forName("com.mysql.jdbc.Driver");// 載入mysql驅動
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 建立連線資料庫
	 */
	public Connection getConnection() {
		Connection connect = null;
		try {
			connect = DriverManager.getConnection(URL, USER, PASSWORD);//試圖建立到給定資料庫URL的連線
			if (connect == null) {
				System.out.println("資料庫連線失敗");
			} else {
				System.out.println("資料庫連線成功");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return connect;
	}

	/**
	 * 關閉資料庫連線
	 */
	public void closeConnection(Connection connect) {
		try {
			if (connect != null)
				connect.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

package cn.sxb.day1102;

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

public class StudentDB extends UtilDB {
	public StudentDB() {

	}

	/**
	 * 建立表
	 */
	public void createTable() {
		Statement statement = null;
		Connection connect = getConnection();
		try {
			String sql = "create table  studentThree (" + "id int(11) not null auto_increment  primary key," // 主鍵
					+ "name varchar(10) not null," // 姓名
					+ "number int(4)  not null," // 學號
					+ "age int(3)," // 年齡
					+ "sex int(1)" // 性別
					+ ")";
			statement = connect.createStatement();
			statement.execute(sql);//執行給定的sql語句

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (statement != null)
					statement.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			closeConnection(connect);
		}
	}

	/**
	 * 向表中新增學生
	 */
	public void addStudent() {
		Student stu = new Student();
		Scanner scanner = new Scanner(System.in);
		System.out.println("請輸入學生姓名:");
		String s = scanner.next();
		stu.setName(s);

		System.out.println("請輸入學生學號:");
		stu.setNumber(scanner.nextInt());

		System.out.println("請輸入學生年齡:");
		stu.setAge(scanner.nextInt());

		System.out.println("請輸入學生性別:");
		stu.setSex(scanner.nextInt());
		
		Connection connect = getConnection();
		PreparedStatement ps = null;//sql語句被預編譯並存儲在PreparedStatement物件中
		String sql = "insert into studentThree(name,number,age,sex)values(?,?,?,?)";
		try {
			ps = connect.prepareStatement(sql); // 執行SQL語句
			
			ps.setString(1, stu.getName());
			ps.setInt(2, stu.getNumber());
			ps.setInt(3, stu.getAge());
			ps.setInt(4, stu.getSex());
			
			ps.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				if(ps != null)
				ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			closeConnection(connect);
		}
	}
	
	/**
	 * 顯示學生
	 */
	public void showStudent(){
		Connection connect = getConnection();
		Statement statement = null;
		try {
			statement = connect.createStatement();
			String sql = "select * from studentThree";
			ResultSet rs = statement.executeQuery(sql);//執行給定的sql語句,單個ResultSet物件
			//ResultSet表示資料庫結果集的資料表,通常通過執行查詢資料庫的語句生成。
			System.out.println("姓名\t學號\t年齡\t性別");
			while (rs.next()) {
				String name = rs.getString("name");
				int number = rs.getInt("number");
				int age =rs.getInt("age");
				int sex = rs.getInt("sex");
				System.out.println(name + "\t" + number + "\t" + age + "\t" + sex);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (statement != null)
					statement.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			closeConnection(connect);
		}
	}
	/**
	 * 查詢學生
	 */
	public void selectStudent(){
		System.out.println("請輸入查詢的學生學號");
		Scanner scanner = new Scanner(System.in);
		int num = scanner.nextInt();
		Connection connect = getConnection();
		PreparedStatement ps = null;
		try {
			String sql = "select * from studentThree where number = ?";
			ps = connect.prepareStatement(sql);
			ps.setInt(1,num);
			
			ResultSet rs = ps.executeQuery();// 返回結果集

			while (rs.next()) {
				String name = rs.getString("name");
				int number = rs.getInt("number");
				int age =rs.getInt("age");
				int sex = rs.getInt("sex");
					System.out.println("你要查詢的學生是:"+name);	
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null)
					ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			closeConnection(connect);
		}
	}
	/**
	 * 刪除學生
	 */
	public void deleteStudent(){
		System.out.println("請輸入刪除的學生學號:");
		Scanner scanner = new Scanner(System.in);
		int num = scanner.nextInt();
		Connection connect = getConnection();
		PreparedStatement ps = null;
		try {
			String sql = "delete from studentThree where number = ?";
			ps = connect.prepareStatement(sql);
			ps.setInt(1,num);
			ps.execute();
			
			System.out.println("刪除成功");	
			
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				if (ps != null)
					ps.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			closeConnection(connect);
		}
		
	}
//	public static void main(String[] args){
//		StudentDB sdb = new StudentDB();
//		sdb.createTable();
////		sdb.keyBoard();
////		sdb.addStudent(stu);
////		sdb.showStudent();
////		sdb.selectStudent();
////		sdb.deleteStudent();
//		
//	}
}

package cn.sxb.day1102;
import java.util.Scanner;
/**
 * 專案名稱: 《學生資訊管理系統》 英文:StudentManagerSystem
版本號:   V1.0
功能描術: 學生資訊管理系統具有能對學生資訊進行顯示,新增,刪除,查詢(根據學號查詢),退出功能.
要求:
 1>.建立一個學生類 Student至少包含:姓名(name)、學號(number)兩個屬性;
         在Student類中封裝操作方法:
         新增學生(addStudent)、顯示學生列表(showAllStudent)、刪除學生(deleteStudent)
         查詢學生(findStudentByNumber)、退出系統(exit)
 2>在新增,刪除學生時要求檢查該學生是否存在,如果不存在需給出提示。
 3>.通過輸入命令進行互動操作,控制檯輸出效果如下:

 =====  歡迎進入《學生資訊管理系統》! ====== 
 1 新增學生,2 顯示學生列表,3 刪除學生,4 查詢學生,5 退出
<輸入操作命令:>
1
======新增學生資訊操作=========
請輸入姓名:
小明
請輸入學號:
1001
======新增成功 ! 學生姓名是 :小明,學號是 : 1001=========
<輸入操作命令:>
2
姓名      學號
小明     1001
<輸入操作命令:>
4
======查詢學生資訊操作=========
請輸入學號:
1001
===您查詢的學生是:小明====
<輸入操作命令:>
3
======刪除學生資訊操作=========
請輸入學號:
1001
====刪除學生成功!學號是:1001的學生已從學生管理系統中刪除====
<輸入操作命令:>
5
==== 您已經退出《學生資訊管理系統》  ====
 * 
 *
 */
public class StudentTest {	
	public static void main(String[] args) {
		StudentDB sdb = new StudentDB();
		System.out.println("=====歡迎進入學生管理系統=====");
		System.out.println(" 1 新增學生,2 顯示學生列表,3 刪除學生,4 查詢學生,5 退出");
		Scanner scanner = new Scanner(System.in);
		System.out.println("=====新增學生資訊操作====="); 
		
		for(;;){
			System.out.println("<請輸入操作命令:>");
			int num =scanner.nextInt();
			switch(num){
			case 1:
				sdb.addStudent();
				break;
 		    case 2:
 		    	sdb.showStudent();
 		    	break;
 		    case 3:
 		    	sdb.deleteStudent();
 		    	break;
 		   case 4:
		    	sdb.selectStudent();
		    	break;
 		  case 5:
 			  System.out.println("你已經退出系統!");
		    	System.exit(0);
		    	break;
			default :
				break;
			}
		}
	}
}