毕业设计管理系统设计_第1页
毕业设计管理系统设计_第2页
毕业设计管理系统设计_第3页
毕业设计管理系统设计_第4页
毕业设计管理系统设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图4-2系统结构图4.1.4表结构设计设计的表为:管理员表(person),教师表(teacher),学生表(student),课题表(title),教师布置任务表(task),学生提交任务表(task1),系统状态表(system)。各个表的结构如下:表4-1管理员调剂选题表(adjust)列名数据类型长度是否可为空说明IdInt4N学生IdNameVarchar20N学生名字说明:该表存储管理员调剂相关的信息表4-2答辩老师分配表(answer)列名数据类型长度是否可为空说明answer_idInt4N答辩Id(主键)answer_titleVarchar20Y答辩题目answer_zuzhangVarchar20Y答辩组长answer_t1Varchar20Y答辩老师1answer_t2Varchar20Y答辩老师2answer_t3Varchar20Y答辩老师3answer_t4Varchar20Y答辩老师4answer_timeVarchar20Y答辩时间answer_roomVarchar20Y答辩教室说明:该表存储答辩老师相关的信息表4-3留言板信息表(bbs)列名数据类型长度是否可为空说明主题idint4N留言号楼主Varchar20N楼主主题Varchar130N主题回复Int4Y回复人气Int4Y人气发表时间Varchar50N发表时间最后回复Varchar20Y最后回复内容text20Y内容该表存储留言板相关的信息表4-4课题类别信息表(category)列名数据类型长度是否可为空说明category_idInt4N留言号category_nameVarchar50Y楼主category_professionalVarchar50Y主题category_departmentVarchar50Y回复该表存储课题相关的信息表4-5新闻信息表(news)列名数据类型长度是否可为空说明news_idInt4N新闻号news_contentVarchar300Y新闻内容news_titleVarchar50Y新闻题目该表存储新闻相关的信息表4-6管理员表(person)列名数据类型长度是否可为空说明idVarchar20N管理员idnameVarchar20N管理员姓名passwordVarchar20Y管理员密码该表存储管理员相关的信息表4-7成绩显示表(score)列名数据类型长度是否可为空说明score_idInt4N学生idscore_nameVarchar20Y学生姓名score_sxVarchar20Y实习成绩score_zdVarchar20Y指导成绩score_pyVarchar20Y评阅成绩score_dbVarchar20Y答辩成绩score_zVarchar20Y答辩组长score_a1Varchar20Y平均成绩1score_db1Varchar20Y答辩老师1score_db2Int4N答辩老师2score_db3Varchar20Y答辩老师3score_db4Varchar20Y答辩老师4score_a2Varchar20Y平均成绩2表4-8教师表(teacher)列名数据类型长度是否可为空说明teacher_idInt4N教师Idteacher_nameVarchar50N教师姓名teacher_sexVarchar50Y教师性别teacher_recordVarchar50Y教师学历teacher_postVarchar50Y教师职称teacher_roomVarchar50Y教研室teacher_phoneVarchar50Y教师电话teacher_roleVarchar50Y角色teacher_departmentVarchar50Y系别teacher_emailVarchar50Y邮箱号teacher_passwordVarchar50Y教师密码teacher_powerInt4Y教师权限说明:该表存储教师相关的信息表4-9学生表(student)列名数据类型长度是否可为空说明stu_idInt4N学生Idstu_nameVarchar50N学生姓名stu_sexVarchar50Y学生性别stu_departmentVarchar50Y系别stu_professionalVarchar50Y专业stu_gradeVarchar50Y年级stu_classVarchar50Y班级stu_phoneVarchar50Y电话stu_emailVarchar50Y邮箱号stu_qqVarchar20YQQ号stu_passwordVarchar50N学生密码stu_titleInt50Y所选课题stu_scoreInt4Y分数stu_lockVarchar50Y锁定标志说明:该表存储学生相关的信息表4-10课题表(title)列名数据类型长度是否可为空说明title_idInt4N课题Idtitle_nameVarchar50N课题名title_teacherVarchar50Y出题教师title_categoryVarchar50Y课题类别title_professionalVarchar50Y使用专业title_numVarchar50Y需求认识title_requireVarchar80Y课题要求title_flagVarchar50Y是否选中title_contentVarchar50Y课题内容title_checkVarchar20Y是否审核title_xnumInt4Y已选人数title_appraiseVarchar50Y评阅教师说明:该表存储课题相关的信息表4-11文件信息表(file)列名数据类型长度是否可为空说明file_idInt4Y文件idfile_nameVarchar255N文件名file_sizeInt4Y文件大小file_routeVarchar50Y文件路径file_personVarchar50N上传人说明:该表存储上传文件相关的信息表4-12系统状态表(system)列名数据类型长度是否可为空说明system_idint4N系统Idsystem_namevarchar50N系统名system_openbit1N开启状态说明:该表存储系统状态相关的信息4.2详细设计4.2.1系统概述详细设计阶段的关键任务是确定怎样具体地实现用户需要的软件系统,也就是要设计出程序的“蓝图”。除了应该保证软件的可靠性之外,使将来编写出的程序可读性好、容易理解、容易测试和维护,是详细设计阶段最重要的目标。1.本人设计的模块有出题、选题子系统、系统维护子系统和评阅答辩管理等。最初时管理员应对系统进行初始化,初始化完后,教师拥有权限进行出题操作,教师出题完毕,管理员应对该课题进行审核,审核通过后学生这时拥有权限进行选课操作,学生选课操作完毕,这时,教师可以从选择他所出课题的学生中选择适合该课题的学生,达到一种双向的自主选择。操作完毕后,可能存在某些学生没有选上题目,这时可以通过管理员的调剂操作来处理,把没选题的学生调剂到缺少人数的课题或者重新出题来满足要求,是每个学生都有题可做。这时,指导教师应指导学生完成毕业设计,完成后应由评阅教师进行评阅。2.出题阶段参与工作的有相关的教师,他们由教师表(表4-8)确定,每一个教师在登录的时候就可以进入自己的界面。教师根据要求填写自己的课题和相关要求,可以通过多次登录就行修改、删除和提交来完成出题工作,所出课题存储于课题表(表4-10),也可以通过留言板与管理员交流。开始开始是否登录成功?出题出题成功?结束YYNN图4-3出题流程图3.选题阶段首先由管理员确定发布内容。学生通过登录自己的界面,可以看到题目的全部信息并且进行选择。在达到限定时间后,由管理员通过人工干预的方式确定最终的选题结果。在确定的时间内和学生完成选题后,由管理员根据题目和学生的具体情况,通过人工干预的方式,对表4-11进行处理,确定每一个学生的题目,协调学生和题目之间的关系。开始开始是否登录成功?选题选题成功?结束YYNN图4-4选题流程图4.在评题阶段,首先由管理员通过对表4-2的输入,确定每一个评题阶段的评题人;然后评题人通过登录自己的界面进行评题。开始是否登录成功?评阅开始是否登录成功?评阅评阅成功?结束YYNN4.在答辩阶段,首先由管理员通过对表4-2的输入,确定每一个题目的答辩组长和其他四位答辩老师;然后答辩老师通过登录自己的界面进行答辩管理。4.2.2系统流程图查看课题信息查看课题信息审核课题提交课题课题通过确定课题选择学生NYNY开始登录成功?结束成功?YNNY图4-7系统流程图第5章系统实现第5章系统实现5.1数据库连接<%!StringDBDRIVER="com.microsoft.jdbc.sqlserver.SQLServerDriver";StringDBURL="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=bishe";StringDBUSER="sa";StringDBPASSWORD="";Connectionconn=null;Statementpstmt=null;ResultSetrs=null;%><%Stringsql="……";try{Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);pstmt=conn.createStatement();rs=pstmt.executeQuery(sql);}catch(Exceptione){}%>5.2系统各模块功能及实现效果图5.2.1出题模块及效果图出题模块主要主要通过在页面设置表单,出题人点击提交按钮后把相应的表单信息存入数据库bishe的表title中。实现的主要代码:Stringsql="insertintotitle(title_name,title_teacher,title_category,title_professional,title_num,title_require,title_flag,title_content)values(?,?,?,?,?,?,?,?)";效果图如下:图5-1出题效果图5.2.2审题模块及效果图审题模块主要通过从数据表title中查询出某教师的所有课题,从中选择未审核的课题进行审核,同时更新数据表title。审核成功且通过后,学生自主选题。主要实现代码:Stringsql="updatetitlesettitle_name=?,title_teacher=?,title_category=?,title_professional=?,title_num=?,title_require=?,title_flag=?,title_content=?,title_check=?wheretitle_id=?;";实现效果图:图5-2审题5.2.3选题模块及效果图选题模块主要是先在学生主页中显示所有的已通过审核的课题,学生点击课题名查看课题详细信息后,如果对课题有兴趣就点击选题按钮,把所选课题名存入数据表student中。主要实现代码:Stringsql="updatetitlesettitle_xnum=title_xnum+1wheretitle_id=?;";Stringsql1="updatestudentsetstu_title=?wherestu_name=?andstu_lock='no'";Stringsql2="selectstu_titlefromstudentwherestu_name=?";实现效果图:图5-3选题效果图5.2.4评阅模块及效果图评阅模块主要通过从数据表teacher中查询出所有教师,从中选择合适的教师为评阅教师,同时更新数据表title。成为评阅教师后,教师可以评阅相应课题并给出成绩。主要实现代码:Stringsql="updatetitlesettitle_appraise=?wheretitle_name='"+title+"'"; Stringsql2="updateteachersetteacher_power='"+2+"'whereteacher_name=?";实现效果图:图5.2.5答辩模块及效果图答辩模块主要通过从数据表teacher中查询出所有教师,从中选择合适的教师为答辩教师,同时更新数据表title。成为答辩教师后,教师可以答辩相应课题并给出成绩。主要实现代码:Stringsql="updatetitlesettitle_answer=?wheretitle_name='"+title+"'"; Stringsql2="updateteachersetteacher_power='"+2+"'whereteacher_name=?";实现效果图:图5-7选择评阅教师5.2.6调剂模块及效果图调剂模块主要是管理员查找还未选题的学生,为其选择课题。实现时先选中某课题,再查找未选题的学生,为课题选择合适的学生点击提交后存入数据表中。主要实现代码:<SCRIPTLANGUAGE="JavaScript">sortitems=1;<!--设定初始值-->functionmove(fbox,tbox){for(vari=0;i<fbox.options.length;i++){if(fbox.options[i].selected&&fbox.options[i].value!=""){varno=newOption();<!--新建变量-->no.value=fbox.options[i].value;<!--获取弹出列表中的序号-->no.text=fbox.options[i].text;<!--获取弹出列表的文字-->tbox.options[tbox.options.length]=no;<!--将弹出的文字和序号写入接收列表-->fbox.options[i].value="";<!--将弹出列表中弹出的项置空-->fbox.options[i].text="";<!--将弹出列表中弹出的项的文字置空-->}}BumpUp(fbox);<!--弹出列表的文字-->if(sortitems)SortD(tbox);<!--对列表中的文字进行排序-->}functionBumpUp(box){for(vari=0;i<box.options.length;i++){<!--依次对每一项进行处理-->if(box.options[i].value==""){<!--如果某一项为空-->for(varj=i;j<box.options.length-1;j++){<!--将该项后边的每一项均前移-->box.options[j].value=box.options[j+1].value;<!--移动value值-->box.options[j].text=box.options[j+1].text;<!--移动文字-->}varln=i;break;<!--记录空值的项-->}}if(ln<box.options.length){<!--如果空值的项小于总长度-->box.options.length-=1;<!--总长度减1-->BumpUp(box);<!--继续调用弹出-->}}functionSortD(box){vartemp_opts=newArray();<!--创建一个新的数组-->vartemp=newObject();<!--创建一个新的object对象-->for(vari=0;i<box.options.length;i++){<!--对列表中的项依次进行处理-->temp_opts[i]=box.options[i];<!--将列表中的每一项存在temp_opts中-->}for(varx=0;x<temp_opts.length-1;x++){for(vary=(x+1);y<temp_opts.length;y++){if(temp_opts[x].text>temp_opts[y].text){temp=temp_opts[x].text;<!--获得第x项的文字-->temp_opts[x].text=temp_opts[y].text;<!--将第y项的文字赋值给第x项的文字-->temp_opts[y].text=temp;<!--同时temp中文字赋值给第y项-->temp=temp_opts[x].value;<!--再将第x项中的value存放再temp中-->temp_opts[x].value=temp_opts[y].value;<!--再将第y项中的value付给第x项-->temp_opts[y].value=temp;<!--第y项value的值换成temp的值-->}}}for(vari=0;i<box.options.length;i++){box.options[i].value=temp_opts[i].value;<!--将value值赋给当前列表中-->box.options[i].text=temp_opts[i].text;<!--将文字赋给当前列表中-->}}</script>实现效果图:图5-8调剂5.3查询及分页显示功能5.3.1查询功能<td>搜索字段:<selectname="field"> <optionvalue="title_name">题目</option> <optionvalue="title_teacher">教师</option></select></td><td>搜索条件:<inputtype="text"name="term"></td>Stringfield=request.getParameter("field");Stringterm=request.getParameter("term");term=newString(term.trim().getBytes("ISO8859_1"),"GB2312");Stringsql="select*fromtitlewhere"+field+"='"+term+"'";5.3.2分页显示功能//countpage总页数,sqan宽度,count总纪录数,fpage现在页,fcount现纪录数 Stringstrpages=(String)request.getParameter("pages"); intpages=0; if(strpages==null){pages=0;}else{pages=Integer.parseInt(strpages); } rs.last(); intsqan=4,j=0,fcount=0; intcount=rs.getRow(); intcountpage=count/sqan; if(count%sqan>0)countpage=countpage+1; if(pages<0)pages=0; if(pages>count1)pages=count1; fcount=pages*sqan+1; intfpage=(count-fcount)/sqan+1; rs.absolute(fcount); rs.previous();5.4应用中出现的问题与解决方法世界上的各地区都有本地的语言。地区差异直接导致了语言环境的差异。在开发一个国际化程序的过程中,处理语言问题就显得很重要了。这其中汉字是双字节的,所谓双字节是指一个双字要占用两个BYTE的位置(即16位),分别称为高位和低位。中国规定的汉字编码为GB2312,这是强制性的,目前几乎所有的能处理中文的应用程序都支持GB2312。另外有一种编码,叫做GBK,但这是一份规范,不是强制的。GBK提供了20902个汉字,它兼容GB2312,编码范围为0x8140到0xfefe。GBK中的所有字符都可以一一映射到Unicode2.0。 当我们在处理数据库中的信息时,无论是把信息从数据库中取出来传到web页面上,还是把web页面中的信息用request对象的getParameter方法取进来插入数据库中,都会出现乱码问题。其原因就是Java语言内部是用Unicode表示字符的,采用unicode编码。Java程序无论是从/往文件系统以字符流读/写文件,还是往URL连接写HTML信息,或从URL连接读取参数值,都会有字符编码的转换。所以两个方向转换都有可能得到错误的结果。 针对这个问题,我把从html取进来的所有信息,都经过编码转化了一下,一般我们最常用的编码方式就是GB2312,GBK,UTF-8和ISO8859-1。我用的是ISO8859-1编码方式,ISO8859-1是我们平时使用比较多的一个CodePage,它属于西欧语系。1、用JDBC执行SELECT语句从服务器端读取数据(中文)后,但不能正确显示在网页上,将数据按“ISO-8859-1”编码方式转化为字节数组,再按系统缺省编码方式(DefaultCharacterEncoding)转化为STRING,就可以了。但是一般情况下,在转换字符串时不采用系统默认编码方式,而直接采用“GBK”或者“GB2312”,所以从数据库取数据显示时是不会出现问题的。2、当我们要向数据库中插入中文数据时,处理方式与“取中文”相逆,先将SQL语句按系统缺省编码方式转化为字节数组,再按“ISO-8859-1”编码方式转化为STRING,最后送去执行,则中文信息可正确写入数据库。结论 第6章系统测试6.1测试方法的介绍黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。"黑盒"法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。"黑盒"法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。白盒测试按照程序内部的逻辑对程序进行测试,检查程序中的每条通路是否能按预定要求正确工作。白盒测试又称为结构测试。在这里主要采用的是黑盒测试,并以白盒测试为辅助测试。6.2测试环境硬件:cup:CeleronM1.5Ghz内存:512M硬盘:40G软件:MicrosoftwindowsXPJBuilder2005SqlServer2000数据库6.3测试对象6.3.1管理员模块登录时,输入正确的和错误的用户名和密码,转向是否正确。登录成功后管理员的各项功能是否能正确实现。6.3.2教师模块登录时,输入正确的和错误的用户名和密码,转向是否正确。登录成功后教师的各项功能是否能正确实现。6.3.3学生模块登录时,输入正确的和错误的用户名和密码,转向是否正确。登录成功后学生的各项功能是否能正确实现。6.4测试用例及结果6.4.1管理员模块1.登录时,输入正确的和错误的用户ID和密码,转向是否正确1)正确的用户名和密码:输入:用户名:admin,密码:xs预期输出:跳转到管理员模块主页2)错误的用户名和密码:输入:用户名:fddgg,密码:000预期输出:跳转到管理员登陆页面以上测试用例经过验证是正确的2.管理员登录成功后,是否可以进行审题操作。图6-1审核测试3.是否可以选择评阅教师。图6-4选择评阅教师测试以上测试用例经过验证与预期结果相符6.4.2教师模块1.登录时,输入正确的和错误的用户ID和密码,转向是否正确1)正确的用户名和密码:输入:用户名:黄新枝,密码:yuanfang预期输出:登陆到教师模块主页2)错误的用户名和密码:输入:用户名:12345,密码:345预期输出:跳转到教师登陆页面以上测试用例经过验证是正确的2.教师登录成功后,是否可以进行出题管理。图6-3添加课题测试3.是否可以选择评阅教师。图6-4选择评阅教师测试以上测试用例经过验证与预期结果相符6.4.3学生模块1.登录时,输入正确的和错误的用户名和密码,转向是否正确1)正确的用户名和密码:输入:用户名:王群芳,密码:xs预期输出:跳转到学生模块主页2)错误的用户名和密码:输入:用户名:76,密码:000预期输出:跳转到学生登陆页面2.学生登录成功后,是否可以选题和自拟课题。图6-8选题测试以上测试用例经过验证与预期结果相符结论本设计从课题的申报、课题的审核、学生选题等环节进行管理,实现了学生自主选题和教师自主选择学生的网上双向选择,同时对毕业设计的各个环节进行监控。本系统实现了网上双向选择,严格了毕业设计进程控制,能够保证毕业设计高质量的完成。本系统同样也存在很多问题,比如:代码完全是嵌在页面上的,安全性不高,代码也很繁琐;注入式攻击;非正常字符的检测;数据表的设计也没有做到最优。这些都是应该加强改进的地方。致谢致谢在这里要感谢四年来学院对我的培养,感谢指导老师邢老师在这几个月来的关心和严格细致的指导;感谢电子与信息工程系老师在百忙之中为我解答疑难问题,感谢老师们对我的精心栽培;也要感谢在毕设中同学们对我的帮助;感谢所有帮助过我的人,谢谢大家!参考文献参考文献[1]飞思科技产品研发中心.JSP应用开发详解(第二版)[M].北京:电子工业出版社,2004年.[2]吴以欣,陈小宁.JavaScript脚本程序设计[M].北京:人民邮电出版社,2005年5月[3]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,2000年2月.[4]Borland公司.Jbuilder2005编程与开发[M].北京:电子工业出版社,2005年4月.[5]孙卫琴、李洪成.Tomcat与JavaWeb开发技术详解[M].北京:电子工业出版社,2004年4月.[6]程凯.JSP中文问题及一套整体解决方案[J].许昌学院学报,2006,25(5):77-80.[7]刘长生,谢强.丁秋林.Java应用中的汉字乱码问题分析[C].计算机技术与发展,2006,16(1):158-161.[8]袁健美.基于JSP的B/S动态网站开发及数据库连接[C].HYPERLINK"0/periodicals/periodical.aspx?c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论