资源描述
Web编程的电子邮件系统及邮件服务设计毕业论文绪 论1.1课题背景电子邮件是介于书信、和之间的电子信息传送方式,它也是互联网上最基本的功能之一。随着互联网的进一步发展,电子邮件已经成为人们联系沟通的重要手段。技术的革新使得电子邮件系统已经演变成一个相当复杂且功能更为丰富的系统,可以传送声音、图片、图像、文档等多媒体信息,以至于数据库或帐目报告等更加专业化的文件都可以以电子邮件的形式在网上分发。随着信息技术的发展以及电子邮件系统功能的日益强大,其应用领域已得到较大的拓展。基于Web的Web mail系统应用是这些年发展起来的,网络的普及使得它得以广泛的应用。采用开放的Web邮件服务不仅为用户省去了维护与升级客户端软件的麻烦,而且也能够充分发挥系统软硬件资源的作用。Web邮件服务的另一个优势是允许用户,甚至是持有移动设备的用户,可以随时、随地的访问系统并进行信息传递。1.2论文的研究内容在现有的基于WINDOWS平台的Send mail邮件服务器上来架构和实现Web mail是本文主要研究的问题。结合目前主流的B/S网络应用模式以及教研室邮件服务器的扩展需求,本文主要研究了基于C/S模式邮件服务器的开放式Web邮件服务器集成方案及相关技术。随着新技术的不断涌现,电子邮件产品越来越多,而且也越来越丰富。在邮件服务器端有Microsoft Exchange 服务器、Qmail服务器、FTPMail服务器等等。这些服务器都有相应的操作系统支持,而且有的又有很好的跨平台性,像Send mail服务器它在Linux、Unix、FreeBSD都可用。在邮件系统客户端,其中Microsoft Outlook、Netscape Mail、Fox mail是当今电子邮件客户端软件的主流产品;另外,随着网络的普及,基于Web的应用模式的发展与应用,诸如sina、263以及众多的企业都已推出了自己的Web邮件系统。本课题将研究如何使用PHP、POP3、STMP、IMAP等技术实现教研室C/S邮件服务器到Web邮件服务器的集成。利用JSP,Server2000等实现其功能,功能主要有邮件的收发、存储、删除等等。1.3软件的开发方法面向对象的方法经由系统分析、设计和试验等几个阶段,遵从软件生命周期的规律。所谓软件的生命周期是指一个软件从它的开发到其消亡的过程。以下是利用生命周期法开发软件的各个阶段的具体内容:1问题定义及可行性论证:其主要任务是明确软件开发的请求,并进行初步的调查,通过可行性研究确定下一阶段的实施。可行性分析的任务是确定项目开发是否必要和可行。也就是要对问题定义阶段中所提出的问题进行分析,以决定所提出的问题是否有可行的解。所谓可行,首先在技术上要可行,即现有技术能否解决所提出的问题;其次是经济上可行,即用户能否支付实施项目所需要的费用,项目建成后能否取得预期的经济效益;最后进行操作上和法律上的可行性研究。综合这些方面的论证,最终决定是否实施该项目。当然,这项工作就是建立在初步调查的基础上。2用户需求分析阶段:在这个阶段中,就是了解用户的需求,准确的确定用户需要的功能,明确为了实现这些功能,需要哪些处理,需要处理什么数据;需要存储哪些数据文件;得到哪些信息。此外需要找出为了实现既定功能所需要的约束条件,典型的约束为成本约束和时间约束。另一个重要任务是要规定系统的生效准则,规定在目标系统建成后验收目标系统的一些原则以及具体的验收方法等。具体工作主要是详细调查,其具体的调查内容包括:分析当前各大网站上的邮箱的功能和实现方法,了解使用者在使用过程中存在的问题和希望使用的功能。3系统设计阶段:其任务是在系统分析的基础上,按照逻辑模型的要求,科学合理地进行系统的总体设计和具体的物理设计,为下一阶段的系统实施提供必要的技术资料。具体分为:概要设计阶段和详细设计阶段。j概要设计阶段:这个阶段中的主要任务是得到一个能够实现用户需求的理想的系统结构。所谓理想的结构指的是:能够实现需求阶段中规定的功能;系统容易设计和实现;系统易于维护。设计内容包括划分子系统、设计规范制定、数据流程图设计、功能结构图设计、系统物理配置方案设计。k详细设计阶段:在这个阶段中的任务是进行系统所需要的数据结构设计和数据库的物理设计。输入输出设计、编写程序模块设计说明书。系统设计工作结束后,要提交系统设计报告。若系统设计被审查批准,整个系统开发工作便进入系统实施阶段。4系统实施阶段:这是软件系统的实现阶段,要进行模块编码和模块测试。模块测试又称为单元测试。模块编码要严格按详细设计阶段开发的模块逻辑进行。模块程序设计完成之后,应经过严格的测试。程序测试应该采用科学的方法。主要是黑盒法和白盒法进行测试,从而尽可能多地发现模块中错误,并加以改正。把经过彻底测试的模块组装起来形成需要的应用系统。再进行集成测试,采用的是黑盒测试方法,集成的方法可采用自顶向下集成或自底向上集成,或者二者结合的方法。5维护阶段:主要包括改正性维护、适应性维护和完善性维护:改正性维护是改正程序中所遗漏的错误,保证用户程序能正常运行;完善性维护是增加程序的功能以满足用户的进一步需求;适应性维护是当用户改变硬件或软件支持环境时,满足程序需要的修改工作。维护阶段是一个非常重要的阶段,维护工作的好坏直接影响到用户的满意程度。1.4系统开发环境的选取1硬件环境:Cpu :P4内存:512M具备 Internet 上网条件。2软件环境:操作系统:Win2000 Professional uilderX、SQL Server 2000、JDKI.4.2、 DREAMWEAVER 、操作系统启用TCP/IP。3简介uilderBorland uilder是全球第一的跨平台Java开发环境,可建构符合业界标准的Java应用系统,开发E、Web、XML以及数据库等各类应用程序。经由uider双向的、可视化的设计工具,您可以快速开发各种J2EE应用程序,并将其部署到多种应用程序服务器上,包括BEA WebLogic、IBM WebSphere、Sun、One、Oracle9i Application Server以及集成于uilder的Borland Enterprise Server。4简介SQL Server 2000SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统的最新版本该版本继承了SQL Server 7.0 版本的优点同时又比它增加了许多更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。第1章 相关技术系统环境的搭建,最基础的就是从目录的建立开始,建立系统的基础应用模块和站点配置环境,并进行数据库的正常连接。2.1目录结构在程序设计和开发之前要设计系统的目录结构,一般这个结构对任何得B/S系统都是通用的,本系统的目录结构如图2.1所示。图2.1 目录结构Fig.2.1 The directory structure在该目录结构中,mail代表本站的根目录,它包含四个子目录:database用于存放数据库备份文件,docs用于存放系统的文档,jsp和WEB-IN用于存放系统的JSP等的源文件和系统所使用的类包。jsp的根目录下是一些jsp的源文件,下面所包含四个子目录:face用于存放用户自定义的头像,INC用于存放一些公用的jsp页面,js用于存放脚本文件,pic用于存放图片文件。WEB-INF包含两个子目录:classes用于存放类文件,lib用于存放类包文件,同时该目录下还包括站点的配置文件web.xml。2.2通用模块该系统采用数据库连接池进行数据库的统一管理,同时在数据库操作上进行了封装,方便程序开发始于数据库的交互。2.2.1数据库连接池在实现某一个功能时,首先要连接数据库。如果在每一次需要进行数据库操作前都来加载驱动、创建连接,那么在连接的入口参数处理上将十分零散,不好管理和维护。一旦系统移植,数据库参数改变,将需要重新修改所有的连接代码,重新编译,这项工作复杂,是不必要的,也是可以省去的。首先在文件db.properties配置数据库连接参数,这些参数包括数据库的驱动、连接通信、用户名、密码。这样,在数据库移植或系统环境改变时,只需修改这一个地方就可以了,十分方便。drivers=com.microsoft.jdbc.sqlserver.SQLServerDriverlogfile=C:log.txtmysql.url=jdbc:microsoft:sqlserver:/Neu029:1433;DatabaseName=bbsmysql.maxconn=1000mysql.user=mailmysql.password=mail此系统采用了类DBConnectionManager来统一管理数据库的连接。具体代码参见DBConnectionManager.java文件。2.2.2数据库封装数据库已经连接,在每一次需要进行数据库的某种操作时,调用JDBC的函数就可以了,但是直接调用JDBC函数将使代码的编写工作十分浪费,该系统封装了数据库操作的类DBConnect,具体代码参见DBConnect.java。该类封装了数据库操作的基本函数,用于作为JavaBean的父类,便于统一管理。该类的一个重要作用是从连接池里取得一个连接,在使用结束时关闭连接。统一处理了很多额外的工作和异常的抛出。2.3配置站点与数据库连接1安装JDK1.4.0下载JDK1.4.0版本安装程序,连续单击下一步按钮,安装过程中均采用默认选择,直至安装结束。安装结束后,在桌面我的电脑图表上右击,在谈出的快捷菜单中选择属性命令,弹出系统特性对话框,在高级选项卡中单击环境变量按钮,在弹出的对话框中新建环境变量JAVA_HOME,值为C:j2sdk1.4.0。2安装Tomcat 5.0连续单击下一步按钮,直至安装结束,在选择安装路径时推荐安装在根目录,如:C:Tomcat 5.0。 设置环境变量:在我的电脑属性中设置环境变两位TOMCAT_HOME=C:Tomcat。 建立站点:将整个文件目录mail复制到Tomcat 5.0下的webapps文件夹下。3访问系统启动SQLServer,Tomcat,输入地址::/localhost:8080/mail/jsp/login.jsp即可访问,用户admin,密码初始化为test。至此,软件环境安装完成。2.4主要工具详细介绍2.4.1 JSP介绍JSP是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址为在传统的网页HTML文件中加入Java程序片断和JSP标记,就构成了JSP网页。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送Email等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。JSP提供了一种简单快速的建立基于动态内容显示的站点的技术。在JSP文件中可以包含HTML标记、NCSA标记、Servlet标记和JSP语法,使得HTML的编码从Web页面的业务逻辑中有效地分离出来。2.4.2与传统的CGI方式相比,JSP的优点1后台实现逻辑是基于Java Component 的,具有跨平台的特点。2将应用逻辑与页面表现分离,使得应用逻辑能够最大程度得到复用,从而提高开发效率。3运行比CGI方式高,尤其对于数据库访问,提供了连接池缓冲机制,使运行所需资源最小。4安全,由于后台是完全基于Java技术的,安全性由Java的安全机制予以保障。5由于与ASP很相似,不需要太多的编程知识就可以动手编写JSP。6内置支持XML,使用XML从而使页面具有更强的表现力和减少编程工作量。2.4.3技术特点1将内容的生成和显示进行分离。使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编程和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容例如,通过访问JavaBeans组件,使用JDBCTM技术访问数据库,或者包含文件,并且将结果以HTML或者XML页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。2强调可重用的组件。绝大多数JSP页面依赖于可重用的,跨平台的组件JavaBeans或者Enterprise JavaBeansTM组件来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技术和优化结果的开发努力中得到平衡。3采用标识简化页面开发。Web页面开发人员不会都是很熟悉脚本语言的程序员。JavaServer Page 技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。通过开发定制化标准库,JSP技术好似可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2企业版体系结构的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言一次编写,各处运行的特点。随着越来越多的供应商将JSP支持添加到他们的产品中,你可以使用自己所选择的服务器和工具,更改工具或服务器并不影响当前的应用。2.4.4 MVC模式设计思想介绍MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。 视图代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。 模型:就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的E模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存持续化。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。 控制可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,如图2.2所示:如图2.2 MVC组件类型的关系和功能Fig2.2 MVC module type relation with function.2.4.5关于Tomcat的安装和注意事项1通过安装ulider9来安装Tomcatj直接安装ulider9,安装过程中会给出JVMJava虚拟机的安装路径,一般为ulider9jdk1.4。k再安装Tomcat,安装过程中会询问系统中已有JVM的安装路径,安装程序将会自动定位JVM的位置。l最好重新启动一遍计算机。m不必配置诸如Classpath、path、Java Home等系统环境变量。n正常启动Tomcat即可。2直接安装Tomcatj安装JDK1.4,安装完毕后,按程序要求重新启动计算机。k安装Tomcat,安装过程中会询问系统中已有JVM的安装路径,安装程序将会自动定位JVM的位置。l需要将JDK1.4安装路径下的lib文件夹中的tools.jar文件拷贝到TomCat5.0commonlib文件下,并且只有在Tomcat关闭条件下,更新才有效。m重新启动计算机。n不必配置诸如Class path、path、Java Home等系统环境变量。o正常启动Tomcat即可。3注意事项jTomcat对文件名包括路径和后缀的大小写是敏感的。kTomcat的默认网站根路径为TomCat5.0WebappsRootl在编写jsp文件时,应特别注意其文件命名包括存放路径时最好不要大小写混用,应统一为小写,养成良好编程习惯。4如何获得Tomcat的错误提示信息Tomcat运行时,会在任务栏右下角中出现类似MSSQLSERVER的图标,双击即可得到错误提示信息列表窗口。第2章 功能规划及现状3.1功能规划的主体凡事预则立,不预则废。科学的规划对于任何需要经过较长时间努力才能实现的事情都是非常重要的。规划,一般是指对较长时期的活动进行总体的、全面的计划。做好计划是非常重要的环节。比如说邮件的开发系统,它是一个功能很多的系统,我就必须做好规划。主要在进入邮箱后功能方面规划,有收邮件、发邮件、写邮件、通讯录、回邮件、草稿箱、垃圾箱和转发;在登陆邮箱界面上还有注册、注册用户列表、管理员登陆和退出邮箱等几个功能。还有其它一些基本的小功能都实现在各个主要功能的内部,比如说对于邮件箱内的邮件的删除等一些功能,这些都必须在开发前做好规划。总之,软件开发中,往往缺乏科学的、有效的系统规划。一定要尽量避免这些缺点。3.2邮件系统的国内外现状随着互联网的普及,国内外的互联网用户数呈指数增长。为满足不断增长的信息交流需要,作为因特网第一应用的电子邮件系统变得越来越重要。随着网络环境的建设与完善,许多用户已经提出这样的要求:拥有自己的Web邮件系统。国外的电子邮件系统可真叫四通八达,这种手段已经成为他们通信最流行的几种方式之一了。相比较国内,电子邮件系统还不算太完善,电子邮件通信的方式还不算太流行,如何才能把这种方式大众化、流行化呢?这还需要我们去认识它、了解它、使用它。国外已经有了许许多多的电子邮件系统,国内也有一些这样的系统,我觉得这些还不够充实这个庞大的流行团体,所以我自己要开发一个简单的属于我自己的电子邮件系统,来满足我及其他用户的需要。第3章 系统分析4.1系统的可行性分析可行性研究是以相对短的时间和相对低的成本来确定给定的问题是否有解。这里相对短和相对低是指和实现建议系统所需时间和成本相比较而言。可行性研究主要从下述4个方面进行研究:技术可行性、经济可行性、操作可行性和调度可行性。1技术可行性:技术可行性的考虑集中在现存的计算机硬件能否支持被研究的系统,首先关心的是该组织是否有相应的软件和硬件能够支持处理建议的应用程序。其次考虑在规定平台之上,利用现有的成熟技术是否能够实现这个应用。现代计算机硬、软件技术的飞速发展,为系统建设提供了技术条件。计算机等基础设施的更新换代也紧跟潮流的发展,这就为开发系统提供了坚实基础。2经济可行性:这是经典的并且是最常使用的评价计算机系统的方法。这个评价的结果称为成本效益分析。简单地说,经济可行性研究是确定得自新系统的节省和利益,将这些利益和系统的实现成本相比较,如果利益超过成本,则开发新系统的决策是肯定的;否则的话,除非有其他特殊原因,这个决策将是否定的。本软件的实现是作为考核学生学习情况的手段,不存在经济可行性的问题。3操作可行性:是指人员的手工操作而不是指计算机系统操作是否可行,也就是说在实现了建议的计算机系统后,所需要的配合的手工操作是否可行。作为新时代的学生,几乎人人都具备计算机的基本操作能力,而本软件的使用又十分简单方便,所以具备操作可行性。4调度可行性:指的是建议的计算机系统能否在规定的期限内交付给用户。基于本软件,经过上述的分析,可以在规定的期限内完成。从当前情况来看,本软件的开发是可行的。4.2系统逻辑方案的提出在问题定义阶段对建议的功能、规模和约束条件等已经作了规定。在可行性研究阶段通过和使用者的交流,对用户的需求有了初步的了解。因此在这个阶段中,设计者应该进一步澄清问题定义中的模糊部分,更正错误部分。通过这个活动,清楚地描述系统的主要功能。4.2.1用例图的分析1用例的内容:用例图使我们对系统的功能有了一个整体的认知,我们可以知道有哪些参与者会与系统发生交互,每一个参与者需要系统为它提供什么样的服务。2用例的优点:用例方法完全是站在用户的角度上从系统的外部来描述系统的功能的。在用例方法中,我们把被定义系统看作是一个黑箱,我们并不关心系统内部是如何完成它所提供的功能的。用例方法首先描述了被定义系统有哪些外部使用者抽象成为Actor,这些使用者与被定义系统发生交互;针对每一参与者,用例方法又描述了系统为这些参与者提供了什么样的服务抽象成为Use Case,或者说系统是如何被这些参与者使用的。所以从用例图中,我们可以得到对于被定义系统的一个总体印象。 与传统的功能分解方式相比,用例方法完全是从外部来定义系统的功能,它把需求与设计完全分离开来。在面向对象的分析设计方法中,用例模型主要用于表述系统的功能性需求,系统的设计主要由对象模型来记录表述。另外,用例定义了系统功能的使用环境与上下文,每一个用例描述的是一个完整的系统服务。3确定本系统功能的用户用例图,如图4.1。j新用户登陆本系统:注册用户;k已经注册的用户:直接输入用户名和密码登陆系统;l登陆成功:进入邮箱,其中具有收发邮件、写邮件、删除邮件等功能;m操作系统完成:可以退出本系统。4确定本系统功能的管理员用例图,如图4.2。j返回管理员登陆界面;k管理用户信息;l安排系统设置;m退出管理员系统。图4.1 系统用户的用例图.Fig4.1 Example picture of the using of systematic users of Fig.图4.2 系统管理员的用例图.Fig4.2 Example picture of the using of system manager4.2.2系统管理员功能1管理员登录:系统初始化好系统管理员,管理员能够通过该入口进入后台进行管理操作。2管理员管理注册用户:管理员可以对系统的注册用户进行管理,查询系统中的注册用户,直接添加用户,对于违规用户可以删除,以及查看某注册用户的详细注册信息和列为好友。3管理员系统设置:系统一般有一些初始化信息,比如系统名称、系统的URL、主业名称、主页的URL、系统管理员XX、系统Logo通信、有新邮件提示等,管理员可以在后台界面自行设置。4用户注册:网络用户均能够注册。注册的用户信息包括注册名、性别、密码、确认密码以便保证用户两次输入的密码都一样、电子邮件、QICQ号码等。其中注册名、性别、密码和电子邮件是必添项,并且用户名不能重复。4.2.3用户功能1用户登录:系统注册用户使用自己注册的用户名登录系统,进行邮件的管理和个人注册信息的管理。其中邮件的管理又包括收件箱、垃圾箱、草稿箱、发件箱、通信薄等的管理。2撰写发送邮件:填写收件人、标题和收件内容后,可以给发件人发送邮件。3收件箱管理:显示用户所有收到的邮件列表,可以查看邮件的详细内容,可以选中所要删除的邮件进行删除或者删除收件箱中所有邮件,所删除的邮件被转移到垃圾箱。4垃圾箱管理:显示用户从收件箱中删除的所有邮件列表,可以查看邮件的详细内容,可以选中所要删除的邮件进行删除或者删除垃圾箱中所有邮件,所删除的邮件则被彻底地删除。5草稿箱管理:显示用户所有保存的准备发送的邮件列表,可以查看邮件的详细内容并且进行修改,可以选中所要删除的邮件进行删除或者删除草稿箱中所有邮件。6发件箱管理:显示用户发送的所有邮件列表,可以查看邮件的详细内容,可以选中所要删除的邮件进行删除或者删除所有已发邮件。7通信薄的管理:显示所有好友列表,可以添加好友,可以选中所要删除记录进行删除或者删除所有好友,可以查看个人详细信息,可以选中其中的好友发送邮件。第4章 系统设计5.1系统流程图系统流程图又叫事务流程图,是在计算机事务处理应用进行系统分析时常用的一种描述方法另一个是数据流图,它描述了计算机事务处理中从数据输入开始到获得输出为止,各个处理工序的逻辑过程。5.1.1管理员的系统流程图管理用户系统参数设置管理员登录信息查看删除用户首先管理员要系统参数设置和管理,当用户注册成为系统用户之后,管理员在进行对用户的管理工作,流程如下图5.1所示。图5.1 系统流程图-管理员Fig.5.1 Systematic flow diagram - administrator5.1.2用户的系统流程图没有身份的用户需要先注册,登录系统后可以查看和修改个人信息、发送邮件等邮件管理操作。如下图5.2所示。用户登录修改个人信息查看个人信息好友管理邮件管理通信薄管理垃圾箱管理发件箱管理收件箱管理图5.2 系统流程图-注册用户Fig.5.2 Systematic flow diagram - registered user5.2系统模块的功能图通过系统模块的功能图描述,可以很直观的看到系统的各个功能组件,功能图如下图5.3所示。 此模块的功能图是从整个系统出发,描绘出来的。其中介绍了管理员各个功能和基本用户的功能等等。用模块的功能图描绘整个系统,使系统各个功能清晰可见,层次分明,是一种比较好的方法。简易邮箱普通用户登陆管理员登陆新用户注册进入邮箱退出邮箱系统设置退出管理员登陆管理用户信息返回管理员界面返回登陆界面收邮件写邮件发邮件图5.3 模块的功能图Fig.5.3 Functional diagram of the module5.3实体之间的关系E-R图在此邮件系统中的实体有管理员信息实体、用户信息实体、邮件实体、系统配置信息实体。实体之间的关系E-R图如下图5.4所示。系统配置信息用户管理管理邮 箱管理员图5.4 实体之间的关系E-R图Fig.5.4 Relation E-R picture between the entities5.4数据库结构设计在邮件服务器系统的数据库设计中,首先要创建系统数据库,然后在数据库中创建需要的表和字段。数据库设计是系统设计中非常重要的一个环节,因为数据库设计就像在建设高楼大厦的根基一样,如果设计不好,在后来的系统维护、变更和功能扩充时,甚至于在系统开发过程中,都将会引起比较大的问题,有时大量的工作将会重新进行。考虑到将来功能上的扩展,设计如下所示的数据项和数据结构:用户信息:包括数据项,有用户名、密码等。邮件信息:包括数据项,有发件人、收件人、主题、内容、发送时间等。系统配置信息:包括数据项,有系统名称、系统说明、系统通信等。基于上面的设计,在设计系统中的各表,表与表之间相互关联,共同存储着系统所需要的数据。在设计数据库表的过程中,一般要遵循几条原则,用数据库设计一个表最好只存储一个实体或对象的相关信息,不同的实体最好存储在不同的数据表中,如果实体还可以再划分,实体的划分原则是最好能够比当前系统要开发的实体的复杂度小;数据表的信息结构一定要合适,标的字段的数量一般不要过多;扩充信息和动态变化的信息一定要分开在不同的表里;多对多这样的表关系尽量不要出现等。5.4.1创建数据表 在创建表与视图之前,首先要创建一个数据库,步骤如下:(1) 启动SQLServer服务管理器,启动服务。(2) 进入企业管理器,建立数据库bbs。(3) 进入新建数据库的用户选项,右击建立用户命令,输入用户名mail,密码mail,选择该用户的权限为public,do_owner。本系统各个表的设计结果如表5.5所示。表5.5数据库表Tab 5.5Database form编号数据库表数据库表存储内容1config后台系统配置用的表2log日志表3myuser用户表4friend好友表5message邮箱表5.4.2系统信息配置表系统信息配置表如表5.6所示,该表对系统的某些信息进行配置,如系统URL通信、公司名称、主页URL通信、XX、适应时间、图片通信等。进行这些设置是为了尽可能最大地利用有限的资源,同时更有效地管理系统,对使用该系统的用户量的信息也有一个很好的纪录。利用这个表,对系统的某些信息进行配置,使这些信息更加的清晰、使用也方便。表5.6 config 系统配置表Tab 5.6System allocation table编号字段含义类型1ForumName系统名称varchar2ForumURL系统URL通信varchar3CompanyName公司名称varchar4HostUrl主页URL通信varchar5SMTPServer服务器varchar6SystemEmailXXvarchar7TimeAdjust适应时间varchar8ScriptTimeOut有效时间varchar9Logologovarchar10Picurl图片通信varchar11Faceurl头像通信varchar12EmailFlag邮件标志number14IpFlagIP标志number15FromFlag来源number16Maxtitlelist最大主题列表数varchar5.4.3日志表表5.7是日志表记录本系统的用户访问信息。l_id即日志编号是系统为其分配的唯一标识符;l_username是使用此系统的用户名;l_content是系统日志的一个主要内容记录;l_url记录了用户访问得系统的通信;l_addtime是此条日志生成的时间。这部分内容是给系统预留的接口,使得有扩展的功能。表5.7 日志表Tab 5.7Daily record form编号字段含义类型1l_id唯一编号number2l_username用户名varchar3l_content内容varchar4l_urlURL通信varchar5l_addtime时间varchar5.4.4用户表表5.8是用户表,该表包含了用户的基本且必要的信息,其中UserID是用户编号,是系统为用户分配的唯一标识符,它在整个用户表存储的数据里是互不相同的,而且在系统的许多其它表里也要用到它;用户名和密码也是必需的,作为用户登录的入口,其中用户名也要求是唯一的。表5.8 用户表Tab 5.8Customer form编号字段含义类型1UserID唯一编号number2UserName用户名varchar3UserEmailXX通信varchar4Article个人签名number5UserPassword密码varchar7Sex性别varchar8homepage个人主页varchar9addDate注册时间datetime10logins登录次数numeric11width图像宽度number12height图像高度number13OicqOicq号varchar14lastlogin最后登录时间datetime注:此表只列出基本信息,常用的未作分析,例如:用户年龄段、用户生日、用户学历、所在城市等,而用户年龄段和用户学历可以用来对用户群体进行分析,以便确定系统的使用群体。5.4.5 friend好友表表5.9是friend好友表,该表用于记录用户加入到通信薄中的用户,方便用户给好友发送邮件。表5.9 好友表Tab 5.9Good friend form编号字段含义类型1F_id唯一编号number2F_username好友用户名varchar3F_friend好友名字varchar4F_addtime添加时间varchar5.4.6邮件信息记录表表5.10是邮件信息记录表,记录系统用户所发送的所有邮件。表5.10邮件信息记录表Tab 5.10Mail information record of table编号字段含义类型1id唯一编号number2serder发件人varchar3incept接收人varchar4title标题varchar5content内容varchar6flag标识number7sendtime发送时间varchar8delR是否删除接受number9delS是否删除发送number10isSend发送标记number至此,个个数据表的结构全部设计完成,即定义好邮件系统的数据结构,用于存储邮件系统中的各项数据。5.5数据库的E-R图本系统根据上面的设计规划出的实体包括用户信息实体、邮件数据实体、系统配置信息实体、好友实体等。通过对实体联系的分析,在本系统中使用PowerDesigner设计E-R模型。PowerDesigner的概念数据模型把现实的信息简化为实体与实体之间的联系,它与DBMS无关。CDM的建立是一个比较复杂的过程,实体关系图的分析结果也非常复杂,一般情况下使用自底向上的方法,首先对局部视图进行分析设计,然后再实现视图集成。这里不再对局部视图进行设计,直接给出视图集成后的E-R图,如图5.11所示。图5.11 简易邮件系统数据库E-R图Fig. 5.11Systematic database E-R picture of simple and easy mail使用用户信息进行用户基本信息的管理,以及登录系统时用户名、密码和权限的设定;在设计时,充分考虑了用户使用邮件系统收发邮件的便捷性。其实,以上E-R图只是简易邮件系统最基本元素的实体关系图,读者可以在此基础上根据用户的不同需要进行扩展。第5章 程序设计与实现有系统设计可知本系统的设计共分为如下两大部分:1管理模块用于管理员对注册用户管理和系统设置管理,它包括:管理员登录界面;用户管理:列表、搜索、查看、增加、删除;系统设置管理:查看、修改。2用户模块:用于用户进行邮件管理,它包括:注册:注册、修改个人信息;登录:登录;撰写发送邮件:发送邮件;收件箱管理:列表、查看、删除、清空收件箱;垃圾箱管理:列表、查看、删除、清空垃圾箱;草稿箱管理:列表、查看、删除、清空草稿箱;发件箱管理:列表、查看、删除、清空发件箱;通信薄管理:列表、查看、删除、清空通信薄、添加好友、发送邮件。根据这些整体关系的设计下面对每一个部分给出主界面的设计及其设计思路。6.1管理员登录模块设计与实现管理员用户登录的界面中,包括用户名和密码得输入文本框,以及提交登录按钮和重写按钮。管理员登录界面如图6.1所示。图6.1管理员登录界面Fig6.1 The login interface for administrator管理员的登录,使用的是类User.java,SkinUtil.java等,其中User.java是专门为用户写的一个类,同时也作为一般用户的登录类,该类代码如下:/登录参数private String username;/登录用户名private String password;/登录密码private int userClass;/管理级别,用来判断是否管理员登录在执行登录时,页面mailjspelogin.jsp调用类文件中的函数所填写的信息进行处理,然后对登录管理员进行验证。6.2管理员用户管理模块设计与实现管理员登录后,首要的功能是对系统用户和系统参数的管理。管理员的管理主页面上具有进入用户管理和系统参数设置管理的入口。当管理员进行管理操作之后,要退出管理界面,则要退出管理的出口。设计结果如图6.2所示。图6.2管理员登录主界面Fig6.2 The interface after login for administrator图6.2所示即为管理员登录后的管理首页,单击左边的返回管理首页链接返回到管理首页,单击注册用户管理链接可以进行用户管理,单击系统设置链接可以进行系统参数设置管理,单击退出管理链接可以退出管理界面。用户的信息需要由系统管理员来进行管理和维护。为此,设计了用户列表的界面,该界面中需要包括如下的信息:用户的ID号、用户名,还应该提供用户管理的入口,包括删除等,还应该提供可以查看详细资料的查看入口来显示用户的基本信息,以及用来填写所要查询用户的用户名的文本框和查询按钮。注册用户列表页面设计如图6.3所示。图6.3管理员用户管理界面Fig6.3The interface manager user for administrator当管理员需要删除用户时,只需要在对应的用户名的checkbox打上钩,然后单击删除按钮,就可以删除所有选中的用户。当需要查找某用户名时,只需要在文本中填写用户名,然后单击查询按钮,即可查找出所有符合条件的用户列表信息,界面如图6-2.1所示。当需要查看某一用户的详细信息时,只需要单击图6-2.1中的用户名,通过此链接可以查看用户注册基本信息,此界面和用户表对应,显示信息包括用户名、性别、个人主页、登录次数、最后登录时间、注册时间OICQ和XX。在如图6.3所示的用户基本信息界面中,为了方便使用,在界面底部还设计了给当前所查看用户邮件和加为好友的链接。关于管理员进行用户管理,其中主要使用的是类UserManager.java,当然缺少不了用户类User.java和其他一些进行基本处理的类。根据界面部分的设计可知,用户的管理包括的功能有取得所有用户的列表、查看用户基本信息、删除用户,因此根据这些功能的需要,在该类中逐一设计了这些功能。管理员查看用户列表的页面代码源文件为mailjspadmin_user.jsp,这个页面主要是执行表myuser的SELECT查询语句,查得的结果是多行记录,通过ResultSet的next函数循环取出所有的记录,保存在Vector类型变量userVector中。6.3管理员系统设置模块设计与实现系统设置管理和后台系统配置表对应,主要包括系统名称、系统的URL、主页名称、主页URL、系统管理员XX等。则在界面上提供相应的文本框作为信息的输入,如果是选择性的信息则可以提供下拉列表框,还要提供提交按钮,界面设计如果图6.4所示。图6.4管理员系统设置管理界面Fig6.4 The interface system set for administrator管理员在进行系统参数设置管理时,主要使用的是类ForumPropertiesManager.java。根据界面部分的设计可知,此处主要是实现设置系统参数功能,因此这个需要在开始介绍。管理员进行系统参数设置管理页面代码的源文件为mailjspadmin_var.jsp。后台的操作主要是执行对配置表config的UPDATE语句,对数据库中的数据进行更新。6.4用户注册模块设计与实现如图6.5所示即为用户注册界面的设计结果,当用户填写完所需要填写的信息之后,单击注册按钮,即可注册成功。而用户在登录系统之后,会提供修改个人注册资料的界面,它的界面也和这个界面一样,只是不能修改用户名。图6.5新用户注册界面Fig6.5 The interface system set for administrator用户注册的页面主要包括reg.jsp和reg_1.jsp,其中reg.jsp是系统服务条款和申明,用户只有同意本系统的服务条款才能进入reg_1.jsp页面进行注册用户操作。由用户注册的界面设计中可知,注册用户时主要是需要填写用户的基本信息,如用户名、密码等,当用户单击注册按钮保存填入的数据时,页面需要将这些页面的表单取出来。在本页面的处理时,将JSP页面的提交对象request作为参数,传进UserManager.java类的函数中,然后进行用户新增。在执行添加新用户之前,需要检验新输入的用户名是否在系统中存在,一旦存在则不允许添加,因为用户名是标志一个用户的惟一信息,然后再根据表myuser组合INSERT语句,执行数据库的新增操作。此图为新用户注册成功后显示出来的新界面,其内容中含有用户注册中的一些基本信息。如图6.6所示。图6.6新用户注册成功界面Fig6.6 The success interface system set for administrator6.5用户登录模块设计与实现用户注册以后,就可以使用这个系统的功能了。那么,登录是使用这些功能的入口,因为不同的用户需要记录自己的信息,需要系统根据用户名区分每个登录用户才能使系统正常运行。登录界面跟管理员用户登录相似,使用的数据表是用户表myuser,登录界面中也包括用户名和密码两个输入文本框。如果不是本系统的注册用户,则还提供注册的入口。登录界面设计的结果如图6.7所示。图6.7用户登录界面Fig6.7 The interface login for user当用户登录系统之后,即可对系统进行使用,系统提供邮件、更改个人信息、查看系统所有用户、帮助和退出系统等各种功能,在界面上需提供以上功能的入口。其中管理员入口只有以系统管理员身份登录才显示,所以系统每一个页面的顶部设计如图6.8所示。图6.8系统功能入口Fig6.8 The access for system function如图6.8所示的界面在系统每个页面的顶部都有,所以在其他界面的设计上就不再赘述。当用户登录后,根据前面所设计的用户界面可知,用户登录系统之后可以修改自己的基本资料,该界面对应的jsp页面为mymodify.jsp。修改基本资料使用的是UserManager.java中的函数updateUser,修改的方法是根据JSP页面的提交对象request作为参数,然后取得所提交的数据,调用修改用户信息函数。6.6用户撰写发送邮件模块设计与实现用户登录后,主要的工作就是对邮件的管理,毕竟这是个简易邮件系统,因此系统默认进入到邮件管理的界面。而邮件管理又分为收件箱、草稿箱、发件箱、垃圾箱、通信簿、发送邮件等功能,因此要为它们都设计
展开阅读全文