收藏 分享(赏)

详细设计说明书 真正例子.doc

上传人:11xg27ws 文档编号:9191809 上传时间:2019-07-29 格式:DOC 页数:11 大小:151.50KB
下载 相关 举报
详细设计说明书  真正例子.doc_第1页
第1页 / 共11页
详细设计说明书  真正例子.doc_第2页
第2页 / 共11页
详细设计说明书  真正例子.doc_第3页
第3页 / 共11页
详细设计说明书  真正例子.doc_第4页
第4页 / 共11页
详细设计说明书  真正例子.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、Lyra Resource Platform 文档 详细设计说明书1详细设计说明书1.引言1.1 编写目的本详细设计说明书是针对网络信息体系结构的课程作业而编写。目的是对该项目进行详细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试作准备。本详细设计说明书的预期读者为本项目小组的成员以及对该系统感兴趣,在以后想对系统进行扩展和维护的人员。2. 系统的结构u ic l i e n tp r e v i e ws e a r c hc o m m o n ui:系统界面部分,负责接受用户输入,显示系统输出,负责其他模块功能的协调调用,并含有站内搜索功能,

2、即在用户指定的已打开的 ftp 站点中搜索用户需要的资源。ui 部分调用 common 部分的功能读取 xml 文件中保存的界面元素属性信息,用户最近访问过的 10 个 ftp 信息,用户选择的下载的 ftp 内容列表及其他需要通过 xml 文件保存的信息。 client:实现 ftp 客户端的功能,ftp 连接,ftp 上传及下载:上传或下载用户指定的Lyra Resource Platform 文档 详细设计说明书2资源,并返回相应的信息。 search:资源实时检索部分,根据用户输入的资源名称关键字,资源类型和选择的检索方式检索用户需要的资源,并验证资源的可用性,返回可用资源及其大小,速

3、度等相关信息。 preview:资源预览部分,显示用户选择的资源的部分内容,以使用户决定是否需要该资源。preview 部分调用 common 部分读取属性文件的内容亦显示预览资源内容的显示格式。3模块 1(ui)设计说明3.1 模块描述实现用户界面的包,含有 11 个文件 51 个类,是本系统中最复杂的代码。3.2 功能负责接受用户输入,显示系统输出,其他模块功能的协调调用,并含有站内搜索功能,即在用户指定的已打开的 ftp 站点中搜索用户需要的资源。3.3 交互的模块client,search,preview,common。3.4 模块设计该模块中的主要文件,文件中包含的主要类及其功能和与

4、其它包的交互如下: MainFrame.java:MainFrame 是含有主函数的类,也是 lyra 客户端开始执行的类,它先后进行资源的初始化,显示主界面等工作,根据屏幕大小设置界面大小,设置界面的观感。 FtpFrame_AboutBox.java:显示关于窗口的类,当用户点击帮助菜单中的关于菜单项时会弹出关于对话框。 Tools.java:FileTools 是文件操作辅助类,可以实现文件的递归删除等。 XMLController.java: JDOMTes 是操作 xml 文件的类,用 JDOM 来操作 xml 文件,实现的功能有:(1)保存 ftp 服务器的文件列表(站内搜索时使用

5、) ,递归的从 ftp 服务器读取列表,并存入一个 xml 文件中(文件的命名方法是:ip+用户名.xml ); 以目录树的形式保存。(2)根据文件名在文件中查找文件,站内搜索时使用。(3)保存 ftp 服务器的信息:ip,端口(默认端口 21 不保存) ,用户名(默认anonymous 不保存) ,密码,最多存 10 个;存在 resourcesettings serversinfor.xml 文件中。(4)读取已存储的 ftp 服务器信息。(5)从 type.xml 读取搜索的类型。 Constants.java:放置系统运行时使用的一些常量, initcontent()函数对所有常量进行

6、初始化,这个函数在 MainFrame 中被调用一次。iconHashMap 是 hash 表,用于存放文件的系统图标。 CustomizedController.java:包含自定义的控件类,java 中的控件可能不能满足需求,需要自己定义某些属性。这些控件会在创建界面时使用。其中含有的类有:(1)CustomizedJTable 是表格类,设置表格的某些属性,如字体等。(2)CustomizedTableCellRenderer 是表格单元格绘制器类,主要用于显示文件的系统图标,和文件名。(3)LeftPanel 类的父类是 JTabbedPane,用户显示主窗口左边的面板。(4)Righ

