毕业设计管理系统说明文档1(30页).doc
-毕业设计管理系统说明文档1-第 25 页实践教学 兰州理工大学计算机与通信学院2013年春季学期工程开发综合训练 课程设计题 目: 毕业设计管理系统 专业班级: 计算机科学与技术6班姓 名: 何 龙 学 号: 10240645 指导教师: 曹来成 成 绩: 摘 要随着全球化信息技术的兴起,特别是Internet的日益普及,我国各大中专院校都建立了自己的校园网。毕业生以班级为单位的原始手工报送的毕业设计选题方式已经不能适应时代发展的需求,所以基于互联网的毕业设计信息管理系统也就孕育而生了。毕业设计信息管理系统就是能够使学生通过互联网完成毕业设计课题的选定,它采用Web方式,同时适用于局域网和Internet,它要实现审核,权限管理等功能,并能提供毕业设计课题保存、课题查询等功能,该系统同时能够进行权限的判断,同时对用户和毕业设计课题进行多种操作。本系统采用了Java EE技术为主要手段,运用了当前比较流行的Java EE框架SSH,Mysql为后台数据库,本系统采用了多级角色管理:包括系统管理员、教师(包括出题老师和评审老师)和学生三种权限。本文主要介绍了教师权限的功能,并详细地论述了系统设计的思想和实现的方法步骤从而为以后的研究打下了基础。关键字:信息管理系统;网络;Java EE;角色管理;用户权限;SSH框架目 录第一章系统概述11.1系统开发背景11.2系统开发的目的意义11.3系统流程1第二章需求分析32.1 系统需求分析32.2 可行性分析32.3 系统设计思想42.4 系统功能设计4第三章 概念结构设计63.1系统数据流程设计63.2 数据库需求分析73.3 数据库逻辑结构设计8第四章 逻辑结构实际104.1 系统功能图104.2 系统功能流程图10第五章 系统实现125.1 系统登录的实现135.2管理员功能的实现155.3其他模块的实现26第六章 系统测试276.1 软件测试的目的276.2 系统测试276.3模块测试27第七章系统使用说明书29成员分工32总 结33致 谢34参考文献35第一章 系统概述1.1 系统开发背景随着物质化办公的日益普及,信息的自动处理以及网络式的信息交互方式越来越被人们认可和应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。随着近几年高校的持续扩招,学生人数逐年增加。为了满足广大学生的求学需求,各个高校的师资力量、硬件配置也随之增强。这样一来,日常行政部门的工作也接越来越繁重。传统的管理方式要耗费大量的资源,毕业设计信息管理系统与传统的手工方式选择毕业设计课题相比不但节约资源,而且更加准确,便于查询和修改信息。同时,增强学生选题的自主权,能够选择自己感兴趣的课题。传统的毕业设计课题选择方式已经不适应现代教学管理的改革和发展的需要,迫切需要一种新的信息管理方式。1.2 系统开发的目的意义毕业设计是学生在校期间的最后一个教学环节,是学习深化和提高的一个重要过程,也是综合检验所学理论知识的一个重要环节。本设计从课题的申报、课题的审核、学生选题、调剂、指导、评阅、答辩、归档等环节进行管理,实现了毕业设计的整个流程的管理工作。系统实现了学生自主选题和教师自主选择学生的网上双向选择,并增加了留言板、文件上传与下载、新闻发布等功能,能够保证毕业设计期间管理员、老师、学生之间信息的联通,对保证毕业设计的质量有非常重要的现实意义。随着网络化的普及,全国高校的校园网络日益健全,实现无纸化办公成为未来的趋势,并且随着天津城市建设学院的教学体制改革不断加深,本系统的建立为参加毕业设计的教师、学生提供接口。1.3 系统流程业务流程描述:用业务流程图描述现系统各项业务处理过程,并结合业务流程图详细准确地说明业务处理过程中数据的收集、输入、传递、存储、加工的方法、算法、输出的数量及形式等。现行系统的业务流程图是分析和描述现行系统业务的重要工具之一。其主要作用是:描述现行系统的业务情况以便于与企业管理人员交流,它是系统设计的前提和保证。业务流程图使用的符号:符号名称实体输入/输出的报表处 理业务流向文档存储 图1.1第二章 需求分析2.1 系统需求分析作为高校毕业生的一个毕业设计信息管理系统,它就面对着许多用户的操作,而这些用户对系统的操作应该有所不同,所以我们在设计时必须要对不同的用户设立不同的权限。在本系统中,我们考虑了3种权限(管理员,指导教师,学生)。管理员可以对教师和学生进行操作,而教师和学生只能对毕业设计课题进行部分操作。管理员可以实现对老师和学生的添加和删除,可以指定哪个老师为评审老师,指定哪个老师评审哪个题目。对于老师和学生中要求修改个人账号密码的要求是否同意,只有当管理员同意后,老师和学生才能以自己修改的密码登陆系统,不然还是要以系统初始化的密码登陆系统。为了安全性,在管理员同意用户修改密码的过程中,管理员是不能看到用户改的密码的。同时,我们为了使本系统更加符合我们的实际要求,教师分为评审题目的教师和出题的老师,但是出题老师所出的题目必须经过管理员指定的审核老师评定后学生才能进行选择,出题老师可以查看自己所出题目的列表,及查看自己的所有出的题目的评审状态,是评审通过了还是没有,以及查看那些学生选定了哪个题目。评审老师,可以对管理员指定自己评审的题目进行评定。可以是通过也也已是不通过,只有在通过的情况下才能让学生在登录系统是的时候选题选此题;在学生的选题模块中,学生只有选题的功能,其他的功能还暂时还没有实现,原计划要实现学生可以对自己选定的题目的老师的详细信息进行查看。2.2 可行性分析(1)经济可行性系统所要求的硬件(计算机及相关硬件)和软件环境(JSP+Mysql),市场上都容易买到或从相关网站下载,系统成本主要集中在开发与维护上,不会造成过重的经济负担。而一旦此系统投入使用,不仅可以减少教学管理者的工作强度,提高工作效率,而且极大限度的方便了用户,可以节省大量的人力、财力。(2)技术可行性技术上的可行性分析主要是分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。在软件方面,本系统采用JSP技术进行开发,前台网页设计使用的是Dreamweaver,而数据库系统采用的是Mysql。通过在软、硬件方面的分析,现有工具与环境可以实现系统的开发,因此具有技术上的可行性。(3)管理可行性主要是管理人员是否支持,现有的管理制度和方法是否科学,规章是否齐全,原始数据是否正确等。系统的开发主要就是为了方便毕业设计信息的管理,补充现在传统管理方式的不足,因此具备了管理上的可行性。综上所述,系统开发目标已明确,在技术和经济等方面具备可行性,投入少,见效快,因此系统的开发是完全可行的。2.3 系统设计思想本系统存在3种用户:学生、教师、管理员。学生和教师用给定的帐号、密码登录系统进行操作。登录判定上首次基于数据库验证,然后把用户信息写入session,然后其他页面采用session验证。系统结构上采用页面镶嵌程序和语句,工作原理如图3.1所示:Mysql Database操作请求,运用HQL语句操作数据库返回查询结果集或操作结果毕业设计管理系统用户界面数据库存储层图3.1 系统工作原理图在系统结构中,用户界面层通过统一的接口向数据库存储层发送请求,数据库存储层收到请求处理之后把数据返回到用户界面层。3.4 系统功能设计本系统分为学生操作界面、教师操作界面和管理员操作界面,下面分别对个身份的用户界面做以介绍:管理员操作界面能完成下面的功能:(1)列出所有用户:当我们以管理的身份的登录系统时我们能首先看到所有的系统用户,包括出题老师、评审老师和学生三种身份的用户,在这里我们可以通过点击每个用户后面的“删除”删除此用户,当删除后此用户将不能在登录系统。(2)添加老师信息:当我们点击添加老师信息的页面时我们将看到添加老师信息的界面,在这个界面录入老师的信息点击提交我们就可以看见添加老师了,添加后这个用户就可以登录系统了,密码是默认的“123456”。(3)添加学生信息:这个界面和添加老师的界面基本上是没有啥区别,这是信息不同。其他的都一样。(4)同意修改密码:因为本系统对于权限的要求,只有当管理员同意了,其他的用户修改密码的请求后,用户才可以使用自己已经更改的密码。所以在这个界面将看到所有要求修改密码的用户。当我们点击了同意修改后,修改密码将完成。(5)为题目指定评审人:因为学生要选的题只有当评审人评审通过后才能够选题。在这里我们需要为已经出的题指定评审人。(6)注销登录:这是为用户退出系统做的。当点击后,我们将清除用户登录的缓存。至于其他的用户(评审老师和出题老师)和学生登录系统的页面也差不多,在这里就不一一列出了。第三章 概念结构设计3.1系统数据流程设计概要设计阶段的基本目标是用比较抽象的方式确定系统如何完成预定的任务,也就是说,应该确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构。从数据流图出发设想完成系统功能的若干种合理的物理方案,从中选择一个最佳方案。然后进行软件结构设计,确定软件由哪些模块组成以及这些模块的动态调用关系。本设计包括出题、选题、系统维护、个人信息维护模块的设计。首先管理员登录系统,对系统进行初始化,并可设置系统的开放与关闭。系统初始化后教师可以出题,教师出题完毕评审老师审核课题,审核通过后学生才可进行选题,学生选题完后教师可以选择符合题目要求的学生,形成双向选择。如果还有学生没选上题目,管理员可以进行调剂,使每个学生都有题目。当指导教师指导学生完成设计后,进入到评阅阶段。管理员分配评阅教师后,评阅教师对所评阅课题进行评阅,给出相应成绩。评阅教师指导学生完成设计后,进入到答辩阶段。管理员分配答辩教师后,答辩教师对所答辩课题进行答辩,给出相应成绩。答辩结束后,由管理员对学生的实习/指导成绩、评阅成绩和答辩成绩进行录入,进行归档。图3.1 系统数据流3.2 数据库需求分析数据库需求分析就是要了解在这个系统中,用户需要查询、更新、删除和保存哪些数据,收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。针对毕业设计信息管理系统功能的需求,总结出如下需求信息:(1) 用户分教师、学生和管理员。(2) 教师担任一门或多门课程。(3) 学生只能选择一个毕业设计课题。(4) 学生对自己所选课题的查询。(5) 教师在线出题。(6) 管理员可以添加、查询、删除信息,可以对教师所出的题目指定审核的老师。通过总结,数据项和数据结构设计如下:(1) 登录信息表,包括数据项:主键Lid、账号、用户密码、修改密码、角色。(2) 教师信息表,包括数据项:主键tId、教职工号、教师姓名、登陆id、性别、职称、联系电话、地址、E-mail、是否评审题目的评审人、评审题号。(3) 学生信息表,包括数据项:主键id、学号、姓名、性别、班级、专业名称、联系电话、E-mail、qq号码。(4) 课题表,包括数据项:课题编号、课题名称、课题类型、开始学期、评审人、评审状态、评审意见。(5)学生选题表,包括数据项:课题编号、学号、成绩。3.3 数据库逻辑结构设计毕业设计管理系统各表设计如下:图4.1 登录信息表(login)图4.2 教师信息表(teacher)图4.3 学生信息表(student)图4.4 题目信息表(title)图4-6选题信息第四章 逻辑结构实际4.1 系统功能图毕业设计信息管理系统的功能主要包括三部分:管理员、教师题库信息管理、学生在线选题信息管理。其毕业设计信息管理系统功能设计结构图结构如图3-6:图4.5 系统功能图4.2 系统功能流程图系统功能流程如图3-7:图4.8 系统功能流程图第五章 系统实现本系统采用Java EE当前比较流行框架SSH实现的,所以我们用Struts2、Spring、Hibernate分别实现业务层,服务层和持久层的处理。下面图5-1是整个系统的文件系统。图5.1 系统实现文件结构图5.1 系统登录的实现系统登录的界面如图5-2所示:在这个页面上我们输入我们的用户名和密码,点击“登录”按钮我们就可以登录到系统中了,再登陆的过程中我们根据用户名和密码在数据库中查出来看该用户是管理员,评审老师、出题老师还有学生中的哪一类身份,然后根据不同的身份进入到不同的操作页面,具体的实现代码如下。首先是页面提交数据的代码:<form id="loginForm" name="loginForm" action=":7001/WebEducation/education.jsp" method="post"> <input id="userID" name="userID" type="hidden" value=""> <input id="userInfo" name="userInfo" type="hidden" value=""> <input id="userOther" name="userOther" type="hidden" value=""></form>接下来是Action中的代码:public String login() setTeacherReviewList(userService.findReviewer();setTeacherOtherList(userService.findOtherTeacher();setStudentList(userService.findAllStudent();Map session;user = userService.login(user.getAccount(), user.getPassword();if (user != null) int power = user.getRole();session = (Map) ActionContext.getContext().getSession();session.put("login", user);if (power = 1) return "1"if (power = 2) int reviewer = userService.findTeacherByLid(user.getLid().getReviewer();session = (Map) ActionContext.getContext().getSession();session.put("loginMassage", user);if (reviewer = 1)return "4"if (reviewer = 0)return "5"if (power = 3) session = (Map) ActionContext.getContext().getSession();session.put("loginMassage", user);return "3" else return INPUT;return INPUT;下面的是在Service中代码:public Login login(String name, String password) return userDao.findByNameAndPass(name, password);下面是在dao层的代码:public Login findByNameAndPass(String name, String password) String str = name, password ;List<Login> list = getHibernateTemplate().find("from Login where account=? and password=?", str);if (list.size() > 0) return list.get(0);return null;下面是在struts.xml中的代码:<action name="login" class="userBean" method="login"><result name="1">/WEB-INF/content/mainManage.jsp</result><result name="4">/WEB-INF/content/mainReviewer.jsp</result><result name="5">/WEB-INF/content/mainTeacher.jsp</result><result name="3">/WEB-INF/content/mainStudent.jsp</result><result name="input">/WEB-INF/content/loginForm.jsp</result></action>5.2管理员功能的实现首先是页面管理员登录进来的主页面:下面是本页面的部分实现代码:<body><div id="warp"><div id="top"><div id="top1"></div> <div id="menu"> <ul style="float:left; font-size:5px"> <li>欢迎您,$sessionScope.login.account</li></ul> <ul style="float:right"> <li><a href=" </ul> </div></div><div id="index"><div class="right" id="right"> <div class="kcjj"> <div class="kcjj_wz"> 下面是评审教师列表:</p><table width="600" height="50" border="1"><tr><th width="80">教工编号</th><th width="80">姓名</th><th width="80">职称</th><th width="90">电话号码</th><th width="90">E-mail称</th></tr><s:iterator value="teacherReviewList" var="teacher"><tr><td>$teacher.teacheNo</td><td>$teacher.name </td><td>$teacher.professional </td><td>$teacher.telephone </td><td>$teacher.email </td><td width="70"> <ahref=deleteTeacher?teacher.tid=$teacher.tid&teacher.lid=$teacher.lid>删除</a></td></tr></s:iterator></table><p> </p><p>下面是出题教师列表:</p><table width="600" height="70" border="1"><tr><th width="80">教工编号</th><th width="80">姓名</th><th width="80">职称</th><th width="90">电话号码</th><th width="90">E-mail称</th></tr><s:iterator value="teacherOtherList" var="teacher"><tr><td>$teacher.teacheNo</td><td>$teacher.name </td><td>$teacher.professional </td><td>$teacher.telephone </td><td>$teacher.email </td><td width="70"> <ahref=deleteTeacher?teacher.tid=$teacher.tid&teacher.lid=$teacher.lid>删除</a></td></tr></s:iterator></table></p><p>下面是学生用户:</p><table width="600" height="55" border="1"><tr><th width="80">学号</th><th width="80">姓名</th><th width="90">专业</th><th width="80">班级</th><th width="90">电话</th><th width="90">E-mail</th></tr><s:iterator value="studentList" var="student"><tr><td>$student.studentNo</td><td>$student.name</td><td>$student.specialty</td><td>$student.classno</td><td>$student.telephone</td><td>$student.email</td><td width="70"> <a href=deleteStudent?student.sid=$student.sid&student.lid=$student.lid>删除</a></td></tr></s:iterator></table> </div> </div></div> <div class="left" id="left"> <div class="fzrjj"><div class="more"></div> <br><br> <br> <p class="jj"> <table width="194" height="168" border="1"> <tr> <td><a href="addTeacherForm">添加老师信息</a></td> </tr> <tr> <td><a href="addStudentForm">添加学生信息</a></td> </tr> <tr> <td><a href="updatePasswordForm">同意修改密码</a></td> </tr> <tr> <td><a href="reviewerForm">为题目指定评审人</a></td> </tr> </table></p> </div> </div></div><div id="footer"><div id="wz"> <br><hr>Copyright © 2013 包兴隆 杨海斌 高翔 汪莉丽 何龙 All Rights Reserved. <br>技术支持 :何 龙</div></div></div></body>下面是和从此页面有关的一些处理代码:public Login check() HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);HttpSession session = request.getSession();Login login = (Login) session.getAttribute("login");return login;public Title getTitlem() return titlem;public void setTitlem(Title titlem) this.titlem = titlem;public List<Title> getTitles() return titles;public void setTitles(List<Title> titles) this.titles = titles;public ManageTitleServiceImpl getManagerTitleService() return managerTitleService;public void setManagerTitleService(ManageTitleServiceImpl managerTitleService) this.managerTitleService = managerTitleService;public List<Login> getLogins() return logins;public void setLogins(List<Login> logins) this.logins = logins;public List<Teacher> getTeacherReviewList() return teacherReviewList;public void setTeacherReviewList(List<Teacher> teacherReviewList) this.teacherReviewList = teacherReviewList;public List<Teacher> getTeacherOtherList() return teacherOtherList;public void setTeacherOtherList(List<Teacher> teacherOtherList) this.teacherOtherList = teacherOtherList;public Student getStudent() return student;public void setStudent(Student student) this.student = student;public Teacher getTeacher() return teacher;public void setTeacher(Teacher teacher) this.teacher = teacher;public List<Student> getStudentList() return studentList;public void setStudentList(List<Student> studentList) this.studentList = studentList;public UserService getUserService() return userService;public void setUserService(UserService userService) this.userService = userService;public Login getUser() return user;public void setUser(Login user) this.user = user;public String addTeacherForm() return SUCCESS;public String addStudentForm() return SUCCESS;public String addStudent() if(this.check()=null)return INPUT;userService.addStudent(student);return SUCCESS;public String addTeacher() HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);HttpSession session = request.getSession();Login login = (Login) session.getAttribute("login");if (login = null) return INPUT;System.out.println(teacher.getName();userService.addTeacher(teacher);return SUCCESS;public String deleteTeacher() userService.deleteTeacher(teacher);return SUCCESS;public String deleteStudent() userService.deleteStudent(student);return SUCCESS;public String updateTeacherPassword() userService.updateTeacher(teacher);return SUCCESS;public String updateStudentPassword() userService.updateStudent(student);return SUCCESS;public String updatePassword() setLogins(userService.findPassword();for (int i