一.項目概述
本項目的基於現有的軟件學院信息化平台的學生選課系統進行開發,采取兩輪選課模式,即一輪不設人數上限並隨機抽簽進行篩選,第二輪對剩余未選滿的課程進行搶課的方式從而達到學生選課的目的。對於本項目主要用戶有三類,一為科大軟院的學生,其主要有選課需求、信息查詢需求、基本信息的登記與修改需求等,二為參與授課的老師,其主要需求有課程設置需求、基本信息的登記與修改需求、成績設置需求等,三為負責整個系統維護的管理員,其需要在有學生與老師功能權限的功能基礎上,額外能實現對學生信息的增刪改查,對教師信息的增刪改查,及對選課時間的管理等需求。
二、系統架構
本項目的基於MVC框架模式進行開發,即Model(模型)-View(視圖)-Controller(控制器):V即View視圖是指用戶看到並與之交互的界面。比如我們平時上網所見的由HTML/CSS編寫而成的網頁界面,或者軟件app的用戶交互界面。要注意的是,在視圖層中其實沒有真正的處理發生,這交由其他兩層進行處理,它只是作為一種輸出數據並允許用戶操縱的方式。M即model模型是是應用程序中用於處理應用程序數據邏輯的部分。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,模型與數據格式無關,具有復用性,這樣使得一個模型能為多個視圖提供數據,由於應用於模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。C即controller控制器是指控制器接受用戶的輸入並調用模型和視圖去完成用戶的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數據。正是由於它的存在,使得視圖層與模型層能夠解耦合。
因此我們用一張直觀的圖來描述其三者之間的關系:
三、運行環境和技術選型說明
細化到具體開發工具,本項目采取主流的SSM開發框架,實現MVC框架模式的開發。SSM也即Spring+Springmvc+Mybatis,是由Spring、MyBatis兩個開源框架整合而成。Spring、Springmvc、Mybatis分別承擔上述框架的業務層(Service層)、控制層/表現層及視圖層、持久層(DAO層)的角色。Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數去調用實體類的構造方法來實例化對象。也可以稱之為項目中的粘合劑。Spring的核心思想是IoC(控制反轉),即不再需要程序員去顯式地`new`一個對象,而是讓Spring框架幫你來完成這一切。而SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔中介或是前台這樣的職責,將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執行的操作。Mybatis 是一個優秀的基於java的持久層框架,它內部封裝了jdbc,使開發者只需要關注sql語句本身,而不需要花費精力去處理加載驅動、創建連接、創建statement等繁雜的過程。Mybatis通過xml或注解的方式將要執行的各種 statement配置起來,並通過java對象和statement中sql的動態參數進行映射生成最終執行的sql語句。最后mybatis框架執行sql並將結果映射為java對象並返回。采用ORM思想解決了實體和數據庫映射的問題,對jdbc 進行了封裝,屏蔽了jdbc api 底層訪問細節,使我們不用與jdbc api 打交道,就可以完成對數據庫的持久化操作。
同時對於視圖層的前端,主要由bootstrap完成,背景用particles.js插件。數據庫交互查詢用到pagehelper分頁。在添加修改相關功能時通過ajax來驗證其主鍵是否存在可用,實現添加操作。
四、軟件系統概念原型視圖
4.1 系統功能模塊視圖
4.2項目部署視圖
4.3 軟件用戶用例圖
4.3.1管理員的用例圖
4.3.2學生的用例圖
4.3.3教師用例圖
4.4項目工作進度規划圖
4.5工作分配視圖表
項目組成員名單 |
姓名 |
學號 |
項目中的分工 |
AAA |
SA2022xxxx |
項目進度管理,后端編寫,整理文檔 |
|
BBB |
SA2022xxxx |
頁面設計,后端編寫,整理文檔 |
|
CCC |
SA2022xxxx |
頁面設計,系統測試,整理文檔 |
|
DDD |
SA2022xxxx |
頁面設計,前端編寫,整理文檔 |
4.6關鍵功能的流程圖
4.6.1學生修改個人信息
4.6.2學生選課與退課
4.6.3教師添加課程
教師添加課程功能流程如圖所示。教師用戶登錄后,可以進入課程添加窗口,進行新課程的添加。
4.6.4教師刪除課程
教師刪除課程功能流程如圖所示。教師用戶登錄后,可以進入課程刪除窗口,進行新課程的刪除。
4.7項目邏輯視圖
五、數據庫設計
5.1學生基礎信息表
屬性名 | 類型 | 是否可取空(Y/N) | 注釋 |
student_id | int | N | 學生學號(主鍵) |
student_name | varchar | N | 學生姓名 |
student_sex | set<Male> | N | 性別選項 |
student_grade | set<Grage> | N | 年級選項 |
student_date | set<Date> | N | 出生年月日選項 |
student_major | set<Major> | N | 專業方向選項(網安、嵌入式、大數據、軟設) |
student_phone | int | N | 學生聯系方式 |
student_mail | varchar | N | 學生郵箱 |
5.2教師基礎信息表:
屬性名 | 類型 | 是否可取空(Y/N) | 注釋 |
teacher_id | int | N | 教職工號(主鍵) |
teacher_name | varchar | N | 教師姓名 |
teacher_sex | set<Male> | N | 性別選項 |
teacher_date | set<Date> | N | 出生年月日選項 |
teacher_college | set<Major> | N | 教師任職學院 |
teacher_phone | int | N | 教師聯系方式 |
teacher_mail | varchar | N | 教師郵箱 |
teacher_location | varchar | N | 教師辦公地點 |
5.3課程信息表
屬性名 | 類型 | 是否可取空(Y/N) | 注釋 |
course_id | int | N | 課程編號(主鍵) |
course_name | varchar | N | 課程名 |
course_startWeek | set<Week> | N | 課程起始周 |
course_endWeek | set<Week> | N | 課程結束周 |
course_member | int | N | 課程容量 |
course_teacherId | int | N | 授課老師教職工號 |
course_introduce | varchar | N | 課程介紹 |
course_startTime | set<Time> | N | 課程第幾節起始 |
course_endTime | set<Time> | N | 課程第幾節結束 |
course_day | set<Day> | N | 星期幾上課 |
5.4賬號密碼存儲表
屬性名 | 類型 | 是否可取空(Y/N) | 注釋 |
protect_id | int | N | 學生/教師/管理員id號(主鍵) |
protect_type | Set<Type> | N | 用戶類型選項 |
protect_password | varchr | N | id對應的密碼 |
5.5選課信息存儲表
屬性名 | 類型 | 是否可取空(Y/N) | 注釋 |
choose_studentId | set<StudentId> | N | 選擇該課學生的學號 |
choose_id | int | N | 該選課記錄條目序號(主鍵) |
choose_grades | set<Grades> | Y | 該學生本課程的成績(初始值為空) |
choose_courseId | set<courseId> | N | 該學生所選課程id號 |
5.6管理員基礎信息表:
屬性名 | 類型 | 是否可取空(Y/N) | 注釋 |
Administrator_id | int | N | 管理員id |
First_Start_Time | DATETIME | Y | 一輪選課開始時間 |
First_End_Time | DATETIME | Y | 一輪選課結束時間 |
Second_Start_Time | DATETIME | Y | 二輪選課開始時間 |
Second_End_Time | DATETIME | Y | 二輪選課結束時間 |
六、項目的實現視圖:
1.Sql語句:表結構與初始數據
2.Handle類:控制層
3.Interceptor類:登錄攔截
4.Mapper類:數據訪問接口
5. 各類數據的結構實體類
6.service類接口及其的implement類(具體實現)
7.配置文件和mapper層(DAO)
8.View層:前端頁面
七、概念原型核心工作機制
7.1 概念原型的定義
在理解概念原型之前,我們首先要理解概念的定義——即人對能代表某種事物或發展過程的特點及意義所形成的思維結論。因此我們可以得出概念原型的定義,其是一種虛擬的、理想化的軟件產品形式,更加直觀的來說,概念原型等於數據模型加上用例。
7.2 基於本選課系統項目的概念原型
總上所述,我們已經將用例和數據模型一一列出,至此我們可以得出基於本項目的概念原型——在本項目中一共有三個用例:軟院學生、教師、管理員。及六個數據模型:學生基礎信息表、教師基礎信息表、課程信息表、賬號密碼儲存表、選課信息儲存表、管理員基礎信息表。
7.3基於本選課系統項目的工作過程
通過上述的概念模型我們可以給出整個項目的工作過程:首先,不論是學生、管理員還是教師都需要用戶輸入學號(教職工號)和密碼,才能登錄系統,若需要修改密碼則可輸入舊密碼進行修改。修改后對應賬號密碼存儲表表項將被修改,教師及學生登錄后可以修改個人基礎信息,對於教師而言可以教師增添授課信息、修改個人信息及登記學生成績,這些操作將對教師基礎信息表、課程信息表進行更新,學生可以查看已開設的課程信息,已選課程,課程考試成績在合理的選課時間可以進行選課,同時也可以對已經選擇的課程進行退課,這些操作也將會對課程信息儲存表、學生基礎信息表進行更新。最后,作為管理員,整個系統的最高權限者,其囊括了教師及學生的全部功能,同時,作為選課時間的管理者,還可以設置選課即搶課時間.