收藏 分销(赏)

管理系统设计说明书-学位论文.doc

上传人:可**** 文档编号:3007415 上传时间:2024-06-13 格式:DOC 页数:37 大小:1.70MB
下载 相关 举报
管理系统设计说明书-学位论文.doc_第1页
第1页 / 共37页
管理系统设计说明书-学位论文.doc_第2页
第2页 / 共37页
管理系统设计说明书-学位论文.doc_第3页
第3页 / 共37页
管理系统设计说明书-学位论文.doc_第4页
第4页 / 共37页
管理系统设计说明书-学位论文.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

1、*实践教学* 兰州理工大学计算机与通信学院 2013年春季学期工程开发综合训练题 目: 毕业设计管理系统 专业班级: 10级软件工程基地班 姓 名: * 学 号: * 指导教师: * 成 绩: - 1 -摘 要该毕业设计管理系统采用的是B/S结构,以Sql Server 2008 + myeclipse + JSP作为开发工具。本系统借助了网络平台,不但使学生与老师进行有效的沟通,使学生可以及时的了解有关毕业论文的相关事情,而且使论文的上传查看、信息的管理、用户的管理和数据库的管理等工作更加容易,既提高了工作效率,也降低了成本。本系统主要针对于高校的毕业设计环节进行管理。本系统实现了管理员对系

2、统用户信息(管理员信息、教师信息、学生信息)、课题信息管理等;教师角色对个人信息的修改,课题的添加,查询管理、选题管理,论文管理等;评审角色对个人信息的修改,课题的评审等;学生角色可以对个人信息修改,查看成绩、选题登记与查询,论文提交与查看。关键词:毕业论文选题;管理系统;SQL Server;J2EE;GPMS目录摘 要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

3、.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毕业论文管理的现状目前,国内外毕业

4、论文选题一般采用两种方式:一种将毕业设计存在软盘上交;另一种则存放到教师的电脑上的一个共享目录内。但这两种方法都有各自的弊端:前一种方法不方便携带、速度慢、容量小、易损坏;后一种方法虽然解决了软盘容量小、容易坏的问题。但存在一个更致命的缺点:学生可以随意的查看、更改和删除其他同学的毕业设计,造成大量如抄袭毕业设计、恶意删除或修改其他同学毕业设计的事情发生;老师在帮学生修改毕业设计时,也很容易弄不清楚毕业设计批改与否;毕业设计是谁的或是旧毕业设计没删除掉,跟新毕业设计搞混了等情况,虽然有些可以用严格的纪律来实现管理,但仍然会给学生和老师带来很多的麻烦。而且,由于毕业设计是一个持续较长时间的过程,

5、这其中需要同学和老师不断的沟通,但是期间若是由于学生有事或身体不适等情况,就不得不中途请假,而这势必会影响到毕业设计的顺利完成。在当前的信息化时代中,任何学校,都需要一个实用的毕业论文选题来规范毕业论文选题,这将会大大提高学校的管理水平,优化资源,实现效益的最大化。现在国内外也有很多毕业论文选题的软件,采用的技术也是多种多样,如基于JSP、FTP模式,但大多数毕业论文选题主要用于网络学院的远程教学。至于校园内的正规教学,利用毕业论文选题组织管理教学活动的并不多。针对国内外对教学管理软件的巨大需要和基本需要,一个好的教学管理软件,必须功能齐全,操作简便,向用户展示友善的操作界面。在完善功能的同时

6、又必须兼顾系统的灵活性,安全性,健壮性。一个好的教学管理系统,不管是计算机专业人员还是其他用户都能很快上手,操作简单,便于安装,容易普及。1.2毕业论文管理系统的优势由于学校教学功能的特殊定位,致使教师和学生必须在除了简单的师生区别外,还有合作意味的关系。学生上交毕业设计和老师批改毕业设计,这本身除了学习交流外,还是一个合作的概念。所以,这其中的信息管理流程,需要以一个规范的MIS来管理。毕业论文管理系统的优势主要表现在三个方面:1、毕业设计无纸化,环保又方便。传统的毕业设计上交方式,都是经由学生科目代表统一收齐后,交到教师办公室,然后教师抽取一个整段的时间,或是若干分时间段,一份一份地手工翻

