java基于ssm的学校教务管理系统的设计与实现
學校教務管理系統的設計與實現
摘 要
學校教務管理信息化是提高辦公效率的主要途徑,隨著我國高等教育的快速發展,學校辦學規模的不斷擴大,在校學生人數不斷增多,辦學層次出現多元化,由一地辦學發展到多地多點辦學,同時進一步推行學分制。這些變化是教務管理部門的管理任務越來越繁重,不僅增加了工作量,更增加了工作難度和復雜度,按傳統的管理模式,只靠有限的工作人員已無法進行學校管理,學校教務管理信息化已成為教學管理現代化的迫切需求。通過完善管理信息化的制度,可以規范管理,保證教學效果,提高管理效率,有效地提學校教務管理工作的規范化和現代化水平,使教務管理工作走上良性循環的軌道。
經過分析,我們使用 SUN公司的JSP開發工具, 強大的MYSQL查詢語言實現建立關系數據庫,利用其提供的各種面向對象的開發工具,尤其是數據窗口這一能方便而簡潔操縱數據庫的智能化對象,首先在短時間內建立系統應用原型,然后,對初始原型系統進行需求迭代,不斷修正和改進,直到形成滿意的可行系統。設計研發了一套基于MVC的學校教務管理系統。該系統運用的開發環境是MyEclipse,使用的數據庫管理系統是Mysql,使用的JavaWeb服務器是Apache,Tomcat,運用了MVC的思想。為了迎合現在的互聯網的形勢。
學校教務管理系統采用的是B/S的結構。系統管理員具有用戶信息的管理、課程的管理、教師的管理、學生的管理等功能。本系統界面簡單直觀,易于操作和使用,交互性強。
關鍵詞:JSP,MYSQ,數據庫,學校教務管理
Design and Implementation of Community Management System
Abstract
With the continuous development and wide application of computers, people’s working efficiency has been constantly improved. The development of the Internet has shortened the distance between people. How to make full use of the Internet is a question of common concern. This article mainly introduced the realization method about the small area management system, designed and planned the small area management system webpage, carries on the management by the Internet form each kind of information.
After analysis, we use the SUN’s JSP development tools, powerful MYSQL query language to build a relational database, use of its object-oriented development tools, especially data window this can convenient and simple manipulation database intelligent objects, first of all, establish a system application prototype in a short time, then, to the initial prototype system needs iteration, constantly revised and improved, until form satisfactory feasible system. Design and develop a set of campus community management system based on MVC. The development environment used in this system is MyEclipse, the database management system used is Mysql, the JavaWeb server used is Apache, Tomcat, and the MVC idea is applied. In order to meet the current situation of the Internet.
B/S structure is adopted in the cell management system. System administrator has owner management, corridor information, room information, fare information, payment information, repair management, message management, complaints management and other functions. The system interface is simple and intuitive, easy to operate and use, interactive.
Key words: JSP MYSQL database Community management
目 錄
摘 要 I
Abstract II
第1章 項目概述 1
1.1 問題描述 1
1.2 項目目標 1
1.3 項目適用范圍 1
1.4 涉眾 1
第2章 需求分析 2
2.1 業務需求 2
2.1.1 業務流程 2
2.1.2 業務對象 2
2.2 功能性需求 3
2.3 非功能性需求 9
2.4 運行環境 9
第3章 系統設計 11
3.1 技術路線 11
3.1.1 JSP技術 11
3.1.2 B/S結構 11
3.1.3JAVA簡介 11
3.2 軟件體系結構設計 12
3.2.1 功能結構 12
3.2.2 系統架構 12
3.3 數據庫設計 13
3.3.1數據庫概念設計 13
3.3.2 表的詳細設計 15
3.4 用例實現 19
3.4.1 用戶注冊用例實現 19
3.4.2 用戶登錄用例實現 20
3.4.3 普通用戶發起活動用例實現 20
3.4.4 管理員審批活動用例實現 21
3.4.5 管理員用戶修改個人信息用例實現 21
3.4.6 管理員創建小區用例實現 22
3.5 對象設計 22
3.5.1模塊設計 22
3.5.2業務實體類的設計 23
3.5.3業務處理類的設計 23
3.5.4類的描述 24
第4章 系統實現 28
4.1核心功能實現 28
4.1.1普通用戶登錄功能的實現 28
4.1.2普通用戶發起活動功能的實現 29
4.1.3管理員用戶審批活動功能的實現 31
4.1.4普通用戶修改個人信息功能的實現 33
4.2 關鍵技術難點與解決方案 35
4.2.1 網頁部分技術難點 35
4.2.2統一網站風格 36
4.2.3云平臺站點的搭建 36
第5章 系統測試 37
5.1 功能測試 37
5.2 非功能測試 38
5.3 測試總結 39
第6章 結論與展望 46
參考文獻 47
致 謝 48
第1章 項目概述
1.1 問題描述
在學校,教務管理工作是非常重要的一項工作,它負責整個學校的日常教學安排,學生的信息管理等等。以前都是人工進行操作。隨著學校規模擴大,教務處的教務管理工作量大大加重。隨著計算機應用的發展,教務工作者急切希望能夠將大部分繁瑣的工作交由計算機的處理,已減輕人工的壓力并提高工作效率。而計算機的普及更加快了教務管理系統的產生。
上一代的教務管理系統主要為單機單用戶的系統,其數據庫主要采用Foxbase或FoxPro,系統開發環境也是數據庫內置的開發工具。其特點是單機單用戶方式,開發簡單,能充分利用數據庫的特性。其缺點是開發出的系統依賴性強,運行必須依托數據庫環境;不容易升級與擴展;無法實現數據的共享與并行操作;代碼重用性差。
隨著計算機網絡的發展,特別是校園網的建立。原有教務管理系統數據共享差的問題更加突出,而新需求的提出也越來越多,越來越頻繁。這就要求系統在可擴展性和標準化的要求更高。而原有的系統由于其與生俱來的缺點而無法在適應現有的需求了。
因此,使用現在的新技術,開發出適應新的需求的新系統的任務刻不容緩。
1.2 項目目標
學校教務管理系統旨在改善教務管理系統,提高管理效率,實現大學校園教務管理的電子化,協同化,網絡化,使教務部門能更有效地管理和監督各院系的教學、學籍、成績、課表等其他事務管理,使管理人員及時而充分地獲取自己的工作日程、通知、會議等,更好地向社會宣傳學校教務的工作成果,促進校內外交流。
《高校教務管理系統》系統是高校教學、教務管理應用軟件。熟悉教務管理工作的全部過程,從教務工作的實際出發,解決工作中關鍵性的難點問題,并充分利用計算機網絡功能,實現教務工作全過程的計算機管理,幫助具體管理人員從復雜煩瑣工作中解放出來。使得教務管理走向無紙化辦公和規范化、現代化管理。
1.3 項目適用范圍
該管理系統廣泛適用于各個高校,和學校,以及對整個學校建設和信息化管理表示關心的群體,個人,組織。
1.4 涉眾
本系統主要分兩種用戶類型。
(1)系統教師用戶:用戶登錄后,可以修改個人信息,查詢自己的課程,和添加詳細的課程,安排排課信息。
(2) 系統學生用戶:用戶登錄后,可以修改個人的信息,并且可以查詢自己的選課的成績,還可選擇自己的選修和必修課程。
(3) 系統管理員:主要通過后臺來管理本系統所有的功能,具有最高權限,可以對信息增刪改查。
第2章 需求分析
2.1 業務需求
2.1.1 業務流程
學校教務管理系統的總體業務流程如圖2.1所示。
圖2.1 總體業務流程圖
2.1.2 業務對象
通過對系統的需求分析,構造出了三個實體類,每個實體類之間的關聯。從而繪制出相應的類圖。用戶通過管理員和用戶通過ID進行區分和管理,管理員可以對學生和教師進行操作和管理。對象角色之間關系圖的領域模型如圖2.2所示。
2.2 功能性需求
2.2.1 用例概述
在圖2.3高層用例圖中抽取了滿足用戶基本業務需求的基本用例。這些用例可以從用戶登錄、課程管理、系統管理三個方面完成整個管理系統的正常運作。
圖2.3高層用例圖
用例摘要描述如表2.1所示。
表2.1用例摘要描述
用例標識(UC) 用例名稱 摘要描述
1.0 注冊 用戶進行系統注冊,申請系統的使用權
1.1 登錄 使用系統前的身份驗證
1.2 查看課程信息 用戶可以查找相關課程信息,并可以獲得包括課程名、教師、課程介紹等信息。
1.3 課程的添加 教師可以發布課程。
1.4 錄入成績 教師可以根據自己的課程錄入成績
1.5 課程審核 管理員可以對教師添加的課程進行審核。
1.6 個人資料管理 對個人密碼進行設置。
1.7 教師管理 管理員可以對教師修改添加編輯
2.0 班級管理 管理員可以對班級修改添加編輯
2.1 課程管理 管理員可以對課程修改添加編輯
2.2 排課 管理員可以對課程進行排課
2.3 查看成績 學生可以查看成績
2.2.2 用例描述
(1)登錄用例
普通用戶可以通過正確的用戶名、密碼登錄到系統。細化用例圖如圖2.4所示。
圖2.4登錄用例圖
普通用戶登錄用例描述如表2.2所示。
表2.2 登錄用例
用例標志 1.1
用例名稱 登錄
參與者 用戶
前置條件 已經在系統注冊過
后置條件 正常的顯示網站內容
用例概述 使用系統前的身份驗證
基本時間流 1.用戶在系統首頁點擊用戶登錄按鈕。
2.用戶輸入用戶名,密碼后點擊登錄按鈕。
3.系統校驗用戶名密碼。
4.跳轉到點擊用戶登錄按鈕的之前的頁面。
5.網頁顯示當前用戶名以及個人主頁。
備選時間流 4a.輸入的用戶名或密碼不匹配
(2)學生選課用例
學生可以通過教務管理系統選擇自己的課程。細化用例圖如圖2.5所示。
圖2.5 學生選課用例圖
學生選課信息用例描述如表2.3所示。
表2.3 學生選課用例
用例標志 1.5
用例名稱 學生選課
參與者 學生用戶
前置條件 已經使用學生用戶正常登錄
后置條件 選課中顯示發起的選課操作
用例概述 學生使用系統發起一個選擇課程的操作
基本時間流 1.學生用戶登錄系統。
2.學生點擊選課模塊。
3.系統跳轉到所有課程界面。
4.學生用戶選擇一個課程,點擊提交,選課成功
備選時間流 4a 選課未打鉤,點擊提交按鈕顯示,選課失敗。
(3)學生查看成績用例
學生可以通過教務管理系統來查看自己的課程成績。用例描述如表2.4所示。
表2.4 學生查看成績用例
用例標志 1.6.1
用例名稱 學生查看成績信息
參與者 學生用戶
前置條件 已使用學生用戶身份登錄
后置條件 查看成績
用例概述 學生查看成績
基本時間流 1.學生用戶登錄系統后。
2.點擊成績查詢模塊。
3.系統顯示課程成績的詳細內容。
備選時間流
(4)教師添加課程用例
教師用戶可以通過系統界面添加課程。細化用例圖,如圖2.6所示。
圖2.6教師添加課程細化用例圖
教師添加課程用例描述,如表2.5所示。
表2.5教師添加課程用例描述
用例標志 2.0.1
用例名稱 教師添加課程
參與者 教師用戶
前置條件 已經使用教師用戶登錄系統
后置條件 添加成功,活動顯示。
用例概述 教師用戶添加課程
基本時間流 1.教師用戶在后臺管理界面,點擊課程管理。
2.系統顯示全部課程列表。
3.管理員教師用戶點擊添加按鈕。
4.系統跳轉到添加頁面。
5.教師用戶填寫內容,點擊保存按鈕。
6.系統跳轉到所有課程列表界面。
備選時間流
(5)教師錄入成績用例
教師用戶可以通過系統進行課程成績的錄入。用例描述,如表2.6所示。
表2.6 教師錄入成績用例
用例標志 2.0.2
用例名稱 教師錄入成績
參與者 教師用戶
前置條件 已使用教師身份登錄
后置條件 成績錄入成功
用例概述 教師用戶錄入成績
基本時間流 1.教師用戶在系統界面,點擊學生管理。
2.系統顯示所有學生課程列表。
3.教師點擊錄入成績。
4.系統跳到錄入成績界面。
5.教師錄入成績。
6.點擊保存,錄入成績成功
備選時間流
(6)管理員排課用例
管理員用戶可以通過管理員界面安排課程信息。細化用例圖,如圖2.7所示。
圖2.7 管理員排課用例
管理員排課用例描述如表2.7所示。
表2.7 管理員排課用例
用例標志 2.3.1
用例名稱 管理員排課
參與者 管理員用戶
前置條件 已經使用管理員身份登錄
后置條件 系統顯示排課界面
用例概述 管理員安排課程信息
基本時間流 1.管理員用戶在系統后臺主界面,點擊課程管理。
2.系統顯示所有的課程信息。
3.管理員用戶選擇一個課程。
4.管理員點擊排課按鈕。
5.系統跳轉到排課界面。
6.管理員排課完成后,點擊提交,排課成功
備選時間流
2.3 非功能性需求
正確性:不允許出現業務和邏輯錯誤。
健壯性:在系統出現故障時,系統必須提供相應的數據保護措施,不能丟失數據,并提供重新恢復正常工作的機制。
性能:系統處理業務時間正常業務量的情況下不超過2秒,繁忙業務情況下最遲時間不可超過5秒。
安全性:用戶信息具有保密性,用戶信息只能由網站內部管理員使用。
兼容性:可運行在Windows7以上操作系統中。
2.4 運行環境
本系統運行環境包括硬件環境和軟件環境。
2.4.1硬件環境
CPU:Pentium4或更高
硬盤:320G或更多
內存:1G或更高(建議使用2G)
網絡類型:TCP/IP
2.4.2軟件環境
操作系統:Windows7
Web服務器: Tomcat
數據庫:MySQL
瀏覽器:IE7.0
第3章 系統設計
3.1 技術路線
學校教務管理系統在實現過程中采用了以下機種技術。前臺頁面的設計用JavaScript技術和HTML和CSS技術,通過HTML和CSS技術實現對前臺頁面的布局和界面美觀的操控,JavaScript主要是用來在前臺中動態頁面的實現,通過對菜單進行動態的操作實現對每個模板進行管理,JavaScript它主要運行于瀏覽器端。此次設計主要采用B/S模式,Eclipse,作為開發工具,Tomcat作為服務器進行,MySQL作為數據庫存儲,頁面視圖主要使用JSP技術完成,主要用了SSM三大框架完成項目。
3.1.1 JSP技術
本設計選用JSP作為開發本系統的服務器端頁面技術。使用JavaScript,EL表達式和JSTL與之配合使用,使頁面表現更加豐富,人機交互更加人性化。
JSP全名為Java Server Pages,在傳統的網頁HTML文件中加入Java程序片段和JSP標簽,就構成了JSP網頁。JSP網頁是由傳統的HTML文件中加入Java程序片段和JSP標簽組成的。Java程序用來操作數據庫,實現建立動態網頁的功能。
JavaScript是一種基于對象的,動態的客戶端腳本語言。主要目的是為了解決服務器端語言遺留的速度問題,為客戶提供更流暢的瀏覽效果。當時服務端需要對數據進行驗證,驗證步驟繁雜,浪費的時間太多。于是加入了Javascript,提供了頁面數據驗證的基本功能。
JSTL(JSP Standard Tag Library ,JSP標準標簽庫)是一個不斷完善的開放源代碼的JSP標簽庫,其中core 標記庫提供了定制操作,通過限制了作用域的變量管理數據,以及執行頁面內容的迭代和條件操作。簡化了JSP和Web應用程序的開發。
3.1.2 MySQL
MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,分為社區版和甜業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。獨立又相互關聯。
3.1.3框架技術
Spring是一個輕量級的IOC和AOP容器框架:輕量級,程序實現不是很復雜,代碼不是很多,占用資源不是很多,沒有侵入性;IOC(Inversion of Control 控制反轉):對象創建責任的反轉(重點,核心);Aop(Aspect Oriented Programming):一種面向橫切面編程的思想方式,可以進行功能性擴展。另外容器可以容納對象,并且可以控制對象的生命周期。
SpringMVC框架也是一個基于請求驅動的Web框架,并且也使用了前端控制器模式來進行設計,再根據請求映射規則分發給相應的頁面控制器(動作/處理器)進行處理。
MyBatis的前身叫iBatis,本是apache的一個開源項目, 2010年這個項目由apache software foundation 遷移到了google code,并且改名為MyBatis。MyBatis是支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plan Old Java Objects,普通的Java對象)映射成數據庫中的記錄。
3.2 軟件體系結構設計
3.2.1 功能結構
根據需求調研結果確定本系統主要包括以下功能模塊,如圖3.1所示。
圖3.1系統功能結構圖
3.2.2 系統架構
由于小區管理系統采用了MVC三層架構開發,運用SSM框架搭建系統,集成SSM框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層。其Spring主要負責業務控制的跳轉,MyBatis框架對持久層提供支持,Spring主要對MyBatis和SpringMVC進行管理,所以每層各有自己的分工。表示層為用戶提供交互操作界面,方便用戶操作,業務邏輯層主要負責關鍵業務的處理和數據的傳遞,數據訪問層負責對數據的訪問。系統架構圖如圖3.2所示。
圖3.2 系統架構圖
3.3 數據庫設計
3.3.1數據庫概念設計
本系統采用概念結構模型,首先需要創建數據庫,數據庫設計表是根據用戶的需求抽象出來的,是一種線性表。根據項目中功能結構構建各個實體,并且確立實體之間的對應關系,整個項目的所有實體的各種字段和屬性都存儲在數據庫表中,運用 ER 模型把問題轉化成現實的問題。概念模型(E-R圖)如圖3.3所示。
圖3.3 概念模型
3.3.2 表的詳細設計
通過對領域對象、業務對象及對象間關聯的分析,對本系統的數據庫表進行了設計,本系統數據庫管理采用MySQL。
(1)用戶信息表(user)
系統用戶信息表主要用于保存系統用戶的信息,主要字段包括:用戶ID、用戶名、登錄密碼、用戶類型、角色身份、性別、電話、用戶名、頭像。表結構如表3.1所示。
表3.1 用戶信息表(user)
列名 數據類型 長度 允許空 是否主鍵 說明
id int 11 否 是 用戶ID
name varchar 255 是 否 用戶名
password varchar 255 是 否 登錄密碼
usertype varchar 255 是 否 用戶類型
(2)教師信息表(teacher)
教師信息表主要用于保存教師的信息,主要字段包括:教師的ID、教師名、教師類型、教師登錄名、登錄密碼 。表結構如表3.2所示。
表3.2 教師信息表(teacher)
列名 數據類型 長度 允許空 是否主鍵 說明
id int 11 否 是 小區ID
name datetime 0 是 否 小區創建時間
usertype int 11 否 否 成員人數
loginname text 0 是 否 小區介紹
password varchar 255 是 否 小區負責人
(3)學生信息表(student)
學生信息表主要用于保存學生的基本信息,主要字段包括:學生ID、學生名、性別、學生地址、聯系方式、班級id、用戶類型、密碼、登錄名。表結構如表3.3所示。
表3.3 學生信息表(student)
列名 數據類型 長度 允許空 是否主鍵 說明
Id int 11 否 是 學生ID
name varchar 255 是 否 學生名
sex varchar 255 是 否 性別
address varchar 255 是 否 地址
tel varchar 255 是 否 聯系方式
classid varchar 255 是 否 班級id
usertype varchar 255 是 否 用戶類型
password varchar 255 是 否 密碼
loginname varchar 255 是 否 登錄名
(4)成績信息表(grade)
成績信息表主要用于學生成績信息,主要字段包括:成績ID、學生id、課程id、教師id、平均成績、最高成績、最低成績。如表3.4所示。
表3.4 成績信息表(grade)
列名 數據類型 長度 允許空 是否主鍵 說明
id int 11 否 是 成績ID
sid int 11 是 否 學生id
cid int 11 是 否 課程id
tid int 11 是 否 教師id
pgrade double 255 是 否 平均成績
kgrade double 255 是 否 最低成績
zgrade double 255 是 否 最高成績
(5)課程信息表(course)
課程信息表主要用于保存課程信息,主要字段包括:課程ID、課程名、課程類型。表結構如表3.5所示。
表3.5 課程信息表(course)
列名 數據類型 長度 允許空 是否主鍵 說明
Id int 11 否 是 課程ID
name varchar 255 是 否 課程名
type varchar 255 是 否 課程類型
(6)班級信息表(classes)
班級信息表主要用于保存班級的基本信息,主要字段包括:班級ID、班級名、班級類型、班級狀態。表結構如表3.6所示。
表3.6 班級信息表(classes)
列名 數據類型 長度 允許空 是否主鍵 說明
id int 11 否 是 班級ID
name varchar 11 否 否 班級名
type varchar 255 是 否 班級類型
status varchar 255 是 否 班級狀態
(7)排課信息表(ctc)
排課信息表主要用于保存排課的信息,主要字段包括:排課id、教師id、課程id。表結構如表3.7所示。
表3.7 排課信息表(ctc)
列名 數據類型 長度 允許空 是否主鍵 說明
couid int 11 否 是 排課ID
tid int 11 是 否 教師id
claid int 11 是 否 課程id
3.4 用例實現
本系統的功能包括注冊,教師用戶登錄,學生用戶登錄,管理員管理系統所以功能權限,教師用戶可以添加課程,排課等,管理員用戶修改個人信息,學生用戶可以選課,查看成績。
3.4.1 用戶注冊用例實現
用戶注冊用例的實現順序圖如圖3.8所示。
圖3.8用戶注冊用例順序圖
用戶在登錄主頁之后,可以點擊按鈕進入注冊頁面,來注冊自己的賬號。
3.4.2 用戶登錄用例實現
用戶登錄用例的實現順序圖如圖3.9所示。
圖3.9用戶登錄用例順序圖
用戶先登錄到首頁,然后點擊登陸按鈕,跳轉到登錄界面,然后輸入用戶名跟密碼,后臺對比用戶名密碼是否正確,最后跳轉到該用戶的主界面。
3.4.3 學生查看成績用例實現
學生用戶發起查看成績用例的實現順序圖如圖3.10所示。
圖3.10學生查看成績用例順序圖
學生用戶先登錄到自己的主界面,然后點擊查看成績模塊,界面跳轉到成績列表界面,可以查看到學生的所有課程的成績詳情。點擊查看成績,服務端將查詢到的數據,返回到前端,并返回到成績列表頁面。
3.4.4 學生選課用例實現
學生選課用例的實現順序圖如圖3.11所示。
圖3.11學生選課用例順序圖
學生用戶登錄到系統管理主頁面,然后點擊選課模塊,界面刷新,打開全部課程頁面,選擇需要的課程,然后點擊提交按鈕。后臺將特定的修改字段拿到后,更新數據庫信息。選課通過。
3.4.5 教師錄入成績用例實現
教師用戶錄入成績信息用例的實現順序圖如圖3.12所示。
圖3.12教師錄入成績用例順序圖
教師用戶點擊登錄到系統的主頁面,然后點擊學生管理,然后頁面跳轉到學生所有課程的信息界面,然后點擊錄入按鈕,最后點擊提交按鈕。后臺將特定的修改字段拿到后,更新數據庫中的信息,然后修改成功。
3.4.6 教師添加課程用例實現
教師用戶添加課程用例的實現順序圖如圖3.13所示。
圖3.13教師添加課程用例順序圖
教師用戶點擊登錄到系統的主頁面,然后點擊課程管理,點擊添加按鈕,然后頁面跳轉到填寫課程信息界面,然后填寫課程信息,最后點擊提交按鈕。后臺將特定的修改字段拿到后,更新數據庫中的信息,然后修改成功。
3.5 對象設計
3.5.1模塊設計
本系統由多模塊構成,controller模塊負責請求接入以及部分業務實體,service用來存放業務實體,mapper模塊存放調用數據庫的請求方法。各模塊間依賴關系如圖3.14所示。
圖3.14模塊依賴關系圖
3.5.2業務實體類的設計
業務實體包括學校教務管理系統系統部分業務中涉及到的獨立實體,業務實體設計及各個業務實體之間的關系如圖3.15所示。
圖3.15業務實體及實體間關系圖
3.5.3類的描述
(1)controller包中類的描述
Controller包中類的描述如表3.12所示。
表3.12 action包中類的描述
類名 屬性/方法 描述
ClassesController list() 對前端傳回來的數據進行處理
add() 將處理之后的數據匹配對應的方法,指向service層的
editSave() 用來接收前端傳來的特定參數
CourseController loadMethod() 對前端傳回來的數據進行處理
onLoad() 將處理之后的數據匹配對應的方法,指向BLL層
Excute() 用來接收前端傳來的特定參數
StudentController loadMethod() 對前端傳回來的數據進行處理
onLoad() 將處理之后的數據匹配對應的方法,指向BLL層的對應方法
TeacherController loadMethod() 對前端傳回來的數據進行處理
onLoad() 將處理之后的數據匹配對應的方法,指向BLL層的對應方法
UserController loadMethod() 對前端傳回來的數據進行處理
onLoad() 將處理之后的數據匹配對應的方法,指向BLL層的對應方法
Excute() 用來接收前端傳來的特定參數
(2)service包中類的描述
Service包中類的描述如表3.13所示。
表3.13 BLL包中類的描述
類名 屬性/方法 描述
ClassesService List getAllClasses() 得到所有班級請求處理
int getClassesCount() 得到班級數量請求處理
int update(Classes entity) 更新班級信息請求處理
Classes getStuByid(int id) 加根據學生id獲得班級請求處理
CourseService Course getCourseId(int id) 根據課程id得到課程請求處理
int insert(Course entity) 添加新的課程請求處理
int delete(int id) 根據id刪除課程請求處理
int update(Course entity) 更新課程請求處理
int getCourseCount() 得到課程數量請求處理
StudentService List getMycourses(int classid,int stuid 得到我的課程信息請求處理
Student stulogin(Student student) 學生登錄請求處理
List getStuByCid(int id) 根據學生id得到學生請求處理
TeacherService
Teacher getTeacherId(int id) 根據教師id得到教師請求處理
int insert(Teacher entity) 添加教師請求處理
int update(Teacher entity) 更新教師請求處理
List getAllTeacher() 得到所有教師請求處理
Teacher loginTea(Teacher tea) 教師登錄請求處理
int getMyStuCount(int id) 得到學生數量請求處理
UserService User userlogin(User user) 用戶登錄請求處理
User getUserDetail(Integer id) 查看用戶詳情請求處理
第4章 系統實現
4.1核心功能實現
4.1.1教師用戶添加課程功能的實現
(1)獲取數據界面
教師在主頁面點擊課程管理按鈕,然后跳轉到課程管理界面,可以對課程進行編輯,刪除和添加等操作,點擊添加按鈕,界面跳轉到添加課程詳細界面如圖4.1所示,輸入課程名稱和課程類別,實現教師用戶對課程的添加功能。
圖4.1教師用戶添加課程界面原型圖
(2)實現過程
教師用戶在輸入課程信息后,點擊保存按鈕,觸發controller,將form表單參數傳向后臺,然后利用實體類在各個層中傳遞信息,最后將實體類的信息與數據庫中的信息做對比,最后返回參數確定添加成功或者失敗。
(3)核心代碼
教師用戶添加課程核心代碼如下。
/*
* 添加
*/
@RequestMapping(“/add”)
public String add(Model model){
model.addAttribute(“entity”, new Course());
return “course/add”;
}
4.1.2教師用戶發排課功能的實現
(1)獲取數據界面
教師用戶在登錄之后,點擊課程管理模塊,跳轉到課程管理主頁面,然后點擊排課按鈕,跳轉到編排課程的界面,如圖4.2所示,輸入一些排課的基本信息,點擊保存完成排課功能的過程。
圖4.2教師用戶發起排課功能 界面原型圖
(2)實現過程
用戶在登錄系統之后,點擊發起活動,跳轉到發起活動頁面,在填寫完所有需要填寫的參數之后,點擊提交,觸發表單的form里的action將前端界面獲取到的參數以及用戶名id傳向后臺,然后利用實體類在各個層中傳遞信息,最后將實體類的信息更新到數據庫中。
(3)核心代碼
用戶發起排課功能代碼如下
p //排課
@RequestMapping(“/setTeacher/{id}”)
public String setTeacher(Model model,@PathVariable int id){
Course course=courseService.getCourseId(id);
model.addAttribute(“entity”,course);
List tlist=teacherService.getAllTeacher();
List clist=classesService.getAllClasses();
model.addAttribute(“tlist”, tlist);
model.addAttribute(“clist”, clist);
return “course/setct”;
}
/*
* 管理員安排課程,教師,和班級
* 排課功能
* */
@RequestMapping(“editSavect”)
public String editSavect(Model model,@ModelAttribute(“entity”) Course entity,RedirectAttributes redirectAttributes){
//Course course=entity;
String classid=entity.getClasses();
String[] classids=classid.split(“,”);
List ctclist=new ArrayList();
for(int i=0;i<classids.length;i++){
CtcKey c=new CtcKey();
c.setCouid(entity.getId());
c.setClaid(Integer.parseInt(classids[i]));
c.setTid(entity.getTeacher().getId());
ctclist.add?;
}
try{
courseService.insertBatch(ctclist);
}catch(Exception e){
redirectAttributes.addFlashAttribute(“msg”, “排課存在沖突,請核對后重新選!”);
}
return “redirect:/cou/list”;
}
4.1.3管理員用戶課程審核功能的實現
(1)獲取數據界面
管理員用戶在登錄之后,點擊課程管理界面中的課程審核按鈕,然后跳轉到課程管理界面列表如圖4.3所示,然后選擇需要審核的課程,點擊課程審核按鈕,系統顯示審核成功,教師和學生用戶就可以看到審核過的課程信息。
圖4.3管理員課程審核界面原型圖
(2)實現過程
管理員用戶在登錄系統之后,點擊活動管理,跳轉到活動管理頁面,然后點擊審批活動,界面跳轉出詳細的活動內容,點擊提交審批觸發表單的form里的action將前端界面獲取到的參數state以及用戶名id活動的id傳向后臺,然后利用實體類在各個層中傳遞信息,最后將實體類的信息更新到數據庫中。
(3)核心代碼
管理員課程審核功能代碼如下
@RequestMapping(“/getCouByName”)
public String getCouByName(Model model,String couName,HttpServletRequest req){
// HttpSession session=req.getSession();
// Student student=(Student) session.getAttribute(“user”);
List<Map<String,Object>> coulist=courseService.getCouByName(couName);
model.addAttribute(“coulist”, coulist);
return “student/cslist”;
// HttpSession session=req.getSession();
// Student student=(Student) session.getAttribute(“user”);
c.setId(id);
c.setShenhe(1);
courseService.setCoure?;
4.1.4學生用戶選課功能的實現
(1)獲取數據界面
普通用戶在登錄之后,點擊信息修改,然后跳轉到填寫個人信息界面如圖4.5所示,輸入需要修改的個人信息,點擊提交完成修改個人信息的過程。
圖4.5學生用戶選課功能界面原型圖
(2)實現過程
學生用戶在登錄系統之后,點擊選課按鈕,跳轉到全部課程列表界面,可以在此界面選擇合適的課程,點擊提交,觸發表單的form里的action將前端界面獲取到的個人信息參數以及用戶名seedid傳向后臺,然后利用實體類在各個層中傳遞信息,最后將實體類的信息更新到數據庫中。
(3)核心代碼
學生用戶選課功能代碼如下
/*
* 選課功能
* /
@RequestMapping(“/getXuXiu”)
public String getXuXiu(Model model,HttpServletRequest req){
HttpSession session=req.getSession();
Student student=(Student) session.getAttribute(“user”);
List clist= studentService.getXuxiu(student.getClassid());
model.addAttribute(“colist”, clist);
return “student/colist”;
}
/
* 選課提交功能
* */
@RequestMapping(value=“/semycou”,produces=“text/html;charset=utf8”)
@ResponseBody
public String semycou(@RequestParam(“cou”) String[] ct,HttpServletRequest req){
System.out.println(“String[] ct:”+ct);
HttpSession session=req.getSession();
Student student=(Student) session.getAttribute(“user”);
List sclist=new ArrayList();
for(int i=0;i<ct.length;i++){
Sc sc=new Sc();
String cteveryone=ct[i];
String[] ctarray=cteveryone.split(“_”);
sc.setCid(Integer.parseInt(ctarray[0]));
sc.setTid(Integer.parseInt(ctarray[1]));
sc.setSid(student.getId());
sclist.add(sc);
}
String msg=“”;
try{
studentService.inserBatch(sclist);
msg=“選課成功!”;
}catch(Exception e){
msg=“選課可能有重復,請審核后重試!”;
}
return msg;
}
4.2 關鍵技術難點與解決方案
難點:記錄請求日志
解決方案:項目開發需要記錄日志,也就是記錄每次請求的日志,因為Controller層全是用注解接收參數,不引入HttpRequest和HttpResponse對象。這時候遇到一個問題,前端請求的流經過apache tomcat的包裝之后不可重復讀。也就是說ServletInputStream不可重復讀。后來的解決方法就是首先重寫ServletInputStream,使其變得可讀(使用ByteArrayInputStream),然后重寫DispatcherServlet的doDispatch()方法,傳入重寫之后的流,這樣就可讀了。
第5章 系統測試
學校教務管理管理系統的測試跟隨著軟件開發的生命周期,每開發一個模塊就對該模塊進行測試用例的覆蓋,在整個系統開發完成后又進行了一次回歸測試。主要圍繞著黑盒測試的方法對本系統進行測試。
5.1 功能測試
本系統對管理員,老師和學生的操作進行了功能測試,測試設計如下所示:
(1)管理員登錄模塊功能測試
管理員登錄功能測試,對系統進行操作。測試用例設計如表5.1所示。
表5.1管理員登錄功能測試用例
用例編號 測試用例描述 操作過程及數據 預期結果 測試結果
DL001 正確填寫用戶名密碼 正確的輸入用戶名和密碼,點擊登錄 學生成績管理系統首頁 通過
DL002 不輸入用戶名和密碼 不輸入用戶名和密碼直接點擊登錄 系統不作出反應 通過
DL003 輸入用戶名,不輸入密碼 輸入用戶名,不輸入密碼,點擊登錄 系統不作出反應 通過
DL004 不輸入用戶名,輸入密碼 不輸入用戶名,輸入密碼,點擊登錄 提示用戶名或密碼不正確 通過
DL005 輸入錯誤的用戶名和密碼 輸入不存在的用戶名和任意的密碼,點擊登錄 提示用戶名或密碼不正確 通過
DL006 輸入正確的用戶名錯誤的密碼 輸入正確的用戶名錯誤的密碼,點擊登錄 提示用戶名或密碼不正確 通過
(2)管理員功能測試
管理員登錄進入功能測試包括頁面測試。測試用例設計如表5.2所示。
表5.2 管理員功能測試用例
用例編號 測試用例描述 操作過程及數據 預期結果 測試結果
SY001 點擊學生管理 點擊學生管理按鈕 出現所有學生信息列表 通過
SY002 點擊班級管理 點擊班級管理按鈕 進入對應的頁面 通過
SY003 點擊退出 點擊退出按鈕 退出系統,返回登錄頁面 通過
(4)老師登錄模塊功能測試
老師登錄功能測試包括老師登錄,對系統進行操作。測試用例設計如表5.4所示。
表5.4 老師登錄功能測試用例
用例編號 測試用例描述 操作過程及數據 預期結果 測試結果
DB001 正確填寫用戶名密碼 正確的輸入用戶名和密碼,點擊登錄 學生成績管理系統首頁 通過
DB002 不輸入用戶名和密碼 不輸入用戶名和密碼直接點擊登錄 系統不作出反應 通過
DB003 輸入用戶名,不輸入密碼 輸入用戶名,不輸入密碼,點擊登錄 系統不作出反應 通過
DB004 不輸入用戶名,輸入密碼 不輸入用戶名,輸入密碼,點擊登錄 提示用戶名或密碼不正確 通過
DB005 輸入錯誤的用戶名和密碼 輸入不存在的用戶名和任意的密碼,點擊登錄 提示用戶名或密碼不正確 通過
DB006 輸入正確的用戶名錯誤的密碼 輸入正確的用戶名錯誤的密碼,點擊登錄 提示用戶名或密碼不正確 通過
(5)老師功能測試
老師登錄進入功能測試包括頁面測試。測試用例設計如表5.5所示。
表5.5 老師功能測試用例
用例編號 測試用例描述 操作過程及數據 預期結果 測試結果
ST001 點擊老師名字 點擊老師名字 出現用戶的基本信息 通過
ST002 點擊管理菜單 點擊管理菜單的每一項 進入對應的頁面 通過
ST003 點擊退出 點擊退出按鈕 退出系統,返回登錄頁面 通過
(6)課程管理模塊功能測試
課程管理功能測試包括對課程的增刪改。測試用例設計如表5.6所示。
表5.6 課程信息管理功能測試用例
用例編號 測試用例描述 操作過程及數據 預期結果 測試結果
SP001 添加課程管理類別列表展示 1.老師登錄系統
2.點擊添加按鈕 頁面包括:題目名稱,題目選項,題目種類,答案。 通過
SP002 不填寫任何信息點擊保存 1.老師登錄系統
2.點擊添加按鈕
3.點擊保存按鈕 提示請填寫答案 通過
SP003 填寫題目名稱不填寫其他 1.老師登錄系統
2.點擊添加按鈕
3.填寫題目名稱
4.點擊保存按鈕 提示請填寫答案 通過
續表5.6 課程信息管理功能測試用例
用例編號 測試用例描述 操作過程及數據 預期結果 測試結果
SP004 填寫題目名稱和答案不填寫其他 1.老師登錄系統
2.點擊添加按鈕
3.填寫題目名稱和答案
4.點擊保存按鈕 保存成功 通過
SP005 編輯課程 1.老師登錄系統
2.點擊編輯按鈕
3.修改題目信息
4.點擊保存按鈕 保存成功 通過
SP006 刪除課程 1.老師登錄系統
2.點擊刪除按鈕
3.點擊確定 刪除成功 通過
(7)學生登錄模塊功能測試
學生登錄功能測試。測試用例設計如表5.7所示。
表5.7 學生登錄功能測試用例
用例編號 測試用例描述 操作過程及數據 預期結果 測試結果
DD001 正確填寫用戶名密碼 正確的輸入用戶名和密碼,點擊登錄 學生成績管理系統首頁 通過
DD002 不輸入用戶名和密碼 不輸入用戶名和密碼直接點擊登錄 系統不作出反應 通過
DD003 輸入用戶名,不輸入密碼 輸入用戶名,不輸入密碼,點擊登錄 系統不作出反應 通過
DD004 不輸入用戶名,輸入密碼 不輸入用戶名,輸入密碼,點擊登錄 提示用戶名或密碼不正確 通過
DD005 輸入錯誤的用戶名和密碼 輸入不存在的用戶名和任意的密碼,點擊登錄 提示用戶名或密碼不正確 通過
DD006 輸入正確的用戶名錯誤的密碼 輸入正確的用戶名錯誤的密碼,點擊登錄 提示用戶名或密碼不正確 通過
(8)學生功能測試
學生登錄進入管理系統。測試用例設計如表5.8所示。
表5.8學生功能測試用例
用例編號 測試用例描述 操作過程及數據 預期結果 測試結果
SY001 查看課表 點擊查看課表模塊 出現課表的基本信息 通過
SY002 點擊成績查詢 點擊成績查詢模塊 顯示學生選修的所有課程成績 通過
SY003 點擊退出 點擊退出按鈕 退出系統,返回登錄頁面 通過
5.2 測試總結
學校教務管理系統一共產生30個bug,通過測試發現在登錄注冊界面產生5個bug,管理員界面產生5個bug,課程界面產生4個bug,教師管理界面產生6個bug,班級管理界面產生2個bug,公告管理界面產生5個bug,修改個人界面產生3個bug,通過修改都已經處理了所有bug,并且做了回歸測試,整個系統運行的很穩定。測試結束后,在測試總結中通過按版本統計結果、按等級統計結果角度對測試情況進行了客觀的統計和分析,具體按版本統計bug的結果,如圖5.1所示。
圖5.1 按版本統計bug數
按等級統計bug的結果,如圖5.2所示。
圖5.2 按問題等級統計bug數
按類型統計bug的結果,如圖5.3所示。
圖5.3 按類型統計bug數
由上面統計圖的結果可以看出,學校教務管理系統功能測試有多出Bug,需要對功能進行修改,確保每個功能按鍵都好使,滿足項目需求。性能和可用性bug較少,基本滿足項目需要。通過多次修改后,bug逐漸減少,從而使系統更好用,性能更穩定,以后開發其他軟件的時候,要盡量避免功能上的bug讓軟件性能有所提高。
第6章 結論與展望
本系統在當今信息化時代是非常方便有效的,以前在紙上記錄學生成績的方法在當今社會是不適用的,浪費了大量的人力財力,使用大量的紙張,破壞環境,而且也容易出錯,不能隨時的查詢成績和隨地的進行模擬測試。這種傳統的管理方法必然被以計算機為基礎的信息管理系統所代替。運用該系統可以有效的方便老師同學查看成績,可以讓學生隨時的進行模擬考試并且查看成績,更好的進行復習。學生查詢考試成績也不用找到老師查看成績單,可以登錄網站進行查詢。運用學生成績管理維護系統可以減輕學院教學人員的工作量,縮小開支,提高工作效率與準確率,能夠節省時間,還能使學生更好的查看自己的成績變化。
經過三個多月的開發和設計,翻閱了大量的書籍和搜索了很多的網絡資料,基本上完成了學生成績管理系統的基本功能。本系統分為三種用戶,三種用戶各自有各自的功能,學生可以模擬考試和查詢模擬考試成績,老師可以對學生進行成績管理,題目管理和課程管理,而管理員可以進行人員管理,角色管理和系統日志的維護。根據需求對業務和用例上進行了分析,在系統設計方面對數據庫和系統的功能做了詳細的設計分析,以及系統中題目管理、角色管理、人員管理、課程管理、模擬考試等所用到的關鍵技術,在系統實現方面,以系統的核心模塊為例闡述了系統的具體實現過程。通過本文研究的內容,能夠減輕學校很大的重復性的工作,大大提高工作的效率。
但是由于畢業設計時間較短,加之本人水平所限,此系統只能初步運用JSP強大功能的小部分,界面的美觀程度并不是很高,系統的兼容性也沒有達到可以在任意瀏覽器上都可以準確呈現,以及對系統的數據保護和系統的維護未進行更好的處理,因此在設計過程中可能會有一些令人不滿意的地方,這有待于以后進一步完善和不斷的學習。
參考文獻
[1] 呂學婷. 基于Springmvc和Mybatis框架的門戶網站及其內容管理系統的設計與實現[D]. 東華理工大學, 2016.
[2] 李梟, 任維政. 基于SpringMVC的多平臺J2EE開發方式研究[J]. 吉林大學學報(信息科學版), 2017, 35(5):569-575.
[3] 張世博, 周樹杰, 閔艷. 基于Java的MVC框架結構與實現[J]. 北京石油化工學院學報, 2016, 14(01):14-17.
[4] 楊海青. 淺析計算機軟件工程管理及應用[J]. 中小企業管理與科技, 2016(2):218-218.
[5] 王東, 孫彬. 基于Ajax的MVC框架的改造分析[J]. 計算機應用, 2017, 27(b06):293-295.
[6] 李杉, 賈彥平, 達虎. Mybatis逆向工程在JavaEE中的應用[J]. 通訊世界, 2017(24):342-342.
[7] 張麗君. Java語言程序設計課程教學改革探索[J]. 中國管理信息化, 2017, 20(3):208-209.
[8] 熊慧. jQuery技術在網頁美工中的應用[J]. 中國新通信, 2018(6).
[9] 余煬, 曲毅, 孫亦樂. 基于Apache Tomcat的一站式Java應用服務器解決方案[J]. 中國金融電腦, 2018(1).
[10] Leroy X. Java Bytecode Verification: An Overview[J]. Lecture Notes in Computer Science, 2017, 2102:265-285.
致 謝
轉眼間,大學生活即將結束,回首過去四年的大學生活,真是有苦也有樂,然而更多的則是收獲,感謝母校的各位老師不但無私地傳授給我們知識,也教會了我們如何做人。管理信息系統專業的畢業設計任務繁重,但正是在這幾個月緊張而充實的設計中,我感到自己的知識得到了一次升華,我相信:我的畢業設計會給我的四年大學畫上一個圓滿的句號。
感謝學校為畢業設計提供的良好環境,此次畢業設計乃是大學生涯的最后階段,在這段時間內,我學到了很多知識,得到了許多幫助,尤其是王法勝老師對我的悉心指導,對我的整個畢業設計有著極大的幫助。我從指導老師身上學到認真負責的工作態度,嚴謹的治學精神,對我有著很大的幫助。這對于我以后的工作和學習都十分有用。感謝老師細心而又耐心的輔導。
最后,在這次畢業設計中同學也給了我很大的幫助,和同學們一起學習是十分快樂有趣的事情,感謝陪伴我四年的同學們。
總結
以上是生活随笔為你收集整理的java基于ssm的学校教务管理系统的设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。