7、tPanel 类的父类是 JPanel,用户显示右边的主题部分,包括右上边的搜索及服务Lyra Resource Platform 文档 详细设计说明书3器选项,和中间的显示服务器文件的 TabbedPane。.(5)BottomPanel 类是右下放显示下载和服务器信息的 JTabbedPane。(6)CustomizedJButton 是定义按钮类,更改了按钮的字体,java 本身默认的字体不好看。(7)CustomizedTableModel 是表格类,实现单元格的不可编辑。(8)CustomizedTableCellRenderer_Remote 类是表格绘制器,在远程文件浏览器Rem

8、oteFilesPanel 使用,用于显示文件名和文件图标。(9)FontTableCellRenderer 类是表格单元格绘制器,主要功能是设置字体。(10)FontListCellRenderer 类是下拉列表框单元格绘制器,主要用于设置字体。(11)CustomizedJLabel 类是自定义标签类,重新设置了标签的字体。(12)CustomizedJTextField 类是自定义文本框类,主要用于设置文本框的显示属性。(13)CustomizedJMenu 类是自定义菜单类,重新设置了菜单的字体。(14)CustomizedJMenuItem 类是自定义菜单项类,重新设置了菜单的字体。

9、(15)CustomizedListCellRenderer 类是 JComboBox 即组合框单元格绘制器,用于在本地路径选择的下拉列表中显示磁盘图标。 SearchResultReceiver.java, SearchResultReceiver 是一个接口,主要用于返回搜索结果。搜索完成后调用接口中的函数通知调用者。其中主要有两个函数:(1)OnSearchFinished(String keywords,ArrayList resultset);result 是一个 10 维的数组表result10,resulti是由类型为 i 的资源组成的数组。i:09,和类型列表框中的顺序一致。(

10、2)OnSearchFinished(String keywords,ArrayList resultset);不分类型,将所有资源放在一个数组表中。 FtpFrame.java:FtpFrame 是程序主窗口类,类型为 JFrame,是由三个分割窗口JSplitPane 构成的。jSplitPane_Left 是左边的分割窗口,水平分割条上边显示本地文件框,下边是预览框;jSplitPane_Right 是右边的分割窗口,水平分割条上边是服务器选项和 ftp 服务器文件显示的窗口,下边是下载和服务器信息显示窗口;jSplitPane_Whole 是整体的分割窗口,垂直分割条,左边是 jSpl

11、itPane_Lef,右边是jSplitPane_Right。FtpFrame 把 LeftPanel,RightPanel,BottomPanel,PreviewWrapperPanel 这几部分安装在相应的分割窗格中;LeftPanel, RightPanel,BottomPanel 是在 CustomizedController.Java 中定义的,PreviewWrapperPanel 是在 Preview 包中定义的。 LeftPanelCtrl.java: LocalFilesPanel 是本地文件面板,用表格来显示本地文件的信息。上边是组合框,显示了磁盘分区通过这里可以改变根目录

12、。表格中显示了文件的信息,包括文件名,文件的系统图标,大小,最近修改日期,属性等。选中一个文件后可以执行上载和删除操作。文件夹会递归的删除。GetCurrentPath()函数返回当前的路径。DisplayPathFiles()函数在列表中显示指定目录下的文件。 RightPanlCtrl.java:定义右上边的控件。含有的类有:(1)FtpServerOptionPanel 类是服务器连接选项面板,包含服务器地址,端口,用户名,密码等,还包括最上端的搜索选项。openRemoteFilesPanel ()函数在下面的 TabbedPane中打开一个新的服务器面板,连接服务器。(2)Remot

13、eFilesPanel 类的主要功能是连接 Ftp 服务器并显示文件。这里会进行文件的上载,下载及预览等操作。RemoteFilesPanel 的内部类 TransferController 负责调用 FtpClient类提供的功能与服务器进行交互,完成用户指定的文件操作。TransferController 还有三个内部类:ConnThread 类是负责连接服务器的线程(新开一个线程,目的是避免连接时阻塞)Lyra Resource Platform 文档 详细设计说明书4,DownloadFileThread 类是下载文件的线程, UploadFileThread 类是上载文件的线程。(3

14、)SearchResultPanel 类是显示搜索结果的类,它有两个子类SearchResultPanelWithinSearchEngine 类的功能是在搜索引擎中搜索,SearchResultPanelWithinServer 类的功能是站内搜索。搜索引擎的搜索会调用 search 包中的程序,搜索引擎搜索完成后 search 包通过 OnSearchFinished()来通知SearchResultPanelWithinSearchEngine 类,然后显示搜索结果。(4)RightTabbedPane 是显示 ftp 服务器文件表格的 TabbedPane 类。 BottomPanel

