1.前言每年毕业临近,都有大量的毕业生需要进行毕业设计,这其中的首要关节就是课题的选择,以往指导老师都是采用人工手写方式给学生们提供相关的课题供学生选择,如果指导老师带领的学生比较多,或者是当年毕业的学生比较多,这样就容易造成学生的课题选择很混乱,指导教师难于统计学生的课题选择情况等一系列问题,基于这些传统问题,我们需要一个能够自动统计、实时分配课题的一个管理平台来帮助学生、指导老师。此系统的开发,主要的目的是使老师能更好的管理课程设计,也能使学生能更好的把自己想要选的课程正确无误的选出来。使处在选课时期的学生能有条不紊的进行。2.系统的需求分析2.1功能需求2.1.1毕业设计选题管理系统功能要求:1.毕业设计题目维护和查询:毕业设计题目的添加、修改;按照项目类型、名称、编号等查询;毕业设计选题查询、登记。2.指导教师信息维护和查询:指导教师信息的添加、修改、删除,查询;3.毕业生选题管理:学生选题登记;选题情况查询;4.毕业生信息的维护和查询。根据以上各功能模块需求将系统的功能细化为以下几点:(1)前台学生选题学生网上选题:学生登录管理系统进行选题(2)前台教师出题教师网上出题:教师进入毕业选题出题。教师管理出题:教师进入系统后对毕业设计题目进行修改和删除。选题确认:学生选好题目后,教师可以确认该题由选择该题的学生做。(3)后台管理出题及选题情况用户管理模块:管理员可以对用户进行用户管理,对已存在的用户进行修改,查看等。角色管理模块:管理员可以对用户的角色进行管理,可以给用户分配角色,对角色分配权限。2.2开发环境需求操作系统:window7或更高版本因为毕业设计课题管理系统针对的用户是学生和教师,学生和教师普遍使用windows操作系统,所以选着windows7或更高版本的操作系统web服务器:apache-tomcat6毕业设计课题管理系统1apache-tomcat6是开源的免费的web服务器,节省开发成本数据库:MySQLMySQL是一款免费的数据库,节省成本开发工具:myeclipse8.5myeclipse8.5功能强大的JavaEE开发工具,该管理系统选用JavaEE开发。3.系统设计3.1基本设计概念和处理流程本系统采用结构化分析,设计顺序为自顶向下,层层逐步细化。图1毕业设计课题管理系统23.2软件功能设计图2选题管理用户登录教师信息管理学生信息管理指导老师选学生指导老师上传题目学生选题毕业设计课题管理系统33.2数据库设计3.2.1E-R图用户课程拥有选择1n1用户Id密码姓名年龄性别课程IDFlag课题内容课题名1roleId图3毕业设计课题管理系统4角色角色ID角色名功能功能编码父级功能编码拥有1n功能文本说明功能类型功能地址功能指标图43.2.2数据库表用户表(user)字段类型备注useridVarchar(20)primarykey用户IDPwdvarchar(32)用户密码roleIdInt外键tnameVarchar(20)姓名sexVarchar(5)性别AgeInt年龄表1课题表(task)字段类型备注taskIdIntprimarykey课题IDtasknamevarchar(20)课题名sflagint状态(是否被选)taskTextvarchar(50)课题内容表2毕业设计课题管理系统5选择课题(chosetask)字段类型备注ctIdintprimarykey学生选课题iduIdvarchar(10)外键taskIdInt课题ID表3上传课题(puttask)字段类型备注ptIdintprimarykey教师上传课题iduIdvarchar(10)外键taskIdInt课题ID表4角色表(roleinfo)字段类型备注roleIdIntprimarykey角色IDrolenamevarchar(10)角色名表5权限表(rightinfo)字段类型备注rightCodevarchar(20)primarykey权限rightParentCodevarchar(30)父权限rightTypevarchar(20)rightTextvarchar(50)RightUrlvarchar(30)url地址RightTipvarchar(50)表6角色权限表(roleright)rr_idIntprimarykey主键rr_roleidInt外键role表rr_rightCodevarchar(20)外键rightinfo表表7毕业设计课题管理系统64.典型功能模块的详细设计和实现过程用户模块登录功能代码:publicStringdoLogin(){Userinfouu=userService.checkUser(user);if(uu!=null){ServletActionContext.getRequest().getSession().setAttribute(USER,uu);introleId=uu.getRoleinfo().getRoleId();Roleinfor=roleService.getRoleWithRights(roleId);StringmenuString=buildDTreeMenuString(r);ServletActionContext.getRequest().getSession().setAttribute(MENU_STRING,menuString);returnmain;}else{returninput;}}publicUserinfocheckUser(Userinfou){毕业设计课题管理系统7Userinfouu=null;Stringhql=fromUserinfowhereuserid=?andpwd=?;Object[]args=newObject[]{u.getUserid(),u.getPwd()};ListUserinfolist=commonDao.list(hql,args);if(list!=null&&list.size()0){uu=list.get(0);}returnuu;}publicListlist(Stringhql,Object[]args){Listlist=this.getHibernateTemplate().find(hql,args);returnlist;}查询信息功能代码:publicStringtoList(){SPageBeanspb=newSPageBean();HttpServletRequestrequest=ServletActionContext.getRequest();intoffset=0;if(request.getParameter(pager.offset)==null){offset=0;}else{offset=Integer.parseInt(request.getParameter(pager.offset));}intmaxPageItems;if(request.getAttribute(maxPageItems)==null){maxPageItems=5;}else{maxPageItems=Integer.parseInt(request.getParameter(maxPageItems));}spb.setOffset(offset);spb.setPageSize(maxPageItems);infoService.getList(spb);request.setAttribute(SPB,spb);returnlist;}publicvoidgetList(SPageBeanspb){Stringhql=fromUserinfo;commonDao.listByPage(hql,spb);毕业设计课题管理系统8}publicvoidlistByPage(Stringhql,SPageBeanspb){finalStringhql1=hql;finalSPageBeanspb1=spb;if(hql!=null){inttotal=(Integer)this.getHibernateTemplate().execute(newHibernateCallback(){publicObjectdoInHibernate(Sessionsess)throwsHibernateException,SQLException{StringqString=;if(hql1.toLowerCase().indexOf(select)!=-1){intidx=hql1.toLowerCase().indexOf(from);qString=selectcount(*)+hql1.substring(idx,hql1.length());}else{qString=selectcount(*)+hql1;}QuerycQuery=sess.createQuery(qString);cQuery.setCacheable(true);longo=(Long)cQuery.uniqueResult();intii=(int)o;returnii;}});spb.setTotal(total);Listdata=(List)this.getHibernateTemplate().execute(newHibernateCallback(){publicObjectdoInHibernate(Sessionsess)throwsHibernateException,SQLException{Queryquery=sess.createQuery(hql1);query.setFirstResult(spb1.getOffset());query.setMaxResults(spb1.getPageSize());returnquery.list();}});spb.setDatas(data);}毕业设计课题管理系统9}publicclassSPageBean{privateintoffset;privateintpageSize;privateinttotal;privateListdatas;publicintgetTotal(){returntotal;}publicvoidsetTotal(inttotal){this.total=total;}publicListgetDatas(){returndatas;}publicvoidsetDatas(Listdatas){this.datas=datas;}publicintgetOffset(){returnoffset;}publicvoidsetOffset(intoffset){this.offset=offset;}publicintgetPageSize(){returnpageSize;}publicvoidsetPageSize(intpageSize){this.pageSize=pageSize;}}上传课题功能代码:publicStringtoadd(){returnadd;}publicStringdoadd(){if(taskService.doAdd(task)==true){SPageBeanspb=newSPageBean();毕业设计课题管理系统10HttpServletRequestrequest=ServletActionContext.getRequest();intoffset=0;if(request.getParameter(pager.offset)==null){offset=0;}else{offset=Integer.parseInt(request.getParameter(pager.offset));}intmaxPageItems;if(request.getAttribute(maxPageItems)==null){