面向計算機專業(yè)實驗室的實驗教學管理系統(tǒng)的數(shù)據(jù)庫實驗報告_第1頁
面向計算機專業(yè)實驗室的實驗教學管理系統(tǒng)的數(shù)據(jù)庫實驗報告_第2頁
面向計算機專業(yè)實驗室的實驗教學管理系統(tǒng)的數(shù)據(jù)庫實驗報告_第3頁
面向計算機專業(yè)實驗室的實驗教學管理系統(tǒng)的數(shù)據(jù)庫實驗報告_第4頁
面向計算機專業(yè)實驗室的實驗教學管理系統(tǒng)的數(shù)據(jù)庫實驗報告_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、目錄1、 設計題目2、 設計內(nèi)容3、 設計目的4、 設計過程5、 具體設計6、 運行及調(diào)試7、 附 錄8、 源 程 序 一、 設計題目 設計并實現(xiàn)一個面向計算機專業(yè)實驗室的實驗教學管理系統(tǒng)二、 設計內(nèi)容設計并實現(xiàn)一個面向計算機專業(yè)實驗室的實驗教學管理系統(tǒng)。該系統(tǒng)包含兩大模塊,即由實驗室工作人員使用的管理模塊,以及實驗的授課教師和學生使用的網(wǎng)上服務模塊。其中網(wǎng)上服務模塊要求采用B/S模式實現(xiàn),前端為瀏覽器。管理模塊采用B/S或C/S模式均可,開發(fā)工具不限,可采用PowerBuilder, Delphi, VB,VC,ASP.net等。后臺數(shù)據(jù)庫要求采用SQL SERVER2000。三、 設計目的

2、計算機專業(yè)實驗室面向計算機系若干專業(yè)的幾十個班級全天開放,排課和管理工作非常繁瑣。開發(fā)本系統(tǒng)的目的是將以往的開放式手工排課方式移植到計算機和網(wǎng)絡平臺,使授課教師可以通過網(wǎng)絡安排實驗,實驗室管理人員可以通過系統(tǒng)對實驗室進行管理,學生也可以通過該平臺了解實驗相關信息。根據(jù)用戶的不同角色,該系統(tǒng)的用戶可以分為三類:第一種是普通用戶,主要身份是學生,可以進行課表查詢、實驗信息了解、出勤情況查詢等操作;第二種是注冊用戶,身份是實驗授課教師,有普通用戶的所有權限,同時可以進行實驗排課、實驗信息管理、成績錄入、學生出勤信息管理等等。實驗授課老師包括任課教師和實驗室指導老師;第三種用戶是實驗室工作人員,具有管

3、理權限,可以生成空課表、修改排課信息、統(tǒng)計工作量、管理用戶信息等等。四、設計過程完成一個該系統(tǒng)的開發(fā),整個過程分成以下四個步驟:1.需求分析2.總體設計3.詳細設計4.運行及調(diào)試五、具體過程 1、需求分析 該系統(tǒng)主要包含兩大模塊:實驗室工作人員使用的模塊,實驗室授課教師和學生使用的網(wǎng)上服務模塊。 系統(tǒng)可實現(xiàn)的功能包括:授課教師模塊、學生模塊、系統(tǒng)管理員模塊和實驗室管理員模塊。 2、總體設計 1)授課教師a) 注冊網(wǎng)上服務b) 登陸網(wǎng)上服務c) 安排實驗:教師登陸系統(tǒng)之后,可以看到各個周次的排課情況,教師按照教學計劃在空閑時段安排實驗,要求填寫日期、周次、星期、節(jié)次、專業(yè)、班級、學生人數(shù)、課程名

