軟件工程課程設計報告 學生選課系統(tǒng)
《軟件工程課程設計報告 學生選課系統(tǒng)》由會員分享,可在線閱讀,更多相關《軟件工程課程設計報告 學生選課系統(tǒng)(30頁珍藏版)》請在裝配圖網上搜索。
1、 濱江學院 軟件工程課程設計報告 ( 2011 -- 2012 年度第 一 學期) 課程名稱: 軟件工程課程設計 題 目: 學生選課系統(tǒng) 院 系: 計算機科學與技術系 班 級: 學 號: 姓 名: 指導教師: 設計周數: 兩周 日期:2012
2、年 4月 4日 摘要: 本系統(tǒng)實現學生選課的基本功能,包括學生退選課,查看自己的選課信息;教師查看選課學生的信息,提交成績;管理員添加學生、管理學生、管理成績、添加教師、管理教師和管理課程等。系統(tǒng)利用.Net平臺技術進行開發(fā),實現學生選課的動態(tài)管理,使得對信息的管理更加及時、高效,提高了效率。同時還對系統(tǒng)的開發(fā)原理、功能特點和設計方案進行了介紹。 關鍵詞:學生選課 數據庫 管理 ASP.NET 一、課程設計的目的與要求 通過軟件開發(fā)的實踐訓練,進一步掌握軟件工程的方法和技術,提高軟件開發(fā)的實際能力,培養(yǎng)工程設計能力和綜合分析、解決問題的能力。 具體如下:
3、 1. 學習和實踐在分析和設計計算機應用系統(tǒng)所需要的知識,包括面向對象的系統(tǒng)分析與設計,編碼和測試方面的知識; 2. 熟悉自動化的軟件開發(fā)工具Rational Rose 2003,并將其運用于軟件開發(fā)的全過程; 3. 進一步加強和提高軟件工程文檔的編寫能力; 4. 培養(yǎng)協(xié)作能力和團隊精神。 二、設計正文 1. 概述 1.1課題題目:學生選課系統(tǒng) 1.2系統(tǒng)的主要目標: 本系統(tǒng)目標是實現選課系統(tǒng)所需的各種基本功能,包括學生選課、退課功能和教師查看選修課程、提交課程成績功能以及管理員添加學生、維護學生信息、成績管理、添加教師、維護教師信息、維護選修課程,還有公用的修改密碼等功能
4、。 1.3 系統(tǒng)的開發(fā)環(huán)境及運行環(huán)境: 操作系統(tǒng): Windows XP Pro SP2 建模工具: Rational Rose 2003 數據庫系統(tǒng):SQL Server2000 開發(fā)工具: Visual Studio 2005 Web服務器:IIS+ASP.NET 2.0平臺 2. 系統(tǒng)需求分析 學生選課系統(tǒng)主要滿足來自三方面的需求,這三個方面分別是學生用戶、教師用戶和管理員用戶,也即是三類用戶角色。 (1)學生用戶是主要的需求者,主要需求功能是查詢可選課程、查看自己選課情況及進行選課、退課操作等; (2)教師用戶主要需求功能是查看自己所教授的課程、課程有
5、哪些學生選修、以及利用本系統(tǒng)提交學生的成績; (3)管理員用戶的功能需求較為復雜,包括對學生信息、教師信息、課程信息進行管理。在學生信息管理子模塊中,實現對學生信息的添加、修改、刪除操作,還可以輸入查詢條件進行查詢操作。在教師管理子模塊中,實現對教師信息的添加、修改、刪除、查詢等操作。在課程管理子模塊中,實現對課程信息的添加,添加時為其分配任課教師、上課時間和地點,實現對課程的修改、刪除、查看某個課程的詳細信息等。 本系統(tǒng)將管理員用戶、教師用戶、學生用戶的身份及權限進行嚴格的劃分,讓管理員擁有最高權限,可以查看、維護系統(tǒng)中的所有信息,如添加學生,添加課程,修改課程信息等;讓教師擁有查看自己
6、開設的課程的信息,以及提交所開設課程成績的權限;讓學生擁有選課和退選的權限;而修改密碼模塊的權限每個用戶都可擁有,用以修改自己的密碼信息。通過進行嚴格的權限劃分,可以更好地進行管理,也可更好地保護用戶信息安全。 2.1 用例圖 圖2-1 學生選課系統(tǒng)用例圖 用例圖說明: (1)系統(tǒng)的外部角色有:學生用戶、教師用戶和管理員。 (2)系統(tǒng)主要用例的文檔描述: ①學生管理用例:學生用戶可見的功能,包含了選課、退課和查看選課三個用例功能。 ②教師管理用例:教師用戶可見的
7、功能,包含了查看學生選課和提交成績兩個用例功能。 ③信息管理用例:管理員可見的功能,這個用例進一步分為三個用例:學生信息管理用例、教師信息管理用例和課程信息管理用例。 ④學生信息管理用例:信息管理用例可見的功能,實現學生信息的管理功能,包含了添加學生、修改學生信息和刪除學生三個用例。 ⑤教師信息管理用例:信息管理用例可見的功能,實現教師信息的管理功能,包含了添加教師、修改教師信息和刪除教師三個用例。 ⑥課程信息管理用例:信息管理用例可見的功能,實現課程信息的管理功能,包含了添加課程、修改課程信息和刪除課程三個用例。 ⑦修改密碼用例:所有用戶都可見的功能,用于修改用戶的密碼信息。 (
8、3)系統(tǒng)用例之間的關系: ①學生管理用例與選課、查看選課、退課三用例之間是包含關系。 ②教師管理用例與查看學生選課、提交成績兩用例之間是包含關系。 ③信息管理用例與學生信息管理用例、教師信息管理用例和課程信息管理用例之間是包含關系。 ④學生信息管理用例與添加學生、修改學生信息和刪除學生三個用例之間是包含關系。 ⑤教師信息管理用例與添加教師、修改教師信息和刪除教師三個用例之間是包含關系。 ⑥課程信息管理用例與添加課程、修改課程信息和刪除課程三個用例之間是包含關系。 (4)系統(tǒng)關鍵用例的正常事件流圖和異常事件流圖 表2-1 修改密碼用例的正常事件流圖和異常事件流圖 用例名
9、稱 修改密碼 參與者 管理員、教師、學生 描述 管理員、教師、學生用戶進行密碼修改 啟動 單擊“修改密碼”鏈接 前置條件 用戶成功登錄 主事件流 用戶 系統(tǒng) 1.進入用戶修改密碼界面,輸入舊密碼一次 ,新密碼兩次 2.系統(tǒng)檢查密碼格式是否相符 3.系統(tǒng)檢查舊密碼是否正確 4.如果正確,進行密碼修改,轉入密碼修改成功界面 異常流 異常流 密碼檢查未通過 系統(tǒng) 返回密碼修改界面,提示舊密碼不正確,新密碼格式不符,兩次不同等密碼 異常 用戶舊密碼錯誤 表2-2 提交成績用例的正常事件流圖和異常事件流圖 用例名稱 提交成績用例
10、參與者 教師用戶 描述 提交選自己開設課程的學生的成績 啟動 進入提交成績界面 前置條件 用戶成功登錄 后置條件 尚未提交過成績 主事件流 用戶 系統(tǒng) 1.單擊提交成績 2.系統(tǒng)提交成績頁面 3.填寫學生成績,單擊提交成績 5.更新學生成績,提示提交成功 異常流 異常流 用戶已經提交過該門課程成績 系統(tǒng) 提示該課程成績已提交,不能再次提交 2.2 類圖 圖2-2 學生選課系統(tǒng)類圖 類圖說明: (1)BaseUser類是一個系統(tǒng)角色用戶的基類,主要方法
11、有兩個: modifyPWD() 用于修改用戶的密碼; loginCheck() 用于用戶登錄驗證。 (2)Admin類繼承自BaseUser類。 (3)Student類繼承自BaseUser類,主要方法有: studentAdd() 用于添加學生; studentDel() 用于刪除學生; studentUpdate() 用于更新學生信息; getStudents() 用于獲取學生列表。 (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) 學生用戶退選課的順序圖 圖2-4 學生用戶退選課的順序圖 (3) 教師提交成績順序圖 圖2-5 教師提交成績順序圖 2.4 協(xié)作圖(可選) (1) 學生用戶選課協(xié)作圖 圖2-6 學生用戶選課協(xié)作圖 (2) 教師提交
14、成績協(xié)作圖 圖2-7 教師提交成績協(xié)作圖 3. 系統(tǒng)總體設計 3.1 設計問題域子系統(tǒng) 學生選課系統(tǒng)是實現學生選課退課、教師提交成績以及學校教務管理員維護信息的一個平臺,整個學生選課系統(tǒng)有前臺和后臺兩部分,共分為4個模塊:管理員模塊,教師模塊,學生模塊和公有模塊,分別用于完成各自的功能。以下為學生選課系統(tǒng)總體設計圖和各功能模塊說明: (1)總體設計圖 學生選課系統(tǒng) 前臺模塊 后臺模塊 學生登錄模塊 教師登錄模塊 學生處理模塊 教師處理模塊 管理員處理模塊 公共模塊 管理員登錄模塊
15、 圖3-1學生選課系統(tǒng)總體設計圖 (2)各模塊功能 表3-1 學生選課系統(tǒng)功能模塊表 功能模塊 包含子功能模塊 功能 管理員模塊 學生管理子模塊 對學生信息的添加、修改,刪除操作 教師管理子模塊 對教師的添加,修改,刪除,查詢操作 課程管理子模塊 對課程的添加,添加時為其分配任課教師,上課時間和地點,實現對課程的修改,刪除,查看某個課程的詳細信息等 教師模塊 實現查看自己所教授的課程,課程有哪些學生選修,以及利用本系統(tǒng)提交學生的成績 學生模塊 實現學生選課,查看所選課程,修改自
16、己的選課信息 公有模塊 實現用戶的身份驗證,密碼修改,退出系統(tǒng)等功能 3.2 設計數據管理子系統(tǒng) (1)數據庫表 表3-2 數據庫表 序號 數據庫表 數據表存儲的內容 1 Student 存儲學生的信息 2 Teacher 存儲教師的信息 3 Users 存儲管理員的信息 4 Elect 存儲選課的信息 5 Cource 存儲課程的信息 6 Depart 存儲學校系院信息 (2)數據表之間的關系 圖3-2 數據表之間的關系圖
17、 (3)數據庫表結構 ①學生表Student的詳細數據字段: 表3-3 Student學生用戶表 序號 字段名 字段類型 說明 備注 1 stuID nvarchar(20)not null 學生學號 關鍵字 2 stuPwd nvarchar(20)not nul 學生密碼 3 stuName nvarchar(20)not nul 學生姓名 4 stuDepart Int 學生系院號 5 stuGrade int 學生年級 6 stuClass int 學生班級 ②教師表Teacher的詳細數
18、據字段: 表3-4 Teacher教師用戶表 序號 字段名 字段類型 說明 備注 1 teaID nvarchar(20)not null 教師編號 關鍵字 2 teaPwd nvarchar(20)not null 教師密碼 3 teaName nvarchar(100)not null 教師姓名 4 teaDepart Int(4) 教師系院號 ③課程表Course的詳細數據字段: 表3-5 Cource課程信息表 序號 字段名 字段類型 說明 備注 1 courseID nvarchar(20)not nu
19、ll 課程編號 關鍵字 2 teaID nvarchar(20)not null 教師編號 關鍵字 3 courseName nvarchar(100) not null 課程名稱 4 courseTime nvarchar(20) 上課時間 5 courseAddress nvarchar(50) 上課地點 6 courseInfo Text 課程簡介 ④選課表Elect的詳細數據字段: 表3-6 Elect選課信息表 序號 字段名 字段類型 說明 備注 1 stuID nvarchar(2
20、0)not null 學生學號 關鍵字 2 courseID nvarchar(20)not null 課程編號 關鍵字 3 teaID nvarchar(20)not null 教師編號 關鍵字 4 Score int 課程成績 ⑤系統(tǒng)管理員表Users的詳細數據字段: 表3-7 Users管理員表 序號 字段名 字段類型 說明 備注 1 adminName nvarchar(20)not null 系統(tǒng)管理員用戶名 關鍵字 2 adminPwd nvarchar(20) 系統(tǒng)管理員密碼 ⑥系院表Depart的
21、詳細數據字段: 表3-8 Depart系院表 序號 字段名 字段類型 說明 備注 1 departID Int not null 系院號 關鍵字 2 departName nvarchar(100) 系院名稱 3.3 設計人機交互子系統(tǒng) (1)用戶分類 本系統(tǒng)的用戶可分為三類: ①管理員用戶; ②教師用戶; ③學生用戶。 (2)用戶描述 ①管理員用戶的描述: 管理員用戶在整個選課系統(tǒng)中起到管理和維護的作用,對學生和教師的信息進行管理和維護以及開設課設等職責。 ②教師用戶的描述: 教師用戶在本系統(tǒng)中具有管理選修了自己開設的課程的學生的權
22、限,查看選修了自己開設課程的學生信息有及提交學生成績。 ③學生用戶的描述: 選課系統(tǒng)主要是針對管理學生的,學生在本系統(tǒng)中具有修改自己的信息,以及選課和退選的功能。 (3)設計命令層次 ①系統(tǒng)的人機交互子系統(tǒng)的內容和準則: 本學生選課系統(tǒng)的人機交互子系統(tǒng)在根據不同的用戶身份登陸到不同的頁面,然后按照不同的用戶只能進行用戶權限內的操作,其結構圖如下: 主系統(tǒng)界面 學生用戶界面 教師用戶界面 管理員用戶界面 圖3-3 人機交互子系統(tǒng)結構圖 ②通過采用樹形結構,細化命令的組織方式,如下: 主系統(tǒng)界面 管理員用戶 學生用戶 教師用
23、戶 選課 查看選課 學生管理 教師管理 課程管理 查看選課信息 提交成績 退課 添加學生 修改學生信息 刪除學生 添加教師 修改教師信息 刪除信息 添加課程 修改課程信息 刪除課程 圖3-4 細化命令組織方式 4. 詳細設計 學生選課系統(tǒng)是實現學生網上選課、教師提交成績以及學校教務管理員維護信息的一個平臺,整個學生選課系統(tǒng)共分為4個大模塊:管理員模塊,教師模塊,學生模塊和公有模塊,其中復雜的方法和模塊的詳細設計流程圖如下。 4.1
24、系統(tǒng)用戶登錄流程圖 開始 輸入用戶名、密碼 驗證用戶名、密碼 提示用戶登錄失敗 進入相應的用戶頁面 選擇相關管理操作 安全退出系統(tǒng) 驗證正確 結束 是 否 圖4-1 系統(tǒng)用戶登錄流程圖 4.2 用戶密碼修改流程圖 開始 輸入用戶舊密碼、新密碼 驗證用戶密碼是否合法 輸入不合法,重新輸入 修改用戶密碼 提示修改成功 是否合法? 結束 圖4-2 用戶密碼修改流程圖 是 否 4.3教師提交成績流程圖 開始 點擊成績提交 填寫學生成績 提示已提交,不能再提交 點擊提交
25、 提交成績,并提示成功 檢查是否已提交過 確認提交? 結束 是 否 否 是 圖4-3教師提交成績流程圖 4.4管理員添加課程流程圖 開始 退出 轉到添加課程 填寫課程信息 點擊添加 填寫編號 提示重新填寫編號 添加課程 提示添加成功 課程編號是否重復? 否 是 圖4-4 管理員添加課程流程圖 4.5學生選修課程流程圖 開始 結束 點擊選修 選修成功 更新選、退課課表 提示時間沖突,不能選修 上課時間沖突 繼續(xù)選課? 是 否 是 否 圖4-5 學生選修課程流程圖 5. 系統(tǒng)實現 本系統(tǒng)采用了三層架構來實現
26、,即分為用戶界面層(UI)、業(yè)務邏輯層(BLL)和數據訪問層(DAL),用戶界面層是展示給用戶的界面,方便用戶與系統(tǒng)進行交互;業(yè)務邏輯層是對系統(tǒng)業(yè)務實體的封裝,完成系統(tǒng)業(yè)務功能;數據訪問層直接與數據庫打交道,為業(yè)務邏輯層提供底層的數據庫操作。 5.1 Database類主要是與數據庫連接,提供數據庫操作功能,代碼如下: 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": //身份為學生時 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": //身份為學生時 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": //身份為學生時 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); //根據修改后返回的結果給出提示 if (t > 0) { return "1"; }
45、 else { return "0"; } } else { return "-1"; } } }} 5.3 系統(tǒng)登錄頁面,代碼及運行效果如下: