亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實現(xiàn)學(xué)生管理系統(tǒng)詳解流程

 更新時間:2022年06月25日 10:50:56   作者:m0_60721514  
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實現(xiàn)學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

學(xué)生管理系統(tǒng)

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

項目介紹

項目分為一個JavaSwing寫的GUI桌面應(yīng)用和一個半成品的Web應(yīng)用,下圖是項目的整體功能結(jié)構(gòu)展示

JavaSwing

JavaSwing這里使用的是 MyBatis + Spring 的框架組合,后面發(fā)現(xiàn)使用 Spring 框架在 Swing 開發(fā)的程序上好像是一個錯誤。

另外,JavaSwing 版里面可能還有一些邏輯上的未知 bug。

功能展示

1、登錄模塊

2、系統(tǒng)設(shè)置模塊

3、學(xué)生管理模塊

學(xué)生添加

學(xué)生列表

4、班級管理模塊

班級添加

班級管理

5、成績管理

成績統(tǒng)計

6、網(wǎng)頁版

點擊后可以跳轉(zhuǎn)到瀏覽器的 http://localhost:8080 網(wǎng)址

使用說明

使用 IDEA 打開項目,項目的結(jié)構(gòu)如下圖:

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

遇到的問題

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

Swing 是 Java 的一個進行 GUI 開發(fā)的包,在課設(shè)中我使用 Spring 對容器進行管理,但是在使用 Spring 注解進行容器依賴注入的時候出現(xiàn)了一個問題,依賴注入為 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 注解等問題之后,我找到了網(wǎng)上的一個解釋,如下:

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

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

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

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

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

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

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

Mybatis使用HashMap作為結(jié)果集出現(xiàn)的問題

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

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

但是它顯示格式轉(zhuǎn)換錯誤,于是我在控制臺輸出了一下查詢結(jié)果,發(fā)現(xiàn)結(jié)果是這樣的

[{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屬性值對應(yīng)的是實體類的屬性,但是HashMap里面的key和vlaue并不能算屬性(是我想錯了),所以此時Mybatis就會自己設(shè)置一個屬性名,于是就變成了上面的結(jié)果。別問為啥不用xml文件的形式,當(dāng)時時間不太夠,就直接貪方便用注解了

解決方法:

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

刪除帶外鍵關(guān)聯(lián)的數(shù)據(jù)時出現(xiàn)的問題

項目中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層,一條刪除語句出現(xiàn)問題了,分析了一下原因,發(fā)現(xiàn)是設(shè)置了外鍵關(guān)聯(lián),這導(dǎo)致我們無法刪除該條數(shù)據(jù)。

解決方法:

在刪除數(shù)據(jù)前先設(shè)置外鍵無效,如下:

set foreign_key_checks = 0;

然后此時可以執(zhí)行刪除語句了

刪除完之后再設(shè)置外鍵有效,如下:

set foreign_key_checks = 1;

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

JavaWeb

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

前面說到 Web 是一個半成品,它已經(jīng)實現(xiàn)了的功能主要有登錄、退出登錄、、修改密碼、學(xué)生管理、班級管理、成績管理的成績統(tǒng)計這幾個功能模塊。另外,它用的數(shù)據(jù)庫和 JavaSwing 版用的是同一個,所以它們之前的數(shù)據(jù)其實是互通的。

總結(jié):盡管頁面丑了點,但是它可以作為一個模板繼續(xù)開發(fā)下去。

功能展示

1、登錄界面

2、學(xué)生管理

學(xué)生列表

學(xué)生添加

3、班級管理

班級列表

班級添加

4、成績統(tǒng)計

使用說明

項目結(jié)構(gòu)圖:

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

遇到的問題

使用JPA更新數(shù)據(jù)庫時遇到的問題

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

Executing an update/delete query

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

最后

項目地址如下:

Github 地址:https://github.com/guanchanglong/StudentManagementSystem-Java

到此這篇關(guān)于Java實現(xiàn)學(xué)生管理系統(tǒng)詳解流程的文章就介紹到這了,更多相關(guān)Java學(xué)生管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot實現(xiàn)快遞物流查詢功能(快遞鳥)

    SpringBoot實現(xiàn)快遞物流查詢功能(快遞鳥)

    本文將基于springboot2.4.0實現(xiàn)快遞物流查詢,物流信息的獲取通過快遞鳥第三方實現(xiàn),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-10-10
  • Javamail使用過程中常見問題解決方案

    Javamail使用過程中常見問題解決方案

    這篇文章主要介紹了Javamail使用過程中常見問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • java基礎(chǔ)知識 super和this使用解析

    java基礎(chǔ)知識 super和this使用解析

    這篇文章主要介紹了java基礎(chǔ)知識 super和this使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java中不得不知的Collection接口與Iterator迭代器

    Java中不得不知的Collection接口與Iterator迭代器

    這篇文章主要介紹了Java中的Collection接口與Iterator迭代器,文中有詳細(xì)的代碼示例供大家參考,對我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-06-06
  • JVM中的程序計數(shù)寄存器PC是什么詳解

    JVM中的程序計數(shù)寄存器PC是什么詳解

    這篇文章主要介紹了JVM中的程序計數(shù)寄存器PC原理分析,JVM中的程序計數(shù)寄存器(Program Counter Register),Register的命名源于CPU的寄存器,寄存器存儲指令相關(guān)的現(xiàn)場信息
    2021-09-09
  • 解決使用redisTemplate高并發(fā)下連接池滿的問題

    解決使用redisTemplate高并發(fā)下連接池滿的問題

    這篇文章主要介紹了解決使用redisTemplate高并發(fā)下連接池滿的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • IDEA SSM整合Redis項目實例 附源碼

    IDEA SSM整合Redis項目實例 附源碼

    今天給大家普及IDEA SSM整合Redis項目實例,包括pom.xml 配置和spring-redis.xml 配置代碼,代碼也很簡單,通過項目實際案例能更好的幫助大家理解,需要的朋友可以參考下
    2021-06-06
  • SpringBoot+Redis防止惡意刷新與暴力請求接口的實現(xiàn)

    SpringBoot+Redis防止惡意刷新與暴力請求接口的實現(xiàn)

    這篇文章主要為大家介紹了如何利用springboot和Redis來實現(xiàn)防止惡意刷新與暴力請求接口,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-06-06
  • Spring-AOP @AspectJ進階之如何綁定代理對象

    Spring-AOP @AspectJ進階之如何綁定代理對象

    這篇文章主要介紹了Spring-AOP @AspectJ進階之如何綁定代理對象的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • javaweb實戰(zhàn)之商城項目開發(fā)(一)

    javaweb實戰(zhàn)之商城項目開發(fā)(一)

    這篇文章主要針對javaweb商城項目開發(fā)進行實戰(zhàn)演習(xí),對javaweb商城項目開發(fā)進行詳細(xì)分析,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02

最新評論