
系统详细设计
-
2023年3月6日发(作者:apl船公司)-
.z.
系统软件详细设计说明书
1.引言
1.1编写目的
本详细设计说明书是针对网络信息体系构造的课程作业而编写。目的是对该工程进展详
细设计,在概要设计的根底上进一步明确系统构造,详细地介绍系统的各个模块,为进展后
面的实现和测试作准备。本详细设计说明书的预期读者为本工程小组的成员以及对该系统感
兴趣,在以后想对系统进展扩展和维护的人员。
2.系统的构造
ui:系统界面局部,负责承受用户输入,显示系统输出,负责其他模块功能的协调调用,
并含有站搜索功能,即在用户指定的已翻开的ftp站点中搜索用户需要的资源。ui局部
调用mon局部的功能读取*ml文件中保存的界面元素属性信息,用户最近访问过的10
个ftp信息,用户选择的下载的ftp容列表及其他需要通过*ml文件保存的信息。
client:实现ftp客户端的功能,ftp连接,ftp上传及下载:上传或下载用户指定的资源,
并返回相应的信息。
search:资源实时检索局部,根据用户输入的资源名称关键字,资源类型和选择的检索方
式检索用户需要的资源,并验证资源的可用性,返回可用资源及其大小,速度等相关信
息。
preview:资源预览局部,显示用户选择的资源的局部容,以使用户决定是否需要该资源。
preview局部调用mon局部读取属性文件的容亦显示预览资源容的显示格式。
3.模块1〔ui〕设计说明
3.1模块描述
实现用户界面的包,含有11个文件51个类,是本系统中最复杂的代码。
3.2功能
负责承受用户输入,显示系统输出,其他模块功能的协调调用,并含有站搜索功能,即
在用户指定的已翻开的ftp站点中搜索用户需要的资源。
3.3交互的模块
client,search,preview,mon。
3.4模块设计
该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下:
:MainFrame是含有主函数的类,也是lyra客户端开场执行的类,它
先后进展资源的初始化,显示主界面等工作,根据屏幕大小设置界面大小,设置界面的
观感。
-
.z.
FtpFrame_AboutBo*.java:显示关于窗口的类,当用户点击帮助菜单中的关于菜单项
时会弹出关于对话框。
:FileTools是文件操作辅助类,可以实现文件的递归删除等。
*:JDOMTes是操作*ml文件的类,用JDOM来操作*ml文件,实
现的功能有:
〔1〕保存ftp效劳器的文件列表〔站搜索时使用〕,递归的从ftp效劳器读取列表,并
存入一个*ml文件中〔文件的命名方法是:ip+用户名.*ml〕;以目录树的形式保存。
〔2〕根据文件名在文件中查找文件,站搜索时使用。
〔3〕保存ftp效劳器的信息:ip,端口〔默认端口21不保存〕,用户名〔默认anonymous
不保存〕,密码,最多存10个;存在resourcesettingsserversinfor.*ml文件中。
〔4〕读取已存储的ftp效劳器信息。
〔5〕从type.*ml读取搜索的类型。
:放置系统运行时使用的一些常量,initcontent〔〕函数对所有常量进展初
始化,这个函数在MainFrame中被调用一次。iconHashMap是hash表,用于存放文件
的系统图标。
:包含自定义的控件类,java中的控件可能不能满足需求,需
要自己定义*些属性。这些控件会在创立界面时使用。其中含有的类有:
〔1〕CustomizedJTable是表格类,设置表格的*些属性,如字体等。
〔2〕CustomizedTableCellRenderer是表格单元格绘制器类,主要用于显示文件的系统图标,
和文件名。
〔3〕LeftPanel类的父类是JTabbedPane,用户显示主窗口左边的面板。
〔4〕RightPanel类的父类是JPanel,用户显示右边的主题局部,包括右上边的搜索及效劳器
选项,和中间的显示效劳器文件的TabbedPane。.
〔5〕BottomPanel类是右下放显示下载和效劳器信息的JTabbedPane。
〔6〕Customizedutton是定义按钮类,更改了按钮的字体,java本身默认的字体不好看。
〔7〕CustomizedTableModel是表格类,实现单元格的不可编辑。
〔8〕CustomizedTableCellRenderer_Remote类是表格绘制器,在远程文件浏览器
RemoteFilesPanel使用,用于显示文件名和文件图标。
〔9〕FontTableCellRenderer类是表格单元格绘制器,主要功能是设置字体。
〔10〕FontListCellRenderer类是下拉列表框单元格绘制器,主要用于设置字体。
〔11〕CustomizedJLabel类是自定义标签类,重新设置了标签的字体。
〔12〕CustomizedJTe*tField类是自定义文本框类,主要用于设置文本框的显示属性。
〔13〕CustomizedJMenu类是自定义菜单类,重新设置了菜单的字体。
〔14〕CustomizedJMenuItem类是自定义菜单项类,重新设置了菜单的字体。
〔15〕CustomizedListCellRenderer类是oBo*即组合框单元格绘制器,用于在本地路径选择的
下拉列表中显示磁盘图标。
,SearchResultReceiver是一个接口,主要用于返回搜索结果。搜
索完成后调用接口中的函数通知调用者。其中主要有两个函数:
〔1〕OnSearchFinished(String[]keywords,ArrayList[]resultset);result是一个10维的数组表
result[10],result[i]是由类型为i的资源组成的数组。i:0-9,和类型列表框中的顺序一致。
〔2〕OnSearchFinished(String[]keywords,ArrayListresultset);不分类型,将所有资源放在一个数
组表中。
:FtpFrame是程序主窗口类,类型为JFrame,是由三个分割窗口JSplitPane构
成的。
-
.z.
jSplitPane_Left是左边的分割窗口,水平分割条上边显示本地文件框,下边是预览框;
jSplitPane_Right是右边的分割窗口,水平分割条上边是效劳器选项和ftp效劳器文件显示的
窗口,下边是下载和效劳器信息显示窗口;
jSplitPane_Whole是整体的分割窗口,垂直分割条,左边是jSplitPane_Lef,右边是
jSplitPane_Right。
FtpFrame把LeftPanel,RightPanel,BottomPanel,PreviewWrapperPanel这几局部安装在相应
的分割窗格中;LeftPanel,RightPanel,BottomPanel是在中定义的,
PreviewWrapperPanel是在Preview包中定义的。
:LocalFilesPanel是本地文件面板,用表格来显示本地文件的信息。上
边是组合框,显示了磁盘分区通过这里可以改变根目录。表格中显示了文件的信息,包
括文件名,文件的系统图标,大小,最近修改日期,属性等。选中一个文件后可以执行
上载和删除操作。文件夹会递归的删除。GetCurrentPath〔〕函数返回当前的路径。
DisplayPathFiles〔〕函数在列表中显示指定目录下的文件。
:定义右上边的控件。含有的类有:
〔1〕FtpServerOptionPanel类是效劳器连接选项面板,包含效劳器地址,端口,用户名,密
码等,还包括最上端的搜索选项。openRemoteFilesPanel〔〕函数在下面的TabbedPane中翻
开一个新的效劳器面板,连接效劳器。
〔2〕RemoteFilesPanel类的主要功能是连接Ftp效劳器并显示文件。这里会进展文件的上载,
下载及预览等操作。RemoteFilesPanel的部类TransferController负责调用FtpClient类提供的
功能与效劳器进展交互,完成用户指定的文件操作。TransferController还有三个部类:
ConnThread类是负责连接效劳器的线程〔新开一个线程,目的是防止连接时阻塞〕,
DownloadFileThread类是下载文件的线程,UploadFileThread类是上载文件的线程。
〔3〕SearchResultPanel类是显示搜索结果的类,它有两个子类
SearchResultPanelWithinSearchEngine类的功能是在搜索引擎中搜索,
SearchResultPanelWithinServer类的功能是站搜索。搜索引擎的搜索会调用search包中的程序,
搜索引擎搜索完成后search包通过OnSearchFinished〔〕来通知
SearchResultPanelWithinSearchEngine类,然后显示搜索结果。
〔4〕RightTabbedPane是显示ftp效劳器文件表格的TabbedPane类。
:实现主窗口下部面板及控件,显示下载情况,效劳器连接信息。
包含的主要类有:
〔1〕RemoteMessPanel类是显示效劳器连接信息的面板。需要显示ftp效劳器传回的信息,
并在显示前进展编码转换,还需要显示本地的相关信息。
〔2〕DownloadingMessPanel类是显示资源下载信息的面板,显示下载资源的大小,下载速
度,已用时间,剩余时间等信息。
3.5流程逻辑
总体流程:
3.6简单类图
4.模块2〔client〕设计说明
4.1模块描述
实现ftp客户端FtpClient,有两个文件和FtpLoginE*,前者具体实现
了ftp协议,后者是为登录时可能抛出的异常而定义的类。
-
.z.
4.2功能
实现ftp客户端FtpClient,实现了ftp协议,用于和ftp效劳器通讯和数据传输。
4.3交互的模块
ui
4.4模块设计
该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下:
:含有类FtpClient,,该类会被ui包中的界面类调用,完成ftp功能。
其中要功能的实现有:
在构造函数中根据ip和port建立与效劳器的连接;
登录效劳器login〔〕〔用户名,密码〕;
向效劳器追加ascii文件appendAscii〔〕;
向效劳器追加二进制文件appendBinary〔〕;
设置数据传输方式为二进制binary,ascii码scii〔〕;
改变工作目录cd〔Stringnewdirectory〕;
返回上一级目录cdup〔〕;
断开连接clo rver〔〕;
删除文件delete〔文件名〕;
删除文件夹rmdir〔文件夹的名字〕;
用ascii模式下载文件getAscii〔文件名〕;
用二进制方式下载文件getBinary〔文件名〕;
取得效劳器的响应字串getResponseString();
列举当前目录下的文件list〔〕,指定目录下的文件list〔文件名〕;
创立文件夹mkdir〔文件夹名〕;
上载Ascii文件putAscii(文件路径),二进制putBinary〔〕。
FtpLoginE*:含有类FtpLoginE*ception,定义登录时可能抛出的异常。
5.模块3〔mon〕设计说明
5.1模块描述
存放一些辅助类,系统启动时会从properties.*ml读取一些配置信息。可以通过手动修
改配置信息来修改系统的*些显示属性如字体,字的大小等。
5.2功能
存放一些辅助类,例如用于读取和存储系统配置属性的类。用于将"属性名-属性值〞
对存储在properties.*ml文件中的类。
5.3交互的模块
ui
5.4模块设计
该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下:
:含有类Properties,这是读取和存储系统配置属性的类。其主要功能的实
现如下:
函数getProperty〔〕根据属性名取得属性值,如果属性不存在返回null;
函数getProperties〔〕根据属性名列表返回属性值列表,返回值为ArrayList,其中的每
一个元素是PropertyValue对象;
函数setProperty〔〕设置单个属性值;
-
.z.
函数setProperties〔〕设置多个属性值;
函数read*MLFromFile〔〕读取*ml文件;
函数build*ML〔〕在*ml文档中存入数据;
:含有类PropertyValue,在*ml文件中存储"属性名-属性值〞对。
6.模块4〔search〕设计说明
6.1模块描述
包search主要完成天网和百度两项搜索功能。它含有以下6个类:NetResource,
URLParser,ConnectionTester,SearchResultRetriever,EmbeddedFileRetriever,Retriever。
6.2功能
主要完成天网和百度两项搜索功能。
6.3交互的模块
ui
6.4模块设计
该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下:
:含有类NetResource,NetResource是对被天网索引的网络文件资源的
抽象,其字段有:fileURL〔文件资源的URL,包括协议、主机字符串、路径、文件名〕、
fileDate〔天网将它编入索引的日期〕、fileSize〔文件的大小〕、responseTime〔以毫秒计
算的响应时间〕。
函数smallerThan(NetResourcenr)比较本条资源的响应时间是否比nr的响应时间小,因
为规定响应时间小的NetResource排在相应时间大的前面。
:含有类URLParser,URLParser是一个工具箱类,它提供了假设干静态
方法,对一个文件资源的URL进展解析。其实现的方法有:
函数getProtocol〔〕:给定一个URL,返回其协议名称;
函数getHostName〔〕:给定一个URL,返回主机字符串;
函数getPath〔〕:给定一个URL,返回文件在主机中的存放路径;
函数getFileName〔〕:给定一个URL,返回文件名;
函数getSuffi*〔〕:给定一个URL,返回该URL对应的文件资源的后缀名。
:含有类ConnectionTester,ConnectionTester是用来对网络文件资
源进展连接测试的类,它实现了Runnable接口。SearchResultRetriever类将
ConnectionTester类作为模板生成许多线程并发地对各文件资源进展连接并测试相应时
间,以提高程序效率。每个网络文件都是用NetResource类表示的。对于ftp文件,
ConnectionTester尝试以匿名方式连接。如果连接失败则丢弃该资源的URL,假设连接
成功则根据连接它响应时间将其插入已排序的NetResource列表中。对于文件,
ConnectionTester建立一个新的URLConnection,并调用connect方法尝试连接。如果连
接失败则丢弃该资源的URL,假设连接成功则根据连接它的响应时间将其插入已排序
的NetResource列表中。在构造ConnectionTester类的对象时必须指定一个由NetResource
类的对象组成的ArrayList,其中每个NetResource都需要测速。
该类的功能主要由函数run()实现。
:含有类SearchResultRetriever,SearchResultRetriever类根据给定
的关键字和文件类型向天网文件搜索引擎发送请求,对各返回结果页面的源文件进展分
析,将所有网络文件资源的URL进展分类〔利用天网的分类方法〕并保存在10个
ArrayList中。该类的函数如下:
-
.z.
函数test〔〕判断这个"下一页"对应的URL是否合法,该问题仅在用程序访问天网时需
要考虑
函数retrieve〔〕根据输入的关键字String[]tokens向天网发出请求,取得返回的URL集
合,ArrayList0保存图片-imagefile;ArrayList1保存音乐-soundfile;ArrayList2保存电
影-videofile;ArrayList3保存压缩-zipfile;ArrayList4保存文档-docfile;ArrayList5
保存程序-programfile;ArrayList6保存源码-srcfile;ArrayList7保存网页-webfile;
ArrayList8保存目录-dirfile;ArrayList9保存其他-file。对每一个ArrayList生成假设干
ConnectionTester线程进展响应时间测试,在这些线程返回后每一个ArrayList中的网络
文件资源都已经按照响应时间递增的顺序排列,而无法连接的文件资源URL都已被丢
弃。SearchResultRetriever类的使用方式是调用它的函数retrieve〔String[]tokens,inttype〕,
其中tokens为表示关键字的字符串数组;type说明用户需要搜索什么类型的文件。该方
法将上述10个ArrayList组成一个数组并返回。
:含有类EmbeddedFileRetriever,EmbeddedFileRetriever类的作
用是提取网页中文件,它实现了Runnable接口。Retriever类将EmbeddedFileRetriever
类作为模板生成假设干线程并发地提取不同网页的文件,以提高程序效率。
EmbeddedFileRetriever类维护了一个网页后缀名列表,由于程序只提取对应文件资源的
URL,我们需要分辨哪些后缀名是对应网页的从而及时将它们丢弃。在构造类
EmbeddedFileRetriever的对象时必须指明从哪个网页URL中提取文件URL,以及这些
URL保存在哪个ArrayList中。
函数hasFileSuffi*〔〕的功能是判断一个url是否链向一个文件;
函数listFiles(StringURLStr)将URLStr对应页面中的所有文件加到ArrayList中并返回。
:含有类Retriever,Retriever类的功能是根据给定的关键字向
百度搜索引擎发送请求,抽取前20个返回结果对应的网页URL。对每一个页面生成一
个EmbeddedFileRetriever对象提取其中对文件的,并添加到一个ArrayList中。每个页面
都处理完毕后返回这个ArrayList。在利用搜索文件时,应当提供尽可能多的信息,如输
入歌手和"mp3〞作为关键字。如果仅给定歌手名称则搜索效果不佳。这些功能都是由
函数retrieve〔〕实现的。
6.5类图
7.模块5〔preview〕设计说明
7.1模块描述
系统的预览局部,实现了不同类型资源的预览,并可以根据用户选择的格式显示资源的
容。
7.2功能
各种类型资源的预览,可以根据用户的选择格式显示资源的容,并可以存储用户选择的
预览容。
7.3交互的模块
ui
7.4模块设计
该模块中的主要文件,文件中包含的主要类及其功能和与其它包的交互如下:
-
.z.
:含有类PreviewWrapperPanel,这是系统的预览局部
最根本的类,它派生自Jpanel类,主要由3局部组成,其中PreviewPanel负
责显示预览,StatusBarPanel负责显示预览文件的加载进度,ControlButtonPanel
负责和预览相关的控制。在显示资源的预览容前应该先判断该资源类型是否
可以预览。
:含有类PreviewPanel,这是一个抽象类,负责资源容的预
览,有5个子类,这5个子类分别是
PicturePreviewPanel类:负责图像文件的预览;
PDFPreviewPanel类:负责PDF文件的预览;
T*tPreviewPanel类:负责文本文件的预览;
NoFileSelectedPreviewPanel类:负责当用户没有选项文件预览时显示提示信
息;
NoPreviewPanel类:负责当用户选择的文件不能预览时,显示提示信息。
PreviewPanel类实现的主要功能是构造预览窗口的实例,有两种构造方式:
以默认大小构造或以指定大小构造。
PreviewPanel类的函数preview()是一个虚函数,系统可以根据不同的子类调
用不同的预览函数。
:含有类PicturePreviewPanel,它的主要功能是图像文件
的预览,其中有4个部类,分别是:
ImagePanel类:这是显示图像的JPanel,主要功能是绘图;
PopupListener类:用户单击右键弹出菜单的类,右键功能是设置图像的显示
是"适合窗口〞还是"原始大小〞;
-
.z.
picPopupMenuListener类:负责对右键菜单中事件的响应。
PictureFromDiskLoader类:负责从磁盘上加载图像文件。
T*:含有类T*tPreviewPanel,它的主要功能是文本文件的预
览,其中有5个部类,分别是:
PopupListener类:用户单击右键弹出菜单的类,
t*tPopupMenuListener类:负责对右键菜单中事件的响应;
FileFromDiskLoader类:负责从磁盘加载文本文件;
FontChooseDialog类:字体选择对话框;
FontDialogEditorMediator类:负责对话框选择的字体和预览区域显示的字体
之间的更新。
:含有类PDFPreviewPanel,该类使用第三方的软件包
JPedal来实现pdf文件的预览。
:含有类ControlButtonPanel,该类的功能是根据用户的
选择保存预览资源,即把预览的文件存放到用户选定的目录。他的功能主要
由两个部类来实现,分别是:
saveAction类:实现了接口ActionListener,是对预览资源保存按钮的响应,
实现预览资源保存功能,把预览的文件存放到用户选定的目录。
E*ampleFileFilter类:继承自类FileFilter,实现用户选择文件保存目录的功能,
即弹出文件选择对话框。
7.5类图