课程设计报告企业管理系统_第1页
课程设计报告企业管理系统_第2页
课程设计报告企业管理系统_第3页
课程设计报告企业管理系统_第4页
课程设计报告企业管理系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、课程设计报告课程设计报告项项目名称目名称: 企业论坛管理课课程名称程名称: J2EE 技术 院院 ( 系系 ): 信息工程学院 专业专业班班级级: 2013 软件工程(1)班 姓姓 名名: 朱守顺、章宏磊、田洋、潘洪浩 学学 号号: 1342159142,40,28,25 指指导导教教师师: 胡 俊 2015 年年 12 月月 15 日日目 录1 开发背景.12 系统分析.12.1 需求分析.12.2 功能分析.13 系统设计.23.1 功能图.23.2 流程图.33.3 数据库设计.3 3.3.1 数据库分析.3 3.3.2 数据库概念设计.3 3.3.3 数据库逻辑结构设计.54 关键代码

2、分析.64.1 版块的添加.64.2 显示版块管理导航树.84.3 版块信息编辑.84.4 版块信息删除.94.5 版块发表主题.104.6 版块发表回复.115 测试与演示.125.1 访问首页模块.125.2 注册登录模块.125.3 管理员管理模块.136 总结.14第 1 页1 开发背景开发背景 XX 网是一家人才交流网,为了加强企业和人才、人才和人才之间的交流,需要开发一套企业论坛系统。通过该系统企业可以发布一些招聘岗位以及具体条件,而人才也可以浏览具体的岗位,并对自己感兴趣的岗位进行回复。同时在论坛中还将提供一些休闲板块。供网友在工作的闲暇时间进行交流。2 系统分析系统分析2.12

3、.1 需求分析需求分析 对于一个论坛系统来说,需要提供前台展现和后台管理两个子系统。其中后台管理系统用来供管理员使用,能够对论坛的板块、子板块、用户等等信息进行管理。前台展现系统可供所有网友使用,只要网友进入了论坛系统,就能够浏览其他网友已经发表的主题。用户也可以发表自己感兴趣的主题,不过前提是要登录系统,所以该系统还需要提供注册和登录功能。用户在登录系统后,还可以回复别人发表的主题,从而实现网友之间的互动。2.22.2 功能分析功能分析 企业论坛系统分为前台和后台两个部分,其中后台供管理员管理论坛只用,包括板块设置和用户设置两个子版块,具体的功能模块如下。 板块设置模块:该模块用来管理论坛的

4、板块和子版块信息,包括新增板块、编辑板块、删除板块以及移动板块等功能子版块。 用户设置模块:该模块用来管理论坛的用户信息,包括新增用户、更新用户、删除用户以及查询用户等功能子模块。 系统前台用来供所有网友交流之用,包括板块列表、主题列表、显示主题详细内容、发表主题、发表回复、主题管理、用户注册以及用户登录等子模块。具体的功能模块如下。 板块列表模块:该模块用来显示论坛的所有根板块以及其下所有子板块,第 2 页还能够显示子板块下主题的数目以及最后发表记录。 主题列表模块:该模块用来显示制定板块下的所有主题信息,还能够显示主题的发表者信息以及回复记录数。 显示主题详细内容模块:该模块用来显示主题的

5、详细信息以及该主题下的所有回复信息。3 系统设计系统设计3.13.1 功能图功能图 论坛用户一共有 3 中权限,分别是普通用户、版主以及管理员。下面就来分析这 3 个角色所对应的用例图。 普通用户是论坛系统中权限最小的用户,除了可以浏览论坛外,仅仅可以发表主题和回复信息,其用例图如图 1 所示。 版主是每个板块的管理者,除了发表主题和回复信息外,还可以对板块的主题和回复进行管理。例如可以删除一些非法的主题和回复,也可以对主题和回复进行修改更新。其用例图如图 2 所示。 管理员是整个论坛的管理者,是最高权限的用户。管理员除了可以使用系统前台之外,还可以使用系统的后台,通过后台来对板块和用户进行管

6、理。其用例图如图 3 所示。 浏浏览览论论坛坛发发表表主主题题回回复复主主题题修修改改主主题题和和回回复复删删除除主主题题和和回回复复版主版主所有功能管理模块信息管理用户信息管理员 图 1 版主用例图 图 2 管理员用例图第 3 页3.23.2 流程图流程图 企业系统前台,用户进入系统后将打开论坛首页,用户可以选择注册或系统登录。对于登录的用户可以发表主题和回复,而对于版主来说可以删除或者修改主题和回复。其系统流程图如图 4 所示。 身身份份识识别别是是否否为为管管理理员员否否系系统统首首页页是是版版块块管管理理子子板板块块管管理理用用户户管管理理论论坛坛首首页页浏浏览览板板块块查查看看主主题

