资源描述
1. 前言每年毕业临近,都有大量的毕业生需要进行毕业设计,这其中的首要关节就是课题的选择,以往指导老师都是采用人工手写方式给学生们提供相关的课题供学生选择,如果指导老师带领的学生比较多,或者是当年毕业的学生比较多,这样就容易造成学生的课题选择很混乱,指导教师难于统计学生的课题选择情况等一系列问题,基于这些传统问题,我们需要一个能够自动统计、实时分配课题的一个管理平台来帮助学生、指导老师。此系统的开发,主要的目的是使老师能更好的管理课程设计,也能使学生能更好的把自己想要选的课程正确无误的选出来。使处在选课时期的学生能有条不紊的进行。2. 系统的需求分析2.1功能需求2.1.1 毕业设计选题管理系统功能要求:1.毕业设计题目维护和查询:毕业设计题目的添加、修改;按照项目类型、名称、编号等查询;毕业设计选题查询、登记。2.指导教师信息维护和查询:指导教师信息的添加、修改、删除,查询;3.毕业生选题管理:学生选题登记;选题情况查询;4.毕业生信息的维护和查询。根据以上各功能模块需求将系统的功能细化为以下几点:(1)前台学生选题学生网上选题:学生登录管理系统进行选题(2)前台教师出题教师网上出题:教师进入毕业选题出题。教师管理出题:教师进入系统后对毕业设计题目进行修改和删除。选题确认:学生选好题目后,教师可以确认该题由选择该题的学生做。(3)后台管理出题及选题情况用户管理模块:管理员可以对用户进行用户管理,对已存在的用户进行修改,查看等。角色管理模块:管理员可以对用户的角色进行管理,可以给用户分配角色,对角色分配权限。2.2开发环境需求操作系统:window7或更高版本因为毕业设计课题管理系统针对的用户是学生和教师,学生和教师普遍使用windows操作系统,所以选着windows7或更高版本的操作系统web服务器:apache-tomcat6apache-tomcat6是开源的免费的web服务器,节省开发成本数据库:MySQLMySQL是一款免费的数据库,节省成本开发工具:myeclipse8.5myeclipse8.5功能强大的JavaEE开发工具,该管理系统选用JavaEE开发。3. 系统设计3.1基本设计概念和处理流程本系统采用结构化分析,设计顺序为自顶向下,层层逐步细化。图13.2软件功能设计图23.2数据库设计3.2.1 E-R图图3图43.2.2数据库表用户表(user)字段类型备注useridVarchar(20) primary key用户ID Pwdvarchar(32)用户密码roleIdInt外键tnameVarchar(20)姓名sexVarchar(5)性别AgeInt年龄表1课题表(task)字段类型备注taskIdInt primary key课题IDtasknamevarchar(20)课题名sflagint状态(是否被选)taskTextvarchar(50)课题内容表2选择课题(chosetask)字段类型备注ctIdint primary key学生选课题iduIdvarchar(10)外键taskIdInt课题ID表3上传课题(puttask)字段类型备注ptIdint primary key教师上传课题iduIdvarchar(10)外键taskIdInt课题ID表4角色表(roleinfo)字段类型备注roleIdInt primary key角色IDrolenamevarchar(10)角色名表5权限表(rightinfo)字段类型备注rightCodevarchar(20)primary key权限rightParentCodevarchar(30) 父权限rightTypevarchar(20)rightTextvarchar(50)RightUrlvarchar(30)url地址RightTipvarchar(50)表6角色权限表(roleright)rr_idInt primary key主键rr_roleidInt外键 role表rr_rightCodevarchar(20)外键 rightinfo表表74. 典型功能模块的详细设计和实现过程用户模块登录功能代码:public String doLogin() Userinfo uu= userService.checkUser(user); if(uu!=null) ServletActionContext.getRequest().getSession().setAttribute(USER, uu); int roleId=uu.getRoleinfo().getRoleId(); Roleinfo r= roleService.getRoleWithRights(roleId); String menuString=buildDTreeMenuString(r); ServletActionContext.getRequest().getSession().setAttribute(MENU_STRING, menuString); return main; else return input; public Userinfo checkUser(Userinfo u) Userinfo uu=null;String hql=from Userinfo where userid=? and pwd=?;Object args = new Objectu.getUserid(),u.getPwd();List list = commonDao.list(hql, args);if(list!=null & list.size()0)uu = list.get(0);return uu;public List list(String hql, Object args) List list= this.getHibernateTemplate().find(hql,args);return list;查询信息功能代码:public String toList()SPageBean spb = new SPageBean();HttpServletRequest request = ServletActionContext.getRequest();int offset = 0;if (request.getParameter(pager.offset) = null) offset = 0; else offset = Integer.parseInt(request.getParameter(pager.offset);int maxPageItems;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);return list;public void getList(SPageBean spb) String hql=from Userinfo;commonDao.listByPage(hql, spb);public void listByPage(String hql, SPageBean spb) final String hql1=hql;final SPageBean spb1=spb;if(hql!=null)int total=(Integer) this.getHibernateTemplate().execute(new HibernateCallback() public Object doInHibernate(Session sess) throws HibernateException,SQLException String qString=;if(hql1.toLowerCase().indexOf(select )!=-1)int idx=hql1.toLowerCase().indexOf(from);qString=select count(*) +hql1.substring(idx,hql1.length();elseqString=select count(*) +hql1;Query cQuery=sess.createQuery(qString);cQuery.setCacheable(true);long o= (Long)cQuery.uniqueResult();int ii=(int)o;return ii;);spb.setTotal(total);List data=(List)this.getHibernateTemplate().execute(new HibernateCallback() public Object doInHibernate(Session sess) throws HibernateException,SQLException Query query= sess.createQuery(hql1);query.setFirstResult(spb1.getOffset();query.setMaxResults(spb1.getPageSize();return query.list(););spb.setDatas(data);public class SPageBean private int offset;private int pageSize;private int total;private List datas;public int getTotal() return total;public void setTotal(int total) this.total = total;public List getDatas() return datas;public void setDatas(List datas) this.datas = datas;public int getOffset() return offset;public void setOffset(int offset) this.offset = offset;public int getPageSize() return pageSize;public void setPageSize(int pageSize) this.pageSize = pageSize;上传课题功能代码:public String toadd()return add;public String doadd()if(taskService.doAdd(task)= true)SPageBean spb = new SPageBean();HttpServletRequest request = ServletActionContext.getRequest();int offset = 0;if (request.getParameter(pager.offset) = null) offset = 0; else offset = Integer.parseInt(request.getParameter(pager.offset);int maxPageItems;if (request.getAttribute(maxPageItems) = null) maxPageItems = 5; else maxPageItems = Integer.parseInt(request.getParameter(maxPageItems);spb.setOffset(offset);spb.setPageSize(maxPageItems);taskService.getTaskinfo(spb);ServletActionContext.getRequest().setAttribute(SPB1, spb);return list;elsereturn add;public boolean doAdd(TaskInfo t) Serializable ret = commonDao.add(t);return ret!=null;管理员模块管理员对角色管理功能:public class RoleAction extends ActionSupportprivate IRoleService roleService;private IRightService rightService;private Roleinfo role;public void setRoleService(IRoleService roleService) this.roleService = roleService;public void setRightService(IRightService rightService) this.rightService = rightService;public Roleinfo getRole() return role;public void setRole(Roleinfo role) this.role = role;public String toList()List roles= roleService.getList();ServletActionContext.getRequest().setAttribute(ROLES, roles);return list;public String toAssign()List rights= rightService.getAllRights();Roleinfo r = roleService.getRoleWithRights(role.getRoleId();for(Rightinfo right:rights)if(r.getRights().contains(right)right.setChecked(checked);ServletActionContext.getRequest().setAttribute(ROLE, r);ServletActionContext.getRequest().setAttribute(RIGHTS,rights);return assign;public String doAssign() throws ExceptionHttpServletRequest request=ServletActionContext.getRequest();String newRights=request.getParameterValues(CheckBox_Rights);roleService.updateRoleRights(role.getRoleId(),newRights);HttpServletResponse response=ServletActionContext.getResponse();response.sendRedirect(role!toAssign.action?role.roldId=+role.getRoleId()+&message=ok);return null;public class RightServiceImpl_H implements IRightServiceprivate ICommonDAO commonDao;public void setCommonDao(ICommonDAO commonDao) monDao = commonDao;public List getAllRights() String hql=from Rightinfo;List list = commonDao.list(hql);return list;管理员对用户管理功能:(增、删、改、查)public String delete()int uid = Integer.parseInt(ServletActionContext.getRequest().getParameter(userid);boolean flag = userService.delete(uid);if(flag)return list1;elsereturn list;/编辑用户public String toedit()int uid=Integer.parseInt(ServletActionContext.getRequest().getParameter(userid);Userinfo uu = userService.detail(uid);ServletActionContext.getRequest().setAttribute(USER2, uu);return edit;public String edit()boolean flag = userService.update(user);if(flag)return list;elsereturn edit_error;public String detail()int uid=Integer.parseInt(ServletActionContext.getRequest().getParameter(userid);Userinfo uu = userService.detail(uid);ServletActionContext.getRequest().setAttribute(USER1, uu); return detail; public String add()if(userService.addUser(user)= true)List user = userService.list();ServletActionContext.getRequest().setAttribute(USERS, user);return list;elsereturn add;public String toadd()return add;public String doLogin() Userinfo uu= userService.checkUser(user); if(uu!=null) ServletActionContext.getRequest().getSession().setAttribute(USER, uu); int roleId=uu.getRoleinfo().getRoleId(); Roleinfo r= roleService.getRoleWithRights(roleId); String menuString=buildDTreeMenuString(r); ServletActionContext.getRequest().getSession().setAttribute(MENU_STRING, menuString); return main; else return input; public boolean addUser(Userinfo u) Serializable ret = commonDao.add(u);return ret!=null;public List list() String hql = from Userinfo;List list = commonDao.list(hql);return list;public Userinfo detail(int userid) Userinfo uu=null;String hql=from Userinfo u left outer join fetch u.role where u.userid=?;Object args=new Objectuserid;List list= commonDao.list(hql, args);if(list!=null & list.size()0)uu=list.get(0);return uu;public Userinfo toedit(int userid) Userinfo uu=null;String hql=from Userinfo u left outer join fetch u.role where u.userid=?;Object args=new Objectuserid;List list= commonDao.list(hql, args);if(list!=null & list.size()0)uu=list.get(0);return uu;public boolean update(Userinfo u) trycommonDao.update(u);return true;catch(Exception ex)return false;public boolean delete(int uid) tryUserinfo u = (Userinfo)commonDao.get(Userinfo.class,uid);u.setFlag(0);return true;catch(Exception ex)return false;5. 软件测试及运行评价测试步骤(1) 主页测试(2) 用户登录测试(3) 用户信息管理测试(4) 角色权限管理测试(5) 课题上传测试模块测试模块预计测试功能输入、输出功能造成差别的原因主页正常显示,各个连接正常显示一致无用户登陆、注册验证用户名(ID,满足系统设定要求)和密码的一致性一致无用户信息管理对用户进行增,删,改,查显示正确的页面和数据一致无角色权限管理给用户分配角色权限一致无课题上传录入课题的所用信息保存在数据库中一致无6. 软件实习总结通过实习,更加深入了解掌握了开发平台的配置,对编程有了进一步的掌握。明白了开发一个项目的工作顺序。对项目的业务熟悉是开发项目的首要条件。
展开阅读全文