15、Ctrl.java:实现主窗口下部面板及控件,显示下载情况,服务器连接信息。包含的主要类有:(1)RemoteMessPanel 类是显示服务器连接信息的面板。需要显示 ftp 服务器传回的信息,并在显示前进行编码转换,还需要显示本地的相关信息。(2)DownloadingMessPanel 类是显示资源下载信息的面板,显示下载资源的大小,下载速度,已用时间,剩余时间等信息。3.5 流程逻辑总体流程:3.6 简单类图MainFrame.classFtpFrame.classLeftPanel.classPreviewWrapperPanelRightPanel.classBottomPanel

16、.classFtpClient.class search上载预览显示下载信息Lyra Resource Platform 文档 详细设计说明书54模块 2(client)设计说 明4.1 模块描述实现 ftp 客户端 FtpClient,有两个文件 FtpClient.java 和 FtpLoginException.java,前者具体实现了 ftp 协议,后者是为登录时可能抛出的异常而定义的类。4.2 功能实现 ftp 客户端 FtpClient,实现了 ftp 协议,用于和 ftp 服务器通讯和数据传输。4.3 交互的模块ui 4.4 模块设计该模块中的主要文件,文件中包含的主要类及其功能

17、和与其它包的交互如下: FtpClient.java:含有类 FtpClient,,该类会被 ui 包中的界面类调用,完成 ftp 功能。其中要功能的实现有:在构造函数中根据 ip 和 port 建立与服务器的连接;Lyra Resource Platform 文档 详细设计说明书6登录服务器 login() (用户名,密码) ;向服务器追加 ascii 文件 appendAscii() ;向服务器追加二进制文件 appendBinary() ;设置数据传输方式为二进制 binary,ascii 码 scii() ;改变工作目录 cd(String newdirectory ) ;返回上一级目

18、录 cdup() ;断开连接 closeserver() ;删除文件 delete(文件名) ;删除文件夹 rmdir(文件夹的名字) ;用 ascii 模式下载文件 getAscii(文件名) ;用二进制方式下载文件 getBinary(文件名) ;取得服务器的响应字串 getResponseString();列举当前目录下的文件 list() ,指定目录下的文件 list(文件名) ;创建文件夹 mkdir(文件夹名) ;上载 Ascii 文件 putAscii(文件路径),二进制 putBinary() 。 FtpLoginException.java:含有类 FtpLoginExcep

19、tion,定义登录时可能抛出的异常。5模块 3(common)设计说明5.1 模块描述存放一些辅助类,系统启动时会从 properties.xml 读取一些配置信息。可以通过手动修改配置信息来修改系统的某些显示属性如字体,字的大小等。5.2 功能存放一些辅助类,例如用于读取和存储系统配置属性的类。用于将“属性名属性值”对存储在 properties.xml 文件中的类。5.3 交互的模块ui 5.4 模块设计该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下: Properties.java: 含有类 Properties,这是读取和存储系统配置属性的类。其主要功能的实现如下:

20、函数 getProperty()根据属性名取得属性值,如果属性不存在返回 null;函数 getProperties()根据属性名列表返回属性值列表,返回值为 ArrayList,其中的每一个元素是 PropertyValue 对象;函数 setProperty()设置单个属性值;函数 setProperties()设置多个属性值;函数 readXMLFromFile()读取 xml 文件;函数 buildXML()在 xml 文档中存入数据; PropertyValue.java:含有类 PropertyValue,在 xml 文件中存储“属性名属性值”对。Lyra Resource Pla

21、tform 文档 详细设计说明书76模块 4(search)设计说明6.1 模块描述包 search 主要完成天网和百度两项搜索功能。它含有以下 6 个类:NetResource, URLParser,ConnectionTester,SearchResultRetriever ,EmbeddedFileRetriever,HttpRetriever 。6.2 功能主要完成天网和百度两项搜索功能。6.3 交互的模块ui 6.4 模块设计该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下: NetResource.java:含有类 NetResource,NetResource

