編寫一個簡單的學生管理信息系統。
在oracle中設計一張學生表,以學號作為關鍵字。
其他學生信息有:姓名、手機號。
在進入系統時,顯示如下菜單:
**************************************************
=====歡迎進入學生管理信息系統=====
1. 新增學生
2. 修改學生
3. 刪除學生
4. 查詢學生
5. 退出系統
請選擇(1-5):
**************************************************
(1) 新增學生功能:
**************************************************
=====新增學生=====
學號:
姓名:
手機號:
保存成功!
是否繼續添加(y/n):
*************************************************
(2) 修改學生功能:
**************************************************
=====修改學生=====
請輸入要修改的學生學號:111
該學生信息如下:
學生學號:111
學生姓名:張三
學生手機號:13333333333
請輸入新的學生信息:
學生姓名:李四
學生手機號:13333333333
保存成功!
**************************************************
(3) 刪除學生功能:
**************************************************
=====刪除學生=====
請輸入要刪除的學生學號:111
該學生信息如下:
學生學號:111
學生姓名:張三
學生手機號:13333333333
是否真的刪除(y/n):y
刪除成功!
**************************************************
(4) 查詢學生功能
**************************************************
=====查詢學生=====
學生信息如下:
學號 姓名 手機號
111 張三 13333333333
222 李四 14444444444
**************************************************
編程思路:
一、定義一個學生管理類,內有增、刪、改、查4個方法。
二、在main函數中,實例化學生管理類,並根據菜單的選項分別調用4個方法。
三、使用PreparedStatement的參數賦值,示例如下:
PreparedStatementpstmt = con.prepareStatement("insert into book values(?, ?, ?)");
pstmt.setString(1, "333");
pstmt.setString(2, "王五");
pstmt.setString(3, "15555555555");
pstmt.executeUpdate();
(專業提供服務計算機畢業論文設計,點擊本傳送門)
【實現過程】
1.數據庫建stu表:

