欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    面向计算机专业实验室的实验教学管理系统的数据库实验报告.doc

    • 资源ID:36165825       资源大小:1.42MB        全文页数:26页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    面向计算机专业实验室的实验教学管理系统的数据库实验报告.doc

    目录1、 设计题目2、 设计内容3、 设计目的4、 设计过程5、 具体设计6、 运行及调试7、 附 录8、 源 程 序 一、 设计题目 设计并实现一个面向计算机专业实验室的实验教学管理系统二、 设计内容设计并实现一个面向计算机专业实验室的实验教学管理系统。该系统包含两大模块,即由实验室工作人员使用的管理模块,以及实验的授课教师和学生使用的网上服务模块。其中网上服务模块要求采用B/S模式实现,前端为浏览器。管理模块采用B/S或C/S模式均可,开发工具不限,可采用PowerBuilder, Delphi, VB,VC,ASP.net等。后台数据库要求采用SQL SERVER2000。三、 设计目的计算机专业实验室面向计算机系若干专业的几十个班级全天开放,排课和管理工作非常繁琐。开发本系统的目的是将以往的开放式手工排课方式移植到计算机和网络平台,使授课教师可以通过网络安排实验,实验室管理人员可以通过系统对实验室进行管理,学生也可以通过该平台了解实验相关信息。根据用户的不同角色,该系统的用户可以分为三类:第一种是普通用户,主要身份是学生,可以进行课表查询、实验信息了解、出勤情况查询等操作;第二种是注册用户,身份是实验授课教师,有普通用户的所有权限,同时可以进行实验排课、实验信息管理、成绩录入、学生出勤信息管理等等。实验授课老师包括任课教师和实验室指导老师;第三种用户是实验室工作人员,具有管理权限,可以生成空课表、修改排课信息、统计工作量、管理用户信息等等。四、设计过程完成一个该系统的开发,整个过程分成以下四个步骤:1.需求分析2.总体设计3.详细设计4.运行及调试五、具体过程 1、需求分析 该系统主要包含两大模块:实验室工作人员使用的模块,实验室授课教师和学生使用的网上服务模块。 系统可实现的功能包括:授课教师模块、学生模块、系统管理员模块和实验室管理员模块。 2、总体设计 1)授课教师a) 注册网上服务b) 登陆网上服务c) 安排实验:教师登陆系统之后,可以看到各个周次的排课情况,教师按照教学计划在空闲时段安排实验,要求填写日期、周次、星期、节次、专业、班级、学生人数、课程名称、实验内容,备注等信息。其中,专业、节次、班级、课程名称只能由用户在下拉列表中选择,不能自由输入。d) 查询实验安排:提供多种查询方式,包括按周次查询全部课表、按课程名称查询该课程所有实验安排,按任课教师姓名/实验室指导老师姓名查询该教师的所有实验安排,按给定日期查询。e) 学生成绩录入、查询f) 学生实验考勤、出勤情况查询2)学生a) 查询实验安排(功能同上)b) 查询实验内容c) 查询成绩d) 查询出勤记录3)实验室管理人员a) 实验课程注册:实验课程首先要注册,包括课程名称、课程编号、学生人数、实验总学时,实验内容描述等。课程注册之后,在排课模块中才可以通过下拉列表选择该课程。b) 实验课程管理:对实验课程的相关信息进行修改、删除等维护工作。c) 课表管理:实验室管理人员可以排课,也可以对已排课程进行调整。d) 学生班级信息维护:包括专业名称、班级、人数等。e) 授课教师基本信息维护f) 实验室实验指导老师基本信息维护g) 参数维护:包括某学期的第一天的日期和学期的规定教学周数。h) 查询实验(功能同上)i) 工作量计算:学期结束时,计算所有授课教师/实验室指导老师该学期总的实验教学工作量,计算公式见附录。4)系统管理员a) 为实验室工作人员分配操作帐号和操作权限。b) 密码管理。操作员忘记密码,可由系统管理员将密码恢复为初始值。3、详细设计 1)E-R模型图2)数据表a) 教师信息表教师编号(主键)int教师姓名varchar教师密码varchar权限int授课班级varchar教授课程varcharb) 学生信息表学生编号(主键)Int授课教师varchar实验科目Varchar实验成绩Int学生考勤State 0未到 1已到c) 实验室管理信息表实验科目(主键)userId实验教师trueName实验学生userName实验安排userarg实验选课userselect3)数据字典名字:教师信息别名:描述:关于教师的信息查询定义:教师的姓名+教师的权限+授课班级+教授班级 位置:输入到浏览器端名字:学生信息别名:描述:关于学生的信息查询定义:学生的姓名+实验科目+出勤情况 位置:输入到浏览器端名字:实验室信息别名:描述:关于实验室的信息查询定义:教师的信息+学生信息+实验安排+试验选课 位置:输入到浏览器端4) 关键技术 Structsstructs采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用, 和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Servlets,JavaBeans,ResourceBundles与XML等标准技术,以及 Jakarta Commons 的一些类库。Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是一个传统 MVC设计模式的一种变化类型。服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。以登陆为例:第一次进Login.jsp会先实例化Form、把默认值赋给表单元素。输入用户名、密码提交表单,提交到action属性的UserDeal.do,通过ActionServlet读struts-config.xml文件找到 action下的path属性找到.do,通过name属性找form-beans中的form-bean的name属性得到ActionForm的包名类名,先实例化form,把表单的值填充给form,调用form的validate方法验证、ActionErrors返回null表示验证通过,否则失败返回input指定的页面.验证通过会实例化Action,执行Action的excute方法。Hibernate  hibernate的作用简单的说就是在数据库的外面包了一件面向对象的外衣传统的数据库操作都是面向过程的,如insert、delete、update等操作  而在hibernate中这些操作都被封装到了对象中,使原本面向过程的数据库操作变成面向对象编程,从而使j2ee的开发一气呵成,不会到数据库操作时又改为面向过程的不便。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。4、运行a)登陆b)学生信息查询c)实验课查询d)实验课程管理e)实验课程管理f)实验查询g)结果查询5、测试5.1用例分析-增加学生成绩信息用例名称增加学生成绩信息用例编号用例描述授课教师需要增加学生成绩信息时,执行该用例,当新的学生成绩信息保存后,该用例结束参与者授课教师前置条件授课教师登录系统后置条件新的学生成绩信息被保存基本操作流程1. 授课教师选择专业和班级进行查询2. 授课教师选择学生和课程3. 授课教师输入学生成绩信息4. 系统验证信息的合法性5. 系统提交信息6. 系统保存信息替代流程(1)替换基本流程第5步触发条件:当基本流程第4步验证失败时执行处理: 1.系统给出验证失败的数据项,并给出数据验证的提示信息 2.退回至基本流程第3步被泛化的用例无被包含的用例无被扩展的用例无5.2用例分析-按班级名称查询学生班级信息用例名称按班级名称查询学生班级信息用例编号用例描述实验室工作人员需要按班级名称查询学生班级信息时,执行该用例,当数据显示后,该用例结束参与者实验室工作人员前置条件实验室工作人员登录系统后置条件无基本操作流程1. 实验室工作人员输入班级名称关键字2. 系统提交信息替代流程无被泛化的用例无被包含的用例无被扩展的用例无5.3用例分析-按班级查询学生成绩信息用例名称按班级查询学生成绩信息用例编号用例描述授课教师需要按班级查询学生成绩信息时,执行该用例,当数据显示后,该用例结束参与者授课教师前置条件授课教师登录系统后置条件无基本操作流程1. 授课教师输入班级名称关键字2. 系统提交信息替代流程无被泛化的用例无被包含的用例无被扩展的用例无5.4用例分析增加学生出勤信息用例名称增加学生出勤信息用例编号用例描述授课教师需要增加学生出勤信息时,执行该用例,当新的学生出勤信息保存后,该用例结束参与者授课教师前置条件授课教师登录系统后置条件新的学生出勤信息被保存基本操作流程4. 授课教师选择专业和班级进行查询5. 授课教师选择学生和课程6. 授课教师输入学生成绩信息4. 系统验证信息的合法性5. 系统提交信息6. 系统保存信息替代流程(1)替换基本流程第5步触发条件:当基本流程第4步验证失败时执行处理: 1.系统给出验证失败的数据项,并给出数据验证的提示信息 2.退回至基本流程第3步被泛化的用例无被包含的用例无被扩展的用例无附录:参考书目:大型数据库数据库教程Oracle 10g数据库管理员指南数据库系统概论七、实验源码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('验证码不能为空'); 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+ "&captcha="+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(textInfo!="登录成功") 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);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 = "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('toggleImg').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.childNodes1.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.RecordState(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.srcElement(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-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.getElementById('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 = parent.frames'main-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); /* * 载入帮助内容 */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 = 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").innerHTML = (Browser.isIE) ? content0.text : content0.textContent; break; ; catch (e) alert(e.message); /* * 创建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("Msxml2.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.createDocument("","doc",null); else alert("Create XML object is failed."); xmlDoc.async = false; return xmlDoc;/菜单展合状态处理器var ToggleHanlder = new Object();Object.extend(ToggleHanlder , SourceObject : new Object(), CookieName : 'Toggle_State', RecordState : function(name,state) if(state = "collapse") this.SourceObjectname = 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() + 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 ( items0.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.getElementById('toggleImg').alt = collapse ? collapse_all : expand_all; );ToggleHanlder.CookieName += "_3"/初始化菜单状态ToggleHanlder.Load();Struts标签库<logic:notEmpty name="classInfoList"><logic:iterate id="classInfo" name="classInfoList"><TR><TD align="center"><INPUT type=checkboxvalue="<bean:write property="classId" name="classInfo"/>"name="classId"></TD><TD class=first-cell align="center"><bean:write property="className" name="classInfo" /></TD><TD align="center"><bean:write property="amount" name="classInfo" /></TD><TD align="center"><bean:write property="specialityInfoVO.specialityName" name="classInfo" /></TD><TD align="center"><A title=修改href="classInfo.do?method=InitUpdateClassInfo&classId=<bean:write property="classId" name="classInfo"/>"><IMG height=16 src="images/icon_edit.gif" width=16border=0></A><A title=回收站href="classInfo.do?method=deleteClassInfo&classId=<bean:write property="classId" name="classInfo"/>"><IMG height=16 src="images/icon_trash.gif" width=16border=0></A></TD></TR></logic:iterate></logic:notEmpty> JSP标签分页public int doStartTag() throws JspException String pageNum=pageContext.getRequest().getParameter("pageNumber");int pageNumber=1;if(p

    注意事项

    本文(面向计算机专业实验室的实验教学管理系统的数据库实验报告.doc)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开