4、稱、實驗內(nèi)容,備注等信息。其中,專業(yè)、節(jié)次、班級、課程名稱只能由用戶在下拉列表中選擇,不能自由輸入。d) 查詢實驗安排:提供多種查詢方式,包括按周次查詢?nèi)空n表、按課程名稱查詢該課程所有實驗安排,按任課教師姓名/實驗室指導老師姓名查詢該教師的所有實驗安排,按給定日期查詢。e) 學生成績錄入、查詢f) 學生實驗考勤、出勤情況查詢2)學生a) 查詢實驗安排(功能同上)b) 查詢實驗內(nèi)容c) 查詢成績d) 查詢出勤記錄3)實驗室管理人員a) 實驗課程注冊:實驗課程首先要注冊,包括課程名稱、課程編號、學生人數(shù)、實驗總學時,實驗內(nèi)容描述等。課程注冊之后,在排課模塊中才可以通過下拉列表選擇該課程。b) 實

5、驗課程管理:對實驗課程的相關信息進行修改、刪除等維護工作。c) 課表管理:實驗室管理人員可以排課,也可以對已排課程進行調(diào)整。d) 學生班級信息維護:包括專業(yè)名稱、班級、人數(shù)等。e) 授課教師基本信息維護f) 實驗室實驗指導老師基本信息維護g) 參數(shù)維護:包括某學期的第一天的日期和學期的規(guī)定教學周數(shù)。h) 查詢實驗(功能同上)i) 工作量計算:學期結(jié)束時,計算所有授課教師/實驗室指導老師該學期總的實驗教學工作量,計算公式見附錄。4)系統(tǒng)管理員a) 為實驗室工作人員分配操作帳號和操作權限。b) 密碼管理。操作員忘記密碼,可由系統(tǒng)管理員將密碼恢復為初始值。3、詳細設計 1)E-R模型圖2)數(shù)據(jù)表a)

6、 教師信息表教師編號(主鍵)int教師姓名varchar教師密碼varchar權限int授課班級varchar教授課程varcharb) 學生信息表學生編號(主鍵)Int授課教師varchar實驗科目Varchar實驗成績Int學生考勤State 0未到 1已到c) 實驗室管理信息表實驗科目(主鍵)userId實驗教師trueName實驗學生userName實驗安排userarg實驗選課userselect3)數(shù)據(jù)字典名字:教師信息別名:描述:關于教師的信息查詢定義:教師的姓名+教師的權限+授課班級+教授班級 位置:輸入到瀏覽器端名字:學生信息別名:描述:關于學生的信息查詢定義:學生的姓名+實

7、驗科目+出勤情況 位置:輸入到瀏覽器端名字:實驗室信息別名:描述:關于實驗室的信息查詢定義:教師的信息+學生信息+實驗安排+試驗選課 位置:輸入到瀏覽器端4) 關鍵技術 Structsstructs采用MVC模式,能夠很好地幫助java 開發(fā)者利用J2EE開發(fā)Web應用, 和其他的java架構(gòu)一樣,Struts 也是面向?qū)ο笤O計,將MVC模式分離顯示邏輯和業(yè)務邏輯的能力發(fā)揮得淋漓盡致。Structs 框架的核心是一個彈性的控制層,基于如 Java Servlets,JavaBeans,ResourceBundles與XML等標準技術,以及 Jakarta Commons 的一些類庫。Strut

8、s有一組相互協(xié)作的類(組件)、Serlvet以及jsp tag lib組成?;趕truts構(gòu)架的web應用程序基本上符合JSP Model2的設計標準,可以說是一個傳統(tǒng) MVC設計模式的一種變化類型。服務器啟動后,根據(jù)web.xml加載ActionServlet讀取struts-config.xml文件內(nèi)容到內(nèi)存。以登陸為例:第一次進Login.jsp會先實例化Form、把默認值賦給表單元素。輸入用戶名、密碼提交表單,提交到action屬性的UserDeal.do,通過ActionServlet讀struts-config.xml文件找到 action下的path屬性找到.do,通過name

9、屬性找form-beans中的form-bean的name屬性得到ActionForm的包名類名,先實例化form,把表單的值填充給form,調(diào)用form的validate方法驗證、ActionErrors返回null表示驗證通過,否則失敗返回input指定的頁面.驗證通過會實例化Action,執(zhí)行Action的excute方法。Hibernate hibernate的作用簡單的說就是在數(shù)據(jù)庫的外面包了一件面向?qū)ο蟮耐庖聜鹘y(tǒng)的數(shù)據(jù)庫操作都是面向過程的,如insert、delete、update等操作 而在hibernate中這些操作都被封裝到了對象中,使原本面向過程的數(shù)據(jù)庫操作變成面向?qū)ο缶幊?/p>

