《基于JavaEE的个人数字图书馆的设计与实现毕业论文.doc》由会员分享,可在线阅读,更多相关《基于JavaEE的个人数字图书馆的设计与实现毕业论文.doc(48页珍藏版)》请在三一办公上搜索。
1、JIU JIANG UNIVERSITY毕 业 论 文题 目 基于Java EE的个人数字图书馆的设计与实现 英文题目 Personal Digital Library Design and Implementation Based on Java EE 院 系 信息科学与技术学院 专 业 计算机科学与技术 姓 名 李思远 班级学号 A081144 指导教师 杨振宇 二一二年五月摘 要随着信息时代的到来,大量的信息充斥着我们的眼球,然而,面对这么多丰富的信息,如果我们不能很好的管理起来就,这些信息对我们来说就只是垃圾而没有任何的价值,在这个知识经济飞速发展的时代里,个人的发展越来越依赖于个人的
2、竞争力,而个人竞争力的源泉则是个人知识的管理。在这种情况下,作为个人信息管理和知识组织的工具个人数字图书馆迅速发展起来,个人数字图书馆是数字图书馆发展中的新鲜事物,反映了网络环境下信息用户的个性化需求,是网络信息资源管理的客观要求,也是知识管理发展的必然。本文主要结合个人数字图书馆的具体特点:图书资料共享、互相发送信息等特点以及图书管理的理论知识,采用面向对象的程序设计方法,基于目前Web开发中广泛运用的主流框架:Struts、Hibernate和Freemarker组件构建一个属于个人的数字图书馆系统。此系统主要分为前台和后台两部分。前台供注册用户使用,每个注册用户都有一个属于个人的数字图书
3、馆。该图书馆主要分为:我的图书、我的收藏、备忘录、信息、日志、资料搜索、图书管理等几大模块。其中“我的图书”是指用户上传的所有文件;“我的收藏”是指用户保存的一些网摘;“备忘录”顾名思义是指用户向系统中添加当下没有完成的事情或计划做的事情;“信息”是指系统用户间相互发送信息,交流思想;“日志”就是用户在系统中发表日志;“资料搜索”这里只限本站搜索。后台系统管理员的主要功能是查看和删除系统用户,查阅管理系统中的所有资料。关键词:个人数字图书馆,知识共享,知识管理AbstractWith the advent of the information age, a large amount of in
4、formation full of our eye, however, in the face of so much information, if we cannot very well manage it, which for us is just rubbish and not of any value, In this age of rapid development of the knowledge economy, personal development relies more and more of their competitiveness.But a source of c
5、ompetitiveness is a personal knowledge management. In this case, as a tool for personal information management and knowledge organization - personal rapid development of digital libraries, and personal digital library is a digital library in the development of new things, reflects the individual nee
6、ds of information users under the network environment, is the objective requirement of network information resource management and development of knowledge management. This article with specific characteristics of individual digital library, books and information sharing, send each other information
7、 and library management theory knowledge, using object oriented programming method, and based on the current widely used in mainstream Web development framework: Struts, Hibernate, and Freemarker components build a digital library system of the individual. This system is mainly divided into the fore
8、ground and background in two parts. Front desk for registered users, each registered user has a personal digital library, the library is divided into: my stuff, my favorites, memos, information, logs, information search, books, and other large modules. Background system administrators main function
9、is to delete the user and user - related information.Key words: Personal Digital Library, Knowledge Sharing, Knowledge Management目 录摘 要IAbstractII1 绪论1.1 选题背景(1)1.2 国外研究状况(1)1.3 国内研究状况(2)1.4 课题目标(2)1.5 本文组织结构(2)2 理论知识技术介绍2.1 UML建模语言(4)2.2 MVC简介(4)2.3 Struts简介(5)2.4 Hibernate简介(6)2.5 Freemarker简介(7)2
10、.6 本章小结(8)3 平台需求分析3.1 系统总体结构概述(9)3.2 系统参与者功能描述(10)3.3 系统UML用例图(11)3.4 本章小结(14)4 个人数字图书馆系统设计4.1 面向对象的设计原则(15)4.2 系统功能设计(16)4.3 数据库设计(17)4.4 业务逻辑层设计(23)4.5 Web层设计(25)4.6 本章小结(26)5 个人数字图书馆系统开发与实现5.1 系统开发环境与技术(27)5.2 功能模块层实现(29)5.3 前台页面显示的实现(32)5.4 本章小结(33)6 个人数字图书馆功能测试6.1 用户前台功能测试(34)6.2 系统后台功能测试(38)6.
11、3 本章小结(38)结束语(39)致 谢(40)参考文献(41)1 绪论1.1 选题背景知识经济时代的到来,大量和个人知识管理有关的计算机应用软件开始在个人电脑中使用,是个人知识管理效率有很大的提高。然而,目前大部分的个人知识管理工具只在个人电脑中使用,这些工具对于个人知识的积累确实发挥了很大的作用,便捷的检索方式也提高了人们查阅知识的效率。但是,这些工具没有与他人共享知识,没有与他人交流思想的功能,人们在不经意间发现自己习惯的知识管理方式已经不再满足个人知识管理日益个性化、社会化的趋势1。个人数字图书馆是数字图书馆发展中的新鲜事物,反映了网络环境下信息用户的个性化需求,是网络信息资源管理的客
12、观要求,也是知识管理发展的必然。在这个知识经济飞速发展的时代里,个人发展越来越依赖于个人竞争力。而个人竞争力的源泉来源于个人知识的管理、个人知识的学习、保存、使用、共享。然而随着网络信息的爆炸和数字图书馆的迅猛发展,无限的信息冲刺着我们的眼球和大脑,而这很多信息对我们来说只是垃圾信息。相信很多人都有过这样的体验,前几天在网上看到一篇很适合自己的文章,现在需要拿来用,可却怎么也找不到,用搜索引擎去搜索时又没有记住准确的题目,而搜出一大批不相符的内容。在这种情况下,作为个人信息管理和知识组织的工具个人数字图书馆迅速发展起来2。1.2 国外研究状况个人数字图书馆的提出最早开始于美国学者舒曼(Patr
13、icia Glass Schuman)于1979年提出的“图书馆和信息提供者应该提供迎合个人需求的新服务”观点,由图书馆个性化信息服务的思想演变而来。个人数字图书馆的真正研究开始于20世纪90年代初,1999 年美国图书馆与信息技术联合会(LATA)几位著名的数字图书馆专家在一次研讨会上,把个性化服务列为数字图书馆发展的7大趋势之首,同年,美国康奈尔大学图书馆开发了网络个性化服务平台 MyLibrary 系统3。1.3 国内研究状况大连交通大学图书馆孔繁胜等作者认为现有观念中,个人图书馆建设要么是个人的行为,要么是某个机构提供一个平台,为资源建设服务,最后形成私有财产,没有形成在个人资源建设的
14、同时提供资源的共享、知识的互动、思想的交流,也就是没有进行知识的再增值4。张犬银、朱庆华在个人数字图书馆研究探讨5与网络环境下个人数字图书馆信息检索策略6对个人数字图书馆的本质及功能进行了论述说明,认为个人数字图书馆本质上是个性化的数字图书馆,可以为个人在生活上、学习上、工作上提供便利的服务,同时,还可以与他人共享知识。1.4 课题目标课题的最终目标是构建一个个人数字图书馆系统,在此系统上每个注册用户都有个一属于自己的知识管理平台,每个注册用户都可以通过查看共享资料获得此资料的共享用户,并且可以下载系统所有用户的共享资料,还可以通过此平台联系这些注册用户,达到知识共享,思想交流的目的。还可以在
15、此平台上发布日志、添加备忘录、收藏网摘等。1.5 本文组织结构本论文主要是介绍了一个基于JAVA EE技术中使用广泛应用的Struts、Hibernate框架和FreeMarker Java组件实现个人数字图书馆平台的过程:当中包括相关技术的理论介绍、 需求获取、系统设计、系统实现、 系统测试和调试。同时,也给出了部分功能核心代码。全文共分六章。(1)绪论:介绍了选题背景、国内外研究现状分析和论文的最终实现目标。(2)理论知识技术介绍:简单介绍系统中采用的MVC模式和使用到的UML建模语言及主流技术:Struts、Hibernate和Freemarker。(3)平台需求分析:分析获取平台系统需
16、要实现的主要功能,以及系统中的主要参与者和用例。(4)系统设计:面向对象的设计原则,系统功能的设计、数据库的设计、业务逻辑和Web层的设计。(5)系统实现:讲述开发环境的部署,实现系统中的各个功能模块;同时,展示一些核心的配置和代码。(6)系统功能测试:通过设计测试用例等对系统的相关模块进行测试。 2 理论知识技术介绍近年来UML建模语言得到广泛的使用和设计师的追捧,Web技术日新月异,本章将对论文中使用到的UML建模语言和应用到的几大主流技术MVC模式、Struts2框架、Hibernate框架和Freemarker组件做一简单介绍,方便读者更好的了解论文。2.1 UML建模语言统一建模语言
17、(UML,Unified Modeling Language)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效7。UML设计的目标有以下几点: (1)运用面向对象的概念来建造系统模型。 (2)建立概念模型和现实实体间明显的对应关系。 (3)创建一种对人和机器都适应的建模语言。UML建模语言由五类图来定义:用例图、静态图、行为图、交互图、实现图。(1)用例图:从用户角度描述系统功能,并指出各功能的操作者。(2)静态
18、图:包括类图、对象图和包图。类图描述系统中类的静态结构;对象图是类图的实例,使用标志与类图基本相同;包图描述系统的分层结构,由类和包组成,表示包与包之间的关系。(3)行为图:描述系统的动态模型和组成对象间的交互关系。(4)交互图:描述对象间的交互关系。(5)实现图:描述代码部件的物理结构及部件间的依赖关系。2.2 MVC简介MVC模式最早由Trygve Reenskaug在1974年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软
19、件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。此外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部份分离的同时也赋予了各个基本部分应有的功能。MVC设计思想是把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。视图(View)代表用户交互界面,可以为HTML界面,也可以为XHTML、XML和 Applet。随着应用的复杂性和规
20、模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。模型(Model):就是业务流程状态的处理以及业务规则的制定。业务模型的设计是MVC最主要的核心。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。用对象编程来比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据
21、,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制8。2.3 Struts简介Struts 是 Apache软件基金会(ASF)赞助的一个开源项目。由于本系统开发过程中使用的是Struts 2,这里就只对Struts 2做简单的介绍。Struts 2号称是一个全新的框架,但这仅仅是相对Struts 1而言。Struts 2 与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个家喻户晓的框架WebWork基础上发展起来的。从某种程度上来讲,Stru
22、ts2没有继承Struts 1的血统,而是继承WebWork的血统。 因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势。因此,Struts 2是一个非常优秀的框架,其具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发,还可以清晰地区分控制、事务逻辑和外观,从而简化了开发应用程序的过程。Struts 2对Model,View和Controller都提供了对应的组件。ActionServlet,这个类是Struts 2的核心控制器,负责拦截来自用户的请求。Ac
23、tion,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给页面显示。Model由JavaBean组成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。View部分Struts 2推荐采用Freemarker模版技术实现。Struts 2提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以
24、实现与Model的有效交互,并增加了现实功能。Controller组件由两个部分组成系统核心控制器,业务逻辑控制器。系统核心控制器由Struts 2框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是通过调用Model来完成对应Action的部分处理。2.4 Hibernate简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库
25、。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的JAVA EE架构中取代CMP完成数据持久化的重任。Hibernate的核心接口一共有6个分别为:Session、SessionFactory、Configuration、Transaction、Query和Criteria。这6个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库
26、的交流,包含了很多常见的SQL语句)。不过需要注意的是Session对象是非线程安全的。同时,Hibernate的Session不同于JSP应用中的HttpSession。此处当使用Session这个术语时,其实就是指Hibernate中的Session,而将HttpSession对象称为用户Session。 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就足够了,当需要操作多个数据库
27、时,可以为每个数据库指定一个SessionFactory。 Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象9。 Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。 Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。2.5 Freemarker简介简单的说,Freemarker就是一种用Java编
28、写的模版引擎,它的工作原理是:模版+数据 = 输出,它根据模板输出多种规格的文本如:HTML、XML、Java等。Freemarker不是一个Web应用框架,而适合作为Web应用框架,其与容器无关,因为它并不知道HTTP或Servlet。Freemarker同样可以在非Web应用程序环境中使用;不过,FreeMarker更适合作为Model2框架如(Struts 2)的视图组件;同时,你也可以在模板中使用JSP标记库10。FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用Servlet提供的数据动态地生成 HTML。模板
29、语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序。虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据。2.6 本章小结 本章主要对系统中使用到的技术作了简单的介绍,首先介绍了UML建模语言中不同图列表示的含义;其次介绍了MVC的三层结构模式;然后对Struts、Hibernate、Freemarker简单的介绍了它们的来源、发展、技术核心和应用。通过本章的阅读,读者对本文中使用到的技术有了基本的了解和认识,
30、对于下午的理解有一定的帮助。3 平台需求分析 需求分析是收集需求、编写需求文档、审核需求文档、编写需求规格说明的过程,其处于开发周期中的开始阶段。 需求分析的方法有面向对象的分析方法、面向功能的分析方法和面向数据的分析方法。需求分析的成功与否直接决定着项目能否成功的进行下去,因此需求分析在整个项目中起决定性的作用,非常重要。本章将结合本次开发的具体情况,对目标系统的功能性需求、非功能性需求进行分析获取。3.1 系统总体结构概述此次开发的主要目标是构建一个属于个人的知识管理工具个人数字图书馆,此个人数字图书馆的主要功能是在线注册过的用户都能够通过此平台最终达到个人知识的组织和管理并能和该平台上和
31、的其他注册用户交流和共享资料的目的。其系统总体结构框图如图3-1所示。图3-1 系统总体结构框图由图3-1可以看出,系统主要由前台和后台两部分构成,前台主要是提供给系统的注册用户使用。后台主要用于管理员对整个系统的管理,后台管理中,前台系统的所有用户,和用户的所有资料文件都能在后台完全显示,管理员可以删除用户的每一个文件,也可以删除每一个系统注册用户。在该系统上每个注册用户可以上传自己认为有价值的资料并可以共享给其他注册用户供其下载使用,如果不想让其他用户看到自己的资料,可以将文件设为私有,也可以在系统上搜索自己想要的资料(搜素范围仅限在本站)。为了加深用户之间的交流,每个注册用户间都可以互相
32、发送信息(结构图上的信息项),互相问候或索要对方的资料。作为个人数字图书馆平台,系统提供了我的收藏功能,用户可以将自己感兴趣的网页文章保存为网摘,同时可以为网摘添加简要描述。作为个人自学自冶的平台,此系统为用户添加了备忘录功能,用户可以将今天没有完成的工作,添加到备忘录项,备忘录按时间顺序排列显示,最早添加的备忘录显示在最前面,这样有利于促使用户查看所有的备忘录。3.2 系统参与者功能描述 参与者(Actor)是系统外部的一个实体,可以是一个人、各种软件系统或应用,它与某种方式参与用例的执行过程。参与者通过向系统输入或请求向系统输入某些事件来触发系统的执行。参与者由参与用例时所担当的角色来表示
33、,一个参与者可以参与一个或多个用例。参与者有三大类:系统用户、与所建造的系统交互的其他系统和一些可以运行的进程。本文中涉及到的参与者是系统用户,所以,在此只对系统用户的功能进行描述。从上一节的分析得到了系统结构图,由图3-1可知系统的主要参与者有两种:注册用户和系统管理员。到此,系统的参与者已经很明了。两类参与者的相关人员和在此系统中拥有的功能分别是:注册用户登录个人数字图书馆系统后,可以进行站内的图书搜索,我的图书管理(可见权限的设置、删除、上传等),查看系统的共享图书,收藏和下载自己感兴趣的图书,书写发表日志,与系统中的用户互相发送信息等;管理员登录系统后可以查看系统的所有用户,查看系统的
34、所有图书,删除系统每个注册用户,删除各种图书及其他用户资料等。现在已经明确了系统参与者的具体功能,下面就可以对其功能进行细致的分析和实现。3.3 系统UML用例图用例图是需求分析到最终实现的第一步,它描述了待开发系统的功能需求,从外部参与者的角度理解系统的所有功能。用例图包含6个元素,分别是:参与者(Actor)、用例(Use Case)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。个人数字图书馆注册用户的总用例图如图3-2所示。图3-2 注册用户总用例图 图例说明:在UML语法中,图形化的小人表示参与者
35、,椭圆图形表示用例,一个用例针对着一个具体的功能模块。“”表示参与者和用例之间的执行关系; “ ”表示用例和用例之间的包含关系,即在执行此用例之前必须先执行箭头端的用例。如上图要执行“搜索图书” 、“备忘录管理”等用例必须行执行“登录”这个用例。由上图可知用户的功能模块有:日志管理、图书管理、搜索站内图书、信息管理、收藏管理和备忘录管理,由于系统名称为个人数字图书馆系统,所以在此就拿“图书管理”这个用例的子用例作进一步的说明。个人数字图书馆注册用户的图书管理子用例图如图3-3所示。图3-3 注册用户图书管理子用例图 由以上的说明分析和图3-2及图3-3可知系统需要实现注册用户的功能模块是:日志
36、管理、图书管理、搜索站内图书、信息管理、收藏管理和备忘录管理,由于系统名称为个人数字图书馆系统,下面还是拿“图书管理”用例模块作分析说明:(1)用例名称: 图书管理(2)事件流: 用户进入登陆界面,输入用户名和密码并提交,登录系统; 登录成功后直接进入我的图书页面; 对自己上传的图书的可见权限进行修改设置或删除; 点击上传按钮选择需要上传的图书; 点击下载排行查看图书下载次数,收藏或下载自己感兴趣的图书; 点击共享图书查看系统注册用户的所有共享图书,收藏或下载自己感兴的图书。(3)前置条件: 用户已登录个人数字图书馆系统此图书管理模块的活动图如图3-4所示。图3-4 注册用户图书管理活动图 以
37、上图书管理模块的活动图意思已经很明确了,在此不作说明。 个人数字图书馆信息管理的用例图如图3-5所示。 信息管理用例图说明: (1)用例名称: 信息管理 (2)事件流: 用户进入登陆界面,输入用户名和密码并提交,登录系统; 登录成功后选择进入常用先选卡选择信息模块; 查看其它用户发过来的信息; 回复信息; 删除信息。(3)前置条件: 用户已登录个人数字图书馆系统。图3-5 信息管理用例图其他模块的用例图与以上展示类似,限于篇幅在此不再不作演示。3.4 本章小结本章主要对系统的功能性需求进行详细的分析和获取,到此,个人数字图书馆系统所应该有的功能已清晰地呈现出来。然而,系统的非功能需求也是异常重
38、要的一个方面。软件产品的非功能性需求是指产品为了满足用户业务需求外还必须具备可靠性性能、响应时间、容错性、扩展性等等。这些需求将在系统实现初步功能后逐步进行完善。4 个人数字图书馆系统设计 在分析清楚知识、知识管理、个人知识管理概念的前提下,尤其是在分析清楚个人数字图书馆系统功能的基础之上,就可以进行下步的工作系统的设计。系统设计在软件工程项目中是至关重要的一个阶段,其目的是让开发者对整个系统的框架有所把握,系统设计的到位以否决定着后期编码开发实现的成败11,由此可见系统设计在项目实现过程中的重要性。本章节将阐述设计原则,系统功能设计、数据库设计、逻辑层设计、表示层设计等内容。4.1 面向对象
39、的设计原则面向对象的设计应具备三个特性:可扩展性、灵活性、可插入性。这三个特性都是围绕面向对象设计的目的实现支持可维护性的复用,同时,可维护性复用都是以面向对象设计原则为基础的。常用的面向对象设计原则包括七个,这些原则并不是孤立存在,它们相互依赖相互补充12。面向对象设计的七个原则:(1) 单一职责原则:类的职责要单一,不能将太多的职责放在一个类中。本系统类的设计都符合单一职责原则,每一个类只有一个职责。如备忘录类:Memo只具有添加备忘录的职责。(2) 开闭原则:软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其功能。本系统的的设计也符合开闭原则,随着个人数字图
40、书馆的不断发展,要求越来越高,后期肯定需要再加强功能,由于类的设计都是单一职责的,所以再添加功能的时候,不需要改动原来的软件实体。(3) 里氏代换原则:在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。(4) 依赖倒转原则:要针对抽象层编程,而不要针对具体类编程。(5) 接口隔离原则:使用多个专门的接口来取代一个统一的接口。(6) 合成复用原则:在系统中应该尽量多使用组合和聚合的关联关系,尽量少使用甚至不使用继承关系。(7) 迪米特法则:一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此互相通信,那么这两个类就不应当发生直接的相互作用,而是通过引入第三者发生间接的交
41、互。4.2 系统功能设计由第三章的需求分析知系统的总体功能结构图如上章图3-1所示。下面再对其中的功能模块作详细的设计。图书功能模块的功能设计如图4-1所示。图4-1 图书模块功能图 由上图可知功能模块“图书”下面的功能有查看下载排行、共享的图书、自己私有的图书和收藏图书,这其中当然都是具备可下载性的。信息功能模块的功能设计如图4-2所示。图4-2 信息模块功能图由上图可知功能模块“信息”下面的功能有发送信息、接收信息、查看信息和删除信息。4.3 数据库设计 在进行数据库的设计之前,先要明确系统的实体对象。个人数字图书馆的实体对象主要包含以下实体:用户:上面所提及的注册用户,该系统的用户可以是
42、任何人,用户实现数字资料的管理等。我的资料:每个注册用户都可以上传自己的资料。信息:每个注册用户都可以给系统其他用户发送信息。日志:每个注册用户可以发表日志。备忘录:每个注册用户都可以添加备忘录。空间:每个注册用户系统都分配了1GB容量的空间。我的收藏:注册用户可以根据自己的需要,添加收藏。共享资料:注册用户共享的资料,所有用户可见。以上部分实体对应的E-R图如图4-3所示。图4-3 实体E-R图以上E-R图中实体对应的数据库表如下列4-1,4-2,4-3表所示。表4-1 用户表字段名称数据类型字段大小允许空主键userIDint10否是usernamevarchar45否否passwordv
43、archar45否否nicknamevarchar45否否sexvarchar4否否emailvarchar50否否descriptionvarchar255否否ifPublicint10否否表4-2 文件表字段名称数据类型字段大小允许空主键fileIDint10否是usernamevarchar45否否filenamevarchar45否否filesizevarchar255否否downcountint10否否uptimedatetime0否否ifPublicint10否否表4-3 空间表字段名称数据类型字段大小允许空主键spaceDint10否是usernamevarchar45否否tot
44、alsizebigint50否否usedsizebigint50否否unusedsizebigint50否否 用户表的字段有userID(主键)、username(用户名)、nickname(昵称)、sex(性别,因为只有两种性别,所以长度设为4)等字段。这是系统中的主要实体和它们想对应的E-R图及数据表。下面再给出系统中其它实体的E-R图和数据表。用户实体与日志实体的E-R图如图4-4所示。图4-4 用户日志E-R图 日志的数据表如表4-4所示。表4-4 日志数据表字段名称数据类型字段大小允许空主键diaryIDint10否是usernamevarchar45否否diaryTypevarch
45、ar45否否diaryTitlevarchar45否否diaryContentvarchar255否否diaryTimedatetime0否否用户实体与信息实体的E-R图如图4-5所示。图4-5用户信息E-R图信息的数据表如表4-5所示。表4-5 信息数据表字段名称数据类型字段大小允许空主键messageIDint10否是usernamevarchar45否否sendnamevarchar45否否themevarchar45否否messcontvarchar255否否sendtimedatetime0否否由于其它实体与用户实体的关联关系与上面展示的实体基本类似,所以在此就不在给出其它实体与用户实体的E-R图演示了。备忘录的数据表如表4-6所示。表4-6 备忘录数据表字段名称数据类型字段大小允许空主键memoIDint10否是usernamevarchar45否否memocontvarchar255否否addtimedatetime0否否收藏夹数据表如表4-7所示。表4-7 收藏夹数据表字段名称数据类型字段大小允许空主键favoriteIDint10否是usernamevarchar45否否titlevarchar45否否urlvarchar100否否descriptionvarchar2