2.設計一個學生實體類(Stu.java)
package Stu;
//實體類,封裝學生類數據
/**
* @authorScatlett
*/
publicclassStu {
private String no; //學號
private String name; //姓名
private String phone; //手機號
//getter setter
public String getNo() {
returnno;
}
publicvoidsetNo(String no) {
this.no = no;
}
public String getName() {
returnname;
}
publicvoidsetName(String name) {
this.name = name;
}
public String getPhone() {
returnphone;
}
publicvoidsetPhone(String phone) {
this.phone = phone;
}
//無參構造函數
public Stu() {
super();
// TODO Auto-generated constructor stub
}
//有參構造函數
public Stu(String no, String name, String phone) {
super();
this.no = no;
this.name = name;
this.phone = phone;
}
}
3.創建封裝一個(DBUtil.java),用於連接到Oracle數據庫
package Stu;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
publicclassDBUtil {
privatestaticfinal String DRIVER_NAME = "oracle.jdbc.driver.OracleDriver";
privatestaticfinal String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
privatestaticfinal String USER = "scott";
privatestaticfinal String PASS = "tiger";
publicstatic Connection getCon() throwsClassNotFoundException,
SQLException {
Connection con = null;
Class.forName(DRIVER_NAME);
con = DriverManager.getConnection(URL, USER, PASS);
return con;
}
publicstaticvoid close(Connection con, Statement stmt, ResultSetrs) {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
4.創建一個學生管理數據訪問對象(StuDao.java)
packagestudao;
//學生管理數據訪問對象StuDao
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.util.ArrayList;
importjava.util.List;
importStu.DBUtil;
importStu.Stu;
publicclassStuDao {
private Connection con;
privatePreparedStatementpstmt;
privateResultSetrs;
//添加學生信息
publicboolean add(Stu stu) {
String sql="insert into stu(stu_no,stu_name,phone) values(?,?,?)";
try {
con=DBUtil.getCon();
pstmt=con.prepareStatement(sql);
pstmt.setString(1, stu.getNo());
pstmt.setString(2, stu.getName());
pstmt.setString(3, stu.getPhone());
pstmt.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
returnfalse;
} catch (SQLException e) {
e.printStackTrace();
returnfalse;
} finally{
DBUtil.close(con, pstmt, rs);
}
returntrue;
}
//查看學生列表(1所有)
public List<Stu> list() {
List<Stu> list=newArrayList<Stu>();//是線性列表,ArrayList是
String sql="select * from stu";
try {
con=DBUtil.getCon();
pstmt=con.prepareStatement(sql);
//pstmt.executeUpdate();//用於增刪改
rs=pstmt.executeQuery();//用於查詢
while (rs.next()) {
//Stustu=new Stu(rs.getString("stu_no"),rs.getString("stu_name"),rs.getString("phone"));
//上行寫法亦可為:
Stu stu=new Stu();
stu.setNo(rs.getString("stu_no"));//取結果集里面學號這一列的值賦給
stu.setName(rs.getString("stu_name"));
stu.setPhone(rs.getString("phone"));
list.add(stu);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBUtil.close(con, pstmt, rs);
}
return list;
}
//查看學生列表(2根據學生學號顯示學生信息)
public Stu findSomeone(String no) {
Stu stu=null;
String sql="select * from stu where stu_no=?";
try {
con=DBUtil.getCon();
pstmt=con.prepareStatement(sql);
//pstmt.executeUpdate();//用於增刪改
pstmt.setString(1,no);
rs=pstmt.executeQuery();//用於查詢
while (rs.next()) {
//Stustu=new Stu(rs.getString("stu_no"),rs.getString("stu_name"),rs.getString("phone"));
//上行寫法亦可為:
stu=new Stu();
stu.setNo(rs.getString("stu_no"));//取結果集里面學號這一列的值賦給
stu.setName(rs.getString("stu_name"));
stu.setPhone(rs.getString("phone"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally{
DBUtil.close(con, pstmt, rs);
}
returnstu;
}
//修改學生信息
publicboolean update(Stu stu) {
String sql="update stu set stu_name=?,phone=? wherestu_no=?";
try {
con=DBUtil.getCon();
pstmt=con.prepareStatement(sql);
pstmt.setString(3, stu.getNo());
pstmt.setString(1, stu.getName());
pstmt.setString(2, stu.getPhone());
pstmt.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
returnfalse;
} catch (SQLException e) {
e.printStackTrace();
returnfalse;
} finally{
DBUtil.close(con, pstmt, rs);
}
returntrue;
}
//刪除學生信息
publicboolean del(String id) {
String sql="delete from stu where stu_no=?";
try {
con=DBUtil.getCon();
pstmt=con.prepareStatement(sql);
pstmt.setString(1,id);
pstmt.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
returnfalse;
} catch (SQLException e) {
e.printStackTrace();
returnfalse;
} finally{
DBUtil.close(con, pstmt, rs);
}
returntrue;
}
}
5.學生信息管理系統的菜單選擇實現
package Stu;
//學生信息管理系統的菜單選擇
importjava.sql.Connection;
importjava.util.List;
importjava.util.Scanner;
importjavax.print.DocFlavor.INPUT_STREAM;
importorg.omg.CORBA.PUBLIC_MEMBER;
importstudao.StuDao;
publicclassStuManage {
publicvoid menu() {
//1.打印菜單
//2.輸入菜單
//3.switch菜單選擇
int choose;
do {
System.out.println("******************************");
System.out.println("=======歡迎進入學生信息管理系統=======");
System.out.println("1.新增學生");
System.out.println("2.修改學生");
System.out.println("3.刪除學生");
System.out.println("4.查詢學生");
System.out.println("5.退出該系統");
System.out.println("請選擇(1-5):");
Scanner scanner=new Scanner(System.in);
choose=scanner.nextInt();
System.out.println("******************************");
switch (choose) {
case 1:
myAdd(); //菜單選擇1,是新增學生
break;
case 2:
myUpdate(); //菜單選擇2,是修改學生
break;
case 3:
myDel(); //菜單選擇3,是刪除學生
break;
case 4:
myList(); //菜單選擇4,是查詢學生
break;
case 5: //菜單選擇5,是退出該系統
System.out.println("您選擇了退出系統,確定要退出嗎?(y/n)");
Scanner scan=new Scanner(System.in);
String scanExit=scan.next();
if(scanExit.equals("y")){
System.exit(-1);
System.out.println("您已成功退出系統,歡迎您再次使用!");
}
break;
default:
break;
}
} while (choose!=5);
}
//新增學生信息
publicvoidmyAdd() {
String continute;
do {
Scanner s=new Scanner(System.in);
String no,name,phone;
System.out.println("====新增學生====");
System.out.println("學號:");
no=s.next();
System.out.println("姓名:");
name=s.next();
System.out.println("手機號:");
phone=s.next();
Stu stu=new Stu(no,name,phone);
StuDaodao=newStuDao();
boolean ok=dao.add(stu);
if (ok) {
System.out.println("保存成功!");
}else {
System.out.println("保存失敗!");
}
System.out.println("是否繼續添加(y/n):");
Scanner scanner2=new Scanner(System.in);
continute=scanner2.next();
} while (continute.equals("y"));
}
//刪除學生信息
publicvoidmyDel(){
Scanner s=new Scanner(System.in);
String no;
System.out.println("====刪除學生====");
System.out.println("請輸入要刪除的學生學號:");
no=s.next();
System.out.println("該學生的信息如下:");
StuDaostuDao=newStuDao();
System.out.println("學生學號:"+stuDao.findSomeone(no).getNo());
System.out.println("學生姓名:"+stuDao.findSomeone(no).getName());
System.out.println("學生手機號:"+stuDao.findSomeone(no).getPhone());
System.out.println("是否真的刪除(y/n):");
Scanner scanner3=new Scanner(System.in);
String x=scanner3.next();
if (x.equals("y")) {
Stu stu=new Stu(no,null,null);
StuDaodao=newStuDao();
boolean ok=dao.del(no);
if (ok) {
System.out.println("刪除成功!");
}else {
System.out.println("刪除失敗!");
}
}
}
//修改學生信息
publicvoidmyUpdate(){
Scanner s=new Scanner(System.in);
String no;
System.out.println("====修改學生====");
System.out.println("請輸入要修改的學生學號:");
no=s.next();
System.out.println("該學生的信息如下:");
StuDaostuDao=newStuDao();
System.out.println("學生學號:"+stuDao.findSomeone(no).getNo());
System.out.println("學生姓名:"+stuDao.findSomeone(no).getName());
System.out.println("學生手機號:"+stuDao.findSomeone(no).getPhone());
System.out.println("請輸入新的學生信息:");
Scanner stuUp=new Scanner(System.in);
String name,phone;
System.out.println("學生姓名:");
name=stuUp.next();
System.out.println("學生手機號:");
phone=stuUp.next();
Stu stu=new Stu(no,name,phone);
StuDaodao=newStuDao();
boolean ok=dao.update(stu);
if (ok) {
System.out.println("保存成功!");
}else {
System.out.println("保存失敗!");
}
}
//查詢學生信息
publicvoidmyList(){
System.out.println("************************");
System.out.println("====查詢學生====");
System.out.println("該學生的信息如下:");
System.out.println("學號\t姓名\t手機號");
StuDaostuDao=newStuDao();
List<Stu> list=stuDao.list();
for (Stu stuList:list) { //循環打印出查詢結果
System.out.println(stuList.getNo()+"\t"+stuList.getName()+"\t"+stuList.getPhone());
}
System.out.println("************************");
}
}
6.最后編寫一個主函數測試類
package Stu;
//主函數測試類
publicclass Main {
/**
* @paramargs
*/
publicstaticvoid main(String[] args) {
StuManage s=newStuManage();
s.menu();
}
}
7.程序測試結果截圖:
(1) 新增學生信息

(2) 修改學生信息

(3) 刪除學生信息

(4) 查詢學生信息