22、是对被天网索引的网络文件资源的抽象,其字段有:fileURL(文件资源的 URL,包括协议、主机字符串、路径、文件名) 、fileDate(天网将它编入索引的日期) 、fileSize(文件的大小) 、responseTime(以毫秒计算的响应时间) 。函数 smallerThan(NetResource nr)比较本条资源的响应时间是否比 nr 的响应时间小,因为规定响应时间小的 NetResource 排在相应时间大的前面。 URLParser.java:含有类 URLParser,URLParser 是一个工具箱类,它提供了若干静态方法,对一个文件资源的 URL 进行解析。其实现的方法有

23、:函数 getProtocol():给定一个 URL,返回其协议名称;函数 getHostName():给定一个 URL,返回主机字符串;函数 getPath():给定一个 URL,返回文件在主机中的存放路径;函数 getFileName():给定一个 URL,返回文件名;函数 getSuffix():给定一个 URL,返回该 URL 对应的文件资源的后缀名。 ConnectionTester.java:含有类 ConnectionTester,ConnectionTester 是用来对网络文件资源进行连接测试的类,它实现了 Runnable 接口。SearchResultRetriever

24、类将ConnectionTester 类作为模板生成许多线程并发地对各文件资源进行连接并测试相应时间,以提高程序效率。每个网络文件都是用 NetResource 类表示的。对于 ftp 文件,ConnectionTester 尝试以匿名方式连接。如果连接失败则丢弃该资源的 URL,若连接成功则根据连接它响应时间将其插入已排序的 NetResource 列表中。对于 http 文件,ConnectionTester 建立一个新的 URLConnection,并调用 connect 方法尝试连接。如果连接失败则丢弃该资源的 URL,若连接成功则根据连接它的响应时间将其插入已排序的 NetResou

25、rce 列表中。在构造 ConnectionTester 类的对象时必须指定一个由NetResource 类的对象组成的 ArrayList,其中每个 NetResource 都需要测速。该类的功能主要由函数 run()实现。 SearchResultRetriever.java:含有类 SearchResultRetriever,SearchResultRetriever 类根据给定的关键字和文件类型向天网文件搜索引擎发送请求,对各返回结果页面的源文件进行分析,将所有网络文件资源的 URL 进行分类(利用天网的分类方法)并保存在10 个 ArrayList 中。该类的函数如下:函数 test

26、()判断这个“ 下一页“对应的 URL 是否合法,该问题仅在用程序访问天网时需要考虑函数 retrieve()根据输入的关键字 String tokens 向天网发出请求,取得返回的 URLLyra Resource Platform 文档 详细设计说明书8集合,ArrayList0 保存图片imagefile;ArrayList1 保存音乐soundfile;ArrayList2 保存电影videofile;ArrayList3 保存压缩zipfile;ArrayList4 保存文档docfile; ArrayList5 保存程序programfile;ArrayList6 保存源码 src

27、file;ArrayList7 保存网页webfile;ArrayList8 保存目录dirfile;ArrayList9 保存其他 file。对每一个ArrayList 生成若干 ConnectionTester 线程进行响应时间测试,在这些线程返回后每一个 ArrayList 中的网络文件资源都已经按照响应时间递增的顺序排列,而无法连接的文件资源 URL 都已被丢弃。SearchResultRetriever 类的使用方式是调用它的函数retrieve(String tokens, int type) ,其中 tokens 为表示关键字的字符串数组;type 表明用户需要搜索什么类型的文件

28、。该方法将上述 10 个 ArrayList 组成一个数组并返回。 EmbeddedFileRetriever.java:含有类 EmbeddedFileRetriever,EmbeddedFileRetriever类的作用是提取网页中文件链接,它实现了 Runnable 接口。HttpRetriever 类将EmbeddedFileRetriever 类作为模板生成若干线程并发地提取不同网页内的文件链接,以提高程序效率。EmbeddedFileRetriever 类维护了一个网页后缀名列表,由于程序只提取对应文件资源的 URL,我们需要分辨哪些后缀名是对应网页的从而及时将它们丢弃。在构造类

