999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于JavaEE的學生成績管理系統的設計與實現

2019-03-15 13:31:28黃帥韓春霞
電腦知識與技術 2019年2期

黃帥 韓春霞

摘要:該文采用JavaEE技術,使用servlet進行邏輯控制及運用MyBatis框架進行數據庫訪問,以銅仁學院大數據學院為例,開發設計了一個學生成績管理系統,有助于教師和學生使用,適用于高校推廣應用。該文主要介紹系統的具體設計與實現。

關鍵詞:JavaEE;學生成績管理; MyBatis

中圖分類號:TP315? ? ? 文獻標識碼:A? ? ? 文章編號:1009-3044(2019)02-0053-03

1 系統概要設計

1.1總體架構

學生成績管理系統采用B/S結構、模塊化的開發方式進行開發。如圖1,整個系統由三個模塊組成,分別是公共模塊、學生模塊和管理模塊。公共模塊是整個系統的核心,在該模塊中放置著實現好的功能與工具,模塊中的service層是其它模塊使用模塊的入口,而管理模塊和學生模塊主要功能是為管理用戶和學生用戶提供一個使用平臺。這樣的設計模式可以提高開發效率,后續也十分便于維護和擴展系統。

1.2需求分析

隨著計算機技術應用的普及,越來越多的高校使用學生成績管理系統來完成學生成績的管理工作。用以前的傳統人工方式來進行學生成績的管理,工作效率不僅低下,在工作過程中也很容易造成錯誤。用JavaEE技術實現的學生成績管理系統,可以讓管理者高效地對學生信息和成績進行錄入、修改、查詢等,既大大簡化了學生成績的管理工作,同時也方便了學生們對自己成績的查詢。

1.3 模塊基本功能

公共模塊:也是核心模塊,其中Service層實現了對DAO層的調用、圖片的上傳與加載等功能,其他模塊只需調用Service層中的類就能使用該模塊的功能。

管理模塊:能夠使用專有的管理員賬號的登錄訪問,在管理頁面中可以錄入學生、課程的信息、修改學生、課程的信息,在成績修改頁修改學生成績等功能呢。

學生模塊:實現學生的登錄,學生可以通過自己賬號和密碼進行登錄查看自己的個人信息和查詢個人成績。

1.4運行環境與開發工具

IntelliJ IDEA,是由JetBrains公司推出的一款IDE(集成開發環境)。這款開發工具不管在代碼編寫、代碼分析、GUI設計方面都是超常的,使用這款工具可以大大提高開發效率。

MyBatis,是一個基于Java的持久層框架,這款框架支持定制化SQL、存儲過程、高級映射等,最主要的是這款框架可以將Java代碼與SQL語句完全分離,有利于維護。

BootStrap,是由美國Twitter公司的設計師開發的一款基于Html、Css、JavaScript的前端框架,這款框架具有簡潔、優雅、強悍等特性,使用BootStrap開發出的前端頁面簡約美觀,而且使用起來非常容易上手。

MySQL,是最流行的關系型數據庫之一,具有速度快、體積小、開源免費等特點,是開發中小型項目的最佳選擇。2? 系統的詳細設計

2.1數據表的設計

數據庫設計的好壞會影響整個開發過程和開發成果,本次設計主要包含以下幾個數據表

1)學生表:用于存儲、管理學生信息的數據表。

2)管理員表:存儲管理員的賬號和密碼等信息,用于登錄管理后臺頁面。

3)專業表:存儲專業的信息,該表是分類學生、課程和成績記錄的標識。

4)課程表:存儲課程對象的信息。

5)成績記錄表:用于存儲學生的成績、學生的學號和分數,成績管理的工作基本上是在該數據表上完成的。

2.2 E-R圖

E-R 圖包含三個要素: 實體、屬性和關系, 是用來描述某一單位、組織的概念模型,本系統設計的E-R圖如圖2所示。

3? 系統的實現

3.1 DAO層的實現及MyBatis的實現

DAO層,也稱數據訪問層,在使用整個系統的過程中幾乎都會經過DAO層,使用MyBatis實現DAO層十分方便,只需以下幾步:

1)在pom.xml中添加MyBatis 以及數據庫驅動的依賴,并編寫MyBatis的工具類,用于加載MyBatis和SqlSeesion。

mysql

mysql-connector-java