7、题查查看看回回复复注注册册登登录录是是否否合合法法否否是是否否为为版版主主是是版版主主是是删删除除主主题题删删除除回回复复普普通通用用户户否否发发表表主主题题发发表表回回复复图 3 系统后台流程图 图 4 系统前台流程图3.33.3 数据库设计数据库设计 3.3.1 数据库分析数据库分析 在企业论坛系统中,需要对论坛用户信息、论坛栏目信息、论坛主题信息以及论坛回复信息进行管理。所以需要为这些信息创建相应的数据库表。企业论坛系统的所有数据库表如图 8-10 所示。 3.3.2 数据库概念设计数据库概念设计 本系统一共设计规划处 4 个实体,分别为板块信息实体、主题信息实体、回复信息实体以及用户信

8、息实体。 版块信息实体用来保存论坛的所有版块信息,包括版块编号、板块名称、版主编号、帖子数目以及父版块编号 5 个属性。板块信息实体 E-R 图如图 5 所示。第 4 页版块编号版版块块信信息息实实体体(section)版块名称版主编号帖子数目父版块编号 图 5 版块信息实体 E-R 图 主题信息实体用来保存论坛的所有主题信息,包括帖子编号、所属版块编号、发帖用户编号、帖子标题、帖子内容等信息。主题信息实体 E-R 图如图 6所示。版块编号主主题题信信息息实实体体(topicInfo)所属版块名称发帖用户编号帖子标题帖子内容回复数量点击数量发帖时间修改时间 图 6 主题信息实体 E-R 图 回

9、复信息实体用来保存论坛的所有回复信息,包括跟帖编号、回复的主帖编号、跟帖所在版块编号、跟帖人编号等信息。回复信息实体 E-R 图如图 7 所示。 用户信息实体用来保存论坛的所有用户信息,包括用户编号、用户名、用户密码、用户性别等信息。用户信息实体 E-R 图如图 8 所示。第 5 页 跟帖编号回回复复信信息息实实体体(replyInfo)回复的主帖编号跟帖所在版块编号跟帖人编号跟帖主题跟帖内容跟帖时间修改时间用户编号用用户户信信息息实实体体(userInfo)用户名用户密码用户性别用户头像路径用户注册时间用户类型图 7 回复信息实体 E-R 图 图 8 用户信息实体 E-R 图3.3.3 数据

10、库逻辑结构设计数据库逻辑结构设计 根据设计好的各实体 E-R 图创建数据库的逻辑结构,数据库各表的结构如下。 (1) 版块信息表储存版块信息,包括版块编号、版块名称、版块编号、跟帖数目以及父版块编号 5 个字段。该表的逻辑结构如表 1 所示。表 1 版块信息表 (2)主题信息表用来储存主题信息,包括帖子编号、所属版块编号、发帖用户编号、帖子标题、帖子内容等 9 个字段。该表的逻辑结构如表 2 所示。表 2 主题信息表 (3)回复信息表用来存储回复信息,包括跟帖编号、回复的主帖编号、跟帖第 6 页所在版块编号、跟帖人编号等 8 个字段。该表的逻辑结构如表 3 所示。表 3 回复信息表 (4)用户

11、信息表用来储存用户信息,包括用户编号、用户名、用户密码、用户性别等 7 个字段。该表的逻辑结构如表 4 所示。表 4 用户信息表4 关键代码分析关键代码分析4.1 版块的添加版块的添加 新建一个 Servlet,通过该 Servlet 来接收用户提交的版块信息,并调用数据校验方法来进行校验。如果校验成功则调用数据版块数据访问层方法来执行版块的添加,其实现的代码如下。 public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException req