10、,從而使j2ee的開發(fā)一氣呵成,不會到數(shù)據(jù)庫操作時又改為面向過程的不便。Hibernate是一個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。4、運行a)登陸b)學生信息查詢c)實驗課查詢d)實驗課程管理e)實驗課程管理f)實驗查詢g)結(jié)果查詢5、測試5.1用例分析-增加學

11、生成績信息用例名稱增加學生成績信息用例編號用例描述授課教師需要增加學生成績信息時,執(zhí)行該用例,當新的學生成績信息保存后,該用例結(jié)束參與者授課教師前置條件授課教師登錄系統(tǒng)后置條件新的學生成績信息被保存基本操作流程1. 授課教師選擇專業(yè)和班級進行查詢2. 授課教師選擇學生和課程3. 授課教師輸入學生成績信息4. 系統(tǒng)驗證信息的合法性5. 系統(tǒng)提交信息6. 系統(tǒng)保存信息替代流程(1)替換基本流程第5步觸發(fā)條件:當基本流程第4步驗證失敗時執(zhí)行處理: 1.系統(tǒng)給出驗證失敗的數(shù)據(jù)項,并給出數(shù)據(jù)驗證的提示信息 2.退回至基本流程第3步被泛化的用例無被包含的用例無被擴展的用例無5.2用例分析-按班級名稱查詢學

12、生班級信息用例名稱按班級名稱查詢學生班級信息用例編號用例描述實驗室工作人員需要按班級名稱查詢學生班級信息時,執(zhí)行該用例,當數(shù)據(jù)顯示后,該用例結(jié)束參與者實驗室工作人員前置條件實驗室工作人員登錄系統(tǒng)后置條件無基本操作流程1. 實驗室工作人員輸入班級名稱關鍵字2. 系統(tǒng)提交信息替代流程無被泛化的用例無被包含的用例無被擴展的用例無5.3用例分析-按班級查詢學生成績信息用例名稱按班級查詢學生成績信息用例編號用例描述授課教師需要按班級查詢學生成績信息時,執(zhí)行該用例,當數(shù)據(jù)顯示后,該用例結(jié)束參與者授課教師前置條件授課教師登錄系統(tǒng)后置條件無基本操作流程1. 授課教師輸入班級名稱關鍵字2. 系統(tǒng)提交信息替代流程

13、無被泛化的用例無被包含的用例無被擴展的用例無5.4用例分析增加學生出勤信息用例名稱增加學生出勤信息用例編號用例描述授課教師需要增加學生出勤信息時,執(zhí)行該用例,當新的學生出勤信息保存后,該用例結(jié)束參與者授課教師前置條件授課教師登錄系統(tǒng)后置條件新的學生出勤信息被保存基本操作流程4. 授課教師選擇專業(yè)和班級進行查詢5. 授課教師選擇學生和課程6. 授課教師輸入學生成績信息4. 系統(tǒng)驗證信息的合法性5. 系統(tǒng)提交信息6. 系統(tǒng)保存信息替代流程(1)替換基本流程第5步觸發(fā)條件:當基本流程第4步驗證失敗時執(zhí)行處理: 1.系統(tǒng)給出驗證失敗的數(shù)據(jù)項,并給出數(shù)據(jù)驗證的提示信息 2.退回至基本流程第3步被泛化的用

14、例無被包含的用例無被擴展的用例無附錄:參考書目:大型數(shù)據(jù)庫數(shù)據(jù)庫教程Oracle 10g數(shù)據(jù)庫管理員指南數(shù)據(jù)庫系統(tǒng)概論七、實驗源碼javaScript表單驗證function validateInput(formObj) if(formObj.username.value=) alert(用戶名不能為空); formObj.username.focus(); else if(formObj.password.value=) alert(密碼不能為空); formObj.password.focus(); else if(formObj.captcha.value=) alert(驗證碼不能為空

15、); formObj.captcha.focus(); else writeMember(); checkInputValue(); Ajax無刷新通信 function checkInputValue() var xmlHttpObj = createXMLHttp();xmlHttpObj.open(POST,adminLogin.do?method=adminLogin,true);var sendInfo = &username=+document.form1.username.value+&password=+document.form1.password.value+ &captc

