軟件工程課程設(shè)計報告 學(xué)生選課系統(tǒng)
《軟件工程課程設(shè)計報告 學(xué)生選課系統(tǒng)》由會員分享,可在線閱讀,更多相關(guān)《軟件工程課程設(shè)計報告 學(xué)生選課系統(tǒng)(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 濱江學(xué)院 軟件工程課程設(shè)計報告 ( 2011 -- 2012 年度第 一 學(xué)期) 課程名稱: 軟件工程課程設(shè)計 題 目: 學(xué)生選課系統(tǒng) 院 系: 計算機科學(xué)與技術(shù)系 班 級: 學(xué) 號: 姓 名: 指導(dǎo)教師: 設(shè)計周數(shù): 兩周 日期:2012
2、年 4月 4日 摘要: 本系統(tǒng)實現(xiàn)學(xué)生選課的基本功能,包括學(xué)生退選課,查看自己的選課信息;教師查看選課學(xué)生的信息,提交成績;管理員添加學(xué)生、管理學(xué)生、管理成績、添加教師、管理教師和管理課程等。系統(tǒng)利用.Net平臺技術(shù)進行開發(fā),實現(xiàn)學(xué)生選課的動態(tài)管理,使得對信息的管理更加及時、高效,提高了效率。同時還對系統(tǒng)的開發(fā)原理、功能特點和設(shè)計方案進行了介紹。 關(guān)鍵詞:學(xué)生選課 數(shù)據(jù)庫 管理 ASP.NET 一、課程設(shè)計的目的與要求 通過軟件開發(fā)的實踐訓(xùn)練,進一步掌握軟件工程的方法和技術(shù),提高軟件開發(fā)的實際能力,培養(yǎng)工程設(shè)計能力和綜合分析、解決問題的能力。 具體如下:
3、 1. 學(xué)習(xí)和實踐在分析和設(shè)計計算機應(yīng)用系統(tǒng)所需要的知識,包括面向?qū)ο蟮南到y(tǒng)分析與設(shè)計,編碼和測試方面的知識; 2. 熟悉自動化的軟件開發(fā)工具Rational Rose 2003,并將其運用于軟件開發(fā)的全過程; 3. 進一步加強和提高軟件工程文檔的編寫能力; 4. 培養(yǎng)協(xié)作能力和團隊精神。 二、設(shè)計正文 1. 概述 1.1課題題目:學(xué)生選課系統(tǒng) 1.2系統(tǒng)的主要目標(biāo): 本系統(tǒng)目標(biāo)是實現(xiàn)選課系統(tǒng)所需的各種基本功能,包括學(xué)生選課、退課功能和教師查看選修課程、提交課程成績功能以及管理員添加學(xué)生、維護學(xué)生信息、成績管理、添加教師、維護教師信息、維護選修課程,還有公用的修改密碼等功能
4、。 1.3 系統(tǒng)的開發(fā)環(huán)境及運行環(huán)境: 操作系統(tǒng): Windows XP Pro SP2 建模工具: Rational Rose 2003 數(shù)據(jù)庫系統(tǒng):SQL Server2000 開發(fā)工具: Visual Studio 2005 Web服務(wù)器:IIS+ASP.NET 2.0平臺 2. 系統(tǒng)需求分析 學(xué)生選課系統(tǒng)主要滿足來自三方面的需求,這三個方面分別是學(xué)生用戶、教師用戶和管理員用戶,也即是三類用戶角色。 (1)學(xué)生用戶是主要的需求者,主要需求功能是查詢可選課程、查看自己選課情況及進行選課、退課操作等; (2)教師用戶主要需求功能是查看自己所教授的課程、課程有
5、哪些學(xué)生選修、以及利用本系統(tǒng)提交學(xué)生的成績; (3)管理員用戶的功能需求較為復(fù)雜,包括對學(xué)生信息、教師信息、課程信息進行管理。在學(xué)生信息管理子模塊中,實現(xiàn)對學(xué)生信息的添加、修改、刪除操作,還可以輸入查詢條件進行查詢操作。在教師管理子模塊中,實現(xiàn)對教師信息的添加、修改、刪除、查詢等操作。在課程管理子模塊中,實現(xiàn)對課程信息的添加,添加時為其分配任課教師、上課時間和地點,實現(xiàn)對課程的修改、刪除、查看某個課程的詳細(xì)信息等。 本系統(tǒng)將管理員用戶、教師用戶、學(xué)生用戶的身份及權(quán)限進行嚴(yán)格的劃分,讓管理員擁有最高權(quán)限,可以查看、維護系統(tǒng)中的所有信息,如添加學(xué)生,添加課程,修改課程信息等;讓教師擁有查看自己
6、開設(shè)的課程的信息,以及提交所開設(shè)課程成績的權(quán)限;讓學(xué)生擁有選課和退選的權(quán)限;而修改密碼模塊的權(quán)限每個用戶都可擁有,用以修改自己的密碼信息。通過進行嚴(yán)格的權(quán)限劃分,可以更好地進行管理,也可更好地保護用戶信息安全。 2.1 用例圖 圖2-1 學(xué)生選課系統(tǒng)用例圖 用例圖說明: (1)系統(tǒng)的外部角色有:學(xué)生用戶、教師用戶和管理員。 (2)系統(tǒng)主要用例的文檔描述: ①學(xué)生管理用例:學(xué)生用戶可見的功能,包含了選課、退課和查看選課三個用例功能。 ②教師管理用例:教師用戶可見的
7、功能,包含了查看學(xué)生選課和提交成績兩個用例功能。 ③信息管理用例:管理員可見的功能,這個用例進一步分為三個用例:學(xué)生信息管理用例、教師信息管理用例和課程信息管理用例。 ④學(xué)生信息管理用例:信息管理用例可見的功能,實現(xiàn)學(xué)生信息的管理功能,包含了添加學(xué)生、修改學(xué)生信息和刪除學(xué)生三個用例。 ⑤教師信息管理用例:信息管理用例可見的功能,實現(xiàn)教師信息的管理功能,包含了添加教師、修改教師信息和刪除教師三個用例。 ⑥課程信息管理用例:信息管理用例可見的功能,實現(xiàn)課程信息的管理功能,包含了添加課程、修改課程信息和刪除課程三個用例。 ⑦修改密碼用例:所有用戶都可見的功能,用于修改用戶的密碼信息。 (
8、3)系統(tǒng)用例之間的關(guān)系: ①學(xué)生管理用例與選課、查看選課、退課三用例之間是包含關(guān)系。 ②教師管理用例與查看學(xué)生選課、提交成績兩用例之間是包含關(guān)系。 ③信息管理用例與學(xué)生信息管理用例、教師信息管理用例和課程信息管理用例之間是包含關(guān)系。 ④學(xué)生信息管理用例與添加學(xué)生、修改學(xué)生信息和刪除學(xué)生三個用例之間是包含關(guān)系。 ⑤教師信息管理用例與添加教師、修改教師信息和刪除教師三個用例之間是包含關(guān)系。 ⑥課程信息管理用例與添加課程、修改課程信息和刪除課程三個用例之間是包含關(guān)系。 (4)系統(tǒng)關(guān)鍵用例的正常事件流圖和異常事件流圖 表2-1 修改密碼用例的正常事件流圖和異常事件流圖 用例名
9、稱 修改密碼 參與者 管理員、教師、學(xué)生 描述 管理員、教師、學(xué)生用戶進行密碼修改 啟動 單擊“修改密碼”鏈接 前置條件 用戶成功登錄 主事件流 用戶 系統(tǒng) 1.進入用戶修改密碼界面,輸入舊密碼一次 ,新密碼兩次 2.系統(tǒng)檢查密碼格式是否相符 3.系統(tǒng)檢查舊密碼是否正確 4.如果正確,進行密碼修改,轉(zhuǎn)入密碼修改成功界面 異常流 異常流 密碼檢查未通過 系統(tǒng) 返回密碼修改界面,提示舊密碼不正確,新密碼格式不符,兩次不同等密碼 異常 用戶舊密碼錯誤 表2-2 提交成績用例的正常事件流圖和異常事件流圖 用例名稱 提交成績用例
10、參與者 教師用戶 描述 提交選自己開設(shè)課程的學(xué)生的成績 啟動 進入提交成績界面 前置條件 用戶成功登錄 后置條件 尚未提交過成績 主事件流 用戶 系統(tǒng) 1.單擊提交成績 2.系統(tǒng)提交成績頁面 3.填寫學(xué)生成績,單擊提交成績 5.更新學(xué)生成績,提示提交成功 異常流 異常流 用戶已經(jīng)提交過該門課程成績 系統(tǒng) 提示該課程成績已提交,不能再次提交 2.2 類圖 圖2-2 學(xué)生選課系統(tǒng)類圖 類圖說明: (1)BaseUser類是一個系統(tǒng)角色用戶的基類,主要方法
11、有兩個: modifyPWD() 用于修改用戶的密碼; loginCheck() 用于用戶登錄驗證。 (2)Admin類繼承自BaseUser類。 (3)Student類繼承自BaseUser類,主要方法有: studentAdd() 用于添加學(xué)生; studentDel() 用于刪除學(xué)生; studentUpdate() 用于更新學(xué)生信息; getStudents() 用于獲取學(xué)生列表。 (4)Teacher類繼承自BaseUser類,主要方法有: teacherAdd() 用于添加教師; teacherDel() 用于刪除教師; teacherUpdate() 用于
12、更新教師信息; getTeachers() 用于獲取教師列表。 (5)Course類是一個課程類,主要方法有: courseAdd() 用于添加課程; courseDel() 用于刪除課程; courseUpdate() 用于修改課程信息; getCourses() 用于獲取課程列表。 (6)Elect類是一個選課表類,主要方法有: elect() 選修課程; electDel() 退選課程; getElectInfo() 獲取選課信息; haveSubmit() 檢測是否已提交過成績; submitScore() 提交成績。 2.3 順序圖 (1) 管理員修改
13、課程信息順序圖 圖2-3 管理員修改課程信息順序圖 (2) 學(xué)生用戶退選課的順序圖 圖2-4 學(xué)生用戶退選課的順序圖 (3) 教師提交成績順序圖 圖2-5 教師提交成績順序圖 2.4 協(xié)作圖(可選) (1) 學(xué)生用戶選課協(xié)作圖 圖2-6 學(xué)生用戶選課協(xié)作圖 (2) 教師提交
14、成績協(xié)作圖 圖2-7 教師提交成績協(xié)作圖 3. 系統(tǒng)總體設(shè)計 3.1 設(shè)計問題域子系統(tǒng) 學(xué)生選課系統(tǒng)是實現(xiàn)學(xué)生選課退課、教師提交成績以及學(xué)校教務(wù)管理員維護信息的一個平臺,整個學(xué)生選課系統(tǒng)有前臺和后臺兩部分,共分為4個模塊:管理員模塊,教師模塊,學(xué)生模塊和公有模塊,分別用于完成各自的功能。以下為學(xué)生選課系統(tǒng)總體設(shè)計圖和各功能模塊說明: (1)總體設(shè)計圖 學(xué)生選課系統(tǒng) 前臺模塊 后臺模塊 學(xué)生登錄模塊 教師登錄模塊 學(xué)生處理模塊 教師處理模塊 管理員處理模塊 公共模塊 管理員登錄模塊
15、 圖3-1學(xué)生選課系統(tǒng)總體設(shè)計圖 (2)各模塊功能 表3-1 學(xué)生選課系統(tǒng)功能模塊表 功能模塊 包含子功能模塊 功能 管理員模塊 學(xué)生管理子模塊 對學(xué)生信息的添加、修改,刪除操作 教師管理子模塊 對教師的添加,修改,刪除,查詢操作 課程管理子模塊 對課程的添加,添加時為其分配任課教師,上課時間和地點,實現(xiàn)對課程的修改,刪除,查看某個課程的詳細(xì)信息等 教師模塊 實現(xiàn)查看自己所教授的課程,課程有哪些學(xué)生選修,以及利用本系統(tǒng)提交學(xué)生的成績 學(xué)生模塊 實現(xiàn)學(xué)生選課,查看所選課程,修改自
16、己的選課信息 公有模塊 實現(xiàn)用戶的身份驗證,密碼修改,退出系統(tǒng)等功能 3.2 設(shè)計數(shù)據(jù)管理子系統(tǒng) (1)數(shù)據(jù)庫表 表3-2 數(shù)據(jù)庫表 序號 數(shù)據(jù)庫表 數(shù)據(jù)表存儲的內(nèi)容 1 Student 存儲學(xué)生的信息 2 Teacher 存儲教師的信息 3 Users 存儲管理員的信息 4 Elect 存儲選課的信息 5 Cource 存儲課程的信息 6 Depart 存儲學(xué)校系院信息 (2)數(shù)據(jù)表之間的關(guān)系 圖3-2 數(shù)據(jù)表之間的關(guān)系圖
17、 (3)數(shù)據(jù)庫表結(jié)構(gòu) ①學(xué)生表Student的詳細(xì)數(shù)據(jù)字段: 表3-3 Student學(xué)生用戶表 序號 字段名 字段類型 說明 備注 1 stuID nvarchar(20)not null 學(xué)生學(xué)號 關(guān)鍵字 2 stuPwd nvarchar(20)not nul 學(xué)生密碼 3 stuName nvarchar(20)not nul 學(xué)生姓名 4 stuDepart Int 學(xué)生系院號 5 stuGrade int 學(xué)生年級 6 stuClass int 學(xué)生班級 ②教師表Teacher的詳細(xì)數(shù)
18、據(jù)字段: 表3-4 Teacher教師用戶表 序號 字段名 字段類型 說明 備注 1 teaID nvarchar(20)not null 教師編號 關(guān)鍵字 2 teaPwd nvarchar(20)not null 教師密碼 3 teaName nvarchar(100)not null 教師姓名 4 teaDepart Int(4) 教師系院號 ③課程表Course的詳細(xì)數(shù)據(jù)字段: 表3-5 Cource課程信息表 序號 字段名 字段類型 說明 備注 1 courseID nvarchar(20)not nu
19、ll 課程編號 關(guān)鍵字 2 teaID nvarchar(20)not null 教師編號 關(guān)鍵字 3 courseName nvarchar(100) not null 課程名稱 4 courseTime nvarchar(20) 上課時間 5 courseAddress nvarchar(50) 上課地點 6 courseInfo Text 課程簡介 ④選課表Elect的詳細(xì)數(shù)據(jù)字段: 表3-6 Elect選課信息表 序號 字段名 字段類型 說明 備注 1 stuID nvarchar(2
20、0)not null 學(xué)生學(xué)號 關(guān)鍵字 2 courseID nvarchar(20)not null 課程編號 關(guān)鍵字 3 teaID nvarchar(20)not null 教師編號 關(guān)鍵字 4 Score int 課程成績 ⑤系統(tǒng)管理員表Users的詳細(xì)數(shù)據(jù)字段: 表3-7 Users管理員表 序號 字段名 字段類型 說明 備注 1 adminName nvarchar(20)not null 系統(tǒng)管理員用戶名 關(guān)鍵字 2 adminPwd nvarchar(20) 系統(tǒng)管理員密碼 ⑥系院表Depart的
21、詳細(xì)數(shù)據(jù)字段: 表3-8 Depart系院表 序號 字段名 字段類型 說明 備注 1 departID Int not null 系院號 關(guān)鍵字 2 departName nvarchar(100) 系院名稱 3.3 設(shè)計人機交互子系統(tǒng) (1)用戶分類 本系統(tǒng)的用戶可分為三類: ①管理員用戶; ②教師用戶; ③學(xué)生用戶。 (2)用戶描述 ①管理員用戶的描述: 管理員用戶在整個選課系統(tǒng)中起到管理和維護的作用,對學(xué)生和教師的信息進行管理和維護以及開設(shè)課設(shè)等職責(zé)。 ②教師用戶的描述: 教師用戶在本系統(tǒng)中具有管理選修了自己開設(shè)的課程的學(xué)生的權(quán)
22、限,查看選修了自己開設(shè)課程的學(xué)生信息有及提交學(xué)生成績。 ③學(xué)生用戶的描述: 選課系統(tǒng)主要是針對管理學(xué)生的,學(xué)生在本系統(tǒng)中具有修改自己的信息,以及選課和退選的功能。 (3)設(shè)計命令層次 ①系統(tǒng)的人機交互子系統(tǒng)的內(nèi)容和準(zhǔn)則: 本學(xué)生選課系統(tǒng)的人機交互子系統(tǒng)在根據(jù)不同的用戶身份登陸到不同的頁面,然后按照不同的用戶只能進行用戶權(quán)限內(nèi)的操作,其結(jié)構(gòu)圖如下: 主系統(tǒng)界面 學(xué)生用戶界面 教師用戶界面 管理員用戶界面 圖3-3 人機交互子系統(tǒng)結(jié)構(gòu)圖 ②通過采用樹形結(jié)構(gòu),細(xì)化命令的組織方式,如下: 主系統(tǒng)界面 管理員用戶 學(xué)生用戶 教師用
23、戶 選課 查看選課 學(xué)生管理 教師管理 課程管理 查看選課信息 提交成績 退課 添加學(xué)生 修改學(xué)生信息 刪除學(xué)生 添加教師 修改教師信息 刪除信息 添加課程 修改課程信息 刪除課程 圖3-4 細(xì)化命令組織方式 4. 詳細(xì)設(shè)計 學(xué)生選課系統(tǒng)是實現(xiàn)學(xué)生網(wǎng)上選課、教師提交成績以及學(xué)校教務(wù)管理員維護信息的一個平臺,整個學(xué)生選課系統(tǒng)共分為4個大模塊:管理員模塊,教師模塊,學(xué)生模塊和公有模塊,其中復(fù)雜的方法和模塊的詳細(xì)設(shè)計流程圖如下。 4.1
24、系統(tǒng)用戶登錄流程圖 開始 輸入用戶名、密碼 驗證用戶名、密碼 提示用戶登錄失敗 進入相應(yīng)的用戶頁面 選擇相關(guān)管理操作 安全退出系統(tǒng) 驗證正確 結(jié)束 是 否 圖4-1 系統(tǒng)用戶登錄流程圖 4.2 用戶密碼修改流程圖 開始 輸入用戶舊密碼、新密碼 驗證用戶密碼是否合法 輸入不合法,重新輸入 修改用戶密碼 提示修改成功 是否合法? 結(jié)束 圖4-2 用戶密碼修改流程圖 是 否 4.3教師提交成績流程圖 開始 點擊成績提交 填寫學(xué)生成績 提示已提交,不能再提交 點擊提交
25、 提交成績,并提示成功 檢查是否已提交過 確認(rèn)提交? 結(jié)束 是 否 否 是 圖4-3教師提交成績流程圖 4.4管理員添加課程流程圖 開始 退出 轉(zhuǎn)到添加課程 填寫課程信息 點擊添加 填寫編號 提示重新填寫編號 添加課程 提示添加成功 課程編號是否重復(fù)? 否 是 圖4-4 管理員添加課程流程圖 4.5學(xué)生選修課程流程圖 開始 結(jié)束 點擊選修 選修成功 更新選、退課課表 提示時間沖突,不能選修 上課時間沖突 繼續(xù)選課? 是 否 是 否 圖4-5 學(xué)生選修課程流程圖 5. 系統(tǒng)實現(xiàn) 本系統(tǒng)采用了三層架構(gòu)來實現(xiàn)
26、,即分為用戶界面層(UI)、業(yè)務(wù)邏輯層(BLL)和數(shù)據(jù)訪問層(DAL),用戶界面層是展示給用戶的界面,方便用戶與系統(tǒng)進行交互;業(yè)務(wù)邏輯層是對系統(tǒng)業(yè)務(wù)實體的封裝,完成系統(tǒng)業(yè)務(wù)功能;數(shù)據(jù)訪問層直接與數(shù)據(jù)庫打交道,為業(yè)務(wù)邏輯層提供底層的數(shù)據(jù)庫操作。 5.1 Database類主要是與數(shù)據(jù)庫連接,提供數(shù)據(jù)庫操作功能,代碼如下: namespace MyElectCourse.DAL { public class Database { protected string connectionString; protected SqlConn
27、ection connection = null; public Database() { connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString(); } ~Database() { if (connection != null) {
28、connection = null; } } protected void Open() { if (connection == null) { connection = new SqlConnection(connectionString); } if (connection.State.Equals(ConnectionState.Closed))
29、 { connection.Open(); } } protected void Close() { if (connection != null) { connection.Close(); } } public int ExecuteSQL(string sqlstr) { int
30、count = -1; this.Open(); SqlCommand cmd = new SqlCommand(sqlstr, connection); count = cmd.ExecuteNonQuery(); this.Close(); return count; } public DataSet GetDataSet(string sqlstr) { this.Open()
31、; DataSet ds = new DataSet(); SqlDataAdapter adapter = new SqlDataAdapter(sqlstr,connection); adapter.Fill(ds); this.Close(); return ds; } public DataTable GetDataTable(string sqlstr) { DataSet
32、 ds = this.GetDataSet(sqlstr); DataTable dt = new DataTable(); if (ds.Tables.Count > 0) { dt = ds.Tables[0]; } return dt; } public SqlDataReader GetDataReader(string sqlstr) { this.Op
33、en(); SqlCommand cmd = new SqlCommand(sqlstr, connection); SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); //this.Close(); return sdr; } } } 5.2 UserBase類是所有系統(tǒng)角色用戶的基類,完成用戶登錄驗證與修改密碼的功能,代碼如下: namespace MyEle
34、ctCourse.BLL { public class UserBase { private string userID; public string UserID { get { return userID; } set { userID = value; } } private string userPSW; public string UserPSW { get
35、{ return userPSW; } set { userPSW = value; } } public string loginCheck(string uid, string upwd, string urole) { String selectStr = String.Empty; switch (urole) { case "0": //身份為教師時
36、 selectStr = "Select * from Teacher where teaID = '" + uid + "'"; break; case "1": //身份為學(xué)生時 selectStr = "Select * from Student where stuID = '" + uid + "'";
37、 break; case "2": //身份為管理員時 selectStr = "Select * from Users where adminName = '" + uid + "'"; break; default: return null; } Database db = new Datab
38、ase(); DataTable dt = db.GetDataTable(selectStr); if (dt.Rows.Count > 0) //如果該用戶存在 { if (dt.Rows[0][1].ToString().Equals(upwd)) //密碼正確 { switch (urole) {
39、 case "0": //身份為教師時 return "0"; case "1": //身份為學(xué)生時 return "1"; case "2": //身份為管理員時 return "2";
40、 default: return null; } } else //密碼錯誤,給出提示信息! { return "-1"; } } else //用戶不存在或用戶名輸入錯
41、誤 { return "-2"; } } public string modifyPWD(String urole, String uid, String oldPwd, String newPwd) { String updateStr = String.Empty; switch (urole) { case "0":
42、 //身份為教師時 updateStr = "update Teacher set teaPwd='" + newPwd + "' where teaID='" + uid + "'"; break; case "1": //身份為學(xué)生時 updateStr = "update Student set stuPwd='" + new
43、Pwd + "' where stuID='" + uid + "'"; break; case "2": //身份為管理員時 updateStr = "update Users set adminPwd='" + newPwd + "' where adminName='" break; } string ucheck = this.loginCheck(uid, oldPwd,
44、 urole); if (ucheck.Equals("0") || ucheck.Equals("1") || ucheck.Equals("2")) { int t = new Database().ExecuteSQL(updateStr); //根據(jù)修改后返回的結(jié)果給出提示 if (t > 0) { return "1"; }
45、 else { return "0"; } } else { return "-1"; } } }} 5.3 系統(tǒng)登錄頁面,代碼及運行效果如下: