一、開發的項目內容及要求
1、開發的項目:成績管理系統
2、項目內容和功能描述:
某高校欲開發一個成績管理系統,記錄並管理所有選修課程的學生的平時成績和考試成績,其主要功能描述如下:
(1)每門課程都有3到6個單元構成,每個單元結束后會進行一次測試,其成績作為這門課程的平時成績。課程結束后進行期末考試,其成績作為這門課程的考試成績。
(2)學生的平時成績和考試成績均由每門課程的主講教師上傳給成績管理系統。
(3)在記錄學生成績之前,系統需要驗證這些成績是否有效。首先,根據學生信息文件來確認該學生是否選修這門課程,若沒有,那么這些成績是無效的;如果他的確選修了這門 課程,再根據課程信息文件和課程單元信息文件來驗證平時成績是否與這門課程所包含的單元相對應,如果是,那么這些成績是有效的,否則無效。
(4)對於有效成績,系統將其保存在課程成績文件中。對於無效成績,系統會單獨將其保存在無效成績文件中,並將詳細情況提交給教務處。在教務處沒有給出具體處理意見之 前,系統不會處理這些成績。
(5)若一門課程的所有有效的平時成績和考試成績都已經被系統記錄,系統會發送課程完成通知給教務處,告知該門課程的成績已經齊全。教務處根據需要,請求系統生成相應的成績列表,用來提交考試委員會審查。
(6)在生成成績列表之前,系統會生成一份成績報告給主講教師,以便核對是否存在錯誤。主講教師須將核對之后的成績報告返還系統。
(7)根據主講教師核對后的成績報告,系統生成相應的成績列表,遞交考試委員會進行審查。考試委員會在審查之后,上交一份成績審查結果給系統。對於所有通過審查的成績,系統將會生成最終的成績單,並通知每個選課學生。
一、相關工具平台簡介
1、eclipse
Eclipse 是一個開放源代碼的、基於Java的可擴展開發平台。就其本身而言,它只是一個框架和一組服務,用於通過插件組件構建開發環境。幸運的是,Eclipse 附帶了一個標准的插件集,包括Java開發工具(Java Development Kit,JDK)。
Eclipse是著名的跨平台的自由集成開發環境(IDE)。最初主要用來Java語言開發,通過安裝不同的插件Eclipse可以支持不同的計算機語言,比如C++和Python等開發工具。Eclipse的本身只是一個框架平台,但是眾多插件的支持使得Eclipse擁有其他功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發商以Eclipse為框架開發自己的IDE。
2、MySQL
MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關系型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件。
MySQL是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標准化語言。MySQL 軟件采用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。
二、系統需求分析與總體設計
1、需求分析
(1)教師客戶端功能
①可以更改密碼。
②可以添加學生,並填寫學生基本信息。
③可以根據學號查詢學生基本信息及成績。
④有權限控制,每個管理員只能管理其所在學院的信息。
⑤可以添加新課程、新班級。
⑥可以控制選課的課程范圍,並可以控制選課的時間,即可以 控制選課的開始與結束。
⑦可以錄入成績,緩存成績。檢查無誤后公布成績。
(2)學生客戶端功能
①學生可以查看自己的基本信息。
②學生可以查看自己的成績。已修學分和不及格成績信息。
③學生可以進行遠程選課,並且可以查看課表。
UML用例圖
系統結構圖
四、數據庫設計
1、數據庫設計介紹
在該數據庫中課程表是記錄各學院所開設課程的基本信息,包括課程號,課程名,課程學分,所屬專業號,所屬學院號。
可選課程信息表是記錄本學期安排的課程信息,包括課程號,上課時間,講次,任課教師,還有一個用於控制選課的字段(onchosing),當該字段值為1說明該課程可選,當該字段為0時說明該課程不可選。
學生表是用來記錄學生的基本信息,包括學生的學號,姓名,性別等信息。
學生用戶表是用來記錄學生的學號和登錄密碼的。
教師用戶表是用來記錄教師的用戶名和登錄密碼的。
1、E-R圖
3、數據表
數據庫中共有九張表:
數據庫中存儲的信息如下:
班級表
學院表、專業表
課程表
學生表
學生用戶表、教師用戶表
五、系統實現
教師客戶端的功能為:
其中退出模塊為退出該系統
密碼修改模塊為修改教師的登錄密碼
新生報到模塊為填寫學生信息,增加一名新的學生
基本信息查詢模塊為輸入學生學號,查詢學生的信息
成績查詢模塊為輸入學生學生,查詢該學生的課程成績。
開課選項設置模塊為將課程表中的課加入到可選課程信息表,並且在加入時選定上課時間以及講次,並設置上課老師,提交該課程之后將該記錄加入到可選課程信息表中選課程信息表中。同時也可以從可選課程信息表中移除課程。
添加課程模塊實現往課程表中添加課程。
增加班級模塊實現向該學院的某個專業添加班級。
學生客戶端的功能為:
其中退出模塊為退出該系統。
密碼修改模塊為修改當前所登錄的學生的登錄密碼。
個人基本信息模塊為查看自己的信息。
選課模塊為在其所在學院開放選課時選課。
課表顯示模塊為顯示該學生的課表。
已修課程成績為查看該學生已經選修的課程的成績以及所修得的學分。
不及格課程成績為查看該學生的不及格課程的成績。
六、系統測試
進入系統后進入登錄界面:
當用戶輸入信息,選擇身份以后,系統會連接數據庫 對照數據庫中的學生用戶表或教師用戶表判斷用戶名 與密碼是否匹配,如果匹配,則進入相應客戶端。
進入教師客戶端:
進入學生客戶端:
學生客戶端和教師客戶端的主界面的設計左邊都是基於樹狀列表控件設計的,右邊是一個卡片布局面板的窗體,程序中先對面板和主窗體進行初始化,然后對樹的各個結點注冊監聽器,再調用相應的方法。
退出登錄:
實現為當用戶點擊退出時,顯示詢問對話框。
如果用戶選擇是的時候調用System.exit(0)退出系統
修改密碼:
需要判斷新密碼輸入是否為空,不為空則獲得該密碼,再判斷是否符合正則表達式,如果符合則判斷新密碼與確認新密碼是否相同,如果相同則在按下確認鍵后修改密碼。
新生報到:
實現向這個數據庫里添加一個新來的學生
一個教師只能向他所在的學院里面添加學生,而不能把學生添加到別的學院去。
其中班級的下拉列表的實現利用到了三個Map
一個Map中鍵是專業名,值是專業號
一個Map中鍵是班級名,值是班級號
另一個Map的鍵專業號,值是存放班級的那個Map
當用戶選擇好專業以后,可以根據第一個Map得到專業號,再用專業號得到存放班級的那個Map,最后再得到所選專業的所有班級名
基本信息查詢:
在教師端和學生端都有,所不同的是教師端可以根據學號查看所有學生的信息,而學生端只能查看自己的信息
成績查詢:
教師客戶端查詢成績 學生客戶端查詢全部成績
學生客戶端查詢不及格成績
教師端和學生端都有,所不同的是教師端可以根據學號查看所有學生的成績,而學生端只能查看自己的成績。而且學生端還有查詢不及格課程成績的功能。
教師客戶端的開課選項設置:
實現了將課程表中的課安排好上課時間以及講次,老師,然后添加到可選課程信息表里面。並且控制學生什么時候選課,選什么課,什么時候選課結束。
課程成績錄入:
由教師錄入學生成績,在檢查無誤后,按下公布該科成績單來完成數據庫的更新。
添加課程:
允許教師向自己所在學院添加課程。
增加班級:模塊允許教師向自己所在學院的任何一個專業增加班級。
允許教師向自己所在學院的任何一個專業增加班級。
學生客戶端的選課:
可以實現學生從教師允許選課的課程中選擇課程。
學生客戶端的課表顯示:
實現展示該學生所選課程的上課信息。