1、毕业设计文章发布系统用户功能模块子系统 班 级: 学号: 姓 名: 冯贝 学 院: 软件学院 专 业: 软件工程 指导教师: 文章发布系统摘 要本文章发布系统是使用JSP编程语言和Mysql数据库共同来完成的,采用面向对象方法,对文章发布系统进行设计与实现。分析设计了文章发布系统的静态模型和动态模型,完成了系统开发的分析、设计和实现的工作。本文章发布系统通过Web方式完成用户与系统的交互,系统的功能模块具体有投稿管理模块、审核文章管理模块、通知信息模块。本系统的开发采用现有成熟技术为参照,共享源码为模板,结合本文章发布系统的实际需求进行分析和功能调整,探讨了利用JSP开发文章发布系统的过程。关
2、键词:文章,工作,管理,系统开发华中科技大学Articles Published SystemABSTRACTThe articles published system is the use of JSP and Mysql database programming language common to complete, object-oriented approach, on articles published system design and implementation. Analysis of articles published system designed for stat
3、ic and dynamic models, the completion of system development analysis, design and implementation work. The articles published system is accomplished through the Web user and system interaction, the system function modules specific management module of teachers, student management module, the results
4、of information modules, make-up information management module. The development of this system as a reference the use of existing mature technologies, sharing source code as a template, in light of actual articles published system requirements analysis and functional adjustment of JSP development usi
5、ng the process of articles published system. Keywords: articles, management, system华中科技大学目 录1. 引言12. 系统分析22.1 系统需求分析22.2 本系统采用的关键技术32.2.1 JSP技术32.2.2 JavaBean技术42.2.3 JDBC技术52.2.4 用JDBC访问数据库62.3 可行性分析93. 系统概要设计104. 系统详细设计114.1 关于数据库114.2 系统E-R图114.3 系统流程图124.4 处理流程设计124.4.1 系统操作流程124.4.2 数据增加流程144.4
6、.3 数据修改流程144.4.4 数据删除流程154.5 系统模块设计164.5.1 用户登录204.5.2 用户注册、修改个人资料204.5.3 密码找回204.5.4 会员发布文章214.5.5 文章修改删除214.5.6 投稿信息管理22 第 I 页 共 页4.5.7 审稿信息管理234.5.8通知信息管理235. 系统调试与测试245.1 程序调试245.2 程序的测试245.2.1 测试的重要性及目的245.2.2 测试的步骤255.2.3 测试的主要内容266. 结论286.1 系统评价286.2 安全性问题28参考文献30致谢31 第 页 共 页1 引言随着计算机技术的飞速发展,
7、计算机在刊物文章管理中应用的普及,利用计算机在实现刊物文章的管理势在必行。当今社会正快速向信息化社会前进,信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。目前很多的刊物文章管理还处于人工管理的阶段,效率低下,已经远远落后于当今技术的发展。并且人工管理的弊端也愈来愈严重,由于不可避免的人为因素,造成数据的遗漏、误报,而造成重大损失的事例层出不穷1。计算机信息化管理有着储存信息量大,速度快等许多优点,提供给我们的处理信息及时快捷,同时也提高了我们工作人员的自身素质。因此我们利用计算机提供给我们信息,做出了这个文章发布系统。文章发布系统是现在刊物文章管理工作不可缺
8、少的一部分是适应现在刊物文章制度的要求。推动刊物文章管理走向科学化、规范化的必要条件。传统的办公模式主要以纸介质为主,在信息革命的浪潮中,显然已经远远不能满足高效率、快节奏的现代工作和生活的需要。如何实现信息处理的自动化和办公的无纸化逐步得到了人们的重视。如今,随着计算机技术的普及人们开始采用MIS,它是集计算机技术、网络通信技术为一体的信息系统工程,能使运行的数据更加准确、及时、全面、详实,同时对各种信息进一步地加工,使领导层对刊物文章管理的决策依据更充分,更具有合理性科学性,并创造出更多的发展机会;另外也进一步加强的科学化、合理化、制度化、规范化管理,为的管理水平跨上新台阶,为持续、健康、
9、稳定的发展打下基础。MIS是一门新的学科,它跨越了若干个领域,比如管理科学、系统科学,运筹学、统计学以及计算机科学。在这些学科的基础上,形成信息收集和加工的方法,从而形成一个纵横交织的系统。在强调管理,强调信息的现代社会中它变得越来越普及。目前国内使用和发展的MIS平台模式大体分两种:客户机/服务器(c/s)模式和web浏览器/服务器(b/s)模式2。本文主要介绍一个简单的基于b/s模式的 文章发布系统的实现,系统开发的总体任务是实现刊物文章信息关系的系统化、规范化和自动化。2 系统分析2.1 系统需求分析主要应用于完成对日常的刊物文章、教务、教师以及刊物文章的计算机化的管理。文章发布系统可使
10、学校的教职员工减轻工作压力,系统地对教务、刊物文章上的各项服务和信息进行管理。同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化,更加效率。而国外随着信息化的告诉发展,各高校早已有一套成熟的文章发布系统,来规范各学校的信息化管理。基于JSP实现作者投稿、编辑安排评审、审稿人审稿、编辑根据评审决定文章是否录用、通知作者等。系统依据Apache Tomcat构架的运行平台,进行整体框架的设计,连接数据库,最后进行全面的系统调试而完成。系统采用B/S模式。整个系统最关键的就是数据库系统,一个强大的数据库可以支持完善一个优秀的软件设计,通过软件系统
11、与数据库系统的连接来实现通过软件界面观察和处理操作数据3。业务服务器数据库服务器事务逻辑数据逻辑ClientBrowser表示逻辑Browser表示逻辑JSP网页WWW服务器/业务逻辑服务器JavaBean组件中间件JDBC数据库服务器数据库Mysql 图2.1 系统模式图系统采用三层结构,在客户端用户通过浏览器完成数据下载与模拟操作,浏览器端的表现逻辑通过JSP网页完成。而系统内部复杂的业务逻辑主要通过JavaBean的组件(Component)实现,JavaBean组件在WWW服务器上运行,通过JSP返回到客户浏览器。通过表现逻辑与业务逻辑的分离,使网页内容简洁,系统的可维护性和可扩充性增
12、强。在服务器端,系统使用JDBC中间件访问数据库,数据库服务器定义了本系统所需要的事务逻辑和数据逻辑。本系统使用JSP技术作为表现手段,服务器采用Tomcat 5.0.3作为JSP引擎,系统业务逻辑由JavaBean 组件完成,使用JDBC 3.0 驱动程序访问数据库。由于系统测试需要成熟的数据库支持,因此系统采用MY SQL数据库作为数据库服务器。2.2 本系统采用的关键技术2.2.1 JSP技术JSP是由Sun微系统公司于1999年6月推出的一项技术,是基于JavaServlet以及整个Java体系的Web开发技术,利用这一技术可以建立先进、安全和跨平台的动态网站。JSP技术在多个方面加速
13、了动态Web页面的开发。它主要有如下几个方面的特点:1) 将内容的生成和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐号信息或者一本书的价格)。生成内容的代码被封装在Servlet和JavaBean组件中,并且结合在脚本中,所有的脚本在服务器端运行4。JSP引擎解释JSP标识和脚本程序,生成所请求的内容(例如,通过访问JavaBean组件,使用JDBC技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的
14、代码,而又保证任何基于HTML的Web浏览器的完全可用性。2) 强调组件的重用绝大多数JSP页面依赖于可重用的、跨平台的组件(JavaBean或者Enterprise JavaBean组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行组件,或者使得这些组件为更多的使用者或者客户团体所使用。此方法加速了总体开发进程。3) 采用标识简化页面开发Web页面人开发人员不都是熟悉脚本语言的编程人员。JSP技术封装了许多功能:访问和实例化JavaBean组件、设置和检索组件的属性、下载Applet以及执行用其他方法更难于编码和耗时的功能。JSP技术可以通过开发定制的标识库进行扩展。第三
15、方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样执行特定功能的组件来工作。当与Java2平台、J2EE和Enterprise JavaBean(EJB)技术整合时,JSP页面将提供级的扩展性和性能,这对于在中部署基于Web的应用是必需的5。与微软公司的ASP技术相比,JSP具有如下优点:(1) 开放的技术:JSP技术基于平台和服务器的相互独立,技术支持来自广泛的、专门的、各种工具包,有服务器的组件和数据库产品开发商提供。相比之下,ASP技术主要依赖MICROSOFT支持。(2) 平台和服务器的独立性:JSP编写的代码可运行在任何符合J
16、AVA语法结构的环境中。这样JSP就能够运行在多种WEB服务器上并支持来自多家开发商提供的各种工具包。(3) 开放的开发过程,开放的源码:自1995年以来,SUN用开放过程方法同国际JAVA组织合作开发和修改JAVA技术和规范。(4) JSP标记可扩充性:JSP技术能够为开发者扩展JSP标记,充分利用与XML兼容的标记技术强大的功能,大大减少对脚本语言的依赖。(5)JSP跨平台的可重用性:JSP组件(EJB,JavaBean或定制的JSP标记)都是跨平台可重用的。2.2.2 JavaBean技术JSP作为一个很好的动态网站开发语言得到了越来越广泛的应用,在各类JSP应用程序中,JSP + Ja
17、vaBean的组合成为了一种事实上最常见的JSP程序的标准. JavaBean是描述Java的软件组件模型,有点类似于Microsoft的COM组件概念6。在Java模型中,通过JavaBean可以无限扩充Java程序的功能,通过JavaBean的组合可以快速的生成新的应用程序。对于程序员来说,最好的一点就是JavaBean可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。JavaBean通过Java虚拟机(Java Virtual Machine)可以得到正确的执行,具有平台无关性。一个JavaBean有三个部分组成:1) 属性(Property)Bean的属性就是对象的属
18、性,但提供了属性读取和设置的接口支持。例如一个时钟Bean可以有时区和镇铃属性,日历Bean可以有年份和月份属性。每个属性通常遵守简单的方法命名规则。这样可以很方便的找出Bean提供的属性,然后查询属性值或改变属性值,对Bean进行操作。2) 方法(Method)由于Bean本身是Java对象,调用这个对象的方法是与其交互作用的唯一途径。JavaBean严格遵守面向对象的类设计逻辑,不让外界访问其任何实例字段(没有Public字段)。这样,方法调用的是接触Bean的唯一途径。3) 事件(Event)Bean与其他软件组件交流信息的主要方式是发送和接收事件。这与对象之间通过消息通信类似。Java
19、Bean传统的应用在于可视化的领域,如AWT下的应用。自从JSP诞生后,JavaBean更多的应用在非可视化领域,在服务器端应用方面表现出来了越来越强的生命力。利用非可视化JavaBean, 来封装事务逻辑、数据库操作等等,可以很好地实现业务逻辑和前台程序(如JSP)的分离,使得系统具有更好的健壮性和灵活性。2.2.3 JDBC技术JDBC是Java的开发者Sun的JavaSoft公司制定的Java数据库连接JavaDataBaseConnectivity技术的简称,是为各种常用数据库提供无缝联接的技术。JDBC在Web和Internet应用程序中的作用和ODBC在Windows系列平台应用程
20、序中的作用类似8。JDBC有一个非常独特的动态连接结构,它使得系统模块化。使用JDBC来完成对数据库的访问包括以下四个主要组件:Java的应用程序、JDBC驱动器管理器、驱动器和数据源。简单地说,JDBC能完成下列三件事: (1)同一个数据库建立连接; (2)向数据库发送SQL语句; (3)处理数据库返回的结果。JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface,应用程序设计接口)。它由一些Java语言写的类、界面组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java
21、语言编写完整的数据库应用程序。 通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQLServer。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。不但如此,使用Java编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用。Java和JDBC的结合可以让开发人员在开发数据库应用时真正实现“WriteOnce,RunEverywhere!” Java具有健壮、安全、易用等特性,而且支持自动
22、网上下载,是一种很好的与数据库线连接而使用的编程语言。它所需要的是Java应用如何同各种各样的数据库连接,JDBC正是实现这种连接的关键。 JDBC扩展了Java的能力,如使用Java和JDBCAPI就可以公布一个Web页,页中带有能访问远端数据库的Applet。或者可以通过JDBC让全部的职工(他们可以使用不同的操作系统,如Windwos,Machintosh或UNIX)在Intranet上连接到几个全球数据库上,而这几个全球数据库可以是不相同的。2.2.4 用JDBC访问数据库所有的数据库的对象和方法都在java.sql.* 里面,所以首先要import java.sql.*,要想连接数据
23、库,首先要将驱动程序调入。Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);这是JDBC-ODBC 的驱动程序。 要想连接一个指定的数据库,必须创建Connection类的一个实例。 String url = jdbc:odbc:Grocery prices; Connection con = DriverManager.getConnection(url); 注意在此用到的数据库名称是在ODBC设置控制面板中输入的数据资源名。URL语法对于不同类型的数据库会很不一样。 语法是这样的: jdbc:subprotocol:subname 开头都是JDBC,后
24、面是子协议,然后是ODBC名称9。 若要使用纯JDBC驱动程序,必须安装第三方软件提供的驱动程序,一般在数据库的官方网站上可以找到这里不做讨论。本系统采用JDBC-ODBC的驱动程序连接数据库,并使用JavaBean组件,有效的避免了代码的重复,具体过程如下:public class ExamBean String strDBDriver=sun.jdbc.odbc.JdbcOdbcDriver;/JDBC-ODBC驱动程序 String strDBUrl=jdbc:odbc:exam; private Connection conn=null; private Statement stmt=
25、null; ResultSet rs=null;/ public ExamBean() try Class.forName(strDBDriver); /catch(java.lang.ClassNotFoundException e) System.err.println(exam():+e.getMessage(); /public ResultSet executeQuery(String sql) rs=null; try conn=DriverManager.getConnection(strDBDriver);/创建数据库连接对象 stmt=conn.createStatement
26、(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);/支持数据回滚 rs=stmt.executeQuery(sql); catch(SQLException ex) System.err.println(aq.executeQuery:+ex.getMessage(); return rs; / public void executeUpdate(String sql) stmt=null; try conn=DriverManager.getConnection(strDBDriver); stmt=conn.creat
27、eStatement(); stmt.executeUpdate(sql); stmt.close(); catch(SQLException ex) System.err.println(aq.executeQuery:+ex.getMessage(); / public void closeStmt() try stmt.close(); catch(SQLException e) e.printStackTrace(); public void closeConn() try conn.close(); catch(SQLException e) e.printStackTrace();
28、 2.3 可行性分析首先,技术可行性。本系统仅需要一台装有IE浏览器的计算机即可,对机器本身没有太高的要求,一般当前学校或个人电脑完全可满足要求。对于软件技术要求,现在的程序设计语言已非常成熟,要运用HTML样式,图形图象制作工具来制作生动活泼的网页及美观的图形文件或动画文件10。其次,经济可行性。由于本系统是为刊物文章毕业设计使用的系统,装上该应用软件,即可使用系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为学校节约大量的人力,物力。所带来的效益远远大于系统软件的开发成本。在经济上完全可行。第三,操作可行性。界面设计时充分考虑管理人员的习惯,使得操作简单;数据录入迅速、规范、
29、可靠;统计准确;制表灵活;适应力强;容易扩充。3 系统概要设计根据系统的功能需求分析,将本系统划分为以下几大模块: 文章发布系统投稿管理审稿管理通知管理用户管理系统管理图3.1 系统模块图主要应用于完成对日常的刊物文章、教务、教师以及刊物文章的计算机化的管理。文章发布系统可使学校的教职员工减轻工作压力,系统地对教务、刊物文章上的各项服务和信息进行管理。同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化,更加效率。而国外随着信息化的告诉发展,各高校早已有一套成熟的文章发布系统,来规范各学校的信息化管理。基于JSP实现作者投稿、编辑安排评审、审
30、稿人审稿、编辑根据评审决定文章是否录用、通知作者等。系统依据Apache Tomcat构架的运行平台,进行整体框架的设计,连接数据库,最后进行全面的系统调试而完成。系统采用B/S模式。整个系统最关键的就是数据库系统,一个强大的数据库可以支持完善一个优秀的软件设计,通过软件系统与数据库系统的连接来实现通过软件界面观察和处理操作数据11。4 系统详细设计4.1 关于数据库Mysql是关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。 Mysql近年来不断更新版本,1996年,Microsof
31、t 推出了Mysql 6.5版本;1998年,Mysql 7.0版本和用户见面;Mysql 2008是Microsoft公司于2008年推出的最新版本12。 Mysql 特点:1真正的客户机/服务器体系结构。 2图形化用户界面,使系统管理和数据库管理更加直观、简单。 3丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。 4Mysql与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。Mysql也可以很好地与Microsoft BackOffice产品集成。 5具有很好的伸缩性,可跨越从运行Windows 7的膝上型电脑到运行Windows 7的大
32、型多处理器等多种平台使用。 6对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。 4.2 系统E-R图编号下载是否通过审稿审核m通过n审稿意见是否录用否通知编号内容n用户编号投稿上传时间m管理意见图4.1 系统ER图4.3 系统流程图开始验证信息用户管理员管理页面投稿页面 进行需要的相关操作 进行需要的相关操作结束Y教师审稿页面 进行需要的相关操作N输入登录名、密码 图4.2 系统流程图4.4 处理流程设计4.4.1 系统操作流程系统登录界面输入操作员及密码系统主界面系统管理错误信息数据库检查密码错误密码正确功能界面功能处理图4.3 系统操作流程图4.4.2 数据增加流
33、程添加信息时,编号字段由系统自动生成,且不能修改,其他信息由用户输入,之后对数据进行合法判断,合法则写入保存至数据库,不合法则重新输入数据。数据增加流程图:开始自动生成编号输入数据是否合法写入数据库结束图4.4 数据增加流程图4.4.3 数据修改流程在修改信息时,先选中一条待修改的记录,然后直接输入数据,判断合法性,合法则保存至数据库,不合法重新输入。数据修改流程图如图4.5所示。开始选择需要修改记录输入数据是否合法写入数据库结束图4.5 数据修改流程图4.4.4 数据删除流程当用户选定一条记录时,单击删除按钮,会提示用户是否确定删除,然后删除数据库相关内容。数据删除流程图如图4.6所示。开始
34、选择需要删除记录是否删除更新数据库 图4.6 数据删除流程图4.5 系统模块设计4.5.1 用户登陆当登陆时,首先出现的是一个用户登陆的界面,界面如下图所示:图4.7 登陆界面/会员登陆public int memberLogin(String username,String password,String type)password=MD5.MD5(password);String sql = select password from member where username=+username+ and type=+type+ and ifuse=1 ;/String sql2 = up
35、date member set logintimes=logintimes+1,lasttime=+date+,lastip=+lastip+ where username=+username+ ;DBO dbo = new DBO();dbo.open();tryrs = dbo.executeQuery(sql);if(rs.next()/如果有该用户名String str = rs.getString(password);if(str.trim().equals(password)/dbo.executeUpdate(sql2);return Constant.SUCCESS;elser
36、eturn Constant.PASSWORD_ERROR;else/如果没有return Constant.NAME_ERROR;catch(Exception e)return Constant.SYSTEM_ERROR;finallydbo.close();4.5.2 用户注册、修改个人资料注册的时候用脚本语言进行了信息的控制。还进行了用户名字的控制,不允许有相同的用户名,做了验证。主要是查询数据库里的内容看是否和输入的文本框的内容相同,如果相同则提示你的用户名已经被抢注,请重新输入。还判断了不允许为空和邮箱是否合法等。图4.8 用户注册界面/个人会员注册public int perso
37、nReg(String username,String password,String type,String realname,String sex,String bir,String sheng,String city,String telphone,String email,String question,String answer,String lastip,int off,String address)password=MD5.MD5(password);String sql = insert into member(username,password,type,regtime,if
38、use,logintimes,lasttime,lastip) + values(+username+,+password+,+type+,+date+,+off+,0,+date+,+lastip+) ;DBO dbo = new DBO();dbo.open();tryint i = dbo.executeUpdate(sql);if(i = 1)rs = dbo.executeQuery(select id from member where username=+username+);rs.next();int mid = rs.getInt(1);String sql2 = inser
39、t into pmember(mid,realname,sex,bir,sheng,city,telphone,email,question,answer,address) +values(+mid+,+realname+,+sex+,+bir+,+sheng+,+city+,+telphone+,+email+,+question+,+answer+,+address+) ;int j = dbo.executeUpdate(sql2);if(j = 1)return Constant.SUCCESS;elsereturn Constant.SYSTEM_ERROR;elsereturn C
40、onstant.SYSTEM_ERROR;catch(Exception e)return Constant.SYSTEM_ERROR;finallydbo.close();4.5.3 密码找回该功能是对忘记密码的用户做的操作。不用登录也可以用这个功能,只要记住注册的时候输入的用户名字和问题和答案就可以找回密码。输入问题和答案如果正确,会提示给你的密码是多少。图4.9 用户找回密码界面/获取用户名字和问题来返回密码信息String username=request.getParameter(username);String question=request.getParameter(quest
41、ion);String answer=request.getParameter(answer);String reg_type=request.getParameter(reg_type);String info=memberBean.returnPwd(username, question, answer, reg_type);if(info.trim().equals(error)request.setAttribute(message, 信息错误!);request.getRequestDispatcher(login.jsp).forward(request, response);el
42、serequest.setAttribute(message, 您的新密码为+info+,请登录后修改!);request.getRequestDispatcher(login.jsp).forward(request, response);elserequest.getRequestDispatcher(index.jsp).forward(request, response);4.5.4 会员发布文章用户上传文章正确信息后点击录入按钮,如果是没有输入完整的公告信息,都会给出相应的错误提示,不能录入成功。图4.10 用户发布文章界面文章发布界面主要代码:String username=(String)session.getAttribute(member);if(username=null)response.sendRedirect(path+/error.jsp);else String method=request.getParameter(method); St