最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

項(xiàng)目介紹

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

JavaSwing

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

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

功能展示

1、登錄模塊

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

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

學(xué)生添加

學(xué)生列表

4、班級(jí)管理模塊

班級(jí)添加

班級(jí)管理

5、成績(jī)管理

成績(jī)統(tǒng)計(jì)

6、網(wǎng)頁(yè)版

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

使用說(shuō)明

使用 IDEA 打開(kāi)項(xiàng)目,項(xiàng)目的結(jié)構(gòu)如下圖:

啟動(dòng)項(xiàng)目的話就運(yùn)行 view 包里面的 LoginFrm

遇到的問(wèn)題

使用Spring進(jìn)行依賴(lài)注入遇到的問(wèn)題

Swing 是 Java 的一個(gè)進(jìn)行 GUI 開(kāi)發(fā)的包,在課設(shè)中我使用 Spring 對(duì)容器進(jìn)行管理,但是在使用 Spring 注解進(jìn)行容器依賴(lài)注入的時(shí)候出現(xiàn)了一個(gè)問(wèn)題,依賴(lài)注入為 null,報(bào)錯(cuò)如下:

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)

在百度找了許久沒(méi)找到問(wèn)題所在,排除了 Spring 配置文件寫(xiě)錯(cuò)、或者是沒(méi)加 @Service 注解等問(wèn)題之后,我找到了網(wǎng)上的一個(gè)解釋?zhuān)缦拢?/p>

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

原因是:new thread 不在 Spring 容器中,也就無(wú)法獲得 Spring 中的 bean 對(duì)象

JavaSwing 不是線程安全的,項(xiàng)目中一些地方是多線程運(yùn)行的,許多 UI 線程在里面并發(fā)運(yùn)行,所以在這些線程里面使用 Spring 注入失敗,因?yàn)樗鼈儾皇?Spring 管理的線程

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

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

其實(shí)還可以通過(guò)配置線程池的方法管理,但是 Swing 我又不太熟,不知道它運(yùn)行時(shí)有哪幾個(gè)線程。

這個(gè)問(wèn)題是我當(dāng)初沒(méi)想到的,如果我知道的話就不會(huì)用 Spring 在Swing 上面了…因?yàn)樽约好總€(gè) view 層的類(lèi)上都要手動(dòng)獲取依賴(lài),比其實(shí)跟自己使用一個(gè)單例模式獲取 MyBatis 的依賴(lài)沒(méi)啥區(qū)別,使用了 Spring 反而更麻煩了一些

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

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

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