7、阅批改,然后再做好相关记录。这种传统的方式,一是会有很大的体力消耗,二是在精力上也是不小的付出,而且这种辛苦在很多时候往往没能得到满意的回复。而无纸化毕业设计,只需在电脑前点点鼠标,在体力上几乎没有多大的消耗,而且在环保、效率、针对性教学指导方面做得要比传统的毕业论文选题科学得多。2、科学管理,安全可靠。传统的毕业论文选题方式,都是一份份独立的毕业设计,一个学生对应一份,而这么一撂的设计,经常会由于各种原因,丢失或是污损,给毕业论文选题和教学进程带来很大的麻烦和不便。而毕业论文选题的动作,只需做好系统数据库的保护,以上问题可以迎刃而解了。3、简化工作,促进其他方面的综合发展。由于毕业论文选题的

8、介入运行,可以使教师腾出更多的时间,做更多针对性的个性化教学服务,从而使每个学生都有机会在学业上有更大的进步。1.3 系统流程图登录失败登陆成功登陆者的身份学生登录界面主界面学生模块教师模块评审人模块管理员模块教师管理评审人图1-1 系统流程图341.4层次结构图图1-2 学生层次结构图图1-3 教师层次结构图图1-4 评审人层次结构图图1-5 管理员层次结构图1.5数据流程图图1-6 系统数据流图1.5数据字典 主要的数据字典:表1-1 管理员信息数据字典名字:管理员信息别名:administrator描述:管理员的相关信息定义:管理员信息=管理员id+管理员name+管理员password

9、位置:存于数据库表1-2 教师信息数据字典名字:教师信息别名:teacher描述:教师的相关信息定义:教师信息=教师id+教师密码+教师姓名+教师职称+教师性别+教师工作地点+教师QQ+教师电话位置:存于数据库表1-3 学生信息数据字典名字:学生信息别名:student描述:学生的相关信息定义:学生信息=学生id+学生姓名+学生性别+学生系别+学生专业+学生年级+学生班级+学生成绩+学生电话+学生密码位置:存于数据库表1-4课题信息数据字典名字:课题信息别名:topic描述:课题的相关信息定义:课题信息=课题id+课题名+出题教师+课题类别+所属专业+需求人数+课题要求+课题内容位置:存于数据

10、库表1-5学生选题数据字典名字:学生选题信息别名:choosetopic描述:学生和已选的课题的对应关系定义:学生选题信息=学生id+课题id位置:存于数据库,在选题时应用表1-6管理员分配答辩老师数据字典名字:管理员分配答辩老师别名:answer描述:管理员为每一个课题分配5位答辩老师,其中一名为答辩组长。定义:管理员分配答辩老师=答辩题目id+答辩题目+答辩组长+答辩老师1+答辩老师2+答辩老师3+答辩老师4+答辩时间+答辩教室位置:存于数据库,在答辩时应用表1-7 学生成绩信息数据字典名字:学生成绩信息别名:score描述:学生成绩的相关信息定义:学生成绩信息=成绩id+学生名字+实习成

11、绩+指导成绩+评阅成绩+答辩成绩位置:存于数据库,在归档时应用二、概念结构设计2.1系统E-R图本系统涉及的实体主要由管理员、教师、学生、课题组成,主要有监督、出题、审题、选题等几个关系。各实体属性和关系图如下图所示。管理员姓名密码教师职称学历密码性别教研室姓名电话专业监督监督监督学生密码班级电话性别姓名课题专业班级评题人出题人名称管理员学生教师课题审题出题选题1n1n1nnn11n图2-1 系统E-R图三、逻辑结构设计3.1各个表的结构表3-1教师表(T_teacher)序号列号数据类型长度小数标识主键允许空默认值示意说明1Tidint20是否教工号2Tnamevachar20姓名3Tpas

