java實(shí)現(xiàn)學(xué)籍管理系統(tǒng)
本教程為大家分享了學(xué)籍管理系統(tǒng)的具體java代碼,供大家參考,具體內(nèi)容如下
1.需求分析
1.1系統(tǒng)功能設(shè)計(jì)
(1)能夠查詢學(xué)生的基本信息,如:學(xué)號,姓名年齡,班級和性別
(2)能對表格中的學(xué)生信息實(shí)現(xiàn)增加,刪除,查找,修改等功能
(3)能將數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中,記錄下來
(4)能把數(shù)據(jù)通過mysql數(shù)據(jù)庫進(jìn)行數(shù)據(jù)更新
1.2系統(tǒng)模塊設(shè)計(jì)
學(xué)籍管理系統(tǒng)包括增加信息模塊,刪除信息模塊,修改信息模塊,查詢信息模塊,更新數(shù)據(jù)模塊。系統(tǒng)管理人員能夠查詢學(xué)生的學(xué)號,姓名,性別,年齡,所獲獎項(xiàng)等信息。
(具體的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)E-R圖請翻閱附錄2)
2.系統(tǒng)實(shí)現(xiàn)
本系統(tǒng)使用Java/JDBC語言編程的方法實(shí)現(xiàn)學(xué)籍管理。
用Java實(shí)現(xiàn)mysql數(shù)據(jù)庫,該技術(shù)主要是使用了導(dǎo)入JDBC.jar,使得Java程序員能夠自由調(diào)用標(biāo)準(zhǔn)數(shù)據(jù)庫訪問類和接口。
JDBC和Java結(jié)合使用,使用戶可以容易的使用sql語句實(shí)現(xiàn)數(shù)據(jù)庫的大部分操作,而Java的容易移植,適合于多種操作系統(tǒng)的特點(diǎn)配合JDBC使用,可以滿足用戶需求。
2.1主要布局文件
根據(jù)“一事一地原則”,進(jìn)行該程序的布局,書寫了相關(guān)文檔供用戶閱讀,mysql中的數(shù)據(jù)也可以導(dǎo)出到“studinfo.txt”文件中,便于用戶打印或者查閱。采用的JDBC為5.0.8版本。 2.2關(guān)鍵接口段代碼及其注解
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"); // 建立與數(shù)據(jù)庫的Connection連接 // 數(shù)據(jù)庫所處于的ip:127.0.0.1 (本機(jī)) // 數(shù)據(jù)庫的端口號: 3306 (mysql專用端口號) // 數(shù)據(jù)庫名稱 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); }
//詳細(xì)sql語句和代碼實(shí)現(xiàn)請查后頁附錄備注!
2.3 設(shè)計(jì)方法
采用單例化的設(shè)計(jì)模式,在分別設(shè)計(jì)增刪查改功能時,分別獨(dú)立的調(diào)用數(shù)據(jù)庫,以免后期維護(hù)軟件麻煩,本軟件將連接數(shù)據(jù)庫功能獨(dú)立的拿出來作為一個類,在后期使用的時候只需要調(diào)用即可,無需反復(fù)實(shí)現(xiàn)大段的數(shù)據(jù)庫連接代碼,減少代碼冗余,利于后期系統(tǒng)的進(jìn)一步完善,以及便于其他程序員閱讀。
(下面為了老師閱讀方便,只做sql-conncet連接的單例展示?。?/p>
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界面展示
在界面下方通過按鈕實(shí)現(xiàn)增刪修改和導(dǎo)入功能,在下方的填選框中可鍵入學(xué)生id實(shí)現(xiàn)查詢功能(這里假設(shè)id為該系統(tǒng)唯一的主鍵,觸發(fā)回車即可)
3.系統(tǒng)缺陷
該系統(tǒng)存在很多bug,例如在導(dǎo)入導(dǎo)出數(shù)據(jù)的時候,新數(shù)據(jù)和舊數(shù)據(jù)之間的空行無法消除,新的學(xué)號插入時和舊學(xué)號可能會引起沖突,導(dǎo)致軟件自動關(guān)閉,總體來說還有很多進(jìn)步的地方,望進(jìn)一步修復(fù)。
其次就是,本次設(shè)計(jì)的軟件的實(shí)體只有一個學(xué)生,較為單一,所以實(shí)現(xiàn)起來不是太麻煩,只是沒有很多的余地將上課學(xué)的E-R圖等設(shè)計(jì)的實(shí)現(xiàn)加入考察,希望寒假可以實(shí)現(xiàn)學(xué)生,課程,以及老師三表之間的查詢,將這個系統(tǒng)進(jìn)一步完善。
4.文件系統(tǒng)實(shí)現(xiàn)和數(shù)據(jù)庫實(shí)現(xiàn)的優(yōu)劣
文件系統(tǒng)面向某一應(yīng)用程序,共享性差,冗余度大,數(shù)據(jù)獨(dú)立性差,記錄內(nèi)有結(jié)構(gòu),整體無結(jié)構(gòu),由應(yīng)用程序自己控制。
數(shù)據(jù)庫系統(tǒng)面向現(xiàn)實(shí)世界,共享性高,冗余度小,具有較高的物理獨(dú)立性和一定的邏輯獨(dú)性,整體結(jié)構(gòu)化,用數(shù)據(jù)模型描述,由數(shù)據(jù)庫管理系統(tǒng)提供數(shù)據(jù)的安全性、完整性、并發(fā)控制和恢復(fù)能力。提高了數(shù)據(jù)的共享性;降低了數(shù)據(jù)的冗余度,提高了數(shù)據(jù)的一致性;采用一定的數(shù)據(jù)模型實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)化;數(shù)據(jù)由DBMS統(tǒng)一管理和控制,且更利于非計(jì)算機(jī)人士的操作和使用,降低了學(xué)習(xí)成本。并且隨著數(shù)據(jù)庫技術(shù)的發(fā)展和當(dāng)今軟件配合使用,使得用戶都意識不到自己的軟件在使用數(shù)據(jù)庫功能。
附錄1:代碼片段中的sql語句實(shí)現(xiàn)增刪查改
(功能的實(shí)現(xiàn)較為相同,這里展示第一個update,add,delete功能就不重復(fù)展示繁瑣的代碼了,只列出關(guān)鍵代碼以供查閱)
1.更新的實(shí)現(xiàn)
// update 實(shí)現(xiàn)代碼片段 public update(Student stu) { boolean result = false; if (stu == null) { return result; } try { // check if (queryBySno(stu.getSno()) == 0) { return result; } // 實(shí)現(xiàn)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實(shí)現(xiàn)代碼(格式和類的建立都與1相同,更改sql語句即可)
String sql = "delete from student where id=?”; String[] param = { stu.getId()};
3.add實(shí)現(xiàn)代碼
String sql = "insert into student(id,name,class,sex) values(?,?,?,?)"; String[] param = { stu.getId(), stu.getName(), stu.getClass(), stu.getSex()};
4.查詢實(shí)現(xiàn)(根據(jù)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; } }
更多學(xué)習(xí)資料請關(guān)注專題《管理系統(tǒng)開發(fā)》。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java+mysql實(shí)現(xiàn)學(xué)籍管理系統(tǒng)
- Java超詳細(xì)教你寫一個學(xué)籍管理系統(tǒng)案例
- Java實(shí)現(xiàn)簡易學(xué)籍管理系統(tǒng)
- java實(shí)現(xiàn)簡易的學(xué)籍管理系統(tǒng)
- Java+Mysql學(xué)生管理系統(tǒng)源碼
- javaWeb實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
- Java+MySQL實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)源碼
- java學(xué)生管理系統(tǒng)界面簡單實(shí)現(xiàn)(全)
- java學(xué)生信息管理系統(tǒng)源代碼
- java基于控制臺的學(xué)生學(xué)籍管理系統(tǒng)
相關(guān)文章
SpringBoot如何讀取配置文件參數(shù)并全局使用
這篇文章主要介紹了SpringBoot如何讀取配置文件參數(shù)并全局使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12基于springboot+jwt實(shí)現(xiàn)刷新token過程解析
這篇文章主要介紹了基于springboot+jwt實(shí)現(xiàn)刷新token過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03詳解WebSocket+spring示例demo(已使用sockJs庫)
本篇文章主要介紹了WebSocket spring示例demo(已使用sockJs庫),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01Java之MyBatis的Dao方式以及Dao動態(tài)代理詳解
這篇文章主要介紹了Java之MyBatis的Dao方式以及Dao動態(tài)代理詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12springboot項(xiàng)目配置logback日志系統(tǒng)的實(shí)現(xiàn)
這篇文章主要介紹了springboot項(xiàng)目配置logback日志系統(tǒng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04jasypt對配置文件的數(shù)據(jù)加密與解密方式
這篇文章主要介紹了jasypt對配置文件的數(shù)據(jù)加密與解密方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01java數(shù)組及arrays類對數(shù)組的操作實(shí)例
下面小編就為大家?guī)硪黄猨ava數(shù)組及arrays類對數(shù)組的操作實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10