本教程為大家分享了學籍管理系統的具體java代碼,供大家參考,具體內容如下
1.需求分析
1.1系統功能設計
(1)能夠查詢學生的基本信息,如:學號,姓名年齡,班級和性別
(2)能對表格中的學生信息實現增加,刪除,查找,修改等功能
(3)能將數據保存到MySQL數據庫中,記錄下來
(4)能把數據通過mysql數據庫進行數據更新
1.2系統模塊設計
學籍管理系統包括增加信息模塊,刪除信息模塊,修改信息模塊,查詢信息模塊,更新數據模塊。系統管理人員能夠查詢學生的學號,姓名,性別,年齡,所獲獎項等信息。
(具體的系統結構設計E-R圖請翻閱附錄2)
2.系統實現
本系統使用Java/JDBC語言編程的方法實現學籍管理。
用Java實現mysql數據庫,該技術主要是使用了導入JDBC.jar,使得Java程序員能夠自由調用標準數據庫訪問類和接口。
JDBC和Java結合使用,使用戶可以容易的使用sql語句實現數據庫的大部分操作,而Java的容易移植,適合于多種操作系統的特點配合JDBC使用,可以滿足用戶需求。
2.1主要布局文件
根據“一事一地原則”,進行該程序的布局,書寫了相關文檔供用戶閱讀,mysql中的數據也可以導出到“studinfo.txt”文件中,便于用戶打印或者查閱。采用的JDBC為5.0.8版本。 2.2關鍵接口段代碼及其注解
package jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class TestJDBC { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); // 建立與數據庫的Connection連接 // 數據庫所處于的ip:127.0.0.1 (本機) // 數據庫的端口號: 3306 (mysql專用端口號) // 數據庫名稱 studinfo // 編碼方式 UTF-8 // 賬號 root // 密碼 admin Connection c = DriverManager .getConnection( "jdbc:mysql://127.0.0.1:3306/studinfo?characterEncoding=UTF-8", "root", "admin"); System.out.println("連接成功,獲取連接對象: " + c); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } }}2.2 DAO接口
package jdbc;import java.util.List;import charactor.student;public interface DAO{ //增加 public void add(student stud); //修改 public void update(student stud); //刪除 public void delete(int id); //獲取 public Hero get(int id); //查詢 public List<student> list(); //分頁查詢 public List<student> list(int start, int count);}//詳細sql語句和代碼實現請查后頁附錄備注!
2.3 設計方法
采用單例化的設計模式,在分別設計增刪查改功能時,分別獨立的調用數據庫,以免后期維護軟件麻煩,本軟件將連接數據庫功能獨立的拿出來作為一個類,在后期使用的時候只需要調用即可,無需反復實現大段的數據庫連接代碼,減少代碼冗余,利于后期系統的進一步完善,以及便于其他程序員閱讀。
(下面為了老師閱讀方便,只做sql-conncet連接的單例展示!)
package util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class DBUtil { static String ip = "127.0.0.1"; static int port = 3306; static String database = "student"; static String encoding = "UTF-8"; static String loginName = "root"; static String password = "admin"; static{ try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection() throws SQLException { String url = String.format("jdbc:mysql://%s:%d/%s?characterEncoding=%s", ip, port, database, encoding); return DriverManager.getConnection(url, loginName, password); }}2.4界面展示
在界面下方通過按鈕實現增刪修改和導入功能,在下方的填選框中可鍵入學生id實現查詢功能(這里假設id為該系統唯一的主鍵,觸發回車即可)
3.系統缺陷
該系統存在很多bug,例如在導入導出數據的時候,新數據和舊數據之間的空行無法消除,新的學號插入時和舊學號可能會引起沖突,導致軟件自動關閉,總體來說還有很多進步的地方,望進一步修復。
其次就是,本次設計的軟件的實體只有一個學生,較為單一,所以實現起來不是太麻煩,只是沒有很多的余地將上課學的E-R圖等設計的實現加入考察,希望寒假可以實現學生,課程,以及老師三表之間的查詢,將這個系統進一步完善。
4.文件系統實現和數據庫實現的優劣
文件系統面向某一應用程序,共享性差,冗余度大,數據獨立性差,記錄內有結構,整體無結構,由應用程序自己控制。
數據庫系統面向現實世界,共享性高,冗余度小,具有較高的物理獨立性和一定的邏輯獨性,整體結構化,用數據模型描述,由數據庫管理系統提供數據的安全性、完整性、并發控制和恢復能力。提高了數據的共享性;降低了數據的冗余度,提高了數據的一致性;采用一定的數據模型實現數據結構化;數據由DBMS統一管理和控制,且更利于非計算機人士的操作和使用,降低了學習成本。并且隨著數據庫技術的發展和當今軟件配合使用,使得用戶都意識不到自己的軟件在使用數據庫功能。
附錄1:代碼片段中的sql語句實現增刪查改
(功能的實現較為相同,這里展示第一個update,add,delete功能就不重復展示繁瑣的代碼了,只列出關鍵代碼以供查閱)
1.更新的實現
// update 實現代碼片段public update(Student stu) { boolean result = false; if (stu == null) { return result; } try { // check if (queryBySno(stu.getSno()) == 0) { return result; } // 實現update String sql = "update student set id=?,name=?,class=?,sex=?"; String[] param = { stu.getId(), stu.getName(), stu.getClass(), stu.getSex() }; int rowCount = db.executeUpdate(sql, param); if (rowCount == 1) { result = true; } } catch (SQLException se) { se.printStackTrace(); } finally { destroy(); } return result; } 2.delete實現代碼(格式和類的建立都與1相同,更改sql語句即可)
String sql = "delete from student where id=?”; String[] param = { stu.getId()}; 3.add實現代碼
String sql = "insert into student(id,name,class,sex) values(?,?,?,?)"; String[] param = { stu.getId(), stu.getName(), stu.getClass(), stu.getSex()}; 4.查詢實現(根據id查詢)
private int queryById(String id) throws SQLException { int result = 0; if ("".equals(id) || id == null) { return result; } String checkSql = "select * from student where id=?"; String[] checkParam = { id }; rs = db.executeQuery(checkSql, checkParam); if (rs.next()) { result = 1; } return result; } } 更多學習資料請關注專題《管理系統開發》。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答