編寫一個簡單的學生管理信息系統。
在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) 查詢學生信息