但是它顯示格式轉(zhuǎn)換錯(cuò)誤,于是我在控制臺(tái)輸出了一下查詢(xú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屬性值對(duì)應(yīng)的是實(shí)體類(lèi)的屬性,但是HashMap里面的key和vlaue并不能算屬性(是我想錯(cuò)了),所以此時(shí)Mybatis就會(huì)自己設(shè)置一個(gè)屬性名,于是就變成了上面的結(jié)果。別問(wèn)為啥不用xml文件的形式,當(dāng)時(shí)時(shí)間不太夠,就直接貪方便用注解了

解決方法:

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

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

項(xiàng)目中Service層報(bào)錯(cuò),如下:

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`))

查看了一下錯(cuò)誤信息,問(wèn)題出在Dao層,一條刪除語(yǔ)句出現(xiàn)問(wèn)題了,分析了一下原因,發(fā)現(xiàn)是設(shè)置了外鍵關(guān)聯(lián),這導(dǎo)致我們無(wú)法刪除該條數(shù)據(jù)。

解決方法:

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

set foreign_key_checks = 0;

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

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

set foreign_key_checks = 1;

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

JavaWeb

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

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

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

功能展示

1、登錄界面

2、學(xué)生管理

學(xué)生列表

學(xué)生添加

3、班級(jí)管理

班級(jí)列表

班級(jí)添加

4、成績(jī)統(tǒng)計(jì)

使用說(shuō)明

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

啟動(dòng)的話直接進(jìn)入 DemoApplication 類(lèi)里面右鍵啟動(dòng)就可以了。

遇到的問(wèn)題

使用JPA更新數(shù)據(jù)庫(kù)時(shí)遇到的問(wèn)題

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

Executing an update/delete query

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

最后

項(xiàng)目地址如下:

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

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

相關(guān)文章

  • SpringMVC超詳細(xì)講解視圖和視圖解析器

    SpringMVC超詳細(xì)講解視圖和視圖解析器

    這篇文章主要介紹了springMVC中的視圖與視圖解析器,springMVC視圖的種類(lèi)很多,默認(rèn)有轉(zhuǎn)發(fā)視圖和重定向視圖,本文就每一種視圖給大家詳細(xì)介紹,需要的朋友可以參考下
    2022-06-06
  • SpringBoot項(xiàng)目的五種創(chuàng)建方式

    SpringBoot項(xiàng)目的五種創(chuàng)建方式

    這篇文章主要介紹了SpringBoot項(xiàng)目的五種創(chuàng)建方式,文中通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12
  • Redis?+?Java攔截器實(shí)現(xiàn)用戶匿名和非匿名訪問(wèn)

    Redis?+?Java攔截器實(shí)現(xiàn)用戶匿名和非匿名訪問(wèn)

    本文主要介紹了Redis?+?Java攔截器實(shí)現(xiàn)用戶匿名和非匿名訪問(wèn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 阿里巴巴 Sentinel + InfluxDB + Chronograf 實(shí)現(xiàn)監(jiān)控大屏

    阿里巴巴 Sentinel + InfluxDB + Chronograf 實(shí)現(xiàn)監(jiān)控大屏

    這篇文章主要介紹了阿里巴巴 Sentinel + InfluxDB + Chronograf 實(shí)現(xiàn)監(jiān)控大屏,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Java 詳解如何獲取網(wǎng)絡(luò)接口信息

    Java 詳解如何獲取網(wǎng)絡(luò)接口信息

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)踐中才能獲得能力的提升,本篇文章手把手帶你用Java獲取網(wǎng)絡(luò)接口的信息,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • Java中使用Jedis操作Redis的實(shí)現(xiàn)代碼

    Java中使用Jedis操作Redis的實(shí)現(xiàn)代碼

    本篇文章主要介紹了Java中使用Jedis操作Redis的實(shí)現(xiàn)代碼。詳細(xì)的介紹了Redis的安裝和在java中的操作,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-05-05
  • 淺談Maven鏡像更換為阿里云中央倉(cāng)庫(kù)(精)

    淺談Maven鏡像更換為阿里云中央倉(cāng)庫(kù)(精)

    本篇文章主要介紹了Maven鏡像更換為阿里云中央倉(cāng)庫(kù)(精),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • springMVC向Controller傳值出現(xiàn)中文亂碼的解決方案

    springMVC向Controller傳值出現(xiàn)中文亂碼的解決方案

    這篇文章主要介紹了springMVC向Controller傳值出現(xiàn)中文亂碼的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • spring security4 添加驗(yàn)證碼的示例代碼

    spring security4 添加驗(yàn)證碼的示例代碼

    本篇文章主要介紹了spring security4 添加驗(yàn)證碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Java字符串拼接詳解

    Java字符串拼接詳解

    大家好,本篇文章主要講的是Java字符串拼接詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02

最新評(píng)論

青阳县| 林周县| 海伦市| 张家川| 双城市| 寻甸| 巩留县| 西贡区| 榕江县| 凤阳县| 会宁县| 丹巴县| 伊春市| 榕江县| 漾濞| 南召县| 公主岭市| 肃北| 莱州市| 铜川市| 微博| 肇东市| 雅江县| 民乐县| 建德市| 亳州市| 全南县| 日土县| 克东县| 双流县| 綦江县| 美姑县| 岑巩县| 夹江县| 江口县| 宜宾市| 申扎县| 西充县| 长葛市| 茂名市| 淮阳县|