简单邮件系统的设计与实现-初稿(李婷婷 12071142).doc_第1页
简单邮件系统的设计与实现-初稿(李婷婷 12071142).doc_第2页
简单邮件系统的设计与实现-初稿(李婷婷 12071142).doc_第3页
简单邮件系统的设计与实现-初稿(李婷婷 12071142).doc_第4页
简单邮件系统的设计与实现-初稿(李婷婷 12071142).doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

武汉学院学生毕业论文 题 目: 简易电子邮箱系统的开发 指导教师: 甘霞 职称: 讲师 学生姓名: 李婷婷 学号: 12071142 专业班级: 信息与计算科学(网络工程)1204 年 级: 12级 二 X X年X月X X日基于java的邮件系统的设计与实现摘 要 对于本次的毕业论文简易邮箱系统的设计,是基于B/S架构,采用了最近流行的java语言编译完成的开发。B/S模式最大的优点之一是部署和维护方便,易于扩展。该系统采用了当今流行的SSH(Struts+Spring+Hibernate)框架。数据库采用了开源免费跨平台的MySQL数据库。邮件服务器是采用开源免费的支持IMAP方式接收电子邮件的Apache James邮件服务器,采用以上软件既可以降低系统开发成本又能够提高开发效率。在这种结构下,该系统实现了邮箱的基本功能,包括:发送邮件,接收邮件,删除邮件等,有能对邮件列表进行管理的联系人地址簿,具有舒适的用户界面,具有登录与注册的MySQL数据库连接。论文从客户端和用户界面的开发方面详细阐述了整个电子邮件接收实现的全过程,对开发过程中的难点进行了分析和研究,并通过系统结构图,功能模块图,UML 等方式形象地描述出来。随着当今世界信息技术的发展,邮件已经逐渐成为人们传递信息不可分割的一部分。再加上网络环境的普及,人们对电子邮件的了解也愈益加深,尤其是它的可靠性强,快速方便更成为人们接纳邮件的一个重要因素。本系统界面设计简单、大方、易操作,不需要指导就能快速上手,让用户体验到免费的电子邮件系统的优质服务。关键词:java James邮件服务器 MySQL B/S架构Java-based Mail System Design and ImplementationAbstractSimple email system design for the graduation thesis,is based on B/S structure,using the recently popular JAVA language compiler to complete development.One of the biggest advantages of B/S is deploy,maintain convenient,and easy extensible.Java-based e-mail system is to use todays popular SSH (Struts + Spring + Hibernate) framework developed with.Database is free cross-platform using open source MySQL database. Open source mail server is used to receive free e-mail support IMAP Apache James mail server , using the above software can reduce system development costs and to improve development efficiency . before this structure ,the basic function of this system has realized the email ,including sending email,receiving email,deleting email,having a contact address book manage the mailing list , with a comfortable user interface and the login and register the mysql database connection .The article describes complete implementation process of E-mail system, analyzes the interface of clients and users. It studies the difficulties of development which is described vividly by system structure image, function model ,UML and so on.As the development of information technology in todays world,email has become an integral part of people to pass information. Coupled with the popularity of the network environment,people understanding of email is increasingly deepened,especially its reliability,convenient and fast to become more people to accept mail one of the important factors. Keywords: E-mail James mail server MySQL Java SSH目 录朗读显示对应的拉丁字符的拼音1 绪论11.1 课题研发背景11.2 选题的意义12 实现技术及开发工具22.1 Struts2简介22.2 Spring简介32.3 Hibernate简介42.4 MyEclipse开发工具简介52.5 MySQL简介52.6 Tomcat服务器简介62.7 James邮件服务器简介62.8 电子邮件简介83 系统需求分析93.1 可行性分析93.1.1 经济可行性分析93.1.2 技术可行性分析103.1.3 社会因素可行性分析103.2 功能需求分析103.3 性能需求分析133.4 数据库需求分析134 数据库的设计与实现154.1 数据库的设计154.1.1 概念结构设计154.1.2 逻辑结构设计164.2 数据库的实现175 系统的设计与实现195.1 系统设计的目标195.2 系统设计的思想195.3 系统模块设计205.3.1 用户登录邮件系统的工作流程215.3.2 注册新用户信息的工作流程225.3.3 用户找回密码信息工作流程235.3.4 用户添加联系人信息工作流程265.3.5 用户发送电子邮件工作流程275.3.6 用户查看电子邮件工作流程285.4 系统模块的实现305.4.1 用户登录邮件系统的实现305.4.2 用户发送电子邮件的实现325.4.3 用户查看电子邮件的实现336 系统测试356.1 单元测试356.2 集成测试366.3 系统测试387 总结与展望40附 录41参考文献46致 谢47431 绪论1.1 课题研发背景 电子邮件是一种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。随着电子邮件的普及,大部分公司和组织都有自己的邮件系统,然后在企业内部的人员会分布系统邮箱,作为统一联系的标志。因此必须要求邮箱具有良好的安全性,高效率性和高性能性。其提出了以下要求:邮箱系统不受网络垃圾广告,病毒的影响,且便于管理者(管理员)对邮箱系统的管理,同时又要遵守行内法规。通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,只需负担网费),非常快速的方式,与世界上任何一个角落的用户取得联络。 电子邮件的使用方式一般与信件大同小异,送件者一般要写明收件者的邮箱地址,收件人,主旨以及信件内容。 1.2 选题的意义对于一个系统的设计者来说,该系统的设计必须符合用户的使用规范,易上手易操作,得到大部分用户的肯定才是我们追求的目标。因此,通过本次毕业设计,我希望能制作出一个能满足客户各种需求,简单的用户接收,发送,并且邮件具有上传附件且完成附件的传输功能,同时实现用户对邮件的删除管理功能。本次选题我希望能系统的了解邮箱系统开发的设计理念及原理,掌握系统开发的流程,以及发现自己的不足,包括理论和语言编译,从而为今后的设计打下坚实的基础。近年来,电子邮箱的迅猛发展,在比较专业,完整的设计网站上,都有自己的免费电子邮箱服务,电子邮箱已经是很普通的一个东西。对于网站上的邮箱系统,大部分是通过软件来实现的,比如用java语言编译,就可以利用类和接口来实现邮箱系统的编写。本次毕业设计,就是采用java语言编译,来实现一个简单电子邮箱的编译与实现。2 实现技术及开发工具本部分主要介绍开发系统所采用的一些技术支持,包括采用的现在比较流行的J2EE框架技术Struts2、Spring、Hibernate、James邮件服务器等的简单介绍。2.1 Struts2简介Struts 2是Struts的下一代产品。是在 Struts 和WebWork的技术基础上进行了合并的全新的MVC框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大,不能理解为Struts 1的升级版。Struts 2以XWork为核心,可以理解为WebWork的升级版。WebWork是由OpenSymphony组织开发的,是建立在称为XWork的Command模式框架之上的强大的MVC框架。采用拦截器的机制来处理用户的请求使得业务逻辑控制器能够与Servlet API完全脱离开,大大提升项目的开发效率,降低了业务代码的耦合度,所以Struts 2是一个成熟稳定的框架。Struts 2对业务代码依赖性很低,基本不需要import它的包。Struts2框架的处理流程如图2-1所示:图2-1 Struts2框架处理流程2.2 Spring简介Spring框架技术5实际上是Rod Johnson在Expert One-on-One J2EE Design and Development6一书中所阐述的设计思想的具体实现。Spring框架为J2EE平台的开发者提供的是一种“对象管理”技术,也就是为开发者解决包括对象的生命周期、对象之间的依赖关系建立、对象的缓存实现等方面问题的管理技术。Spring框架是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,降低侵入性。Spring提供的控制反转(IOC)技术和面向切面编程(AOP)技术的容器框架功能,可以将组件的耦合度降至最低,即解耦,便于系统日后的维护和升级。Spring为系统提供了一个整体的解决方案,开发者可以利用它本身提供的功能外,也可以与第三方框架和技术整合应用,可以自由选择采用哪种技术进行开发。Spring的本质是管理软件中的对象,即创建对象和维护对象之间的关系。Spring框架主要由7个定义良好的、相互独立的模块组件构成。Spring主要功能如图2-2所示:图2-2 Spring系统框架2.3 Hibernate简介Hibernate7是数据访问层的框架,对JDBC进行了封装,是针对数据库访问提出的面向对象的解决方案。使用Hibernate可以直接访问对象,Hibernate自动将此访问转换成SQL执行,从而达到间接访问数据库的目的,简化了数据访问层的代码开发。其设计原理是:Hibernate采用了ORM思想对JDBC进行了封装。Hibernate框架是ORM思想的一种实现,解决了对象和数据库数据映射问题。Hibernate提供一系列API,允许我们直接访问实体对象,然后其根据ORM映射关系,转换成SQL并且去执行,从而达到访问数据库的目的。它对软件分层做了进一步细化,使数据的持久化与业务逻辑和数据库分开,便于软件的后期维护。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate体系结构如图2-2所示:图2-3 Hibernate体系结构2.4 MyEclipse开发工具简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。MyEclipse是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSP,CSS,Javascript, SQL, Hibernate。2.5 MySQL简介MySQL是一个真正的多用户、多线程SQL数据库服务器8。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysql和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。MySQL 主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置的软件中去。2.6 Tomcat服务器简介Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。Tomcat支持最新的Servlet和JSP规范,技术先进,性能稳定,而且免费,因而受到java爱好者和部分运营商的喜爱。Tomcat 是一个小型的轻量级应用服务器9,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行Tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。Tomcat处理静态HTML的能力不如Apache服务器。2.7 James邮件服务器简介Java Apache邮件服务器一般是指Apache组织开发的James10,它是一个轻便的、安全的100%纯Java实现的邮件服务器构造,它可以让我们利用Web服务器的servlets处理邮件。James是一个邮件应用平台。Apache组织提供了一套Java APImailet API,利用Mailet API,可以根据自己的需要用Java语言编写代码来对邮件进行个性化的处理。Mailet可以生成一个自动回复,更新数据库,阻止垃圾邮件,建立消息档案,或者任何我们能想像的到的功能。与Mailet密切相关的是消息适配器(Matcher),一个消息适配器可以判断Mailet是否要对服务器中的一个邮件进行处理。James被设计为实现几个确定的目标。比如它完全使用Java开发以便适应最大的轻便行;它提供了很多安全特性用于保护服务器的运行环境安全还提供了安全服务。James是多线程的,它使用了很多Avalon架构提供的功能。James提供了完善的服务,包括一个完全可以运行的Email服务器。这些服务主要是有Macther和MailetAPI实现的,这两个API提供了Email检查和处理功能。James支持标准的email协议(SMTP,POP3,IMAP),另外还提供了一些附加功能,它使用了松散耦合的插件设计方式使消息框架从协议中抽象出来。这种设计方式非常有用,使我们可以把James当作一个通常的消息服务器或者为即时消息传输提供支持。2.8 电子邮件简介电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式。电子邮件的应用范围较广,现在一般大型网站的注册等都会使用邮件的方式,它不仅可以传递文字等信息,功能强大的邮箱系统甚至有能传递图片的功能。当我们发送电子邮件时,这封邮件是由邮件发送服务器发出,并根据收件人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收件人要收取邮件也只能访问这个服务器才能完成。邮件服务器按通讯协议可以划分为两种类型:SMTP服务器:用于替用户发送邮件和接收外面发送给本地用户的邮件,它相当于现实生活中邮件的邮件接收部门(可以接收普通用户投递的邮件,也可以接收其它邮局投递过来的邮件)POP3/IMAP服务器:用于帮助用户读取SMTP服务器接收进来的该用户的邮件。电子邮件的工作原理12如图2-5所示:图2-4电子邮件工作原理3 系统需求分析需求分析是电子邮箱开发的重要阶段,它是在确定用户需求之下,确定系统的大致方向,完成相应的需求分析报告。在确定系统的总体结构设计过程中,需要确定应用程序的结构、系统开发环境、系统测试环境和运行环境以及系统的功能模块。在用户需求调研结束之后,应立即进行用户需求分析。需求分析的结果反映了用户的时间需求,它将影响到设计的合理性和实用性。软件需求分析13工作是软件生存期中具有决定性意义的一步,只有通过需求分析才能把软件的功能和性能的总体要领描述为具体的软件规程说明,从而奠定软件开发基础。本系统在开发的过程也应严格遵循这一过程,进行详细的需求分析设计,从而设计出一个优秀的电子邮件系统软件。3.1 可行性分析可行性研究的目的是使用最小的代价,在尽可能短的时间内确定问题是否能够解决,它的目的不是解决问题,而是确定问题是否值得解决,可行性分析从技术可行性、经济可行性、操作可行性、法律可行性四个方面来考虑。通过网上资料的搜集,各大网站的市场调查,我发现基于本课题的理论及设计思路是完全有效可行的。3.1.1 经济可行性分析本系统是基于Java的而Java是开源免费的,另外本系统所采用的Tomcat服务器、James邮件服务器以及MySQL数据库服务器都是开源免费的。所有用于开发系统的软件都是开源免费的,这就为本系统的开发省去了一笔不小的费用。在者,虽然后期需要个别人员进行维护管理,但是本系统所带来的经济效益远远低于维护的成本。因此,本系统很具有开发价值和实际价值,利用现有的计算机设备即可完成本系统开发的正常运行。3.1.2 技术可行性分析技术可行性分析主要包括硬件、软件和开发人员等几个方面,下面分别对这几方面进行简单的分析:(1) 硬件:对本次毕业设计的电子邮箱系统,本人是利用自己的笔记本开发制作的,所以我们只需要一款简单的个热电脑都能运行,更不用说在大型的服务器上,显然硬件开发不是主要的问题。 (2) 技术:本系统主要采用的是java的面向对象的编程语言,另外当今流行框架Struts、Spring、Hibernate都是采用Java语言开发的,本系统采用这些框架开发可以明显的提高系统的开发效率同时有效的降低系统开发过程中的错误率。(3) 开发人员:本款软件的开发人员主要是本人,本人有足够多的时间用在开发本款软件上,同时我也相信通过这几年的学习我可以胜任电子邮件系统的开发任务。3.1.3 操作可行性分析社会因素可行性主要包括法律因素可行性和用户使用可行性,下面就这两个方面进行简单的分析:(1)法律因素可行性:本系统完全是自主开发,开发完成以后也将免费开源,因此任何企业或个人都可以使用该系统而不需要额外支付任何费用。另外本系统主要是进行电子邮件的收发,并不会违反相关的法律。(2)用户使用可行性:本系统主要是针对普通用户开发的,普通计算机用户只要会使用鼠标就能完成简单的电子邮件的收发。因此用户在使用本系统时不需要专门的培训。3.1.4 法律的可行性分析本系统不会侵犯他人、集体或国家利益,不存在侵权问题,不违反国家法律,因此,具有法律可行性。3.2 功能需求分析电子邮件系统是一个免费的普通邮箱系统,适用于所有用户,它主要是通过注册邮箱等一系列的注册功能的实现登录邮箱系统。用户一旦丢失密码,还可以通过注册时填写的邮箱来进行密码的找回。(1) 用户对联系人的要求。用户登录系统之后能够查看所有的联系人,并且能够增加、删除、修改联系人信息。为了管理联系人方便,还可以对联系人进行分组,同时分组后也可以能够进行添加、删除、修改等基本的操作。以便快速的查找联系人。 (2) 用户对自己信息管理的要求。登录后,用户可以对自己的个人信息进行更改。(3) 用户对发送电子邮件的要求。用户可以发送邮件,也可以添加附件的发送,还可以从联系人里自行选择联系人。 (4) 用户对收取电子邮件的基本要求。用户可以查看收件箱列表下的任何一条邮件,可以看到该邮件的关键内容。通过对以上信息分析得出用户能够通过该系统进行的活动,如图3-1所示。图3-1 用户简单用例图(1) 找回密码:当用户忘记登录密码的时候可以通过该功能找回登录密码。(2) 注册新用户:用户可以使用该系统注册一个新的系统用户。(3) 管理邮件信息:用户可以通过该系统查看和发送电子邮件。(4) 管理联系人信息:通过该功能用户可以方便的管理自己的联系人信息。(5) 管理个人信息:该功能可以使用户方便的修改自己的个人信息。通过对于用户功能需求进一步分析可以得出用户详细的用例图如图3-2所示。图3-2 用户详细用例图(1) 管理个人信息:可以分为查找个人信息和修改个人信息,查找个人信息使得用户可以方便的查看个人信息。修改个人信息使用户可以修改自己的个人信息。(2) 管理邮件信息:可以分为删除电子邮件、发送新邮件和查看电子邮件。用户在删除邮件时,就执行了删除邮件功能,且删除的邮件不可恢复,查看邮件即从邮件列表下查看,执行查看功能。(3) 管理联系人信息:联系人的信息管理包含删除、修改、添加和查询具体的联系人信息。删除联系人可以使用户对于不用的联系人信息进行删除,添加联系人则是当用户需要添加联系人的时候可以执行添加联系人功能。对于需要修改的联系人则可使用修改联系人信息的功能。3.3 性能需求分析电子邮件系统主要的用户群是普通用户,所以在设计上必须遵循以下几点准则:(1) 易用性:电子邮件应该可以传输图片、文字、文档等各种需求,易操作,不需要用户经过专门的培训,就能自己独立使用。 (2) 快捷性:当用户发送完一封电子邮件的时候收件人可以快速的收取到用户发送的电子邮件。而且当电子邮件发送失败的时候系统也应该给出相应的提示信息。以确保电子邮件能够快速的发送到收件人的邮箱中。(3) 安全性:设计电子邮箱时应考虑到邮箱的安全性问题,即用户异地登录时,邮箱应该要记录登陆地以及登录时间,方便用户知晓邮箱的安全性问题。(4) 实时性:电子邮件系统服务器必须在时间上满足全天候的启动服务,因为不知道接受者是否实时在线。以确保电子邮件系统用户实时的发送电子邮件。3.4 数据库需求分析本系统用于存入数据库的信息只有用户的基本信息和联系人的基本信息。至于邮件的具体存储信息则是由James邮件系统负责完成邮件信息的存储。对于用户来说用户需要登录系统登录系统时用户需要输入用户账号和用户密码。密码存储到数据库中是经过加密过后的密码。存取密码的时候要存取相应的密码加密算法。(1) 用户在填写基本信息的时候要求填入用户别名、性别、安全邮箱地址、安全问题、安全问题答案、家庭住址、电话号码、备注等基本的与用户有关的信息。当用户忘记登录密码的时候用户可以通过密码找回邮箱或者安全问题重新找回或设置登录密码。(2) 用户的联系人分组要有分组的名称。同时在填写联系人的时候要填写联系人的姓名、电话、电子邮件地址、家庭住址、生日、性别、备注等基本信息。(3) 一个用户可以拥有多个联系人分组一个联系人分组同时拥有多个联系人。一个用户登录信息要对有一个用户基本信息与之相对应。经过对系统功能的数据分析和总结,我设计出了如下所示的数据项和数据结构:用户登录信息:用户账号、用户密码、密码加密算法、用户是否是被禁用等。用户基本信息:昵称、性别、电话号码、家庭住址、安全问题、安全问题答案、找回密码电子邮箱地址、备注等信息。联系人分组信息:分组名称。 联系人基本信息:包括联系人名称、联系人电话号码、联系人家庭住址、联系人电子邮件地址、联系人生日、联系人性别、备注等。4 数据库的设计与实现要想很好的完成一个项目,数据库的设计是整个项目设计中的关键,一个好的数据库表结构能有效的管理后台中的数据,提高软件的实用性和软件的数据访问效率。数据库设计主要包括两个方面内容:数据库设计与实现。4.1 数据库的设计数据库的设计包括两方面的内容,分别是数据库的概念结构设计和数据库的逻辑结构设计。4.1.1 概念结构设计概念结构设计的任务是将数据库需求分析得到的用户数据需求抽象为信息结构,是整个数据库设计的关键。概念结构设计的目标是产生反映信息需求的整体数据库概念结构,即概念模式,描述概念结构的工具是E-R图14。从本系统中规划出的实体有:用户登录信息、用户基本信息、用户分组信息、联系人基本信息。通过对数据库基本信息和用户的基本需求进行分析可以得出系统的实体之间关系的E-R图如图4-1所示。图4-1实体关系E-R图用户登录信息实体属性图如图4-2所示。图4-2 用户登录信息实体属性图用户基本信息实体属性图如图4-3所示。图4-3 用户基本信息实体属性图联系人分组信息实体属性图如图4-4所示。图4-4 联系人分组信息实体属性图联系人信息实体属性图如图4-5所示。图4-5 联系人信息实体属性图4.1.2 逻辑结构设计逻辑结构设计的任务是将概念结构设计阶段设计好的E-R图转化为对应的关系模式,从而完成逻辑结构设计,为数据库的实现作准备。本系统的数据库使用的是MySQL数据库,建造的数据库名称为email。用户登录关系模式(主键用下划线标出):jamesuser (name, alg, enable, password, version)用户基本信息关系模式:userinfo (id, address, alias, answer, gender, mark, phoneNum, pwdEmail, question, user_id)联系人分组信息关系模式:usergroup (id, name, user_name)联系人信息关系模式:linkman (id, address, birthday, emailAdd, gender, mark, name, phoneNum, group_id)4.2 数据库的实现通过对以上数据信息进行分析,将数据基本信息通过MySQL表实现如下。用户登录信息表的设计如图4-6所示。图4-6 用户登录信息表用户登录信息表主要应用是在用户登录的时候。因为用户账号和密码使用的频率比较频繁而且james邮件服务器也要使用该表,所以将用户登录信息表单独抽取出来作为一张表。这样不仅提高了数据的访问效率同时也使得表结构变得异常简单有利于后期的维护和升级。其中版本号是用来实现乐观锁的,有了乐观锁就可以有效的降低数据访问出错的概率。用户基本信息表的设计如图4-7所示。图4-7 用户基本信息表用户基本信息表是用来存储用户注册时填写的基本信息。有了这些信息用户可以方便的进行找回密码等操作。每一个用户基本信息都对应一个用户登录基本信息,有了这些数据用户信息才算完整。联系人分组信息表的设计如图4-8所示。图4-8 联系人分组信息表联系人分组是为了管理联系人方便而设计的数据库表,通过联系人分组用户可以方便的找到该联系人分组中的联系人具体信息。每一个联系人分组都对应着一个用户,每一个用户又可以拥有多个联系人分组。联系人信息表的设计如图4-9所示。图4-9 联系人信息表5 系统的设计与实现5.1 系统设计的目标系统开发的总体任务是实现电子邮件系统开发的系统化、规范化和自动化,从而达到提高电子邮件系统开发的效率的目的和提高软件产品的质量。所谓的优秀软件,就是权衡了各种因素,从而使得系统在整个生命周期中的总开销最小的设计。因此,优秀的软件设计的一个主要特点就是容易维护。本系统作为典型的Web系统应该尽可能的准寻以下准则,以确保系统软件的质量。(1) 模块化:再设计系统的时候应当尽可能的将数据结构和操作这些数据的方法紧密地结合在一起,使得系统能够被分解成各个独立的模块。(2) 可重用:软件重用是提高软件开发生产率和目标系统质量的重要途径。重用有两方面的含义:一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统是创建的类),二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。(3) 弱耦合:耦合是指一个软件结构不同模块之间互连的紧密程度。弱耦合是优秀设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。在理想情况下,对某一部分的理解、测试或修改,无需涉及到其他部分。(4) 强内聚:内聚是衡量一个模块内各个元素彼此结合的紧密程度。在设计时应该力求做到高内聚。5.2 系统设计的思想电子邮件系统的特点是信息处理量比较大,各个环节要求连接性能强。电子邮件系统主要是为普通用户而设计。在设计中,需要删除不必要的数据冗余,实现系统开发的规范化、科学化、程序代码标准化、统一化,确保软件的可维护性和实用性,做到界面尽量简单化,做到实用、方便。系统的操作尽可能的简单化。系统实现尽量简化页面结构,抽象出公用模块,以实现代码复用。另外,在页面组织上采用模块化设计,设计出公用的界面头和尾,以减少代码的冗余和提高代码开发效率。在系统结构上,采用三层架构设计,包括:表现层、业务逻辑层和数据访问层。三层之间的关系如图5-1所示。图5-1 系统架构图在三层架构中,各个层次的功能描述如下:(1) 表现层:表现层主要完成响应客户操作和向数据访问层发送请求。表现层同时应该根据用户的具体操作显示不同的页面。将系统尽可能简单大方的展现给用户。(2) 业务逻辑层:业务逻辑层主要功能是将在用户请求处理之后进行数据库操作,然后将数据库返回的数据封装后返回给表现层。这样用户界面层可以无需了解数据库的结构,只要维护与业务逻辑层之间的接口即可。该架构使系统结构更清楚、分工更明确,有利于后期的维护和升级。(3) 数据访问层:数据访问层主要负责数据库操作,所有与数据库有关的操作都交给数据访问层来实现。这样业务逻辑层无需知道如何访问数据库,只需要维护与数据访问层之间的接口就能够顺利的进行各种与数据库有关的操作。在完成毕业设计系统的过程中,将按照三层架构的设计思想来设计系统,使得系统结构更清晰,便于系统的开发和系统的后期维护。5.3 系统模块设计电子邮件系统的主要使用人员是普通用户,通过对系统需求的分析可以获得以下用户与系统之间的交互行为。(1) 用户登录系统。(2) 注册新用户。(3) 用户找回密码。(4) 用户添加联系人信息。(5) 用户修改联系人信息。(6) 用户删除联系人信息。(7) 用户查询联系人信息。(8) 用户修改个人信息。(9) 用户添加联系人分组信息。(10) 用户修改联系人分组信息。(11) 用户删除联系人分组信息。(12) 用户发送电子邮件。(13) 用户查看电子邮件。(14) 用户删除电子邮件。(15) 用户搜索电子邮件。5.3.1 用户登录邮件系统的工作流程(1) 用户希望通过电子邮件系统进行某一项操作。(2) 用户登录系统,在登录页面输入自己的账号和密码并提交。(3) 系统将用户提交的账号和密码传递到业务逻辑类中。(4) 业务逻辑层类再根据用户提交的账号访问数据访问类,数据访问类再根据用户账号来检测用户身份的合法性。(5) 检测完毕后将验证结果返回到登录界面上显示。(6) 用户在登录界面获得验证结果。如果身份验证未通过,重新登录或退出。否则继续进行下一步操作。根据基本流程,用户登录电子邮件系统的序列图15如图5-2所示。图5-2 用户登录系统序列图与用户登录电子邮件系统序列图等价的协作图如图5-3所示。图5-3 用户登录系统协作图5.3.2 注册新用户信息的工作流程(1) 用户进入注册界面Form,填写用户基本信息并提交。(2) 系统将用户提交的用户注册信息封装成一个对象,并将数据提交给业务逻辑类。(3) 业务逻辑类根据用户提交的信息判断数据的有效性。(4) 业务逻辑类再将用户注册的基本信息提交各数据库访问类。(5) 数据库访问类访问数据库将用户基本信息存入到数据库中。并返回成功信息给业务逻辑类。(6) 业务逻辑类根据数据访问类返回的信息跳转到相应的页面。(7) 显示用户注册是否成功的具体页面给用户。根据基本流程,注册新用户序列图如图5-4所示。图5-4注册新用户序列图与注册新用户序列图等价的协作图16如图5-5所示。图5-5注册新用户协作图5.3.3 用户找回密码信息工作流程(1) 用户进入找回密码界面,输入找回密码信息并提交。(2) 用户提交的消息传递个业务逻辑类。(3) 业务逻辑类访问数据访问类检测用户输入信息。(4) 数据访问类通过访问数据库检测用户输入的信息是否有效。(5) 如果用户输入的信息有效则进入下一步操作,否者返回失败信息。(6) 如果返回成功信息,则进入选择找回密码方式页面。(7) 如果用户选择通过回答安全问题找回密码,则进入安全问题回答页面。(8) 在安全问题页面用户输入新密码和安全问题答案并提交。(9) 将用户提交的新密码信息提交给业务逻辑类,业务逻辑类再将信息传递个数据访问类。(10) 数据访问类根据用户提交的新密码信息检测安全问题答案是否正确。(11) 安全问题答案正确,则根据用户提交的新密码信息修改用户登录密码。(12) 安全问题答案错误,则返回错误信息给业务逻辑类,业务逻辑类将显示错误页面给用户。(13) 如果用户选择的是通过安全邮箱找回密码,则直接在业务逻辑类中向用户安全问题邮箱发送密码重置电子邮件。(14) 返回密码重置邮件发送成功信息,向用户展示密码重置成功页面。根据基本流程,用户找回密码用户可以分为三步,第一步检测要找回密码的用户账号是否邮箱,第二步选择找回密码方式,第三步根据选择的密码找回方式重置用户登录密码。用户找回密码用户名检测序列图如图5-6所示。图5-6 用户找回密码用户名检测序列图通过安全问题找回密码序列图如图5-7所示。图5-7 安全问题找回密码序列图通过安全邮箱找回密码序列图如图5-8所示。图5-8 安全邮箱找回密码序列图为了更进一步的描述用户找回密码的工作流程,下面使用活动图来描述用户找回密码的过程。活动图着重描述用例实例或对象的活动,以及操作实现中所完成的工作。使用活动图有以下几点作用。(1) 描述一个操作执行过程中所完成的工作。说明角色、工作流、组织和对象是如何工作的。(2) 活动图对用例描述尤其有用,它可对用例的工作流建模,显示用例内部和用例之间的路径。他可以说明用例的实例是如何执行动作以及如何改变对象的状态的。(3) 显示如何执行一组相关的动作,以及这些动作如何影响它们周围的对象。(4) 描述复杂过程算法,在这种情况下使用的活动图和传统的程序流程图的功能是差不多的。(5) 活动图对理解业务处理过程十分有用。活动图可以画出工作流程以描述业务,有利于与领域专家进行交流。用户找回密码活动图如图5-9所示。图5-9用户找回密码活动图5.3.4 用户添加联系人信息工作流程(1) 用户登录到电子邮件系统进行某种操作。(2) 用户进入添加联系人信息界面。(3) 用户输入联系人信息并提交。(4) 用户提交的联系人信息封装成一个对象,传递给业务逻辑类,业务逻辑类检测要添加的联系人信息数据的有效性。(5) 如果联系人信息检测通过则将联系人信息传递给数据访问类,将联系人信息保存到数据库中。(6) 返回数据库插入成功信息给业务逻辑类,业务逻辑类返回添加联系人成功页面给用户。(7) 显示添加成功联系人页面个用户。根据基本流程,用户添加联系人序列图如图5-10所示。图5-10 用户添加联系人序列图与用户添加联系人序列图等价的协作图如图5-11所示。图5-11 用户添加联系人协作图5.3.5 用户发送电子邮件工作流程(1) 用户登录系统进行某一项操作。(2) 用户进入发送电子邮件界面,填写要发送电子邮件的内容并提交。(3) 业务逻辑类根据用户提交的信息判断是否需要发送附件,如果需要发送附件则将附件添加到电子邮件中。(4) 业务逻辑类调用发送邮件类发送电子邮件。当电子邮件发送完毕之后返回给业务逻辑类发送成功信息。(6) 业务逻辑类根据返回的成功信息,返回给用户发送成功页面。(7) 对于需要发送带附件的电子邮件时,电子邮件的附件需要先上传到电子邮件服务器,然后从电子邮件服务器上加载附件到邮件中。根据基本流程,用户发送电子邮件序列图如图5-12所示。图5-12 用户发送电子邮件序列图与用户发送电子邮件序列图对应的协作图如图5-13所示。图5-13 用户发送电子邮件协作图5.3.6 用户查看电子邮件工作流程(1) 用户登录系统进行某一项操作。(2) 用户进入主界面,然后选择要查看邮件的邮件箱。系统根据用户选择的邮件箱加载该邮件箱中的所有电子邮件。(3) 业务逻辑类根据用户提交的信息访问数据访问类。(4) 数据访问类根据用户要查询的邮件夹信息加载该邮件夹中的具体信息。并返回具体的邮件信息列表。(5) 业务逻辑类根据数据访问类返回的信息返回邮件列表信息。(6) 向用户发送邮件列表信息页面。(7) 用户在邮件信息列表页面中点击要查看的邮件的具体信息。(8) 用户选择的邮件信息传递个业务逻辑类,业务逻辑类再将该数据发送到查看电子邮件类。(9) 电子邮件类返回该邮件的具体信息给业务逻辑类。(10) 业务逻辑类再将电子邮件的具体信息返回给邮件显示页面。(11) 发送邮件显示页面给用户。根据查看电子邮件的工作流程,用户查看电子邮件序列图如图5-14所示。图5-14 用户查看电子邮件序列图与用户查看电子邮件序列图相对应的协作图如图5-15所示。图5-15 用户查看电子邮件协作图用户查看电子邮件活动图17如图5-16所示。图5-16用户查看电子邮件活动图5.4 系统模块的实现电子邮件系统的具体实现是采用Struts2 + Spring + Hibernate来实现的。其中Struts2主要负责用户提交数据的处理以及数据处理完成之后用户Jsp页面之间的跳转,Hibernate主要负责用户与数据库的各项操作。Spring是配合Struts2和Hibernate来实现对象的动态注入以及Hibernate操作数据库时的事务操作。另外本系统还采用Spring来实现记录系统运行的日志信息。在前台页面采用了jQuery脚本库来实现网页的动态效果,以及前台Jsp页面与后台服务器的动态交互。因为jQuery的跨浏览器性,所以采用jQuery开发的Jsp页面动态效果也具有跨浏览器性。5.4.1 用户登录邮件系统的实现用户登录电子邮件系统的具体实现如以下步骤。(1) 用户打开系统并进入系统登录首页面(Index.jsp页面)。系统登录页面如图5-17所示。图5-17 系统登录页面(2) 用户在登录页面中输入自己的账号和密码并点击登录。(3) 用户提交数据到UserLoginAction类中execute方法。(4) execute方法调用UserDAO的checkUser方法。(5) checkUser方法根据用户名和密码去调用本类中的find方法,find方法根据用户名重数据库中取出User对象,如果没有找到User则返回空对象。(6) 如果find方法找到了用户User则取出User加密后的密码与Index.jsp页面传过来的用户密码加密后进行对比,如果相同则用户登录成功(成功页面如

温馨提示

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

评论

0/150

提交评论