软件工程Java课程设计-My Office管理系统.doc_第1页
软件工程Java课程设计-My Office管理系统.doc_第2页
软件工程Java课程设计-My Office管理系统.doc_第3页
软件工程Java课程设计-My Office管理系统.doc_第4页
软件工程Java课程设计-My Office管理系统.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

My Office管理系统目录第一章 需求分析1.1课程设计题目-21.2 课程设计任务及要求-21.2.1 课程设计的任务-21.2.2 课程设计的要求-21.3 软硬件运行环境及开发工具-2第二章 系统设计2.1系统功能分析-22.2 系统开发的主要算法-3第三章 详细设计3.1系统流程图-63.2系统部分主要编码-8第四章 系统运行及调试4.1系统运行-124.2 系统调试-17第五章 课程设计总结与体会5.1课程设计总结与体会-17第一章 需求分析全套设计加扣3012250582 1.1 课程设计题目我的课程设计题目:My Office管理系统。开发背景:为了提高现代社会人们的办公效率,满足人们自动化办公的需要,我们开发了这套稳定可靠、操作方便、安全有效的My Office系统,它主要包括:人事管理、日程管理、消息传递等几大模块。1.2课程设计任务及要求1.2.1 课程设计的任务此次的课程设计主要完成三大模块:人事管理、日程管理、消息传递。人事管理包括:机构管理、部门管理、员工管理;日程管理包括:个人日程管理;消息管理包括:发邮件,收邮件,邮件管理。角色分为管理员和员工,管理员可以在三大模块实现增删改查,员工可以查看自己所在的机构部门,编写自己的日程,查看个人的消息,编写邮件的功能。最终完成My Office管理系统。1.2.2课程设计的要求此次的课程设计要求:要求运用这学期的所学知识,可以选择运用tomcat服务器,熟练搭建ssh框架即struts2+spring+hibernate ,实现各个模块的增删改查,最终深入了解和掌握ssh框架。前台页面可以用javascript,css+div,等技术完成页面的要求。根据这次的课程设计要求自己设计数据库。1.3 软硬件运行环境及开发工具硬件:装有windows操作系统的计算机。软件需要安装jdk、tomcat等。开发工具:eclipse(javaEE)或者my eclipse。数据库:oracle、mysql、sql server等数据库。第二章 系统设计2.1系统功能分析1.管理员身份的功能实现首先以管理员身份登陆My Office管理系统,登陆成功后有三个大模块。人事管理模块机构管理:单击机构,出现机构列表,管理员可以增加、修改、删除、查询机构。部门管理:单击部门,展示部门信息,管理员可以增加、修改、删除、查询部门,注意:部门从属于机构,一个机构对应多个部门。员工管理:单击员工,展示所有员工信息(包括管理员,部门经理,机构经理等人,是公司所有人),管理员可以增加、修改、删除、查询员工,编辑的时候可以看到员工的详细信息。注意:一个部门对应多个员工,增加员工的时候,他所在的机构、部门都要显示。三个小模块都是互相包含,注意要弄清楚他们之间的没关系,正确的建立他们之间的关系,完成所有的功能。日程管理日程管理:该模块主要是管理各个机构部门的日程,管理员可以查看所有的日程,并且可以对无用的日程进行删除,也可以再编辑日程,自己日程也可以,相当于我的便签,这个日程管理要实现的功能有增加,删除,修改和查询。注意:日程和员工的关系,一个员工可以对应对个日程消息管理消息管理:单击消息管理,展示所有管理员给员工发送和未发送的消息列表,管理员可以给员工,部门负责人,机构经理发送消息,即发邮件,还可以删除、修改、编辑、邮件。注意:一个人收到很多邮件。发件箱:主要存储的是已经发送成功的邮件,管理员可以删除这些已经发送的邮件。2.用户(员工)的身份功能以用户身份登陆My Office管理系统,登陆成功后有三个大模块。人事管理模块:机构管理:单击机构,展示机构信息,可以查询机构。部门管理:单击部门,展示部门信息,可以查询部门及其所在的机构。员工管理:单击员工,展示自己的信息。日程管理:个人日程管理:单击日程,展示个人所有的日程安排,可以对其进行删除、修改、增加、查询操作。消息管理:消息管理:主要实现个人给其他人编写邮件、发送邮件,还可以修改、删除邮件。收件箱:主要是其他人给自己发送的邮件,可以查看详情,删除。2.2 系统开发的主要算法根据ssh框架,我们分为dao,serice,action,bean这几个包。Dao:主要实现和数据库的连接。Service:主要实现业务逻辑。Action:主要处理页面传来的数据。Bean:建立实体类1.增加算法(以部门为例子):在前台页面上提交一个表单,在action处理:public String add()departService.depart_add(departinfo);return departlist();在service里处理:private MessageDao dao;public void addMessage(Message message) dao.addMessage(message);在dao中的处理:public void addMessage(Message message) Session session = this.getSession();session.save(message);2.删除算法从页面上向action传一个id,根据id进行删除,在action里:public String delete()try System.out.println(departid);departService.depart_delete(departid);inputStream = new ByteArrayInputStream(1.getBytes(UTF-8); catch (Exception e) e.printStackTrace();try inputStream = new ByteArrayInputStream(0.getBytes(UTF-8); catch (UnsupportedEncodingException e1) e1.printStackTrace();return delete; 在service里:public void depart_delete(int departid) dao.depart_delete(departid);在dao里:public void depart_delete(int departid) Session session = this.getSession();DepartInfo uu = (DepartInfo) session.load(DepartInfo.class,departid);session.delete(uu);在页面上可以结合ajax和jquery的知识,进行局部刷新,不用再重新打开新的页面。3.分页和查询的算法:在dao里可以运用hibernate的两个方法:query.setFirstResult() query.setMaxResults()代码如下:public ArrayList departfy_list(int pageSize, int pageNow,String departname) List list = new ArrayList();if(pageSize0 & pageNow0)Query query=getSession().createQuery(from DepartInfo d where d.departname like ?);query.setString( 0, %+departname+%);query.setFirstResult(pageNow*pageSize-pageSize);query.setMaxResults(pageSize);list=query.list();return (ArrayList) list;在action里可以定义一个list来存储从数据库读出来的数据。Private List dlist;public String departlist()int r =Integer.parseInt( ActionContext.getContext().getSession().get(role).toString(); if(r=1) dlist = departService.departfy_list(pageSize, pageNow,departname); return dlist; else dlist = departService.departfy_list(pageSize, pageNow,departname); return udlist; 第三章 详细设计3.1系统流程图管理员输入登陆的用户名和密码1.管理员的流程图:判断用户名和密码是否正确否 是三大模块的列表index页面消息管理日程管理人事管理消息管理发件箱日程管理员工管理部门管理机构管理机构管理2普通员工登陆的流程图:用户输入登陆的用户名和密码判断用户名和密码是否正确否 是三大模块的列表index页面消息管理日程管理人事管理部门列表消息管理收件箱个人日程机构列表机构管理3.2系统部分主要编码1.重要的配置:Application.xml org.hibernate.dialect.MySQLDialecttruecom/hkd/bean/User.hbm.xmlcom/hkd/bean/person/BranchInfo.hbm.xmlcom/hkd/bean/person/DepartInfo.hbm.xml com/hkd/bean/person/UserInfo.hbm.xml com/hkd/bean/schedule/Schedule.hbm.xml com/hkd/bean/message/Message.hbm.xmlStruts.xml/success.jsp/error.jspWeb.xmlopenSessionInVieworg.springframework.orm.hibernate3.support.OpenSessionInViewFilteropenSessionInView/* contextConfigLocationclasspath*:applicationContext.xmlorg.springframework.web.context.ContextLoaderListener2.拦截器的代码:建立一个拦截器类继承了AbstractInterceptorOverridepublic String intercept(ActionInvocation arg0) throws Exception Map session = arg0.getInvocationContext().getSession();String username = (String)session.get(username);String password = (String)session.get(password);System.out.println(username);if( username != null & password != null)System.out.println(username+-username);return arg0.invoke();elsearg0.getInvocationContext().put(tip, 你还没注册呢,赶快去注册吧,);return Action.LOGIN;在action里的代码:public String checkUser() ulist = uis.checkUser(username, password); if(ulist.size() = 0) ActionContext.getContext().put(tipp, 你的用户或密码错误,去注册一个吧); return Action.ERROR; else ActionContext.getContext().getSession().put(username, username);ActionContext.getContext().getSession().put(password, password);ActionContext.getContext().getSession().put(role, ulist.get(0).getRole();ActionContext.getContext().getSession().put(userid, ulist.get(0).getUserid(); if(ulist.get(0).getRole() = 0)/返回用户所登录的列表 return uindex; if(ulist.get(0).getRole() = 1)/返回管理员所登陆的列表return index;else return err; /返回用户或者管理员选择身份错误的页面 3.功能代码(以部门修改为例子)从页面上提交一个表单:在action里的代码:public String departByid()blist = departService.depart_list();dlist = departService.departById(departid); return dbyid;public String update_depart()departService.update(departid, departname, reponser, tel);return departlist();在service里这样写:public void update(int departid, String departname, String reponser,String tel) dao.update(departid, departname, reponser, tel);在dao里是这样写的:public void update(int departid, String departname, String reponser,String tel) Session session = this.getSession();String hql = update DepartInfo u set u.departname=?,u.reponser=?,u.tel=? where u.departid=?;Query query = session.createQuery(hql);query.setString(0, departname);query.setString(1, reponser);query.setString(2, tel);query.setInteger(3, departid);query.executeUpdate();前台验证: $(function()$(.resultForm).Validform(tiptype:1,datatype:*n2:/0-9a-zA-Z_+$/,*100:/wW1,100$/,*3000:/wW1,3000$/在页面上可以进行翻页: 上一页 下一页其余的模块的各个功能的代码,和这个差不多。这里就不一一列举了。第四章 系统运行及调试4.1系统运行登录页面:登录失败的页面:登录成功的页面:管理员的目录:员工的目录:管理员查看的机构页面(可以增加、修改机构)修改员工页面:增加员工页面:删除页面:查看消息详细信息:查看消息列表:查看消息发送成功:写邮件:查询工日程页面:增加验证:退出系统:4.2 系统调试1.主外键的建立,一定要对应。主表的主键和子表的外键数据类型必须一样,而且不能为空,不然建不了外键,也加不了数据。2.我们这次的工程分为:dao service action bean 前台,使用ssh框架,在service里定义dao必须给它的set get方法,同样的在action里定义service,也要给set get方法,不然后台就会报没有get set方法。程序通不过。3.在前台应用的jquery,如果没有导入成功,会报没有定义$,首先先查看jquery放的顺序,还有导入路径写错了,因为需要路径的配置,不然程序不会运行到后台。4.在编写修改功能的时候,如果前台没有提交成功修改条信息的id,那么修改就不成功,有许多传值的方式, 我们是在前台用隐藏域的方式提交给表单, 后台action可以接收一下就可以了。5.在写查询的时候,为了让代码变得比较简洁,查询分页用了同一个方法,但是这就遇到了另外一个问题,当从菜单栏进入到list页面时,需要给查询条件传一个空值,这样在写跳转时需要在请求后面带一个值为空的参数,刚开始我们写的是branch_list.action?title=,但是它不识别title=,我们又改写成branch_list.action?title=null还是不可以,后来我们在页面上测试了一下,终于找到了正确的传值方法branch_list.action?title=。6.必须要注意在application.xml和struts.xml里的正确配置,不然启动服务,会报错的,路径一般不要自己写,都要拷贝,以免错。第五章 课程设计总结与体会5.1课程设计总结与体会这次课程设计我们是以小组的形式来进行的,让我们懂得团队之间合作的重要性。一个人不是可以完成所有的代码,而效率也是我们考虑的因素,在规定的时间完成所有的任务,这就需要我们团队的合作。在这次的课程设计中,我收获了很多,首先我对开发环境有了进一步的熟悉,基本上可以熟练应用这个环境,也基本掌握了SSH(struts2+spring+hibernate)开发方法及基本流程,在本次的开发过程中,主要运用stru

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论