12、swordvarchar32否密码MD5加密表3-2教师详细信息表(T_teadetail)序号列号数据类型长度小数标识主键允许空默认值示意说明1TidInt是否教工号外键(T_teacher:Tid)2TnameVachar20姓名3Tsexchar2性别4Schidtinyint学院号外键(T_schools:Schid)5Tphonebigint电话6Tqqbigintqq7Tmailvarchar50邮箱8Tworkplacevarchar30办公地点9Ttitlevarchar10职称表3-3毕设题目表(T_topic)序号列号数据类型长度小数标识主键允许空默认值示意说明1Topid

13、int是否题目编号2Topnamevarchar50否题目名称3Toppropertychar8题目性质理论研究,生产实践, 科学实验4Toptypechar10题目类型工程设计型,工程技术型,实验研究型,软件开发型5Topsourcevarchar50题目来源6Topcontenttext题目内容7Toptimedatetime否getdate()发布日期8Topselectbit0是否已被选1为是;0为否9Tidint否教师编号外键(T_teacher:Tid)表3-4毕设题目临时表(T_temptopictb)序号列号数据类型长度小数标识主键允许空默认值示意说明1Topidint是否题目

14、编号2Topnamevarchar50否题目名称3Toppropertychar8题目性质理论研究,生产实践, 科学实验4Toptypechar10题目类型工程设计型,工程技术型,实验研究型,软件开发型5Topsourcevarchar50题目来源6Topcontenttext题目内容7Toptimedatetime否getdate()上报日期8Tidint教师编号外键(T_teacher:Tid)9Ridint0评审编号外键(T_reviewer:Rid)表3-5系(专业)表(T_faculties)序号列号数据类型长度小数标识主键允许空默认值示意说明1Fidtinyint是否系编号2Fna

15、mevarchar30否系名称表 3-6-学院表(T_schools)序号列号数据类型长度小数标识主键允许空默认值示意说明1Schidtinyint是否学院编号2Schnamevarchar30否学院名称四、系统实现4.1 建立数据库数据库采用SqlServer2008,数据库名称为GPMS。4.1.1数据库创建流程数据库创建流程如下:图4.1.1 数据库创建流程4.1.2数据库关系数据库关系图如下:图4.1.2 数据库关系图4.2 程序设计4.2.1 工程目录结构4.2.2 核心技术说明1、J2EE中重量级框架 我们采用Java Servlet + Java Server Pages (JS

16、P) + Enterprise Java Bean (EJB )的J2EE中重量级框架,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。2、DAO(数据库接口层)的封装在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,

17、并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。我们采用DAO的思想,将所有对数据源数据库的访问操作抽象封装在几个接口类中,使事务界限更加清晰,分离了业务逻辑和数据库基础操作,代码结构也看起来非常清晰。还有一个好处是,数据库的修改只要修改DAO层的访问方式就可以了,不用整个项目都进行修改。3、Ajax技术异步刷新传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做 法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响

18、应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,AJAX应用可以仅向服务器发送并取回必需的数据(而不是返回整个页面,只是把从服务器端上取出的数据填充到div或span层上去而已,实现无刷新的效果),它使用SOAP或其它一些基于 XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快 的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用

19、程序更为 迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。4、数据库连接池在传统的两层结构中,客户端程序在启动时打开数据库连接,在退出程序时关闭数据库连接。这样,在整个程序运行中,每个客户端始终占用一个数据库连接,即使在大量没有数据库操作的空闲时间,如用户输入数据时,从而造成数据库连接的使用效率低下。 在三层结构模式中,数据库连接通过中间层的连接池管理。只有当用户真正需要进行数据库操作时,中间层才从连接池申请一个连接,数据库操作完毕,连接立即释放到连接池中,以供其他用户使用。这样,不仅大大提高了数据库

