软件开发文档Word格式文档下载.docx
《软件开发文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件开发文档Word格式文档下载.docx(43页珍藏版)》请在冰点文库上搜索。
![软件开发文档Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/4a524491-d6e9-4fd1-a791-b30071ad30a3/4a524491-d6e9-4fd1-a791-b30071ad30a31.gif)
JSP编程;
软件文档编写指南等。
二.任务概述
1.目标
本系统主要实现资源检索,当用户登陆任何一台服务器的时候,这个服务器除了要检索自己本地的资源以外,还可以作为一个客户端,自动地去连接其它服务器,发出检索请求,并将检索的结果进行合并和汇总,返回给用户。
用户只需要登陆任意一台服务器,就可以检索到该xml所描述的所有资源,并以友好方式呈现,另外提供查询花费的时间。
对于其中的特定格式资源,如动画、视频等能够直接播放。
对于word或PPT文档,能够预览其中的部分内容。
2.运行环境
硬件环境
CPU:
Pentium(R)42.60GHZ以上
物理内存:
512MB以上
硬盘:
可用空间100MB以上
软件环境
操作系统:
windowsxp
MyEclipse-6.0
TOMCAT:
tomcat-6.0.
网络环境
3.条件与限制
网络上存在大量的资源共享服务器。
三.数据描述
静态数据
在网络中,各个服务器的资源所拥有的资源相对固定,资源的信息保存在一个test.xml文档中,存放在服务器根目录下。
动态数据
对一个服务器进行特定字符串的检索会返回同样的结果。
因此,在本地服务器保存常用字符串检索结果的缓存会大大减轻网络流量的负担,提高检索效率,所以我们引入了缓存机制缓存数据。
数据采集
每次检索时,先把检索组合条件存放到包access中ResourceOperate类中变量privatestaticList<
String>
plist中,然后进行资源检索,并把检索的结果分别存放到结果缓存列表privatestaticList<
ResourceItemBean>
prslist中,和子结果缓存列表privatestatic
List<
reslist中。
前者为下次同条件新检索提供缓存数据,后者为下次在结果中检索提供缓存数据。
四.功能需求
功能描述
采用WEB服务,这是一种基于XML、SOAP、HTTP、UDDI、WSDL、等一系列标准实现的分布式计算技术。
五.性能需求
1.数据精确度
当资源有更新时能及时准确的将资源反馈给用户。
2.时间特性
响应时间短、更新处理时间及时、运行时间迅速。
3.适应性
与操作系统无关、程序设计语言无关、机器类型无关、运行环境无关的平台实现网络上应用的共享,并可用于复杂的系统集成。
六.其他需求
本系统具有可使用性强、安全保密性高、可维护性好、可移植能力强等特性。
概要设计说明书
(ArchitecturalDesignSpecification)
一.项目结构
1.项目背景
实现用户只需要登陆任意一台服务器,就可以检索到大量所需资源,尽管这些资源来自于不同的服务器,但检索的过程对用户来说是透明的,用户检索和获取这些资源就如同检索和获取所请求的服务器上的资源一样。
(1)项目开发计划;
(2)需求规格说明书;
(3)测试计划;
(4)用户操作手册;
(5)软件开发文档指南。
二.总体设计
1.需求概述
在网络环境下(也可以是一个局域网),用户登陆任何一台服务器的时候,这个服务器除了要检索自己本地的资源以外,还可以作为一个客户端,自动地去连接其它服务器,发出检索请求,并将检索的结果进行合并和汇总,返回给用户。
2.软件结构
如下流程图:
详细设计说明书
(ProceduralDesignSpecification)
一.项目包说明
com.career.websearch基包
com.career.websearch.action逻辑处理包
com.career.websearch.access数据操作包
com.career.websearch.form数据模型包
com.career.websearch.client客户端包
com.career.websearch.server服务器端包
com.career.websearch.xmlxml解析包
com.career.websearch.util公共类包
二.程序描述(逐个模块给出以下的说明:
)
1.路径的获得及处理代码如下
publicclassConvertUrl{
//将url转化为服务器的绝对路径
publicStringconvert(Stringpath,Stringurl){
Propertiesprop=newProperties(System.getProperties());
Stringsep=prop.getProperty("
file.separator"
);
inti=path.lastIndexOf(sep);
StringserverPath=path.substring(0,i);
i=url.lastIndexOf("
/"
StringfileName=url.substring(i+1);
StringfilePath=serverPath+sep+"
resources"
+sep+fileName;
returnfilePath;
}
//对绝结路径进行中文处理
publicStringchinaesePath(Stringpath,Stringurl){
try{
fileName=.URLEncoder.encode(fileName,"
UTF-8"
}catch(Exceptione){
e.printStackTrace();
}
//对url中文进行处理
publicStringchineseUrl(Strings){
inti=s.lastIndexOf("
Stringformer=s.substring(0,i+1);
Stringnext=null;
next=.URLEncoder.encode(s.substring(i+1),"
Stringpath=newString(former+next);
returnpath;
//获得文件名
publicStringgetName(Stringurl){
inti=url.lastIndexOf("
returnfileName;
2.用Poi技术获得文件信息并实现对各类信息的转换和提取等操作
publicclassOfficePoi{
Filefile;
FileInputStreamfis;
//构造函数创建流文件
publicOfficePoi(Stringstr){
file=newFile(str);
fis=newFileInputStream(file);
}catch(IOExceptionex){
ex.printStackTrace();
publicStringgetName(){
returnfile.getName();
//获得文件大小
publiclonggetBytes(){
returnfile.length()/1024;
//修改时间
publicStringgetModified(){
SimpleDateFormatsdf=newSimpleDateFormat("
yyyy.MM.dd"
Datedate=newDate(file.lastModified());
returnsdf.format(date);
//poi操作word文档
publicStringwordPoi(){
StringBuffercontent=newStringBuffer("
&
nbsp;
"
WordExtractorwordExtractor=null;
StringwordStr=null;
wordExtractor=newWordExtractor(fis);
String[]str=wordExtractor.getParagraphText();
for(inti=0;
i<
str.length;
i++){
content.append(str[i]+"
<
br>
}
wordStr=content.toString();
wordStr=wordStr.replace("
?
"
null"
inti=wordStr.length();
if(i>
500)
wordStr=wordStr.substring(0,500);
}catch(NullPointerExceptionne){
wordStr="
资源文件损坏!
!
;
if(wordStr==null){
wordStr="
该文件为空!
returnwordStr;
//poi操作ppt文档
publicStringpptPoi(){
SlideShowss=null;
StringppStr=null;
ss=newSlideShow(newHSLFSlideShow(fis));
Slide[]slides=ss.getSlides();
slides.length;
TextRun[]tr=slides[i].getTextRuns();
for(intj=0;
j<
tr.length;
j++){
content.append(tr[j].getText());
}
content.append(slides[i].getTitle());
ppStr=content.toString();
ppStr=ppStr.replace("
"
inti=ppStr.length();
ppStr=ppStr.substring(0,500);
}catch(NullPointerExceptionne){
ppStr="
if(ppStr==null){
returnppStr;
}
3.ResourceKind.java类实现判断资源的类型
资源有文本、视频、音频、ppt文档等类型
publicclassResourceKind{
publicintgetKind(Stringstr){
Strings=str.toLowerCase().trim();
if(s.equals("
avi"
)||s.equals("
rm"
wav"
asf"
)){
return1;
//判断为视频
}elseif(s.equals("
mp3"
wma"
return2;
//判断为音频
jpg"
jpeg"
gif"
bmp"
return3;
//判断为图片
doc"
return4;
//判断为word文档
rar"
zip"
return5;
//判断为压缩文档
swf"
return6;
//判断为flash
pdf"
return7;
//判断为pdf文档
ppt"
return8;
//判断为ppt文档
}else{
return9;
//其它类型
4.ResourOperate.java类实现对资源的整合缓存及判断
publicclassResourceOperate{
publicstaticintflag=0;
publicstaticintlistSize;
privatestaticList<
plist=newArrayList<
();
prslist=newArrayList<
reslist=newArrayList<
//得到一页资源即把第curpage页的资源放到List表里。
Res中有单页记录数
publicstaticList<
getOnePage(intcurpage,List<
condList){
List<
list=newArrayList<
if(flag==0){
Stringkey=condList.get(0);
Stringkind=condList.get
(1);
Stringselect=condList.get
(2);
if((!
plist.isEmpty())&
(plist.get(0).equals(key))//判定缓存中是否有相应数据
&
(plist.get
(1).equals(kind))
(plist.get
(1).equals(select))){
list=prslist;
}else{
if(!
plist.isEmpty())
plist.clear();
//对缓存进行初始化
plist.add(key);
plist.add(kind);
plist.add(select);
if("
1"
.equals(condList.get
(2)))
list=ParseResource.callParse(condList);
//符合条件的列表
else{
list=SearchInterClient.getRes(condList);
//符合条件的列表
List<
localList=ParseResource.callParse(condList);
if(localList.size()!
=0)
for(inti=0;
i<
localList.size();
i++){
list.add(localList.get(i));
}
prslist=list;
reslist=list;
list=getFromResults(reslist,condList);
reslist=list;
flag=0;
listSize=list.size();
Collections.sort(list,newSortByDate());
intcount=list.size();
if(count<
=Res.page_record)
returnlist;
else{
intpagecount=count/Res.page_record;
if(curpage<
=pagecount){
intfromIndex=(curpage-1)*Res.page_record;
inttoIndex=fromIndex+Res.page_record;
returnlist.subList(fromIndex,toIndex);
}elseif(curpage==pagecount+1){
inttoIndex=count;
}else{
returnlist;
5.ResourseItemAction.java类实现检索的各项准备包括页面的设置;
资源实现的类型;
检索开始及结束时间;
关键字的设置;
预览的形式;
手动设置等
publicclassResourceItemActionextendsAction{
publicActionForwardexecute(
ActionMappingmapping,
ActionFormform,
HttpServletRequestrequest,
HttpServletResponseresponse){
ActionForwardforward=newActionForward();
Stringtype=request.getParameter("
type"
if(type.equals("
query"
DatebeginTime=newDate();
request.setAttribute("
beginTime"
beginTime);
forward=this.query(mapping,form,request);
}elseif(type.equals("
split"
if(request.getAttribute("
)==null){
DatebeginTime=newDate();
request.setAttribute("
forward=this.split(mapping,form,request);
DateendTime=newDate();
endTime"
endTim