8.0.12

org.mybatis

mybatis

3.4.6

2)在資源文件夾中添加MyBatis的配置文件和屬性文件,并指明映射文件或者包的路徑。在本次開發,作者使用的是MyBatis的注解方式操作數據庫所以在配置文件中指明的是含映射關系接口類的包路徑。

3)在指明的包路徑下編寫接口類中帶注解的方法,整個DAO層準備工作基本完成。

例如

/**

* 得到所有該專業下的學生

* @param categoryId

* @return

*/

@Select("select * from student where categoryId = #{categoryId}")

List getStudentsByCategory(@Param("categoryId") Long categoryId);

(1) 在service層中使用代碼如下:

/**

* 得到該專業下的所有學生

*

* @param categoryId

* @return

*/

public List getStudentsByCategory(Long categoryId) {

SqlSession sqlSession = MyBatisUtil.getSession();? //得到sqlSession

try {

StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);

return studentMapper.getStudentsByCategory(categoryId);

} finally {

sqlSession.close(); //關閉sqlSession

}

}

3.2 用戶界面設計與實現

用戶界面是用戶與系統交互的載體,好的用戶界面既能給用戶留下深刻的印象,又能給用戶帶來更好的使用體驗。所以,用戶界面的開發也是整個項目中極其重要的一部分。

1)管理模塊所進入的主頁如圖3所示。

當管理員用戶登錄成功后所進入的主頁,該主頁主要顯示的是每個專業的板塊,當用戶點擊某一個專業的板塊就會進入該專業的主頁,在該專業主頁就可以進行查詢、修改該專業下的課程和學生。若想添加一個新專業、課程或者學生都可以在主頁中的導航欄進入相關頁面。

2)學生模塊所進入的主頁如圖4所示

學生使用自己的學號和密碼登錄學生模塊后進入該主頁,學生就可以自行查看自己的成績、個人信息。

3.3 管理模塊的設計與實現

1)添加課程

當用戶進入添加課程頁面后,如圖5所示,只需填好頁面中的各個表單項,點擊提交,負責此功能的servlet就可以通過request對象獲取表單中的各個參數,并將這些參數打包成一個課程對象,再通過調用公共模塊中service層的添加課程方法,以課程對象為參數,即可完成添加。添加完成后,系統會跳轉到該專業、年級的課程顯示區,并在數據庫學生成績表中給該專業下的所有學生添加課程記錄。

2)添加學生

添加學生需要上傳學生的照片,所以添加學生的表單具有文件上傳項,與添加課程不同,此時表單標簽的enctype屬性需要修改為enctype="multipart/form-data"。當用戶填好表單、選好上傳文件并提交到添加學生的servlet后,在servlet中就需要先從service層調用一個解析request的方法。在該方法中,使用到了ServletFileUpload類,在這個類中,使用parseRequest()方法就可以對request進行解析,解析完成后,得到方法的返回值,一個FileItem類型的集合,該集合里實際上就是表單項的值。直接使用迭代器對集合進行遍歷,在整個遍歷中,首先要考慮兩層判斷,第一層,通過isFormField()方法判斷是否為普通表單項,如果是則進入第二層判斷,如果不是,則說明該表單項為文件上傳項,直接通過FileItem對象的get()方法得到文件的字節流并給學生對象的“照片”屬性賦值(該屬性的類型為 byte[])。第二層判斷的目的是為了給學生對象除“照片”屬性外的其他屬性賦值,每一個表單項均與學生的每一個屬性一一對應,所以判斷的條件是表單項標簽中的name屬性值,遍歷完成后,就能得到一個完整的學生對象,對象的屬性值都與用戶所填的表單項一一對應,將學生對象返回給servlet,servlet拿到學生對象后就可以調用添加學生的方法,以學生對象為參數,完成添加。添加成功后會和添加課程一樣跳轉到相應頁面,并在數據庫學生成績表中添加相應記錄。添加學生頁面如圖6所示。

3)分類顯示課程或學生

當用戶點擊相應的專業模塊,就能進入到相應課程列表頁面或學學生列表頁面。在跳轉到這些頁面之前,servlet會做一系列的工作:首先會request對象能得到兩個參數,專業ID和年級,通過調用service層的查詢課程或者學生方法,以專業ID和年級參數,就能得到該專業、年級下的課程或者學生對象集合。將集合通過request傳給將要跳轉的JSP頁面。在JSP中,通過EL表達式可以很輕松地拿到這個集合對象,通過c:forEach標簽遍歷JSP拿到的集合對象就可以將每一項展示在頁面中了。

