一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java實現學生管理系統詳解

Java實現學生管理系統詳解

2022-02-20 11:35小關同學喜歡吃漢堡 Java教程

這篇文章主要為大家詳細介紹了Java實現學生管理系統,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

學生管理系統(Java版)

前言:這個是大二做的課設(還是學生管理系統…),理論上雖然是4個人一組一起做的,但是,注意這個“但是”,還是我一個人承擔了所有…代碼和文檔基本都是我一個人寫的,當初直接肝得吐血,這也是為啥后面的 Web 版部分功能沒有完成的原因。

項目介紹

項目分為一個JavaSwing寫的GUI桌面應用和一個半成品的Web應用,下圖是項目的整體功能結構展示

Java實現學生管理系統詳解

JavaSwing

JavaSwing這里使用的是 MyBatis + Spring 的框架組合,后面發現使用 Spring 框架在 Swing 開發的程序上好像是一個錯誤。
另外,JavaSwing 版里面可能還有一些邏輯上的未知 bug。

功能展示(部分)

1、登錄模塊

Java實現學生管理系統詳解

2、系統設置模塊

Java實現學生管理系統詳解

3、學生管理模塊

學生添加

Java實現學生管理系統詳解

學生列表

Java實現學生管理系統詳解

4、班級管理模塊

班級添加

Java實現學生管理系統詳解

班級管理

Java實現學生管理系統詳解

5、成績管理

成績統計

Java實現學生管理系統詳解

6、網頁版

點擊后可以跳轉到瀏覽器的 http://localhost:8080 網址

Java實現學生管理系統詳解

使用說明

使用 IDEA 打開項目,項目的結構如下圖:

Java實現學生管理系統詳解

啟動項目的話就運行 view 包里面的 LoginFrm

Java實現學生管理系統詳解

遇到的問題

使用Spring進行依賴注入遇到的問題

Swing 是 Java 的一個進行 GUI 開發的包,在課設中我使用 Spring 對容器進行管理,但是在使用 Spring 注解進行容器依賴注入的時候出現了一個問題,依賴注入為 null,報錯如下:

Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException

at com.view.LoginFrm.loginAct(LoginFrm.java:187)

at com.view.LoginFrm$2.actionPerformed(LoginFrm.java:96)

在百度找了許久沒找到問題所在,排除了 Spring 配置文件寫錯、或者是沒加 @Service 注解等問題之后,我找到了網上的一個解釋,如下:

在多線程時使用 @Autowired 總是獲取不到 bean。

原因是:new thread 不在 Spring 容器中,也就無法獲得 Spring 中的 bean 對象

JavaSwing 不是線程安全的,項目中一些地方是多線程運行的,許多 UI 線程在里面并發運行,所以在這些線程里面使用 Spring 注入失敗,因為它們不是 Spring 管理的線程

而Spring在多線程的情況下是不允許使用注解注入依賴的,所以我們只能手動get到我們想要的bean對象,代碼如下:

private final ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
private final AdminService adminService = (AdminServiceImpl)context.getBean("AdminServiceImpl");

其實還可以通過配置線程池的方法管理,但是 Swing 我又不太熟,不知道它運行時有哪幾個線程。

這個問題是我當初沒想到的,如果我知道的話就不會用 Spring 在Swing 上面了…因為自己每個 view 層的類上都要手動獲取依賴,比其實跟自己使用一個單例模式獲取 MyBatis 的依賴沒啥區別,使用了 Spring 反而更麻煩了一些

Mybatis使用HashMap作為結果集出現的問題

在編寫查找指定簽到方法的時候,我使用了List<HashMap<String,String>>作為返回值,但是它卻顯示錯誤,第一次是顯示空指針錯誤,然后我配置了一下@Results結果集,如下:

@Results({
@Result(property = "key",column = "attendance_num",jdbcType = JdbcType.INTEGER),
@Result(property = "value",column = "attendance_date",jdbcType = JdbcType.VARCHAR)})

但是它顯示格式轉換錯誤,于是我在控制臺輸出了一下查詢結果,發現結果是這樣的

[{value=2018-05-17, key=1},

{value=2018-04-17, key=1},

{value=2018-04-18, key=1},

{value=2018-04-19, key=3},

{value=2018-04-20, key=1},

{value=2018-04-21, key=1},

{value=2018-05-03, key=1}]