16、ha=+document.form1.captcha.value+&userType=+document.form1.userType.value;xmlHttpObj.setRequestHeader(Content-type, application/x-www-form-urlencoded);xmlHttpObj.send(sendInfo);xmlHttpObj.onreadystatechange = function() if(xmlHttpObj.readyState = 4) var textInfo = xmlHttpObj.responseText; if(textInf

17、o!=登錄成功) alert(textInfo); else window.location.href=/ETMProject/admin/default.htm; function createXMLHttp() var aVersions = MSXML2.XMLHttp.5.0,MSXML2.XMLHttp.4.0,MSXML2.XMLHttp.3.0,MSXML2.XMLHttp,Microsoft.XMLHttp;for(var i = 0; i aVersions.length; i+) try var oXmlHttp = new ActiveXObject(aVersionsi

18、);return oXmlHttp; catch (oError) /不處理throw new Error(MSXML is not installed.);javaScript+Xml技術菜單框var collapse_all = 閉合;var expand_all = 展開;var collapse = true;function toggleCollapse() var items = document.getElementsByTagName(LI); for (i = 0; i items.length; i+) if (collapse) if (itemsi.className

19、= explode) toggleCollapseExpand(itemsi, collapse); else if ( itemsi.className = collapse) toggleCollapseExpand(itemsi, explode); ToggleHanlder.Reset(); collapse = !collapse; document.getElementById(toggleImg).src = collapse ? images/menu_minus.gif : images/menu_plus.gif; document.getElementById(togg

20、leImg).alt = collapse ? collapse_all : expand_all;function toggleCollapseExpand(obj, status) if (obj.tagName.toLowerCase() = li & obj.className != menu-item) for (i = 0; i obj.childNodes.length; i+) if (obj.childNodesi.tagName = UL) if (status = null) if (obj.childNodes1.style.display != none) obj.c

21、hildNodes1.style.display = none; ToggleHanlder.RecordState(obj.getAttribute(key), collapse); obj.className = collapse; else obj.childNodes1.style.display = block; ToggleHanlder.RecordState(obj.getAttribute(key), explode); obj.className = explode; break; else if( status = collapse) ToggleHanlder.Reco

22、rdState(obj.getAttribute(key), collapse); obj.className = collapse; else ToggleHanlder.RecordState(obj.getAttribute(key), explode); obj.className = explode; obj.childNodes1.style.display = (status = explode) ? block : none; document.getElementById(menu-list).onclick = function(e) var obj = Utils.src

23、Element(e); toggleCollapseExpand(obj);document.getElementById(tabbar-div).onmouseover=function(e) var obj = Utils.srcElement(e); if (obj.className = tab-back) obj.className = tab-hover; document.getElementById(tabbar-div).onmouseout=function(e) var obj = Utils.srcElement(e); if (obj.className = tab-

24、hover) obj.className = tab-back; document.getElementById(tabbar-div).onclick=function(e) var obj = Utils.srcElement(e); var mnuTab = document.getElementById(menu-tab); var hlpTab = document.getElementById(help-tab); var mnuDiv = document.getElementById(menu-list); var hlpDiv = document.getElementByI

25、d(help-div); if (obj.id = menu-tab) mnuTab.className = tab-front; hlpTab.className = tab-back; mnuDiv.style.display = block; hlpDiv.style.display = none; if (obj.id = help-tab) mnuTab.className = tab-back; hlpTab.className = tab-front; mnuDiv.style.display = none; hlpDiv.style.display = block; loc =