20、连接的使用效率,使得大量用户可以共享较少的数据库连接,而且省去了建立连接的时间。 我们以Tomcat7数据库连接池配置sqlserver2008。Tomcat JDBC连接池提供对多种数据库的支持。前提要修改tomcat服务器目录下面的conf中的Context.xml配置文件和程序中的 Web.xml文件,代码中以如下方式实现: Contextc=newInitialContext();DataSourceds=(DataSource)c.lookup(java:comp/env/jdbc/books);conn=ds.getConnection();5、动态页面的实现(CSS+动态js脚本

21、)JS的作用是制作动.态网页效果等,是提高用户体验的利器!而CSS是定义网页样式,让网页元素更好的表现给用户,好的的网页表现形式也能提高用户体验!js可以使网页的功能更加丰富,给网页添加更多实时的、动态的、交互的内容。当服务端需要对数据进行验证时,使用javascript可以在客户端验证数据,不需要把数据传到服务器端再传回来,比较节省时间。你可以把网页里的内容隐藏起来,然后当鼠标放到某个地方的时候把隐藏的内容显示出来,就像这个页面右上角的”我的知道“那个菜单做的事情。网页里的下拉菜单基本上都使用js完成。当你查看表格的时候,表格的内容很多,你可以使用js给每一行数据设置不同的颜色以示区分,也可

22、以用js完成鼠标指到表格上表格就变色的功能。6、批量信息图表统计程序以javascript实现将数据库中动态数据以图表形式显示在页面上,利用ajax将实现更好的用户体验。这样做减轻了服务端的压力。不过,这种方式的确定是客户端变得庞大。而且其实现原理很复杂,基本是div实现点阵字原理(一点点画上去的)来实现的。效率就显得不够快。和原来用jfreechart比较,感觉jfreechart不好的地方是他总是先生成图。然后利用src来显示,其效率也不怎么高。不过服务器好的话,客户端就轻松。7、中文字符串相似度检测的实现Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个

23、所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance算法。在程序中,为实现题目相似度匹配功能,我采用了Levenshtein Distance算法和最长公共子序列算法LCS(Longest Common Subsequence)相结合的方式,计算预上报题目名称和已发布题目的相似百分度。经过大量数据测试,发现计算结果大于60%题目存在较为明显的相似,故将结果定为相似度大于60%无法上报。核心代码如下: /LCS algorithm 最长公共子序