4)修改學生成績

當用戶在專業模塊的學生顯示區點擊某個學生的姓名就能進入該學生的管理頁,點擊學生成績按鈕該頁面會呈現該學生在該專業、該年級下的所有課程,點擊修改按鈕觸發js函數就能使學生成績列表變成可編輯狀態,當用戶輸入完學生的學生課程分數并進行提交,servlet就開始工作了。想完成這個功能首先需要考慮兩個問題,如何讓servlet知道用戶修改的是哪些課程的分數?如何讓用戶修改的分數與顯示的分數一一對應?首先要解決第一個問題,在用戶修改的成績表單中添加兩個隱藏的Input標簽,這兩個標簽負責向servlet傳學生的學號、年級這兩個參數,系統就能知道需要修改的是哪位同學、哪個年級下的課程,就可以先從數據庫中取出符合這個條件的成績記錄集合。解決第二個問題,首先可以在JSP頁面中的輸入成績的標簽中添加name屬性,屬性的值為成績記錄具唯一性的主鍵。在servlet中遍歷拿到的集合,在遍歷中以集合中的成績記錄對象的ID屬性(與主鍵對應)為參數,使用request的 getParameter()方法獲取用戶輸入的分數,如果能取到,說明用戶修改的是當前課程的分數,如果取不到任何值,說明沒有修改該課程,直接跳過。得到該分數后,進行分數計算,看看該成績是優秀、合格、掛科還是無效,最后將評級、分數傳給service層中的修改成績方法,以主鍵為條件,完成修改。遍歷完成后,整個頁面的成績就會如我們所想的得到一一對應的修改。最后會跳轉到已經修改好的不可編輯的學生成績頁面。補充:雖然可以跳過第一個問題,使用所有的學生成績記錄進行遍歷,但一旦學生增多、課程增多,計算量就會增大,性能就會下降。

3.4? 學生模塊的設計與實現

1)登錄問題

學生可以通過自己的學號和密碼進行登錄,完成登錄后,servlet會首先使用學生輸入的賬號在數據庫進行查找,如果查找不到,request會向登錄的頁面返回一個參數,如果頁面能接收到這個參數,就會提示用戶輸入的賬號或密碼錯誤。如果查找得到,servlet就能得到這個學生對象,通過這個學生對象的password屬性值與學生用戶輸入的密碼比較,如果相同則登錄成功,不同則返回參數。一旦登錄成功,在servlet中會在session對象的作用域中存放該學生對象、該生的所有課程成績記錄集合對象。這么做的目的有兩點:一是在學生模塊的每個JSP頁面都可以直接通過EL表達式獲取學生和成績的信息。二是如果學生用戶未登錄,想直接在地址欄中輸入地址進入某個頁面,作用在服務器中的filter會檢測這一行為,如果沒有檢測到session對象,說明學生用戶并沒有登錄成功,filter會強行使系統跳轉登錄頁。

2)顯示問題

當學生用戶在導航欄點擊“我的”,就會在該頁面看到個人信息。在這一頁面可以看到一些基本信息,以及在管理模塊中上傳的照片。顯示個人的基本信息只需要通過EL表達式獲取session作用域中的學生對象即可。顯示指定的照片需要先創建一個servlet,這個servlet只負責一件事,那就是加載我們需要的圖片。首先,直接在servlet中通過session獲取當前學生對象,這個對象實際上已經存好了我們想要的照片。在上文提到,這個“照片”其實就是一個byte[]數組,在servlet中將數組讀到輸入流,通過response對象獲取輸出流對象(ServletOutputStream),通過輸出流的寫操作將流輸出到瀏覽器中,最后,只需將負責顯示圖片的img標簽 中的src屬性修改為該servlet的映射地址,即可完成指定圖片的顯示。

當學生用戶在導航中點擊“成績”,就會按照年級來分別顯示課程的成績。在顯示所有的個人成績前,servlet通過學生的學號、年級在service層中調用相應的方法。與管理模塊的顯示方式不同,在學生模塊中成績是無法修改的,所以可以將該學生所有年級的成績全部都傳到一個JSP頁面中, 通過4次調用方法獲取4個年級不同的集合對象,通過request對象傳到成績頁,學生用戶就可以選擇點擊二級導航來決定顯示哪個年級的成績。