26、 parent.framesmain-frame.location.href; pos1 = loc.lastIndexOf(/); pos2 = loc.lastIndexOf(?); pos3 = loc.indexOf(act=); pos4 = loc.indexOf(&, pos3); filename = loc.substring(pos1 + 1, pos2 - 4); act = pos4 0 ? loc.substring(pos3 + 4) : loc.substring(pos3 + 4, pos4); loadHelp(filename, act); /* * 載入幫

27、助內(nèi)容 */function loadHelp(filename, act) var doc = createDocument(); var path = help/ + helpLang + / + filename + .xml; document.getElementById(help-title).innerHTML = ; document.getElementById(help-content).innerHTML = noHelp; try doc.load(path); var items = doc.getElementsByTagName(section); for (i

28、= 0; i items.length; i+) if (itemsi.getAttribute(id) = act) var title = itemsi.getElementsByTagName(title); document.getElementById(help-title).innerHTML = (Browser.isIE) ? title0.text : title0.textContent; var content = itemsi.getElementsByTagName(content); document.getElementById(help-content).inn

29、erHTML = (Browser.isIE) ? content0.text : content0.textContent; break; ; catch (e) alert(e.message); /* * 創(chuàng)建XML對象 */function createDocument() var xmlDoc; / create a DOM object if (window.ActiveXObject) try xmlDoc = new ActiveXObject(Msxml2.DOMDocument.6.0); catch (e) try xmlDoc = new ActiveXObject(M

30、sxml2.DOMDocument.5.0); catch (e) try xmlDoc = new ActiveXObject(Msxml2.DOMDocument.4.0); catch (e) try xmlDoc = new ActiveXObject(Msxml2.DOMDocument.3.0); catch (e) alert(e.message); else if (document.implementation & document.implementation.createDocument) xmlDoc = document.implementation.createDo

31、cument(,doc,null); else alert(Create XML object is failed.); xmlDoc.async = false; return xmlDoc;/菜單展合狀態(tài)處理器var ToggleHanlder = new Object();Object.extend(ToggleHanlder , SourceObject : new Object(), CookieName : Toggle_State, RecordState : function(name,state) if(state = collapse) this.SourceObjectn

32、ame = state; else if(this.SourceObjectname) delete(this.SourceObjectname); var date = new Date(); date.setTime(date.getTime() + 99999999); document.setCookie(this.CookieName, this.SourceObject.toJSONString(), date.toGMTString(); , Reset :function() var date = new Date(); date.setTime(date.getTime()

33、+ 99999999); document.setCookie(this.CookieName, , date.toGMTString(); , Load : function() if (document.getCookie(this.CookieName) != null) this.SourceObject = eval(+ document.getCookie(this.CookieName) +); var items = document.getElementsByTagName(LI); for (var i = 0; i items.length; i+) if ( items

34、0.getAttribute(name) = menu) for (var k in this.SourceObject) if ( typeof(itemsi) = object) if (itemsi.getAttribute(key) = k) toggleCollapseExpand(itemsi, this.SourceObjectk); collapse = false; document.getElementById(toggleImg).src = collapse ? images/menu_minus.gif : images/menu_plus.gif; document

35、.getElementById(toggleImg).alt = collapse ? collapse_all : expand_all; );ToggleHanlder.CookieName += _3;/初始化菜單狀態(tài)ToggleHanlder.Load();Struts標簽庫INPUT type=checkboxvalue=name=classIdA title=修改href=classInfo.do?method=InitUpdateClassInfo&classId=A title=回收站href=classInfo.do?method=deleteClassInfo&classI

36、d= JSP標簽分頁public int doStartTag() throws JspException String pageNum=pageContext.getRequest().getParameter(pageNumber);int pageNumber=1;if(pageNum!=null)pageNumber=Integer.parseInt(pageNum);int pageCount=1;if(pageContext.getRequest().getAttribute(pageCount)!=null)pageCount=(Integer)pageContext.getRe

37、quest().getAttribute(pageCount).intValue();elsepageCount=(Integer)pageContext.getSession().getAttribute(pageCount).intValue(); JspWriter out = pageContext.getOut();String page = null;if(pageCount = 1) page = 首頁  上一頁  下一頁  尾頁   else if(pageNumber = pageCount) page=首頁  上一頁  

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論