HashMap里面的值從JSON字符串的形式變成了xxx=xxx的形式,property屬性值對應的是實體類的屬性,但是HashMap里面的key和vlaue并不能算屬性(是我想錯了),所以此時Mybatis就會自己設置一個屬性名,于是就變成了上面的結果。別問為啥不用xml文件的形式,當時時間不太夠,就直接貪方便用注解了

解決方法:

將上面的結果值重新處理一下,再賦給HashMap

刪除帶外鍵關聯的數據時出現的問題

項目中Service層報錯,如下:

Cannot delete or update a parent row: a foreign key constraint fails (`ttms`.`s_attendance`, CONSTRAINT `student_attendance_foreign` FOREIGN KEY (`student_id`) REFERENCES `s_student` (`id`)); nested exception is java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`ttms`.`s_attendance`, CONSTRAINT `student_attendance_foreign` FOREIGN KEY (`student_id`) REFERENCES `s_student` (`id`))

查看了一下錯誤信息,問題出在Dao層,一條刪除語句出現問題了,分析了一下原因,發現是設置了外鍵關聯,這導致我們無法刪除該條數據。

解決方法:

在刪除數據前先設置外鍵無效,如下:

set foreign_key_checks = 0;

然后此時可以執行刪除語句了
刪除完之后再設置外鍵有效,如下:

set foreign_key_checks = 1;

這樣就完美地刪除了這條記錄了。

JavaWeb

JavaWeb 這里使用的是 SpringBoot + Spring Data JPA 的框架組合,頁面是 Thymeleaf 進行數據展示的,頁面上有一個統計頁面使用了 ECharts 進行數據可視化。

前面說到 Web 是一個半成品,它已經實現了的功能主要有登錄、退出登錄、、修改密碼、學生管理、班級管理、成績管理的成績統計這幾個功能模塊。另外,它用的數據庫和 JavaSwing 版用的是同一個,所以它們之前的數據其實是互通的。
總結:盡管頁面丑了點,但是它可以作為一個模板繼續開發下去。

功能展示(部分)

1、登錄界面

Java實現學生管理系統詳解

2、學生管理

學生列表

Java實現學生管理系統詳解

學生添加

Java實現學生管理系統詳解

3、班級管理

班級列表

Java實現學生管理系統詳解

班級添加

Java實現學生管理系統詳解

4、成績統計

Java實現學生管理系統詳解

Java實現學生管理系統詳解

Java實現學生管理系統詳解

使用說明

項目結構圖:

Java實現學生管理系統詳解

啟動的話直接進入 DemoApplication 類里面右鍵啟動就可以了。

遇到的問題

使用JPA更新數據庫時遇到的問題

使用 Spring Data JPA 做 Web 端的持久化層的內容時,遇到了一個錯誤,如下:

Executing an update/delete query

在百度查找一番之后,發現是 JPA 如果執行 update 或 delete 等操作時,要在 Dao 或者 Service 層加上 @Transactiona l注解,代表這是一個事務級別的操作,這相當于 JPA 的一個使用規范吧,因為 JPA 要求,"沒有事務支持,不能執行更新和刪除操作"。

 

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

原文鏈接:https://blog.csdn.net/weixin_45784666/article/details/120611591

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品福利色多多 | 污到湿的爽文免费阅读 | 日本十大顶级绝伦推理片 | 国产探花视频 | 国产日韩在线 | 欧美成人tv| 国产精品亚洲精品日韩已满 | 亚洲第一色视频 | 国产日产韩产麻豆1区 | 精品国产爱久久 | 无码人妻精品一区二区蜜桃在线看 | 韩国三级在线高速影院 | 亚洲精品αv一区二区三区 亚洲精品91大神在线观看 | 日本不卡在线一区二区三区视频 | 幻女free性zoz0交 | 亚洲国产精品一区二区久久 | 国产伦精品一区二区三区女 | yy111111免费观看 | 女教师波多野结衣高清在线 | 无罩看奶禁18| 日韩手机在线观看 | 四虎永久在线精品国产 | 99热热99| 国产va欧美va在线观看 | 暖暖的免费观看高清视频韩国 | 视频免费观看在线播放高清 | 国产在线成人精品 | 天天综合天天综合 | 国产在线99| 国产一区二区精品 | 日韩精品欧美激情国产一区 | 国色天香论坛社区在线视频 | 国产一级在线免费观看 | tobu8中国在线播放免费 | 亚洲 日韩 国产 制服 在线 | 爱福利视频一区二区 | 天天干天天日天天射天天操毛片 | 99视频在线看 | 91会员| 午夜 在线播放 | 忘忧草研究院一二三 |