12、uest.setCharacterEncoding(gb2312);/设置请求编码格式response.setCharacterEncoding(gb2312);/设置响应编号格式response.setContentType(text/html);/设置响应文本类型PrintWriter out = response.getWriter();/获得响应输出流String action = request.getParameter(action);/获得action参数if (add.equals(action.toLowerCase() /添加版块Integer sParentId = In

13、teger.parseInt(request.getParameter(select);/获得父版块编号第 7 页Integer sType = Integer.parseInt(request.getParameter(sType);/获得版块类型String sName = request.getParameter(sName).trim();/获得版块名称String uName = request.getParameter(uName).trim();/获得版主用户名if (sType = 0) /论坛版块sParentId = 0;/设置其父版块编号为 else if (sType

14、= 1) /论坛子版块if (sParentId = -1) /如果父版块编号为-1out.print( + alert(请选择论坛所属父版块);+ window.history.back(); + );return;/弹出对话框提示if (check_dao.checkSectionName(sName) /验证版块名称if(check_dao.checkUserNameIsExist(uName) /验证版主用户名Boolean flag = manager_dao.addSection(sParentId, sName,uName);/执行新增版块if (!flag) /添加失败out.

15、print( + alert(添加失败);+ window.history.back(); + ); else /添加成功response.sendRedirect(manager/addSection.jsp);else out.print( + alert(该用户不存在,不能指定为版主);+ window.history.back(); + ); else out.print( + alert(论坛名称长度为-20);+ window.history.back(); + ); 代码第 1 行定义了一个 doGet 方法,该方法用来相应 GET 方式的请求。代码第 3 行至第 5 行分别设置

16、请求和响应的编码格式为 GB2312,并设置响应文本类型为 HTML 页面。代码第 7 行通过 request 对象获得 action 的参数值。代码第 8 行判断 action 参数值是否为 add,如果为 add,则表示进行版块添加操作。代码第 9 行至 14 行分别获得了父版块编号、版块类型、版块名称以及版主用户名信息。代码第 15 行至 23 行判断版块类型,如果版块类型为论坛版块,则设置其父版块编号为 0;否则判断其父版块名称是否为-1,如果为-1 则表示用户没有选择父版块,这时将弹出错误提示对话框。代码第 24 行至 41 行首先对该版块名称进行校验,校验通过则再验证用户名是否存在

17、,如果存在则调用第 8 页manager_dao 的 addSection 方法来执行版块新增。4.2 显示版块管理导航树显示版块管理导航树 版块管理界面是采用树状的形式进行展现的,首先需要新建一个SectionInfoDAO 类,该类用来封装所有的版块操作方法。在该类中添加一个getSectionById 方法,通过该方法来完成根据版块编号查找该版块下所有子版块的功能。其实现代码如下。 public List getSectionById(Integer sId) List list = new ArrayList();/版块列表String sql = select * from sect

18、ionInfo +where sparentId = ?;/根据版块编号查找子版块try rs = dao.executeQuery(sql, new ObjectsId );/执行查询while (rs != null & rs.next() /如果查找到记录SectionInfo section = new SectionInfo();/版块信息对象section.setSid(rs.getInt(sId);/设置版块编号section.setSmasterid(rs.getInt(sMasterId);/设置版主编号section.setSname(rs.getString(sN

19、ame);/设置版块名称section.setSparentid(rs.getInt(sParentId);/设置父版块编号section.setStopiccount(rs.getInt(sTopicCount);/设置版块主题数list.add(section);/添加版块对象 catch (SQLException e) e.printStackTrace(); finally dao.closeResultSet();/关闭结果集dao.closeStatement();/关闭处理对象dao.closeConnection();/关闭连接对象return list;/返回版块列表 代码

20、第 2 行实例化了一个 ArrayList 对象,用来保存版块列表信息。代码第 3 行定义了一个查询 SQL 语句,用来完成根据版块编号查找所属版块的功能。代码第 5 行至第 22 行通过调用 dao 对象的 executeQuery 方法来执行查询,并通过遍历取得结果集中的记录,并将其设置到版块信息对象中。代码第 23 行通过 return 语句来返回版块列表。4.3 版块信息编辑版块信息编辑 要完成版块信息编辑功能,首先需要创建一个版块编辑页面第 9 页editSection.jsp。通过该页面来显示版块的原始数据,并接收用户输入的新数据。其关键代码如下。public Boolean ad

21、dSection(Integer sParentId, String sName,String uName) String sql = select uId from userInfo where +uName = ?;/根据用户名来查找用户编号Integer sMasterId = 0;/初始化用户编号try rs = dao.executeQuery(sql, new Object uName );/执行查询if(rs.next() /如果能够查找到记录sMasterId = rs.getInt(uId);/设置用户编号 catch (SQLException e1) e1.printSt

22、ackTrace();Integer result = -1;sql = insert into sectionInfo(sName,sParentId,sMasterId) + values(?,?,?);/插入SQL语句try result = dao.executeUpdate(sql, new Object sName, sParentId,sMasterId);/执行插入 catch (SQLException e) e.printStackTrace(); finally dao.closeResultSet();/关闭结果集dao.closeStatement();/关闭处理对象

23、dao.closeConnection();/关闭连接对象return result 0 ? true : false; 代码第 2 行至第 13 行首先通过接收的版主用户名,查询其所对应的版主编号信息。代码第 14 行定义了一个更新 SQL 语句,更新指定版块编号下的版块名称和版主编号信息。代码第 18 行通过调用 dao 对象的 executeUpdate 方法来执行更新。4.4 版块信息删除版块信息删除 在删除版块信息之前首先需要判断该版块是否有子版块,如果有子版块的话则不能进行删除,这时需要在 ManagerDAO 类中新添一个方法第 10 页isHaveChildNode,通过该方法

24、来判断指定版块下是否有子版块。其实现代码如下。 public Boolean isHaveChildNode(Integer sid) String sql = select * from sectionInfo + where sParentId = ?;/查询指定编号下的子版块try rs = dao.executeQuery(sql,new Objectsid);/执行查询if (rs != null & rs.next() /如果存在记录return true;/返回true catch (SQLException e) e.printStackTrace(); finally

25、 dao.closeResultSet();/关闭结果集dao.closeStatement();/关闭处理对象dao.closeConnection();/关闭连接对象return false; 代码第 2 行和第 3 行定义了一个查询 SQL 语句,用来查询指定版块编号下的子版块信息。代码第 5 行通过调用 dao 对象的 executeQuery 方法来执行查询。代码第 7 行和第 8 行通过判断是否存在查询记录,如果存在则表示该版块下存在子版块,所以返回 true 值。4.5 版块发表主题版块发表主题 要实现发表主题,首先需要添加一个发表主题单页 post.jsp。在该页面中包含一个发

26、表主题表单,用来输入主题的标题以及内容,发表主题和显示主题详细内容是共用的一个处理地址,这时只需要在 servletDetailPage 这个Servlet 中添加对发表主题的处理代码即可。其实现代码如下。 else if (reply.equals(action.toLowerCase() /发表主题sid = Integer.parseInt(request.getParameter(sid);/版块编号tid = Integer.parseInt(request.getParameter(tid);/主题编号uid = Integer.parseInt(request.getParame

27、ter(uid);/用户编号String title = (String) request.getParameter(title);/回复标题String content = (String) request.getParameter(content);/回复内容if (!check_dao.checContents(content) /校验回复内容是否合法out.print( + alert(内容不能为空,并且长度不大于);+ window.history.back(); + );第 11 页 else Boolean result = replyinfo_dao.insertReplyIn

28、fo(title, content,tid, sid, uid);/执行插入操作if (result) /插入成功request.setAttribute(tid, tid);/保存主题编号request.setAttribute(sid, sid);/保存版块编号replyinfo_dao.getReplyCountById(tid, sid);/获得回复数目request.getRequestDispatcher(/跳转到主题详细内容页servletDetailPage?tid= + tid + &sid= + sid+ &action=showDetail).forwar

29、d(request,response); else out.print( + alert(服务器忙!);+ window.history.back(); + ); 代码第 1 行首先判断 action 参数值是否为 post,如果是则执行发表主题的代码。代码第 2 行至第 5 行分别获得版块编号、用户编号、主题标题以及主题内容信息。代码第 6 行判断主题标题是否合法,如果不合法则弹出提示框。代码第 9 行判断主题内容是否合法,如果不合法则同样弹出提示框。代码第 13行和第 14 行通过调用 topicinfo_dao 的 insertTopicInfo 方法来执行主题插入操作。代码第 15 行

30、用来判断是否插入成功,如果插入成功则保存版块标号到request 范围,并取得版块下的主题数目,同时跳转到主题列表页面。4.6 版块发表回复版块发表回复 发表回复同发表主题的功能基本类似,同样首先需要一个发表回复表单,用来输入回复标题和回复内容。发表回复和发表主题同样也是共用的一个处理地址,所以只需要在 servletDetailPage 这个 Servlet 中添加对发表回复的处理代码即可。其实现代码如下。else if (post.equals(action.toLowerCase() /发表主题sid = Integer.parseInt(request.getParameter(sid

31、);/版块编号uid = Integer.parseInt(request.getParameter(uid);/用户编号String title = (String) request.getParameter(title);/主题标题String content = (String) request.getParameter(content);/主题内容if (!check_dao.checkTopic(title) /校验主题标题是否合法out.print( + alert(标题不能为空,长度在-20);+ window.history.back(); + ); else if (!che

32、ck_dao.checContents(content) /校验主题内容是否合法第 12 页out.print( + alert(内容不能为空,并且长度不大于);+ window.history.back(); + ); else Boolean result = topicinfo_dao.insertTopicInfo(title, content,sid, uid);/执行插入操作if (result) /插入成功request.setAttribute(sid, sid);/保存版块编号topicinfo_dao.getTopicCountById(sid);/取得版块下主题数request.getRequestDispatcher(servletListPage?sid= + sid).forward(request, response);/跳转到主题列表页面 else out.print( + alert(服务器忙!);+ window.history.back(); + ); 代码第 1 行首先判断 act

温馨提示

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

评论

0/150

提交评论