软件学院软件工程毕业设计 基于Java的邮件系统的设计与实现.doc_第1页
软件学院软件工程毕业设计 基于Java的邮件系统的设计与实现.doc_第2页
软件学院软件工程毕业设计 基于Java的邮件系统的设计与实现.doc_第3页
软件学院软件工程毕业设计 基于Java的邮件系统的设计与实现.doc_第4页
软件学院软件工程毕业设计 基于Java的邮件系统的设计与实现.doc_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

pingdingshan university 毕业论文(设计)题 目: 基于java的邮件系统的 设计与实现 院(系): 软件学院 专业年级: 软件工程 2008级 姓 名: 刘军光 学 号: 081530324 指导教师: 夏栋梁 讲师 2011年9月27日原 创 性 声 明本人郑重声明:本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。毕业论文中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究成果做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名: 日 期: 关于毕业论文使用授权的声明本人在指导老师指导下所完成的论文及相关的资料(包括图纸、试验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属平顶山学院。本人完全了解平顶山学院有关保存、使用毕业论文的规定,同意学校保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和借阅;本人授权平顶山学院可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存和汇编本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为平顶山学院。本人离校后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为平顶山学院。论文作者签名: 日 期: 指导老师签名: 日 期: 平顶山学院本科毕业设计基于java的邮件系统的设计与实现摘 要在过去的几十年里,人们主要通过书信与相隔较远的人相互交流情感与思想。而当今世界人们更多的是使用电子邮件,与传统的书信相比电子邮件具有使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻等优点。基于java的电子邮件系统是使用当今流行的计算机语言(java语言)和当今流行的ssh(struts+spring+hibernate)框架开发而成。在数据存储上使用了免费、开源、跨平台的mysql数据库,邮件服务器使用了免费、开源的支持smap协议发送电子邮件和imap协议接收电子邮件的apache james邮件服务器,界面简单大方。系统的实现将有效地提高企业员工的工作效率,降低员工之间的沟通成本,并且具有较广泛的推广价值。本论文阐述了基于java的电子邮件系统背景、研究现状及发展趋势,介绍了系统开发所使用的语言、环境和工具,并对使用的相关的技术进行了详细的阐述。按照软件开发的生命周期论述了系统分析、概要设计、详细设计和代码实现、系统测试的过程。具体论述了面向对象设计方法、系统设计的原则、系统设计的总体目标以及体系结构的特点。关键词:电子邮件,james邮件服务器,mysql,java,sshjava-based mail system design and implementationabstractin the past few decades, people mainly use the letters and far apart, temporarily see the emotional side of people and exchange ideas.and in todays world people are more e-mail, compared with the traditional e-mail correspondence with easy to use, fast delivery, low-cost, easy to store, the worlds smooth and so on. java-based e-mail system is to use todays popular computer languages (java language) and todays popular ssh (struts + spring + hibernate) framework developed with.used in data storage on a free, open source, cross-platform mysql database, mail server uses the free, open-source support for smap and imap email protocols to receive e-apache james mail server, the interface simple and generous.system implementation will effectively improve staff productivity, reduce cost of communication between employees, and has a wider spread value.this paper describes the e-mail system based on java background, research status and development trends, describes the development of the language system, environment and tools, and related technologies used in a detailed exposition.according to the software development life cycle, discusses the system analysis, outline design, detailed design and code, system testing process.specifically discusses the object-oriented design, system design principles, system design and architecture the overall objective of the characteristics.keywords: e-mail, james mail server, mysql, java, ssh目 录朗读显示对应的拉丁字符的拼音1 绪论11.1 课题研发背景11.2 选题的意义11.3 发展现状22 实现技术及开发工具32.1 struts2简介32.2 spring简介42.3 hibernate简介52.4 myeclipse开发工具简介62.5 mysql简介62.6 tomcat服务器简介62.7 james邮件服务器简介72.8 jquery简介82.9 电子邮件简介83 系统需求分析113.1 可行性分析113.1.1 经济可行性分析113.1.2 技术可行性分析123.1.3 社会因素可行性分析123.2 功能需求分析123.3 性能需求分析143.4 数据库需求分析154 数据库的设计与实现174.1 数据库的设计174.1.1 概念结构设计174.1.2 逻辑结构设计184.2 数据库的实现195 系统的设计与实现215.1 系统设计的目标215.2 系统设计的思想215.3 系统模块设计225.3.1 用户登录邮件系统的工作流程235.3.2 注册新用户信息的工作流程245.3.3 用户找回密码信息工作流程255.3.4 用户添加联系人信息工作流程285.3.5 用户发送电子邮件工作流程295.3.6 用户查看电子邮件工作流程305.4 系统模块的实现325.4.1 用户登录邮件系统的实现335.4.2 用户找回密码的实现345.4.3 用户发送电子邮件的实现365.4.4 用户查看电子邮件的实现385.4.5 用户查看联系人的实现395.4.6 用户添加联系人的实现395.5 小结406 系统测试416.1 单元测试416.2 集成测试426.3 系统测试457 结束语47附 录48参考文献53致 谢541 绪论1.1 课题研发背景电子邮件(简称e-mai1)又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送。通过连接全世界的internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是internet资源使用最多的一种服务,e-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。与传统的信件相比电子邮件更具有传统信件没有的优势,传统的邮件受到时间、地点等各种限制,而电子邮件却不受这些限制。正是由于电子邮件的使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻,使得电子邮件被广泛地应用,它使人们的交流方式得到了极大的改变。另外,电子邮件还可以进行一对多的邮件传递,同一邮件可以一次发送给许多人。最重要的是,电子邮件是整个网络间以至所有其他网络系统中直接面向人与人之间信息交流的系统,它的数据发送方和接收方都是人,所以极大地满足了大量存在的人与人之间的通信需求。现在随着互联网和计算机的普及1,电子邮件将会成为人们越来越受欢迎的交流方式。1.2 选题的意义当今流行的邮件系统如 lotus notes和exchange 是非常强大的商业软件2。但这些系统包含的协作功能和每客户端得许可证费用使它们的整体成本急剧上升。而事实上,很多使用这些系统的公司仅仅需要其中的邮件服务器基本功能,因此对于这些企业来说花重金来购买这些邮件系统还不如花少量的钱去重新开发一款功能简单的邮件系统。所以开发一款简单易用的,使用户容易上手的电子邮件系统是非常有必要的。对于大型的企业来说开发一种简单易用的具有电子邮件基本功能的电子邮件系统,不仅能够提高企业的生产效率而且能够降低人与人之间的沟通成本,使企业能够更好的发展。1.3 发展现状随着internet网的广泛普及,电子邮件的使用迅速增多起来。电子邮件的使用不仅在数量上有突飞猛进的发展,而且其重要性日益增加。电子邮件已不只是电话的替代品,它可以而且已经在更广泛的应用着。利用电子邮件用户可以交互电子表格与数据文件,当然也可以发送长的便笺和传送官方文献。由于目前我国电子邮箱的渗透率还很低,但用户的需求日益强烈,且有国家对企业信息化的支持,因此电子邮箱的发展潜力巨大。特别是外包式的电子邮箱,由于建设成本和管理成本相对更低,而安全性、互通性等基础功能的性能更优,因此将受到更多用户的青睐。目前国内邮箱产品提供商还只停留在提供单一的邮箱产品阶段,还未形成一整套的邮箱解决方案。这与电子邮箱在中国所处的发展阶段有直接关系,目前中国的电子邮箱市场还处于起步阶段,普及率非常低,因此电子邮箱提供商当下亟需解决的问题是加大宣传、开拓市场,让更多的用户首先接受电子邮箱这个最核心的产品,然后再在此基础上提供一整套的邮件解决方案。虽然如此,我国的电子邮箱提供商还是可以学习国外先进的邮件管理解决方案的思路,了解用户在邮件管理中需要解决的问题,将其融入到现有的邮箱产品中,为用户提供更全面的一站式邮件服务。2 实现技术及开发工具本部分主要介绍开发系统所采用的一些技术支持,包括采用的现在比较流行的j2ee框架技术struts2、spring、hibernate、james邮件服务器、jquery等的简单介绍。2.1 struts2简介struts2是struts的下一代产品。是在struts和webwork的技术3基础上进行了合并,全新的struts2框架。其全新的struts2的体系结构与struts1的体系结构的差别巨大。struts2以webwork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与servlet api完全脱离开,所以struts2可以理解为webwork的更新产品。因为struts2和struts1有着太大的变化,但是相对于webwork,struts2只有很小的变化。struts2框架的处理流程如图2-1所示。图2-1 struts2框架处理流程通过上面对struts2体系结构4的了解,我们发现struts2对struts1进行了巨大的改进。主要表现在如下几个方面:(1) 在action的实现方面:struts1要求必须统一扩展自action类,而struts2中可以是一个普通的pojo。(2) 线程模型方面:struts1的action工作在单例模式,一个action的实例处理所有的请求。struts2的action是一个请求对应一个实例。没有线程安全方面的问题。(3) servlet依赖方面:struts1的action依赖于servlet api,比如action的execute方法的参数就包括request和response对象。这使程序难于测试。struts2中的action不再依赖于servlet api,有利于测试,并且实现tdd。(4) 封装请求参数:struts1中强制使用actionform对象封装请求的参数。struts2可以选择使用pojo类来封装请求的参数,或者直接使用action的属性。(5) 表达式语言方面:struts1中整合了el,但是el对集合和索引的支持不强,struts2整合了ognl(object graph navigationlanguage)。(6)绑定值到视图技术:struts1使用标准的jsp,struts2使用“valuestack”技术。(7) 类型转换:struts1中的actionform基本使用string类型的属性。struts2中使用ognl进行转换,可以更方便的使用。(8) 数据校验:struts1中支持覆盖validate方法或者使用validator框架。struts2支持重写validate方法或者使用xwork的验证框架。(9) action执行控制的对比:struts1支持每一个模块对应一个请求处理,但是模块中的所有action必须共享相同的生命周期。struts2支持通过拦截器堆栈为每一个action创建不同的生命周期。2.2 spring简介spring框架技术5实际上是rod johnson在expert one-on-one j2ee design and development6一书中所阐述的设计思想的具体实现。spring框架为j2ee平台的开发者提供的是一种“对象管理”技术,也就是为开发者解决包括对象的生命周期、对象之间的依赖关系建立、对象的缓存实现等方面问题的管理技术。spring框架是一个轻量级的控制反转(ioc)技术和面向切面编程(aop)技术的容器框架,利用spring框架中的ioc技术可以实现j2ee平台中所倡导的由容器实现对象的生命周期管理,而利用spring框架中的aop技术可以实现j2ee平台中所倡导的分离应用系统中业务逻辑组件和通用技术服务组件。应用系统的开发者在应用系统中应用spring框架后能够达到“解耦”和“脱离容器”的设计和实现的目的。spring框架主要由7个定义良好的、相互独立的模块组件构成。spring系统框架如图2-2所示。图2-2 spring系统框架2.3 hibernate简介hibernate是java应用和数据库之间的桥梁,通过对jdbc的简单封装,使java程序员可以使用面向对象的思想操作数据表,不用再考虑数据访问细节,可以专注于业务逻辑的开发,它对软件分层做了进一步细化,使数据的持久化与业务逻辑和数据库分开,便于软件的后期维护7。hibernate可以应用在任何使用jdbc的场合,既可以在java的客户端程序使用,也可以在servlet/jsp的web应用中使用,最具革命意义的是,hibernate可以在应用ejb的j2ee架构中取代cmp,完成数据持久化的重任。hibernate体系结构如图2-3所示。图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是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。sql是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用sql语言为一个网站检索产品信息及存储顾客信息,同时mysql也足够快和灵活以允许你存储记录文件和图像。mysql 主要目标是快速、健壮和易用。最初是因为我们需要这样一个sql服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,mysql就开发出来。mysql是一个快速的、多线程、多用户和健壮的sql数据库服务器。mysql服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置的软件中去。2.6 tomcat服务器简介tomcat是一个免费的开源的serlvet容器,它是apache基金会的jakarta项目中的一个核心项目,由apache,sun和其它一些公司及个人共同开发而成。由于有了sun的参与和支持,最新的servlet和jsp规范总能在tomcat中得到体现。tomcat是稳固的独立的web服务器与servlet container,不过,其web服务器的功能则不如许多更健全的web服务器完整,如apache web服务器(举例来说,tomcat没有大量的选择性模块)。不过,tomcat是自由的开源软件,而且有许多高手致力于其发展。tomcat是一个小型的轻量级应用服务器9,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试jsp程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好apache服务器,可利用它响应对html 页面的访问请求。实际上tomcat部分是apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与apache独立的进程单独运行的。2.7 james邮件服务器简介java apache邮件服务器一般是指apache组织开发的james10,它是一个轻便的、安全的100%纯java实现的邮件服务器。不仅如此james还可以提供更多的功能,感谢james给我们提供了插件化协议架构和mailet底层构造,它可以让我们利用web服务器的servlets处理邮件。email服务到处都是,开始是darpa(国防部高级研究计划局)的一个计划并最终发展为internet,但是james成为了打破这一传统规则的第一个应用。the java apache 企业邮件服务器(a.k.a. apache james)是一个100%用java实现的smtp和pop3邮件服务器,同时,他还实现了nntp新闻服务器的功能。james被设计成一个完整的、可移植的企业邮件引擎解决方案,他完全基于目前可用的开放性协议。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当作一个通常的消息服务器或者为即时消息传输提供支持。james一个更重要的设计目标是提出了mailet概念,mailet提供了一个开发邮件应用程序的完整生命周期。当然你也可以在这里使用其他mta(邮件传输代理),比如sendmail,要这样作的话我们需要提供一个可调用的程序然后将数据传送给它来完成工作,不过,james提供了一套更简单、通用的api来完成这些工作。2.8 jquery简介jquery由美国人john resig创建,至今已吸引了来自世界各地的众多javascript高手加入其中,包括来自德国的jrn zaefferer,罗马尼亚的stefan petre11等。jquery是继prototype之后又一个优秀的javascript框架。其宗旨是write less,do more,写更少的代码,做更多的事情。使用jquery有如下特点:(1) 提供了强大的功能函数:使用jquery提供的强大的函数库能够帮助我们快速完成各种功能, 而且会让我们的代码异常简洁。(2) 解决浏览器兼容性问题:对于普通的javascript脚本往往是不同的浏览器需要编写不同的javascript脚本。有了jquery我们就不需要再重复的编写javascript代码了,因为jquery对于各种浏览器是兼容的,使用jquery并不需要考虑浏览器兼容性问题。(3) 实现丰富的ui:jquery为我们提供了界面美观且有兼容各种浏览器的各种ui,使用开发web页面更加容易。(4) 丰富的插件:jquery为我们提供了各种插件,使我们只要懂得jquery基本语法就能够编写出漂亮的功能完善的web页面。2.9 电子邮件简介电子邮件(简称e-mai1)又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是个简易、快速的方法。通过连接全世界的internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是internet资源使用最多的一种服务,e-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。邮件服务器按通讯协议可以划分为以下两种类型:smtp服务器:用于替用户发送邮件和接收外面发送给本地用户的邮件,它相当于现实生活中邮件的邮件接收部门(可接收普通用户投递的邮件以及其它邮局投递过来的邮件)。pop3/imap服务器:用于帮助用户读取smtp服务器接收进来的该用户的邮件。当前常用的电子邮件协议有smtp、pop3、imap4,它们都隶属于tcp/ip协议簇,默认状态下,分别通过tcp端口25、110和143建立连接。下面分别对其进行简单介绍。(1) smtp协议:smtp的全称是simple mail transfer protocol,即简单邮件传输协议。目标是向用户提供高效、可靠的邮件传输。smtp的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。工作在两种情况下:一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。(2) pop3协议:pop的全称是post office protocol,即邮局协议,用于电子邮件的接收,它使用tcp的110端口,现在常用的是第三版 ,所以简称为pop3。pop邮局协议负责从邮件服务器中检索电子邮件。它要求邮件服务器完成下面几种任务之一:从邮件服务器中检索邮件并从服务器中删除这个邮件;从邮件服务器中检索邮件但不删除它;不检索邮件,只是询问是否有新邮件到达。(3) imap4协议:imap的全称是internet message access protocol,顾名思义,主要提供的是通过internet获取信息的一种协议。imap象pop那样提供了方便的邮件下载服务,让用户能进行离线阅读,但imap能完成的却远远不只这些。imap提供的摘要浏览功能可以让用户在阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。internet上传送电子邮件是通过一套称为邮件服务器的程序进行硬件管理并储存的。与个人计算机不同,这些邮件服务器及其程序必须每天24小时不停地运行,否则就不能收发邮件了,简单邮件传输协议smtp(simple mail transfer protocol)和邮局协议pop(post office protocol)是负责用客户机/服务器模式发送和检索电子邮件的协议。用户计算机上运行的电子邮件客户机程序请求邮件服务器进行邮件传输,邮件服务器采用简单邮件传输协议标准。很多邮件传输工具,如outlook express、fox mail等,都遵守smtp标准并用这个协议向邮件服务器发送邮件12。smtp协议规定了邮件信息的具体格式和邮件的管理方式。下图是以新浪邮箱的某个用户和搜狐邮箱的某个用户为例简单的展示一下电子邮件的工作原理。图2-4电子邮件工作原理3 系统需求分析用户需求分析是整个设计制作的起点,它是在用户需求调研的基础上,确定系统的总体结构方案,完成相应的需求分析报告。在确定系统的总体结构方案过程中,需要确定应用程序的结构、系统开发环境、系统测试环境和运行环境以及系统的功能模块。在用户需求调研结束之后,应立即进行用户需求分析。需求分析的结果反映了用户的时间需求,它将影响到设计的合理性和实用性。开发软件计划的提出与软件消亡之间的过程中我们称之为软件的生存周期。软件生存周期是根据软件所处的状态、特征以及软件开发活动的目的、任务可以划分若干阶段,从这一思想出发,软件生存周期包括软件定义,软件开发、软件使用与维护三个部分,具体则可以得到软件生存周期的六个步骤,即制定计划、需求分析,软件设计、程序编码、测试及运行维护。 软件需求分析13工作是软件生存期中具有决定性意义的一步,只有通过需求分析才能把软件的功能和性能的总体要领描述为具体的软件规程说明,从而奠定软件开发基础。基于java的电子邮件系统在开发的过程也应严格遵循这一过程,进行详细的需求分析设计,从而设计出一个优秀的电子邮件系统软件。3.1 可行性分析可行性分析也称可行性研究,是决策部门在采取一项重大改革或投资行动之前,对该项目的必要性和可能性进行分析与论证的活动。可行性分析已被广泛应用于新产品开发、基建、工业企业、交通运输、商业设施等项目投资的多个领域。在展开一项开发行动之前,必须对用户提出的目标的必要性和可能性进行必要的论证。可行性分析是在进行初步调查后所进行的对系统开发必要性和可能性的研究,所以也称为可行性研究。信息系统也应从技术可行性,经济可行性和社会可行性三方面来论证。3.1.1 经济可行性分析基于java的电子邮件系统是基于java的而java是开源免费的,另外该系统所采用的tomcat服务器、james邮件服务器以及mysql数据库服务器都是开源免费的,这样在成本上势必会降低很多。现行的公司大型的邮件系统所提供的功能基本很多都是很少用到的,花大量的成本去开发很少用到的功能对于一般的小公司来说是完全没有必要的。基于java的电子邮件系统是只开发了与电子邮件有关的基本功能,这样即减少了开发成本又提高了开发效率。对于一般的小型公司来说该系统经济上是完全可行的。3.1.2 技术可行性分析技术可行性分析主要包括硬件和技术等几个方面,下面分别对这几方面进行简单的分析:(1) 硬件:当今世界随着计算机的普及,计算机硬件行业也随之日新月异。对于一款简单的电子邮件系统普通的pc机都能流畅的运行更别说专业的web服务器了,所以对于电子邮件系统的硬件问题已经不再是关键性问题。(2) 技术:基于java的电子邮件系统主要采用的开发语言是java语言,java语言擅长web方面的系统开发,另外当今流行框架struts、spring、hibernate都是采用java语言开发的,采用这些框架开发可以明显的降低系统开发的工作量同时降低系统开发过程中的错误率。3.1.3 社会因素可行性分析社会因素可行性主要包括法律因素可行性和用户使用可行性,下面就这两个方面进行简单的分析:(1)法律因素可行性:本系统完全是自主开发,开发完成以后也将免费开源,因此任何企业或个人都可以使用该系统而不需要额外支付任何费用。另外本系统主要是进行电子邮件的收发,并不会违反相关的法律。(2)用户使用可行性:本系统主要是针对普通用户开发的,普通计算机用户只要会使用鼠标就能完成简单的电子邮件的收发。因此用户在使用本系统时不需要专门的培训。3.2 功能需求分析电子邮件系统主要功能是普通用户收发电子邮件的,本系统的使用者角色只有普通用户。用户要求系统的基本功能有用户在没有注册的情况下可以使用本系统在线注册,注册完成之后用户可以使用新的账户进行登录。如果用户密码丢失用户能过通过注册时填写的用户信息来找回密码。(1) 用户对联系人的要求。用户登录系统之后能够查看所有的联系人,并且能够增加、删除、修改联系人信息。为了管理联系人方便,要求对联系人进行分组,同时分组也要能够进行添加、删除、修改等基本的操作。为了能够迅速的查找到联系人用户要求能够快速的搜索联系人。(2) 用户对自己信息管理的要求。用户应该能够在登录系统之后修改自己的基本信息例如用户昵称、密码等。(3) 用户对发送电子邮件的要求。系统应该能够进行简单的电子邮件的发送,同时还要能发送复杂一点的电子邮件例如带有附件、邮件内容为html格式的邮件等。同时应该能够快速的添加收件人等。(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 数据库需求分析基于java的电子邮件系统用于存入数据库的信息只有用户的基本信息和联系人的基本信息,至于电子邮件的具体存储位置则是由apache james邮件服务器负责完成。在本系统中通过修改apache james邮件服务器的配置文件将电子邮件存放到了mysql数据库,而用于存储邮件信息的数据表则是由james邮件服务器自动建立的。对于用户来说用户需要登录系统登录系统时用户需要输入用户账号和用户密码。密码存储到数据库中是经过加密过后的密码。存取密码的时候要存取相应的密码加密算法。(1) 用户在填写基本信息的时候要求填入用户别名、性别、安全邮箱地址、安全问题、安全问题答案、家庭住址、电话号码、备注等基本的与用户有关的信息。(2) 当用户忘记登录密码的时候用户可以通过密码找回邮箱或者安全问题重新找回或设置登录密码。(3) 用户的联系人分组要有分组的名称。同时在填写联系人的时候要填写联系人的姓名、电话、电子邮件地址、家庭住址、生日、性别、备注等基本信息。(4) 一个用户可以拥有多个联系人分组一个联系人分组同时拥有多个联系人。(5) 一个用户登录信息要对有一个用户基本信息与之相对应。经过对系统功能的数据分析和总结,我设计出了如下所示的数据项和数据结构:用户登录信息:用户账号、用户密码、密码加密算法、用户是否是被禁用等。用户基本信息:昵称、性别、电话号码、家庭住址、安全问题、安全问题答案、找回密码电子邮箱地址、备注等信息。联系人分组信息:分组名称。 联系人基本信息:包括联系人名称、联系人电话号码、联系人家庭住址、联系人电子邮件地址、联系人生日、联系人性别、备注等。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 数据库的实现通过对以上数据信息进行分析,基于java的电子邮件系统数据库表的设计包括用户登录信息表、用户基本信息表、联系人分组表、联系人表。其中一个用户可以同时拥有多个联系人分组,一个联系人分组又可以拥有多个联系人,具体的数据库表的实现如下。用户登录信息表主要是用来存放用户登录所需要的基本信息的,version是用来实现乐观锁的。使用乐观锁可以有效地避免脏读、读已提交等数据库访问常见问题其表结构设计如图4-6所示。图4-6 用户登录信息表用户登录信息表主要应用是在用户登录的时候。因为用户账号和密码使用的频率比较频繁而且james邮件服务器也要使用该表,所以将用户登录信息表单独抽取出来作为一张表。这样不仅提高了数据的访问效率同时也使得表结构变得异常简单有利于后期的维护和升级。其中版本号是用来实现乐观锁的,有了乐观锁就可以有效的降低数据访问出错的概率。用户基本信息表是用来存储用户注册时填写的基本信息。有了这些信息用户可以方便的进行找回密码等操作。每一个用户基本信息都对应一个用户登录基本信息,有了这些数据用户信息才算完整, 其表结构的设计如图4-7所示。图4-7 用户基本信息表联系人分组是为了管理联系人方便而设计的数据库表,通过联系人分组用户可以方便的找到该联系人分组中的联系人具体信息。每一个联系人分组都对应着一个用户,每一个用户又可以拥有多个联系人分组。联系人分组信息表的设计如图4-8所示。图4-8 联系人分组信息表联系人方便用户在发送电子邮件的时候选择收件人,还能够方便用户记住联系人的各项信息。在使用到联系人信息的时候也能够方便的查询联系人的具体信息。联系人表结构设计如图4-9所示。图4-9 联系人信息表5 系统的设计与实现5.1 系统设计的目标系统开发的总体任务是实现电子邮件系统开发的系统化、规范化和自动化,从而达到提高电子邮件系统开发的效率的目的和提高软件产品的质量。所谓的优秀软件,就是权衡了各种因素,从而使得系统在整个生命周期中的总开销最小的设计15。因此,优秀的软件设计的一个主要特点就是容易维护。本系统作为典型的web系统应该尽可能的准寻以下准则,以确保系统软件的质量。(1) 模块化:再设计系统的时候应当尽可能的将数据结构和操作这些数据的方法紧密地结合在一起,使得系统能够被分解成各个独立的模块。(2) 可重用:软件重用是提高软件开发生产率和目标系统质量的重要途径。重用有两方面的含义:一是尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统是创建的类),二是如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。(3) 弱耦合:耦合是指一个软件结构不同模块之间互连的紧密程度。弱耦合是优秀设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。在理想情况下,对某一部分的理解、测试或修改

温馨提示

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

评论

0/150

提交评论