4 結束語

本論文主要采用JavaEE技術,設計并實現了學生成績管理系統,在文中介紹了各功能模塊的實現,即管理端:可以對學生的信息、課程的信息、學生成績信息進行編輯與修改。學生端:每個學生可以依據自己的賬戶登錄并對個人信息及個人成績信息進行查詢等。該系統的設計可以達到學生成績信息化的管理目標,方便教師與學生的使用,可以在高校推廣運用。經測試,系統運行穩定,但在前端部分,可以使用JavaScript進行多方面的優化,如添加用戶輸入判空、驗證碼、用戶提示等功能,在后續會繼續完善。

參考文獻:

[1] 郭博,舒娟,史曉鳳,等.基于 C#的學生成績管理系統的設計與實現[J]. 隴東學院學報,2018, 29(5):13-15

[2] 葉小芹,張靜.基于C語言的學生成績管理系統的設計與實現. 電腦知識與技術,2017,13(4):59-62.

[3] 田文濤,張釗,張笑冰. 基于 SSH 的學生成績信息管理系統的具體設計與實現[J]. 軟件,2018,39(2):212-217.

[4] 譚少娟. 高校學生成績管理系統設計與實現探析[J].知識經濟, 2018(3):143-144.

[5] 馬強. 學生成績管理系統的設計與實現[J].數字技術與應用,2017(10):156-158.

主站蜘蛛池模板: 看你懂的巨臀中文字幕一区二区 | Jizz国产色系免费| 四虎影视8848永久精品| 伊人久久综在合线亚洲91| 国产香蕉一区二区在线网站| 亚洲精品手机在线| 婷婷开心中文字幕| 亚洲高清资源| 人妻免费无码不卡视频| 国产9191精品免费观看| 午夜天堂视频| 九色视频线上播放| 青青草一区| 国产SUV精品一区二区| 国产欧美日韩一区二区视频在线| 久久精品国产国语对白| 伊人久久婷婷五月综合97色| 国产精品亚洲日韩AⅤ在线观看| 亚洲无码精品在线播放| 伊人成人在线视频| 色网站免费在线观看| 久久五月天综合| 亚洲高清日韩heyzo| 国产成人三级| 97se综合| 内射人妻无套中出无码| 九九热免费在线视频| 在线日韩一区二区| 91最新精品视频发布页| 亚洲精品国产自在现线最新| 欧美日韩免费观看| 尤物成AV人片在线观看| 精品人妻无码区在线视频| 亚洲精品天堂自在久久77| 国产麻豆va精品视频| 99视频在线免费看| 伊人色婷婷| 国产网站免费观看| 无码福利视频| 伊人蕉久影院| 久久精品人妻中文系列| 国产日本欧美在线观看| 无码不卡的中文字幕视频| 亚洲欧美成人在线视频| 性色生活片在线观看| 伊人色天堂| 欧美怡红院视频一区二区三区| 亚洲伊人久久精品影院| 亚洲精品中文字幕无乱码| 日韩在线欧美在线| 亚洲天堂免费在线视频| 无码专区国产精品第一页| 国产区在线观看视频| 黄色网在线| 欧美人人干| 69国产精品视频免费| 人妻无码AⅤ中文字| 亚洲天堂视频在线免费观看| 91成人免费观看在线观看| 亚洲国产中文在线二区三区免| 国产午夜在线观看视频| 爆乳熟妇一区二区三区| 久久中文无码精品| 美女国产在线| 国产日韩欧美中文| 成人亚洲国产| 国产91高清视频| 亚洲一区二区三区中文字幕5566| 国产无遮挡裸体免费视频| 中文字幕久久亚洲一区| 亚卅精品无码久久毛片乌克兰| 国产精品对白刺激| 亚洲黄色片免费看| 新SSS无码手机在线观看| 久久9966精品国产免费| 亚洲欧美精品一中文字幕| 欧美成人二区| 综合色在线| 亚洲成aⅴ人片在线影院八| 久久国产亚洲偷自| 欧美日韩国产成人高清视频| 欧美特黄一级大黄录像|