29、EmbeddedFileRetriever 的对象时必须指明从哪个网页 URL 中提取文件URL,以及这些 URL 保存在哪个 ArrayList 中。函数 hasFileSuffix()的功能是判断一个 url 是否链向一个文件;函数 listFiles(String URLStr)将 URLStr 对应页面中的所有文件加到 ArrayList 中并返回。 HttpRetriever.java:含有类 HttpRetriever,HttpRetriever 类的功能是根据给定的关键字向百度搜索引擎发送请求,抽取前 20 个返回结果对应的网页 URL。对每一个页面生成一个 EmbeddedFi

30、leRetriever 对象提取其中对文件的链接,并添加到一个 ArrayList中。每个页面都处理完毕后返回这个 ArrayList。在利用搜索文件时,应当提供尽可能多的信息,如输入歌手姓名和“mp3 ”作为关键字。如果仅给定歌手名称则搜索效果不佳。这些功能都是由函数 retrieve()实现的。6.5 类图Lyra Resource Platform 文档 详细设计说明书97模块 5(preview)设计说 明7.1 模块描述系统的预览部分,实现了不同类型资源的预览,并可以根据用户选择的格式显示资源的内容。 7.2 功能各种类型资源的预览,可以根据用户的选择格式显示资源的内容,并可以存储用

31、户选择的预览内容。7.3 交互的模块ui 7.4 模块设计该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下: PreviewWrapperPanel.java:含有类 PreviewWrapperPanel,这是系统的预览部分最基本的类,它派生自 Jpanel 类,主要由 3 部分组成,其中PreviewPanel 负责显示预览,StatusBarPanel 负责显示预览文件的加载进度,ControlButtonPanel 负责和预览相关的控制。在显示资源的预览内容前应该先判断该资源类型是否可以预览。 PreviewPanel.java:含有类 PreviewPanel,这是

32、一个抽象类,负责资源内容的预览,有 5 个子类,这 5 个子类分别是PicturePreviewPanel 类:负责图像文件的预览;PDFPreviewPanel 类:负责 PDF 文件的预览;TxtPreviewPanel 类:负责文本文件的预览;Lyra Resource Platform 文档 详细设计说明书10NoFileSelectedPreviewPanel 类:负责当用户没有选项文件预览时显示提示信息;NoPreviewPanel 类:负责当用户选择的文件不能预览时,显示提示信息。PreviewPanel 类实现的主要功能是构造预览窗口的实例,有两种构造方式:以默认大小构造或以指

33、定大小构造。PreviewPanel 类的函数 preview()是一个虚函数,系统可以根据不同的子类调用不同的预览函数。 PicturePreviewPanel.java:含有类 PicturePreviewPanel,它的主要功能是图像文件的预览,其中有 4 个内部类,分别是:ImagePanel 类:这是显示图像的 JPanel,主要功能是绘图;PopupListener 类:用户单击右键弹出菜单的类,右键功能是设置图像的显示是“适合窗口”还是“原始大小”;picPopupMenuListener 类:负责对右键菜单中事件的响应。PictureFromDiskLoader 类:负责从磁盘

34、上加载图像文件。 TxtPreviewPanel.java: 含有类 TxtPreviewPanel,它的主要功能是文本文件的预览,其中有 5 个内部类,分别是:PopupListener 类:用户单击右键弹出菜单的类,txtPopupMenuListener 类:负责对右键菜单中事件的响应;FileFromDiskLoader 类:负责从磁盘加载文本文件;FontChooseDialog 类:字体选择对话框;FontDialogEditorMediator 类:负责对话框选择的字体和预览区域显示的字体之间的更新。 PDFPreviewPanel.java:含有类 PDFPreviewPane

35、l,该类使用第三方的软件包 JPedal 来实现 pdf 文件的预览。 ControlButtonPanel.java:含有类 ControlButtonPanel,该类的功能是根据用户的选择保存预览资源,即把预览的文件存放到用户选定的目录。他的功能主要由两个内部类来实现,分别是:saveAction 类:实现了接口 ActionListener,是对预览资源保存按钮的响应,实现预览资源保存功能,把预览的文件存放到用户选定的目录。ExampleFileFilter 类:继承自类 FileFilter,实现用户选择文件保存目录的功能,即弹出文件选择对话框。7.5 类图Lyra Resource Platform 文档 详细设计说明书11

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报