《企业论坛系统毕业论文.doc》由会员分享,可在线阅读,更多相关《企业论坛系统毕业论文.doc(44页珍藏版)》请在三一办公上搜索。
1、摘要在现代社会,人与人之间的沟通方式有很多种,例如发Email,QQ聊天等等。但是这些沟通方式都需要在知道对方联系方式的情况下才能进行。如果需要和所有网民进行交流,这时就需要使用另外一种工具,那就是论坛。通过论坛,每个人都可以浏览自己感兴趣的主题,还可以发表自己的主题,也可以回复别人发表了的主题。企业论坛系统就是这样一套系统。 系统利用MyEclipse6.5软件和MySQL数据库做了一个简单的企业论坛网站,具体可分为前台和后台的管理,实现了对版块信息浏览、用户注册及登录、版块回复及新版块发布和版块管理的统一管理。论文从软件工的角度,阐述了整个开发过程,包括系统的可行性分析、系统使用语言及开发
2、工具的介绍、需求分析、数据库的需求分析以及设计、系统的总体设计和系统完成以后的测试。关键词:企业论坛系统; myEclipse 6.5; MYSQLAbstractIn modern society, communication between people in a variety of ways, such as Email, QQ chat and so on. But these modes of communication are needed to know each other in contact situations can be carried out. If needed
3、, and all users communicate, then need to use another tool, that is forum. Through the forum, everyone can navigate their topic of interest, can also express their theme, also can reply to other published theme. Enterprise forum system is such a system.The system uses the software of MyEclipse6.5and
4、 MySQL database to do a simple corporate website, the concrete can be divided into front and back-office management, realize the section information browsing, the user registration and login, view and new releases and reply block section management management.Papers from the software engineering per
5、spective, expounded the whole development process, including the system feasibility analysis, system using languages and development tools are introduced, the demand analysis, database demand analysis and the design, the overall design of the system and the system after the completion of testing.Key
6、words:Enterprise Forum system; myEclipse 6.5; MYSQL目录1 绪论11.1 研究课题的背景和可行性分析11.1.1 研究课题的背景11.1.2 技术可行性分析11.2 系统实现技术简介11.2.1 JAVA的特点11.2.2 web组件介绍21.2.3 MyEclipse 6.5版本简介71.2.4 本程序中使用的开发工具及开发技术82 企业论坛系统分析92.1 企业论坛系统需求分析92.2 企业论坛系统系统分析103 企业论坛系统数据库设计123.1 E-R模型的建立123.2 数据库表的设计134 系统设计164.1 系统总体框架设计164.
7、2 系统具体功能设计164.3 系统详细设计174.4 运行界面225 系统的调试运行与测试295.1 调试运行295.2 测试295.2.1 黑盒测试295.2.2 白盒测试30结束语31致 谢32参考文献33附录 部分源代码341 绪论1.1 研究课题的背景和可行性分析1.1.1 研究课题的背景在当代社会,人与人之间的沟通方式有许多种,比如说发Email,QQ聊天等。但是这些沟通方式都需要在知道对方联系方式的情况下才能进行。那么如果需要在未知对方联系方式的前提下进行交流,例如对某些时事的看法,或者对一些书本的看法交流等等,这时就需要使用另外一种工具,论坛就是这样的一种工具。通过论坛,每个人
8、都可以浏览自己感兴趣的主题,还可以发表自己的主题,也可以回复别人发表了的主题。1.1.2 技术可行性分析对于一个论坛系统来说,需要提供前台展现和后台管理两个子系统。其中后台管理系统用来供管理员使用,能够对论坛的版块、子版块信息进行管理。前台展现系统可供所有网友使用,只要网友进入了论坛系统,就能够浏览其他网友已经发表的主题。用户也可以发表自己感兴趣的主题,不过前提是要登录系统,所以该系统还需要提供注册和登录功能,不过默认所有前台注册的用户为普通用户。用户在登录系统后,还可以回复别人发表的主题,从而实现网友之间的互动。所以可以使用JSP做页面显示,用servlet做控制层,协调页面链接,javab
9、ean做实体模型1.2 系统实现技术简介1.2.1 JAVA的特点这是我对java特点的一些理解及其归纳: (1)java 的简单性:和C+相比,语法简单了,取消了指针的语法;内存分配和回收不需要我们来过渡关注,C+可以多继承,但java只能是单继承,相对于类来说。(注:接口可以多继承) (2)java面向对象:java算是纯面向对象。 在java编程思想这本书说过,“Everything is object!” 这样便于人类的构思和设计,更符合人们的思考问题方式 (3)分布式:主要还是用在EJB上 (4)安全性:java的语法限定了源程序的安全性,首先编译器会进行源代码的第一步检查 (5)跨
10、平台:java能够跨越不同的操作系统平台,平台无关性 怎么跨平台呢? 主要是在不同的操作系统中,JVM规范都是一样的,被JVM加载成各个操作系统所支持的,屏蔽了底层操作系统的差异 (6)高性能:开闭原则-对扩展开放,对修改关闭 java是即时编译的 (7)多线程: Java开发的流程: (1)、首先编辑 .java源程序 (2)、编译成 .class字节码文件byte code(一种二进制文件) (3)、最后被java虚拟机(JVM)加载解释并执行。1.2.2 web组件介绍(1)Servlet简介Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web
11、页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。(2)Servlet生命周期介绍装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。 Server创建一个Servlet的实例 Server调用Servlet的init(
12、)方法 一个客户端的请求到达Server Server创建一个请求对象 Server创建一个响应对象 Server激活Servlet的service()方法,传递请求和响应对象作为参数 service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息 service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。 对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递
13、给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次(只有一个对象),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法(3)jsp简介JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的
14、,既能在Linux下运行,也能在其他操作系统上运行(4)jsp的九大内置对象JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应) request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。 API方法说明 object getAttribute(String name) 返回指定属性的属性值 Enumeration getAttributeNames() 返回所有可用属性名的枚举 String getCharacterEncoding() 返回字符编码方式 int getConten
15、tLength() 返回请求体的长度(以字节数) String getContentType() 得到请求体的MIME类型 ServletInputStream getInputStream() 得到请求体中一行的二进制流 String getParameter(String name) 返回name指定参数的参数值 Enumeration getParameterNames() 返回可用参数名的枚举 String getParameterValues(String name) 返回包含参数name的所有值的数组 String getProtocol() 返回请求用的协议类型及版本号 Stri
16、ng getScheme() 返回请求用的计划名,如:http.https及ftp等 String getServerName() 返回接受请求的服务器主机名 int getServerPort() 返回服务器接受此请求所用的端口号 BufferedReader getReader() 返回解码过了的请求体 String getRemoteAddr() 返回发送此请求的客户端IP地址 String getRemoteHost() 返回发送此请求的客户端主机名 void setAttribute(String key,Object obj) 设置属性的属性值 String getRealPath
17、(String path) 返回一虚拟路径的真实路径 response对象 response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。 API方法说明String getCharacterEncoding() 返回响应用的是何种字符编码 ServletOutputStream getOutputStream() 返回响应的一个二进制输出流 PrintWriter getWriter() 返回可以向客户端输出字符的一个对象 void setContentLength(int len) 设置响应头长度 void setCont
18、entType(String type) 设置响应的MIME类型 sendRedirect(java.lang.String location) 重新定向客户端的请求 session对象 session对象指的是客户端与服务器的一次会话,从客户端连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例. API方法说明long getCreationTime() 返回SESSION创建时间 public String getId() 返回SESSION创建时JSP引擎为它设的惟一ID号 long getLastAccessedTime
19、() 返回此SESSION里客户端最近一次请求时间 int getMaxInactiveInterval() 返回两次请求间隔多长时间此SESSION被取消(ms) String getValueNames() 返回一个包含此SESSION中所有可用属性的数组 void invalidate() 取消SESSION,使SESSION不可用 boolean isNew() 返回服务器创建的一个SESSION,客户端是否已经加入 void removeValue(String name) 删除SESSION中指定的属性 void setMaxInactiveInterval() 设置两次请求间隔多
20、长时间此SESSION被取消(ms) out对象 out对象是JspWriter类的实例,是向客户端输出内容常用的对象 API方法说明void clear() 清除缓冲区的内容 void clearBuffer() 清除缓冲区的当前内容 void flush() 清空流 int getBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0 int getRemaining() 返回缓冲区还剩余多少可用 boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常 void close() 关闭输出流 page对象 page对象就是指向当前JSP页面本身,有
21、点象类中的this指针,它是java.lang.Object类的实例 API方法说明class getClass 返回此Object的类 int hashCode() 返回此Object的hash码 boolean equals(Object obj) 判断此Object是否与指定的Object对象相等 void copy(Object obj) 把此Object拷贝到指定的Object对象中 Object clone() 克隆此Object对象 String toString() 把此Object对象转换成String类的对象 void notify() 唤醒一个等待的线程 void not
22、ifyAll() 唤醒所有等待的线程 void wait(int timeout) 使一个线程处于等待直到timeout结束或被唤醒 void wait() 使一个线程处于等待直到被唤醒 void enterMonitor() 对Object加锁 void exitMonitor() 对Object开锁 application对象 application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访
23、问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。 API方法说明Object getAttribute(String name) 返回给定名的属性值 Enumeration getAttributeNames() 返回所有可用属性名的枚举 void setAttribute(String name,Object obj) 设定属性的属性值 void removeAttribute(String name) 删除一属性及其属性值 String getServerInfo() 返回JSP(SERVLET)引擎名及版本号 String getR
24、ealPath(String path) 返回一虚拟路径的真实路径 ServletContext getContext(String uripath) 返回指定WebApplication的application对象 int getMajorVersion() 返回服务器支持的Servlet API的最大版本号 int getMinorVersion() 返回服务器支持的Servlet API的最大版本号 String getMimeType(String file) 返回指定文件的MIME类型 URL getResource(String path) 返回指定资源(文件及目录)的URL路径
25、InputStream getResourceAsStream(String path) 返回指定资源的输入流 RequestDispatcher getRequestDispatcher(String uripath) 返回指定资源的RequestDispatcher对象 Servlet getServlet(String name) 返回指定名的Servlet Enumeration getServlets() 返回所有Servlet的枚举 16 Enumeration getServletNames() 返回所有Servlet名的枚举 void log(String msg) 把指定消息
26、写入Servlet的日志文件 void log(Exception exception,String msg) 把指定异常的栈轨迹及错误消息写入Servlet的日志文件 void log(String msg,Throwable throwable) 把栈轨迹及给出的Throwable异常的说明信息 写入Servlet的日志文件 exception对象 exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象 API方法
27、说明String getMessage() 返回描述异常的消息 String toString() 返回关于异常的简短描述消息 void printStackTrace() 显示异常及其栈轨迹 Throwable FillInStackTrace() 重写异常的执行栈轨迹 pageContext对象 pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext。 API方法说明JspWriter getOut(
28、) 返回当前客户端响应被使用的JspWriter流(out) HttpSession getSession() 返回当前页中的HttpSession对象(session) Object getPage() 返回当前页的Object对象(page) ServletRequest getRequest() 返回当前页的ServletRequest对象(request) ServletResponse getResponse() 返回当前页的ServletResponse对象(response) Exception getException() 返回当前页的Exception对象(exception
29、) ServletConfig getServletConfig() 返回当前页的ServletConfig对象(config) ServletContext getServletContext() 返回当前页的ServletContext对象(application) void setAttribute(String name,Object attribute) 设置属性及属性值 void setAttribute(String name,Object obj,int scope) 在指定范围内设置属性及属性值 public Object getAttribute(String name)
30、取属性的值 Object getAttribute(String name,int scope) 在指定范围内取属性的值 public Object findAttribute(String name) 寻找一属性,返回起属性值或NULL void removeAttribute(String name) 删除某属性 void removeAttribute(String name,int scope) 在指定范围删除某属性 int getAttributeScope(String name) 返回某属性的作用范围 Enumeration getAttributeNamesInScope(in
31、t scope) 返回指定范围内可用的属性名枚举 void release() 释放pageContext所占用的资源 void forward(String relativeUrlPath) 使当前页面重导到另一页面 void include(String relativeUrlPath) 在当前位置包含另一文件 config对象 config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象) API方法说明ServletContext g
32、etServletContext() 返回含有服务器相关信息的ServletContext对象 String getInitParameter(String name) 返回初始化参数的值 Enumeration getInitParameterNames() 返回Servlet初始化所需所有参数的枚举1.2.3 MyEclipse 6.5版本简介(1) 平台和安装支持 兼容Eclipse 3.3/Europa 1.0 支持Java 5 & Java 6 可运行在Windows (XP,Vista)、Linux、 Mac操作系统 (2) 改进了Java EE 5 和 Spring功能部件 提高
33、EJB3工程项目的灵活度,从数据库模式直接产生bean 支持Java持久化结构开发 对Spring 2.0升级,增强配置管理功能 升级Hibernate Spring-JPA高度集成 (3) 支持AJAX开发和测试 支持美国Apple公司所有的AJAX特征能在Mac操作系统上运行 改进了AJAX Web 浏览器 改进了AJAX工具 增强了JavaScript调试 (4) 支持RAD Web 开发 (5) 具备Matisse4MyEclipse可视化Swing设计器 (6) 快速Java EE部署和测试 项目自动部署和启动服务:根据指定的调试和运行模式,自动配置项目和启动服务器;在配置前,自动停
34、止运行的服务器;在现有的应用程序配置中可以重新配置 MyEclipse Tomcat 6 服务器就地集成,启动只要一秒钟 MyEclipse Derby 服务器:自动进行JDBC连接;可配置的启动选项 (7) MyEclipse学习中心(提供帮助和学习资料) 包含Java EE项目源代码 一键安装MyEclipse Java EE示例项目1.2.4 本程序中使用的开发工具及开发技术本系统的开发工具具体如下。(1)系统开发平台:MyEclipse 6.5。(2)数据库管理系统软件:SQL Server 2005。(3)运行平台:Windows 2000/Windows XP/Windows 20
35、03/Windows Vista。(4)Java开发包:JDK 5.0以上。(5)Web服务器:Tomcat 6.0。本系统采用MVC架构模式开发,具体技术如下。(1)显示层:使用JSP技术开发(2)控制层:使用Servlet技术开发(3)模型层:使用JavaBean技术开发(4)数据访问层:使用DAO模式开发2 企业论坛系统分析2.1 企业论坛系统需求分析企业论坛系统分为前台和后台两个部分,其中后台供管理员管理论坛之用,包括版块设置一个子模块,该模块用来管理论坛的版块和子版块信息,包括新增版块、编辑版块、删除版块以及移动版块等功能子模块。后台版块移动版块删除版块编辑版块新增版块移除图2.1后
36、台系统分析图系统前台用来供所有网友交流之用,包括版块列表、主题列表、显示主题详细内容、发表主题、发表回复、主题管理、用户注册以及用户登录等子模块。具体的功能模块如下。版块列表模块:该模块用来显示论坛的所有根版块以及其下所有子版块,还能够显示子版块下主题的数目以及最后发表记录。主题列表模块:该模块用来显示指定板块下的所有主题信息,还能够显示主题的发表者信息以及回复记录数。显示主题详细内容模块:该模块用来显示主题的详细信息以及该主题下的所有回复信息。前台回复主贴用户注册用户登录板块信息浏览发布新主题图2.2前台系统分析图2.2 企业论坛系统系统分析为方便论坛管理,论坛总共有三种权限:分别是管理员、
37、版主和普通用户。其中管理员权限最大,版主次之,普通用户最小,下面分别对其进行具体说明 图2.3普通用户权限分析三种权限中,普通用户是权限最小的用户,除了浏览论坛外仅可以发表话题、回复和修改自己发表的回帖内容,名字等图2.4版主用户权限分析版主可以看做是用户特殊的一种,他不仅包括普通用户的权限还是每个板块的管理者,除了浏览网页发表和回复信息外,还可以对自己发表的主题及别的用户对其的回复进行管理,例如,对一些非法的主题或回复进行删除或修改图2.5管理员用户权限分析管理员权限是所有用户中最大的,除了可以浏览论坛的所有内容、回复主题、发表新的主题、对所有的帖子及其回帖进行删除和修改,还可以进入后台进行
38、版块及子版块的管理,例如把某子版块移动到别的父版块下,新增加父版块或在某父版块下新增子版块,删除某板块,修改某板块的名称或版主名3 企业论坛系统数据库设计3.1 E-R模型的建立在需求分析基础上,进行总结分析,就可以得出企业论坛系统的基本E-R模型:其四种图形标记分别为:矩形框:表示实体集,矩形框内写明实体名。椭圆框:表示实体的属性,椭圆框内写明属性名。菱形框:表示实体集之间的联系,菱形框内写明联系明。连线:实体与属性之间、联系与属性之间用直线连接;联系与其相关的实体集之间也以直线相连,同时在连线旁边标上联系的类型(1:1 1:n m:n)用户表版块信息表主题信息表回复信息表回复包含发表包含1
39、nN11n111nN1nN1图3.1 基本E-R图上图是企业论坛系统的基本E-R图,没有将属性写出,每个实体都有自己的属性,现在举例将实体“用户”的属性列出如下:图3.2 用户信息实体其他的实体属性与此类似。将所有的实体属性添加以后,可以得到最后完整的E-R图:图3.3 E-R模型总图3.2 数据库表的设计根据分析可得该系统需要四个表。以下是企业论坛系统数据库中的各个表及视图的设计。表3.1 版块信息表(对应bbs数据库中的sectioninfo表)字段名数据类型是否主键描述sIdInt(整形)是版块编号sNameVarchar(文本)否版块名称sTopicCountInt(整形)否帖子数目s
40、MasterIdeaInt(整形)否版主编号sParentIdInt(整形)否父版块编号该表记录的是版块的基本信息,用版块编号来区别版块的,所以版块编号是惟一的,即是不可重复的,可以通过版块编号类查找版块名称、父版块编号、版主的编号,帖子数目表3.2 主题信息表(对应bbs数据库中的topicinfo表)字段名数据类型是否主键描述tIdInt(整形)是帖子编号tSIdInt(整形)否(外键)所属版块编号tUIdInt(整形)否(外键)发帖用户编号tTopicVarchar(文本)否帖子标题tContentsVarchar(文本)否帖子内容tReplyCountInt(整形)否回复数目tRepl
41、yCountInt(整形)否点击数目tPublicTimeDate(日期)否发帖时间tModifyTimeDate(日期)否修改时间该表记录的是主贴信息,用帖子编号作为主键,来区分各个主题信息,版块编号与用户编号作为其外键,能用外键联动查到版主名称及父版块相关信息,通过主键能查找某个主题信息的包括帖子标题、内容、点击数目、回帖数目等相关信息表3.3 回复信息表(对应bbs数据库中的replyinfo表)字段名数据类型是否主键描述rIdInt(整形)是跟帖编号rTIdInt(整形)否回复主贴信息rSIdInt(整形)否(外键)跟帖所在版块编号rUIdInt(整形)否(外键)跟帖人编号rTopic
42、Varchar(文本)否跟帖主题rContentsVarchar(文本)否跟帖rPublicTimeDate(日期)否跟帖时间rModifyTimeDate(日期)否修改时间该表记录的是主贴信息,用跟帖编号作为主键,来区分各个主题信息,版块编号与跟帖用户编号作为其外键,能用外键联动查到用户名称及父版块相关信息,通过主键能查找某个回复信息的包括回复的内容、回复的时间等相关信息表3.4 用户信息表(对应bbs数据库中的userinfo表)字段名数据类型是否主键描述uIdInt(整形)是用户编号uNameVarchar(文本)否用户名uPassWordVarchar(文本)否用户密码uSexInt(
43、整形)否用户性别uFaceVarchar(文本)否用户头像路径uRegTimeDate(日期)否用户注册时间uTypeInt(整形)否用户类型该表记录的是用户信息,以用户编号作为主键,要保证其唯一性,可以通过主键查找到该用户的用户名,密码,用户性别、用户注册时间,用户类型,及用户头像的保存路径4 系统设计4.1 系统总体框架设计总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务,也就是说,应该确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构。在对论坛系统进行了需求分析后,设计了系统的一个总体框架(图4-1),如下所示:企业论坛系统用户管理板块管理用户注册版块新增
44、版块修改板块移除板块移动图4.1 总体框架4.2 系统具体功能设计(1)注册注册的用户默认只能是会员,不能注册为管理员,用户名不能为空,长度在3-10个字符之间,密码不可为空,字符在3-20个之间,在注册时密码与重复密码框内必须保持一致。(2)发帖发帖必须保证用户已登录,不然直接跳到登录界面,论坛名称不可为空且长度为4-20,内容在1000字以内且不可为空(3)回帖回帖必须保证用户已登录,不然直接跳到登录界面,回复名称不可为空且长度为4-20,内容在1000字以内且不可为空(4)后台管理进出后台管理界面,强制要求再次登录,管理员可以对现有的父版块及子版块进行删除、修改和移动等操作,也可以新增父版块或子版块(5)板块的新增版块的新增可以在现有的一级版块目录下创建子版块,也可以创建新的主版块,但在创建的时候就要求指明版主(6)板块的删除版块删除会弹出一个警示框,以免发生误操作,板块的删除会连带把旗下所有的子版块及话题全部删除(7)版块修改板块的修改可以修改版块名称,及版主名(8)版块移动版块的移动分