24、列算法 private static int longestCommonSubstringLength(String S1, String S2) return longestCommonSubstrings(S1, S2, 0).toString().length(); private static Collection longestCommonSubstrings(String S1, String S2, int minimumLength) Collection indexes = new ArrayList(); int Max = minimumLength; for (int

25、i = 0; i S1.length(); i+) for (int j = 0; j S2.length(); j+) int x = 0; int y = Math.min(S1.length()-i,S2.length()-j); while (x Max) Max = x; indexes = new ArrayList(); indexes.add(i); else if (x = Max) indexes.add(i); Collection results = new HashSet(); for (Integer i : indexes) results.add(S1.subs

26、tring(i, (i + Max); return results; /Levenshtein Distance 算法实现 public static double getEditDistance(String s, String t) int d; / matrix int n; / length of s int m; / length of t int i; / iterates through s int j; / iterates through t char s_i; / ith character of s char t_j; / jth character of t int

27、cost; / cost int distance; /edit distance double similarity; / Step 1 n = s.length(); m = t.length(); String ss = s+s; int len = longestCommonSubstringLength(ss,t); if(lens.length() len=s.length(); len *= 2; / Prevent 100% similarity between a string and its / cyclically shifted version (e.g. aircon

28、 and conair) if (len = s.length() + t.length() & s.length()=t.length() len-; similarity = len/(s.length()+t.length()*1.0)*100; return similarity; else if (n = 0) return m; if (m = 0) return n; d = new intn + 1m + 1; / Step 2 for (i = 0; i = n; i+) di0 = i; for (j = 0; j = m; j+) d0j = j; / Step 3 fo

29、r (i = 1; i = n; i+) s_i = s.charAt(i - 1); / Step 4 for (j = 1; j = m; j+) t_j = t.charAt(j - 1); / Step 5 if (s_i = t_j) cost = 0; else cost = 1; / Step 6 dij = Minimum(di - 1j + 1, dij - 1 + 1, di - 1j - 1 + cost); distance = dnm; similarity = (1-distance/(s.length()+t.length()*1.0)*100; return s

30、imilarity; 8、美观高效验证码的实现验证码一般是防止有人利用机器人自动批量注册、对特定的注册用户用特定程序暴力破解方式进行不断的登陆、灌水。因为验证码是一个混合了数字或符号的图片,人眼看起来都费劲,机器识别起来就更困难。我们的图片验证码经过多次测试检验,采用数字“0-9”和字母“a-z”“A-Z”,排除易混淆的字母和数字,不区分大小写。通过测试,乳白色底字码更易识别,随机干扰线和随机干扰点20条左右最合适。/定义验证码图像的缓冲流BufferedImage buffImg = new BufferedImage(width, height,BufferedImage.TYPE_INT

31、_RGB); /产生图形上下文Graphics2D g = buffImg.createGraphics(); /创建随机数产生函数Random random = new Random(); /将验证码图像背景填充为白色g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); /创建字体格式,字体的大小则根据验证码图片的高度来设定。Font font = new Font(Fixedsys,Font.BOLD, fontHeight); /设置字体。g.setFont(font); /为验证码图片画边框,为一个像素。g.setColor

32、(Color.GRAY); g.drawRect(0, 0, width - 1, height - 1); /随机生产22跳图片干扰线条,使验证码图片中的字符不被轻易识别g.setColor(Color.LIGHT_GRAY); for(int i = 0; i22; i+) int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x, y, x + xl, y + yl); /rand

33、omCode保存随机产生的验证码StringBuffer randomCode = new StringBuffer(); /定义颜色三素int red = 0, green = 0, blue = 0; /随机生产codeNum个数字验证码for (int i = 0; icodeNum; i+) /得到随机产生的验证码String strRand = String.valueOf(codesrandom.nextInt(codes.length); /使用随机函数产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。red = random.nextInt(255); gre

34、en = random.nextInt(255); blue = random.nextInt(255); /随即生成验证码字符的水平偏移量 int w = 0; int x = (i + 1) % 2; if (x = random.nextInt(2) w = codeY - random.nextInt(7); else w = codeY + random.nextInt(7); /用随机产生的颜色将验证码绘制到图像中。g.setColor(new Color(red, green, blue); g.drawString(strRand, fontHeight*i+10, codeY

35、); /将产生的四个随机数组合在一起。randomCode.append(strRand);9、用户密码MD5加密及异常登录的预防我们采用用户密码MD5加密技术,这样既能防止数据库管理员盗取用户数据非法操作,就算有人得到数据库,找到的也是MD5加密后的一段乱码,破解是能破解,但是很费工夫的。所以基本上可以说是安全的。以前MD5被认为是不可逆的,不过现在被破解了,不过还是比较安全的。Filter可以使用通配符用来过滤一个、多个url,或者过滤一个、多个的Servlet。我们使用Filter过滤一些成功操作界面,防止非法用户绕过登录页面直接进入到成功页面。对用户的异常访问,用error.jsp页面

36、拦截,并在5秒后强行跳回登陆页面,使用户先登录系统。4.3 项目研发时间线图4.3.1 项目研发时间线五、系统测试5.1 测试方案黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。黑盒法是穷举输入测试,只有

37、把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。白盒测试按照程序内部的逻辑对程序进行测试,检查程序中的每条通路是否能按预定要求正确工作。白盒测试又称为结构测试。在这里主要采用的是黑盒测试,并以白盒测试为辅助测试。5.2 测试用例及结果1登录时,输入正确的和错误的用户ID和密码,转向是否正确1)正确的用户名和密码:输入:用户名:10240001,密码:10240001预期输出:登陆到教师模块主页。2)错误的用户名和密码:输入:用户名:12345,密码:345预期输出:跳转到教师登陆页面。 以上测试用例经过验证是正确的。2教师登录成功后,是否可以上报课题。图5-1 添加课题测试3是否可以修改个人信息。图5-2 修改个人信息测试4是否可以修改课题信息。图5-3修改课题信息测试六、软件使用说明书6.1 登陆界面教师输入正确的用户名和密码,就可以进入到毕业设计管理系统,初始密码与用户名一致,登陆界面如图6-1所示 图6-1 登陆界面6.2 主界面 登陆验证若正确的话,进入主界面,如图6-2所示:图6-2 主界面6.3 查看个

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服