毕业设计(论文):毕业设计管理系统

毕业设计(论文):毕业设计管理系统

ID:18998127

大小:1.76 MB

页数:37页

时间:2018-09-20

上传者:U-4969
毕业设计(论文):毕业设计管理系统_第1页
毕业设计(论文):毕业设计管理系统_第2页
毕业设计(论文):毕业设计管理系统_第3页
毕业设计(论文):毕业设计管理系统_第4页
毕业设计(论文):毕业设计管理系统_第5页
资源描述:

《毕业设计(论文):毕业设计管理系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

*******************实践教学*******************兰州理工大学计算机与通信学院2013年春季学期工程开发综合训练题目:毕业设计管理系统专业班级:10级软件工程基地班姓名:***学号:***指导教师:***成绩:-1- 摘要该毕业设计管理系统采用的是B/S结构,以SqlServer2008+myeclipse+JSP作为开发工具。本系统借助了网络平台,不但使学生与老师进行有效的沟通,使学生可以及时的了解有关毕业论文的相关事情,而且使论文的上传查看、信息的管理、用户的管理和数据库的管理等工作更加容易,既提高了工作效率,也降低了成本。本系统主要针对于高校的毕业设计环节进行管理。本系统实现了管理员对系统用户信息(管理员信息、教师信息、学生信息)、课题信息管理等;教师角色对个人信息的修改,课题的添加,查询管理、选题管理,论文管理等;评审角色对个人信息的修改,课题的评审等;学生角色可以对个人信息修改,查看成绩、选题登记与查询,论文提交与查看。关键词:毕业论文选题;管理系统;SQLServer;J2EE;GPMS-1- 目录摘要I目录II一、需求分析11.1毕业论文管理的现状11.2毕业论文管理系统的优势11.3系统流程图21.4层次结构图31.5数据流程图61.5数据字典7二、概念结构设计92.1系统E-R图9三、逻辑结构设计103.1各个表的结构10四、系统实现134.1建立数据库134.1.1数据库创建流程134.1.2数据库关系134.2程序设计144.2.1工程目录结构144.2.2核心技术说明144.3项目研发时间线20五、系统测试215.1测试方案215.2测试用例及结果21六、软件使用说明书246.1登陆界面246.2主界面246.3查看个人信息256.4修改密码256.5维护个人信息266.6上报课题266.7课题查询276.8未评题目查询276.9题目评审286.10任务下派286.11发布题目296.12信息统计306.13信息管理30七、设计总结32八、致谢33九、参考文献34 一、需求分析1.1毕业论文管理的现状目前,国内外毕业论文选题一般采用两种方式:一种将毕业设计存在软盘上交;另一种则存放到教师的电脑上的一个共享目录内。但这两种方法都有各自的弊端:前一种方法不方便携带、速度慢、容量小、易损坏;后一种方法虽然解决了软盘容量小、容易坏的问题。但存在一个更致命的缺点:学生可以随意的查看、更改和删除其他同学的毕业设计,造成大量如抄袭毕业设计、恶意删除或修改其他同学毕业设计的事情发生;老师在帮学生修改毕业设计时,也很容易弄不清楚毕业设计批改与否;毕业设计是谁的或是旧毕业设计没删除掉,跟新毕业设计搞混了等情况,虽然有些可以用严格的纪律来实现管理,但仍然会给学生和老师带来很多的麻烦。而且,由于毕业设计是一个持续较长时间的过程,这其中需要同学和老师不断的沟通,但是期间若是由于学生有事或身体不适等情况,就不得不中途请假,而这势必会影响到毕业设计的顺利完成。在当前的信息化时代中,任何学校,都需要一个实用的毕业论文选题来规范毕业论文选题,这将会大大提高学校的管理水平,优化资源,实现效益的最大化。现在国内外也有很多毕业论文选题的软件,采用的技术也是多种多样,如基于JSP、FTP模式,但大多数毕业论文选题主要用于网络学院的远程教学。至于校园内的正规教学,利用毕业论文选题组织管理教学活动的并不多。针对国内外对教学管理软件的巨大需要和基本需要,一个好的教学管理软件,必须功能齐全,操作简便,向用户展示友善的操作界面。在完善功能的同时又必须兼顾系统的灵活性,安全性,健壮性。一个好的教学管理系统,不管是计算机专业人员还是其他用户都能很快上手,操作简单,便于安装,容易普及。1.2毕业论文管理系统的优势由于学校教学功能的特殊定位,致使教师和学生必须在除了简单的师生区别外,还有合作意味的关系。学生上交毕业设计和老师批改毕业设计,这本身除了学习交流外,还是一个合作的概念。所以,这其中的信息管理流程,需要以一个规范的MIS来管理。毕业论文管理系统的优势主要表现在三个方面:34 1、毕业设计无纸化,环保又方便。传统的毕业设计上交方式,都是经由学生科目代表统一收齐后,交到教师办公室,然后教师抽取一个整段的时间,或是若干分时间段,一份一份地手工翻阅批改,然后再做好相关记录。这种传统的方式,一是会有很大的体力消耗,二是在精力上也是不小的付出,而且这种辛苦在很多时候往往没能得到满意的回复。而无纸化毕业设计,只需在电脑前点点鼠标,在体力上几乎没有多大的消耗,而且在环保、效率、针对性教学指导方面做得要比传统的毕业论文选题科学得多。2、科学管理,安全可靠。传统的毕业论文选题方式,都是一份份独立的毕业设计,一个学生对应一份,而这么一撂的设计,经常会由于各种原因,丢失或是污损,给毕业论文选题和教学进程带来很大的麻烦和不便。而毕业论文选题的动作,只需做好系统数据库的保护,以上问题可以迎刃而解了。3、简化工作,促进其他方面的综合发展。由于毕业论文选题的介入运行,可以使教师腾出更多的时间,做更多针对性的个性化教学服务,从而使每个学生都有机会在学业上有更大的进步。1.3系统流程图登录失败登陆成功登陆者的身份学生登录界面主界面学生模块教师模块评审人模块管理员模块教师管理评审人图1-1系统流程图34 1.4层次结构图图1-2学生层次结构图图1-3教师层次结构图34 图1-4评审人层次结构图34 图1-5管理员层次结构图34 1.5数据流程图图1-6系统数据流图34 1.5数据字典主要的数据字典:表1-1管理员信息数据字典名字:管理员信息别名:administrator描述:管理员的相关信息定义:管理员信息=管理员id+管理员name+管理员password位置:存于数据库表1-2教师信息数据字典名字:教师信息别名:teacher描述:教师的相关信息定义:教师信息=教师id+教师密码+教师姓名+教师职称+教师性别+教师工作地点+教师QQ+教师电话位置:存于数据库表1-3学生信息数据字典名字:学生信息别名:student描述:学生的相关信息定义:学生信息=学生id+学生姓名+学生性别+学生系别+学生专业+学生年级+学生班级+学生成绩+学生电话+学生密码位置:存于数据库表1-4课题信息数据字典名字:课题信息别名:topic描述:课题的相关信息定义:课题信息=课题id+课题名+出题教师+课题类别+所属专业+需求人数+课题要求+课题内容位置:存于数据库表1-5学生选题数据字典名字:学生选题信息别名:choosetopic描述:学生和已选的课题的对应关系定义:学生选题信息=学生id+课题id位置:存于数据库,在选题时应用34 表1-6管理员分配答辩老师数据字典名字:管理员分配答辩老师别名:answer描述:管理员为每一个课题分配5位答辩老师,其中一名为答辩组长。定义:管理员分配答辩老师=答辩题目id+答辩题目+答辩组长+答辩老师1+答辩老师2+答辩老师3+答辩老师4+答辩时间+答辩教室位置:存于数据库,在答辩时应用表1-7学生成绩信息数据字典名字:学生成绩信息别名:score描述:学生成绩的相关信息定义:学生成绩信息=成绩id+学生名字+实习成绩+指导成绩+评阅成绩+答辩成绩位置:存于数据库,在归档时应用34 二、概念结构设计2.1系统E-R图本系统涉及的实体主要由管理员、教师、学生、课题组成,主要有监督、出题、审题、选题等几个关系。各实体属性和关系图如下图所示。管理员姓名密码教师职称学历密码性别教研室姓名电话专业监督监督监督学生密码班级电话性别姓名课题专业班级评题人出题人名称管理员学生教师课题审题出题选题1n1n1nnn11n图2-1系统E-R图34 34 三、逻辑结构设计3.1各个表的结构表3-1教师表(T_teacher)序号列号数据类型长度小数标识主键允许空默认值示意说明1Tidint20是否教工号2Tnamevachar20姓名3Tpasswordvarchar32否密码MD5加密表3-2教师详细信息表(T_teadetail)序号列号数据类型长度小数标识主键允许空默认值示意说明1TidInt是否教工号外键(T_teacher::Tid)2TnameVachar20姓名3Tsexchar2性别4Schidtinyint学院号外键(T_schools::Schid)5Tphonebigint电话6Tqqbigintqq7Tmailvarchar50邮箱8Tworkplacevarchar30办公地点9Ttitlevarchar10职称表3-3毕设题目表(T_topic)序号列号数据类型长度小数标识主键允许空默认值示意说明1Topidint是否题目编号2Topnamevarchar50否题目名称3Toppropertychar8题目性质理论研究,生产实践,科学实验34 4Toptypechar10题目类型工程设计型,工程技术型,实验研究型,软件开发型5Topsourcevarchar50题目来源6Topcontenttext题目内容7Toptimedatetime否getdate()发布日期8Topselectbit0是否已被选1为是;0为否9Tidint否教师编号外键(T_teacher::Tid)表3-4毕设题目临时表(T_temptopictb)序号列号数据类型长度小数标识主键允许空默认值示意说明1Topidint是否题目编号2Topnamevarchar50否题目名称3Toppropertychar8题目性质理论研究,生产实践,科学实验4Toptypechar10题目类型工程设计型,工程技术型,实验研究型,软件开发型5Topsourcevarchar50题目来源6Topcontenttext题目内容7Toptimedatetime否getdate()上报日期8Tidint教师编号外键(T_teacher::Tid)9Ridint0评审编号外键(T_reviewer::Rid)34 表3-5系(专业)表(T_faculties)序号列号数据类型长度小数标识主键允许空默认值示意说明1Fidtinyint是否系编号2Fnamevarchar30否系名称表3-6-学院表(T_schools)序号列号数据类型长度小数标识主键允许空默认值示意说明1Schidtinyint是否学院编号2Schnamevarchar30否学院名称34 四、系统实现4.1建立数据库数据库采用SqlServer2008,数据库名称为GPMS。4.1.1数据库创建流程数据库创建流程如下:图4.1.1数据库创建流程4.1.2数据库关系数据库关系图如下:34 图4.1.2数据库关系图4.2程序设计4.2.1工程目录结构4.2.2核心技术说明34 1、J2EE中重量级框架我们采用JavaServlet+JavaServerPages(JSP)+EnterpriseJavaBean(EJB)的J2EE中重量级框架,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。2、DAO(数据库接口层)的封装在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。我们采用DAO的思想,将所有对数据源数据库的访问操作抽象封装在几个接口类中,使事务界限更加清晰,分离了业务逻辑和数据库基础操作,代码结构也看起来非常清晰。还有一个好处是,数据库的修改只要修改DAO层的访问方式就可以了,不用整个项目都进行修改。3、Ajax技术异步刷新传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,AJAX应用可以仅向服务器发送并取回必需的数据(而不是返回整个页面,只是把从服务器端上取出的数据填充到div或span层上去而已,实现无刷新的效果),它使用SOAP或其它一些基于XML的webservice接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。4、数据库连接池34 在传统的两层结构中,客户端程序在启动时打开数据库连接,在退出程序时关闭数据库连接。这样,在整个程序运行中,每个客户端始终占用一个数据库连接,即使在大量没有数据库操作的空闲时间,如用户输入数据时,从而造成数据库连接的使用效率低下。在三层结构模式中,数据库连接通过中间层的连接池管理。只有当用户真正需要进行数据库操作时,中间层才从连接池申请一个连接,数据库操作完毕,连接立即释放到连接池中,以供其他用户使用。这样,不仅大大提高了数据库连接的使用效率,使得大量用户可以共享较少的数据库连接,而且省去了建立连接的时间。我们以Tomcat7数据库连接池配置sqlserver2008。TomcatJDBC连接池提供对多种数据库的支持。前提要修改tomcat服务器目录下面的conf中的Context.xml配置文件和程序中的Web.xml文件,代码中以如下方式实现:Context c = new InitialContext();DataSource ds = (DataSource)c.lookup("java:comp/env/jdbc/books");conn = ds.getConnection();5、动态页面的实现(CSS+动态js脚本)JS的作用是制作动.态网页效果等,是提高用户体验的利器!而CSS是定义网页样式,让网页元素更好的表现给用户,好的的网页表现形式也能提高用户体验!js可以使网页的功能更加丰富,给网页添加更多实时的、动态的、交互的内容。当服务端需要对数据进行验证时,使用javascript可以在客户端验证数据,不需要把数据传到服务器端再传回来,比较节省时间。你可以把网页里的内容隐藏起来,然后当鼠标放到某个地方的时候把隐藏的内容显示出来,就像这个页面右上角的”我的知道“那个菜单做的事情。网页里的下拉菜单基本上都使用js完成。当你查看表格的时候,表格的内容很多,你可以使用js给每一行数据设置不同的颜色以示区分,也可以用js完成鼠标指到表格上表格就变色的功能。6、批量信息图表统计程序以javascript实现将数据库中动态数据以图表形式显示在页面上,利用ajax将实现更好的用户体验。这样做减轻了服务端的压力。不过,这种方式的确定是客户端变得庞大。而且其实现原理很复杂,基本是div实现点阵字原理(一点点画上去的)来实现的。效率就显得不够快。和原来用jfreechart比较,感觉jfreechart不好的地方是他总是先生成图。然后利用src来显示,其效率也不怎么高。不过服务器好的话,客户端就轻松。7、中文字符串相似度检测的实现34 Levenshtein距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫LevenshteinDistance算法。在程序中,为实现题目相似度匹配功能,我采用了LevenshteinDistance算法和最长公共子序列算法LCS(LongestCommonSubsequence)相结合的方式,计算预上报题目名称和已发布题目的相似百分度。经过大量数据测试,发现计算结果大于60%题目存在较为明显的相似,故将结果定为相似度大于60%无法上报。核心代码如下://LCSalgorithm最长公共子序列算法privatestaticintlongestCommonSubstringLength(StringS1,StringS2){returnlongestCommonSubstrings(S1,S2,0).toString().length();}privatestaticCollectionlongestCommonSubstrings(StringS1,StringS2,intminimumLength){Collectionindexes=newArrayList();intMax=minimumLength;for(inti=0;iMax){Max=x;indexes=newArrayList();indexes.add(i);}elseif(x==Max){indexes.add(i);}}}Collectionresults=newHashSet();for(Integeri:indexes){results.add(S1.substring(i,(i+Max)));}returnresults;}//LevenshteinDistance算法实现publicstaticdoublegetEditDistance(Strings,Stringt){intd[][];//matrixintn;//lengthofsintm;//lengthoftinti;//iteratesthroughsintj;//iteratesthroughtchars_i;//ithcharacterofschart_j;//jthcharacteroft34 intcost;//costintdistance;//editdistancedoublesimilarity;//Step1n=s.length();m=t.length();Stringss=s+s;intlen=longestCommonSubstringLength(ss,t);if(len>s.length())len=s.length();len*=2;//Prevent100%similaritybetweenastringandits//cyclicallyshiftedversion(e.g."aircon"and"conair")if(len==s.length()+t.length()&&s.length()==t.length()){len--;similarity=len/((s.length()+t.length())*1.0)*100;returnsimilarity;}else{if(n==0){returnm;}if(m==0){returnn;}d=newint[n+1][m+1];//Step2for(i=0;i<=n;i++){d[i][0]=i;}for(j=0;j<=m;j++){d[0][j]=j;}//Step3for(i=1;i<=n;i++){s_i=s.charAt(i-1);//Step4for(j=1;j<=m;j++){t_j=t.charAt(j-1);//Step5if(s_i==t_j){cost=0;}else{cost=1;}//Step6d[i][j]=Minimum(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+cost);}}distance=d[n][m];similarity=(1-distance/((s.length()+t.length())*1.0))*100;returnsimilarity;}}34 8、美观高效验证码的实现验证码一般是防止有人利用机器人自动批量注册、对特定的注册用户用特定程序暴力破解方式进行不断的登陆、灌水。因为验证码是一个混合了数字或符号的图片,人眼看起来都费劲,机器识别起来就更困难。我们的图片验证码经过多次测试检验,采用数字“0-9”和字母“a-z”“A-Z”,排除易混淆的字母和数字,不区分大小写。通过测试,乳白色底字码更易识别,随机干扰线和随机干扰点20条左右最合适。//定义验证码图像的缓冲流BufferedImagebuffImg=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//产生图形上下文Graphics2Dg=buffImg.createGraphics();//创建随机数产生函数Randomrandom=newRandom();//将验证码图像背景填充为白色g.setColor(Color.WHITE);g.fillRect(0,0,width,height);//创建字体格式,字体的大小则根据验证码图片的高度来设定。Fontfont=newFont("Fixedsys",Font.BOLD,fontHeight);//设置字体。g.setFont(font);//为验证码图片画边框,为一个像素。g.setColor(Color.GRAY);g.drawRect(0,0,width-1,height-1);//随机生产22跳图片干扰线条,使验证码图片中的字符不被轻易识别g.setColor(Color.LIGHT_GRAY);for(inti=0;i<22;i++){intx=random.nextInt(width);inty=random.nextInt(height);intxl=random.nextInt(12);intyl=random.nextInt(12);g.drawLine(x,y,x+xl,y+yl);}//randomCode保存随机产生的验证码StringBufferrandomCode=newStringBuffer();//定义颜色三素intred=0,green=0,blue=0;//随机生产codeNum个数字验证码for(inti=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
大家都在看
近期热门
关闭