产品手册优化平台的设计毕业设计说明书 精品推荐.docx
《产品手册优化平台的设计毕业设计说明书 精品推荐.docx》由会员分享,可在线阅读,更多相关《产品手册优化平台的设计毕业设计说明书 精品推荐.docx(80页珍藏版)》请在冰豆网上搜索。
![产品手册优化平台的设计毕业设计说明书 精品推荐.docx](https://file1.bdocx.com/fileroot1/2023-2/6/d8262f0a-28ab-4439-b2b3-9622422fc799/d8262f0a-28ab-4439-b2b3-9622422fc7991.gif)
产品手册优化平台的设计毕业设计说明书精品推荐
设计题目:
产品手册优化平台的设计
Productmanualoptimizationplatform
College:
ComputerandInformationScience
SpecialtyandGrade:
SoftwareEngineering,2008
Number:
081181063
Name:
GuangFengLin
Advisor:
ChangJiangChen
SubmittedTime:
May,2012
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
摘要
文档在工作中占有突出的地位,开发和维护文档有相当的大工作量。
高效率地管理和维护文档对于转让,变更,修正,扩充和使用文档,对于充分发挥产品的效益有着重要意义。
本设计提提供对文档的上传,管理,在线浏览,找茬管理等功能。
系统的功能为文档手册的管理和修正提供的便利。
关键词:
文档手册;在线浏览;文档升级;
Abstract
Documentworkhasaprominentpositionandquiteworkload.Highefficiency,highqualityproduction,distribution,managementandprotectdocumentfortransferdimension,change,fixed,expandedandusedocumentation,togivefullplaytothebenefitoftheproducthasimportantsignificance.Thedesignprovidesthedocumentputupload,management,theon-linebrowsing,findfaultmanagementetc.Function.Thefunctionofthesystemforthemanagementofthemanualandcorrectionofthedocumentprovidesconvenience.
Keywords:
Documentmanual;Theon-linebrowsing;Documentupgrade;
1引言
1.1目的和意义
软件文档[1](document)也称文件,通常指的是一些记录的数据和数据媒体,它具有固定不变的形式,可被人和计算机阅读.它和计算机程序共同构成了能完成特定功能的计算机软件(有人把源程序也当作文档的一部分).我们知道,硬件产品和产品资料在整个生产过程中都是有形可见的,软件生产则有很大不同,文档本身就是软件产品.没有文档的软件,不成其为软件,更谈不到软件产品.软件文档的编制(documentation)在软件开发工作中占有突出的地位和相当的工作量.高效率,高质量地开发,分发,管理和维护文档对于转让,变更,修正,扩充和使用文档,对于充分发挥软件产品的效益有着重要意义.然而,在实际工作中,文档在编制和使用中存在着许多问题,有待于解决.软件开发人员中较普遍地存在着对编制文档不感兴趣的现象.从用户方面看,他们又常常抱怨:
文档售价太高,文档不够完整,文档编写得不好,文档已经陈旧或是文档太多,难于使用。
本系统主要用来提高文档的质量和加强文档编写人员和使用人员的交流。
方便文档的优化。
本系统需求明确、清晰,在开发方面将涉及UI设计、MySQL数据库[2]、格式转换、上传[3]下载等,从需求及技术上,本设计课题的提出是有意义且可行的。
1.2主要设计内容
1)主页模块:
页面上展示所有管理员上传的文档,提供用户进行在线浏览和查找;
2)浏览模块:
用户指定查看谋篇文档,并且支持定位和文档结构图功能;
3)登录模块:
管理员登入模块;
4)找茬模块:
用户通过该模块可以提出对该篇文档的建议和文档错误点;
5)文档上传模块:
管理员通过该模块可以上传文档;
6)文档管理模块:
用管理员通过该模块进行文档的管理;
7)问题导出模块:
管理员通过该模块进行文档导出;
8)问题管理模块:
管理员通过该模块管理用户提出的意见;
1.3预期设计结果
通过MyEclipse开发工具,使用Ext作为前台的界面设计。
采用自己封装的MVC设计思想。
实现对数据库的封装。
使用Ext3.2设计出简洁易用的界面。
清晰明了的使用方法。
可以让用户很容易就上手使用该系统。
1.4拟解决的关键问题
1)页面兼容性[4]:
浏览器兼容性问题又被称为网页兼容性或网站兼容性问题,指网页在各种浏览器上的显示效果可能不一致而产生浏览器和网页间的兼容问题。
在网站的设计和制作中,做好浏览器兼容,才能够让网站在不同的浏览器下都正常显示。
而对于浏览器软件的开发和设计,浏览器对标准的更好兼容能够给用户更好的使用体验。
2)文档上传问题:
查找合适的工具实现文档的上传;
3)文档转换问题:
为了编写方便,文档编写人员编写的文档都是word和excel格式,但是用户希望可以通过html的格式展示出来。
4)抓取文档结构图:
为了更加方便的阅读,word文档中都有文档结构图。
同时页面上也有一个文档结构图,方便定位;
5)程序稳定性[5]:
程序稳定性是每个程序都需要考虑的问题,不能因为程序某一模块出错而造成整个程序的崩溃,因此需对程序异常进行捕获处理。
1.5使用术语
表1-1使用术语
专业术语
说明
jacob
它允许在java中调用com接口自动组件,实现文档转换
SDK
由该SDK开发公司提供的已封装好各项数据操作接口或方法的开发包
UI
人机交互界面
htmlparser
超高速解析html
html
用于描述网页文档的一种标记语言
jspSmartUpload
可免费使用的全功能的文件上传下载组件
文档
软件开发使用和维护中的必备资料
Poi
对MicrosoftOffice格式档案读和写的功能
2
开发环境
2.1硬件环境
表2-1硬件环境
硬件名称
说明
ThinkpadT410i
Intel(R)core(TM)2CPUT52001.6GHz
3.0G内存
提供程序开发的硬件支持
2.2软件环境
表2-2软件环境
软件名称
说明
MyEclipse6.5
提供程序开发的IDE环境
MySQL
数据库
NavicatforMySQL
MySQL数据库的图形化管理工具
IE,Firefox
测试浏览器
3
需求分析及系统设计
3.1系统需求获取及总体功能
系统需求获取可从以下几个方面入手:
1)用户查看文档;2)管理员上传和管理文档;3)用户提出bug。
图3-1系统总体功能图
3.2各项功能分析
3.2.1主页
图3-2用户浏览网页
表3-2用户浏览网页说明
模块名称
功能说明
主页模块[7]
1)用户访问网站后进入网页主界面。
2)加载主页面必要的信息。
3)界面上分页显示可以浏览的文档。
3.2.2浏览
图3-3用户浏览
表3-3用户浏览功能说明
模块名称
功能说明
用户浏览模块
1)用户查找到要浏览的文档后点击
2)跳转到新的页面单独加载该文档
3)并且提供对该文档的文档结构图
4)可以对该文档提出问题
3.2.3登入功能
图3-4登入功能示意图
表3-4登入功能说明
模块名称
功能说明
登入功能
1)管理员登入,进行文档管理
3.2.4提交问题功能
图3-5找茬功能示意图
表3-5找茬功能示说明
模块名称
功能说明
提交问题功能
1)用户点击找茬按钮后跳出找茬框
2)填写必要的找茬信息,后可以点击提交保存
3)提示保存成功还是失败
4)后太保存茬信息,相应处理
3.2.5文档上传功能
图3-6文档上传功能示意图
表3-6文档上传功能说明
模块名称
功能说明
文档上传功能
1)管理员选择要上传的文档,并且选择和填写必要的信息
2)点击上传
3)后天进行进行保存并解析
4)前台提示是否上传成功
3.2.6文档管理功能
图3-7问题管理功能示意图
表3-7文档管理功能说明
模块名称
功能说明
文档管理功能
1)点击进入文档管理
2)分页显示部分文档
3)管理员通过查询找到文档
4)可以对文档进行更新,删除等操作
3.2.7问题导出功能
图3-8问题导出功能示意图
表3-8问题导出表功能说明
模块名称
功能说明
问题导出
1)管理员通过查询条件,查找到想要到问题
2)点击导出,可以导出问题
3.2.8问题管理功能
图3-9问题管理功能示意图
表3-9问题管理功能说明
模块名称
功能说明
问题管理功能
1)可以对问题进行管理
2)对问题进行归类。
3)问题处理后可以对问题进行标记,标记为已处理等
4.数据库分析及设计
4.1数据数需求分析
文档管理中需要保存的数据量并不大,要保存每次上传的文档信息,用户信息,管理员信息,问题信息,系统配置信息。
4.2数据库设计
该系统采用的是MySQl数据库。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。
这样就增加了速度并提高了灵活性。
MySQL的SQL“结构化查询”。
SQL是用于访问数据库的最常用标准化语言。
MySQL软件采用了GPL。
由于其体积小、速度快、总体拥有成本低。
对数据库的设计表结构如下:
表4-1admin管理员表
字段名
字段说明
类型
长度
是否可以为空
id
id
long
18
(主键)否
name
用户名
varchar
36
否
password
密码
varchar
36
否
type
管理员类型
varchar
36
否
表4-2config_doc文档信息
字段名
字段说明
类型
长度
是否可以为空
id
Id
long
18
(主键)否
name
用户名
varchar
36
否
href
显示页面
varchar
36
否
count
点击次数
varchar
36
否
rate
找茬次数
varchar
36
否
Property
文档属性
varchart
36
否
type
文档类型
varchart
36
否
size
文档大小
varchart
36
否
down
下载路径
varchart
36
否
preview
文档简介
varchart
360
否
表4-3document文档具体信息
字段名
字段说明
类型
长度
是否可以为空
id
id
long
18
(主键)否
doc_id
文档目录id
varchar
10
否
text
叶子文本
varchar
100
否
href
锚机链接
varchar
100
否
isleaf
是否是叶子
varchart
100
否
parent_id
父亲id
varchart
10
否
表4-4user用户信息
字段名
字段说明
类型
长度
是否可以为空
id
id
long
18
(主键)否
name
用户名
varchar
30
否
email
电子邮箱
varchar
100
否
time
注册时间
time
100
否
count
找出的茬数
int
10
否
表4-5user用户信息
字段名
字段说明
类型
长度
是否可以为空
id
id
long
18
(主键)否
name
用户名
varchar
30
否
email
电子邮箱
varchar
100
否
time
注册时间
time
100
否
count
找出的茬数
int
10
否
表4-6systemdata系统信息
字段名
字段说明
类型
长度
是否可以为空
id
id
long
18
(主键)否
name
名称
varchar
30
否
value
名称对应值
varchar
100
否
type
类型
time
100
否
表4-7find_fault错误表
字段名
字段说明
类型
长度
是否可以为空
id
id
long
18
(主键)否
admin_id
处理管理员id
int
10
否
user_id
提出问题用户id
int
10
否
document_id
文档id
int
10
否
product_series
产品类型
varchart
100
否
error_type
问题类型
varchart
100
否
status
问题状态
varchart
100
否
time
提出时间
time
30
否
accept
是否接受
varchart
10
否
solve_time
解决时间
time
10
是
remarks
标记
varchart
100
是
5技术要点与难点
5.1设计思想及分层结构
本项目开发采用的是MVC的分层结构方法。
MVC模式是一种复合设计模式,一种在特定场合用于解决某种实际问题来得出的可以反复实践的解决方案。
巧合的是他也有三个事物组成,于是乎人们就有了一种想当然的对应关系:
展示层-View;业务逻辑层-Control;持久层-Model。
首先MVC中的三个事物之间并不存在明显的层次结构,没有明显的向下依赖关系,相反的,View和Model往往是比较独立的,而Control是连接两者的桥梁,他们更像是横向的切分。
这样一来就出现一个结果,MVC中每个块都是可以独立测试的,而三层结构中,上层模块的运行测试势必要提供下层代码或者提供相同接口的桩。
相对来说,MVC复杂得多,但是结构更清晰,耦合性更低。
。
图5-1代码结构分层
主要分层的介绍:
1.DB对链接数据库的封装,主要实现数据库的链接和释放。
2.filter过滤器,主要进行权限管理。
3.json主要是进行对象封装成json或json转换成对象
4.pojo表对应的对象,有助于封装数据库。
5.SystemData系统初始化数据的获取,封装了界面上选项的动态配置
6.Tool工具层,提供各种工具类。
可以进行快速开发,减少重复代码。
7.dao对象数据操作层
5.2word转换成html
把word转换成html,在转换的过程中很容易造成格式发生变化的问题。
我们看到word会看到word另存为中有转换成html的选项。
因此最好是可以通过代码调动系统的word转换html的实现的方法。
可以保证转换的结果是简洁的,不会有格式上的问题。
上网查找,发现Jacob可能符合该要求。
JACOBisaJAVA-COMBridgethatallowsyoutocallCOMAutomationcomponentsfromJava.ItusesJNItomakenativecallsintotheCOMandWin32libraries.TheJACOBprojectstartedin1999andisbeingactivelyusedbythousandsofdevelopersworldwide.Asanopen-sourceproject,ithasbenefittedfromthecombinedexperienceoftheseusers,manyofwhomhavemademodificationstothecodeandsubmittedthembackforinclusionintheproject.
上面官网介绍可知,jacob调用的就是本地安装的word,这样就要求服务器也要安装word,否则系统无法正常运行。
5.3抓取word的文档结构
在浏览的时候用户肯定希望有文档的结构图,可以方便定位。
可能想到的方案就两个:
1.直接解析word,获得文档结构图。
2.解析转换成html后的文件,在获得文档结构图。
在方案2中就需要对html进行解析的工具,网上提供的开源工具主要有一下几个,到时候可以根据需求进行筛选:
1.htmlparser:
HTMLParserisaJavalibraryusedtoparseHTMLineitheralinearornestedfashion.Primarilyusedfortransformationorextraction,itfeaturesfilters,visitors,customtagsandeasytouseJavaBeans.Itisafast,robustandwelltestedpackage.
2.html4j:
HTMLDoc isanencapsulationofanHTMLdocument,withasimplepermissiveparserwhichcanhandleevenmostofthebad,non-compliantHTMLdocumentsoftherealworld.
5.4数据库动态配置
为了方便对数据库的管理,把链接数据库的必要信息全部都写到配置文件中,后期对项目的发布有重大意义。
可以方便管理员修改数据库的密码。
packagecom.ruijie.DB;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.Properties;
publicclassDBMessage
{
privatestaticStringJDBC="com.mysql.jdbc.Driver";
privatestaticStringurl="jdbc:
mysql:
//localhost:
3306/documentoptimization";
privatestaticStringuser="root";
privatestaticStringpassword="root";
/**
*
privatestaticStringJDBC;
privatestaticStringurl;
privatestaticStringuser;
privatestaticStringpassword;
*/
static{
System.out.println("类初始化");
InputStreamin=DBMessage.class.getClassLoader().getResourceAsStream("db.properties");
Propertiespro=newProperties();
try{
pro.load(in);
JDBC=pro.getProperty("JDBC");
url=pro.getProperty("url");
user=pro.getProperty("user");
password=pro.getProperty("password");
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticStringgetMessage(Stringkey){
System.out.println("key="+key);
Stringvalue=null;
InputStreamin=DBMessage.class.getClassLoader().getResourceAsStream("db.properties");
Propertiespro=newProperties();
try{
pro.load(in);
value=pro.getProperty(key);
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returnvalue.trim();
}