软件工程系统开发目标与设计.docx
- 文档编号:14056195
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:45
- 大小:1.30MB
软件工程系统开发目标与设计.docx
《软件工程系统开发目标与设计.docx》由会员分享,可在线阅读,更多相关《软件工程系统开发目标与设计.docx(45页珍藏版)》请在冰点文库上搜索。
软件工程系统开发目标与设计
软件工程系统开发目标与设计
第1章引言
1.1系统开发的背景
信息在现代经济生活中的作用越来越大,对于个人而言,缺乏信息将导致很多机会的丧失。
与此同时,现在的大学生缺乏社会实践锻炼,自我竞争的意识在逐渐降低,而且社会上多数在校大学生沉迷于网络游戏,缺乏主动学习、参与竞争的意识。
当下社会,竞争与挑战是每一个人都将面对且必须面对的,比赛,是可以更好地证明自己的一个重要手段。
然而现今缺乏一个整合了所有比赛信息方便人们寻找的平台,学生获得信息的途径也总是少得可怜。
有一个属于自己的比赛信息集成系统成为亟待解决的问题。
缺少一个可以每天登陆系统,了解到当下最新的比赛资讯,能够分门别类的,整整有序的,及时全面的网站平台。
鉴于此想法,本次项目选择开发比赛信息集成系统。
希望通过比赛信息集成系统这个平台让大学生真正得到锻炼的机会,让他们认识到自己的真正价值,发现自己除了游戏之余还有更大的发展空间。
目前,国内同类的赛事信息类系统有“赛才网”。
赛才网偏社区、家园、群组,提供的范围较大且包含很多新闻信息;与赛事信息集成系统地不同在于,比赛信息集成系统要做的是以赛事信息提供为主,主打“方便、即时、全面”的概念,对赛事信息要求较高,讨论交流区为辅。
两者侧重点不一。
针对于此,此次项目致力打造一个服务于在校大学生的轻松、便捷、互动地参与各类竞赛活动的竞赛门户网站,致力于系统地收集和整理各个领域的各类赛事,为参赛者提供最优质的信息服务,使得来自全国各地的参赛选手可以相互学习分享心得,通过各种有意义的比赛不断提升自己。
希望通过此次开发的平台项目,能为广大学生及赛事爱好者提供全面、即时的赛事信息,在分享赛事资讯的同时提供一个交流、讨论的平台。
1.2系统开发的目标、意义
开发目标:
本系统主要为全力打造一个服务于在校学生和在职人员等轻松、便捷、互动地参与各类竞赛活动的竞赛门户网站,为参赛者提供最优质的信息服务,来自全国各地的参赛选手可以相互学习分享心得,通过各种有意义的比赛不断提升自己。
系统中主要的开发包括赛事信息网站前台以及赛事网站后台两大部分。
其中前台中,本组开发主要集中于网站的开发,方便用户浏览下载信息;赛事论坛开发,用户可以分享赛事经验,共享赛事资源;用户中心开发,方便用户获得更多的赛事资源的权利;而后台,主要着重爬虫系统开发,半自动傻瓜式的获取全网更多赛事资源,整合成为本系统的资讯,赛事资源丰富,更受用户青睐;用户管理、论坛管理等等,系统地、有条理地管理前台信息,让系统健全运行。
通过前后台的整合,统一,协调地完成此次系统开发出分门别类的、整整有序的、及时全面的赛事网站平台
系统开发能为在校的大学生提供最为全面、优质的赛事信息,为提高中国大学生的身心素质做出贡献。
主要表现在
(1)有利于大学生正确认识自己,对自身成长产生紧迫感。
通过广泛的社会比赛,能让学生看到自己和市场需求之间的差距,看到自身知识和能力上存在的不足,比较客观地去重新认识、评价自我,逐渐摆正个人与社会、个人与人民群众的位置。
(2)有利于大学生对理论知识的转化和拓展,增强运用知识解决实际问题的能力。
大学生以课堂学习为主要接受方式,这对大学生来说非常重要,但这些理论知识并不代表大学生的实际技能,往往难以直接运用于现实生活之中。
比赛的方式使大学生接近社会,获得大量的感性认识和许多有价值的新知识,同时使他们能够把自己所学的理论知识与接触的实际现象进行对照、比较,把抽象的理论知识逐渐转化为认识和解决实际问题的能力。
(3)有利于发展大学生的组织协调能力和创新意识。
各种种类繁多的比赛没有课堂教学太多的束缚和校园生活的限制,学生们的积极性被充分调动起来,兴趣高涨,思维也空前的活跃起来,往往会产生一些创造性火花,在实践中勇于开拓、敢于创新。
(4)有利于提高大学生个人素养,完善个性品质。
在比赛中的困难和危险面前,要求大学生们具有一定的牺牲精神和坚强的品质。
赛事活动多了,并且能深入下去,大学生在积极参与的过程中,就会逐渐养成坚韧、顽强的优良品性,养成务实的学习态度和生活作风,不断提高自己、完善自己。
1.3本文的组织
正文包括四章:
引言、系统相关技术、比赛信息集成系统的分析与设计、系统模块的设计与实现。
第1章为绪论,分为3节,主要介绍系统的开发背景、系统的开发目标及研究内容及本文的组织。
第2章为系统相关技术,分为2节,主要介绍系统相关技术:
爬虫技术功能、页面解析的功能、以及信息筛选及录入的功能等的前提下进行介绍的,运用了heritrix、htmlparser、javaio、java技术等实现。
第3章为比赛信息集成系统的分析与设计,分4节,包括系统模块设计,功能需求,数据需求,数据库设计。
第4章为个人模块设计与实现,分4节,包括比赛信息系统的爬虫模块、页面解析文本信息入库模块,以及信息筛选上传、信息查看删除的模块的设计。
第2章相关技术简介
2.1系统开发平台及开发工具
硬件环境:
个人PC、电网、电信网络等。
软件环境:
MyEclipse8.0、Apache、Tomcat5.5。
相关技术:
Html+div+css+javascript;爬虫heritrix;页面解析技术:
htmlparser;数据库sql;struts2模式。
相关工具:
MicrosoftSQLServer2005、Macromediadreamweaver8、MyEclipse8.0。
2.2工具和编程语言
在比赛信息集成系统中,运用了java+sql+heritrix+htmlparser等技术。
其中后台主要运用了heritrix爬虫技术。
首先,Heritrix[1]是一个纯由Java开发的、开源的Web网络爬虫,用户可以使用它从网络上抓取想要的资源。
它来自于www.archive.org。
Heritrix最出色之处在于它的可扩展性,开发者可以扩展它的各个组件,来实现个性的抓取逻辑,比赛信息系统利用它实现更多赛事信息的全网爬取,取得更多的大学生赛事资源。
其次,Java[2][3]语言是一种功能强大的编程语言,负责heritrix应用的业务逻辑的实现和对应用程序进行控制。
再次,Htmlparser是一个纯的java写的html(标准通用标记语言下的一个应用)解析的库,它不依赖于其它的java库文件,主要用于改造或提取html。
它能超高速解析html,而且不会出错。
就其他解析工具来说,htmlparser就是目前最好的html解析和分析的工具。
因此,从heritrix爬取下来的.Html页面通过htmlparser遍历解析成.Txt文件,为赛事信息的筛选以及录入做好充足的准备。
因为htmlparser需要与数据库sql连接进行页面的解析存储,因此本系统在这里运用了JAVA中的资源文件(properties),通过加载app.properties文件实现遍历.Html文件解析并保存到指定的文件中。
再次,本系统还引入了java.io包完成最后解析成功的.Txt文件的读写工作。
JAVAIO[4]流可分为四大抽象类:
字符流:
ReaderWriter,字节流:
InputStream(读数据)OutputStream(写数据)本系统中主要运用的是字节流与读写数据InputStream和OutputStream。
最后,而存入数据库则使用较为普遍的JDBC[5]技术,JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
下面就heritrix、htmlparser、java及javaio、JDBC进行介绍
2.2.1heritrix技术
heritrix[6]技术Heritrix是一个专门为互联网上的网页进行存档而开发的网页检索器。
它使用Java编写并且完全开源。
它主要的用户界面可以通过一个web流量器来访问并通过它来控制检索器的行为,另外,它还有一个命令行工具来供用户选择调用。
Heritrix是由互联网档案馆和北欧国家图书馆联合规范化编写于2003年初。
第一次正式发布是在2004年1月,并不断的被互联网档案馆和其他感兴趣的第三方改进。
到现在已经成为一个成熟的开源爬虫,并被广泛使用。
它的工作流程是一个循环,具体流程是:
1在预定的URI中选择一个。
2从选择的URI的网址下载远程文件3分析,归档下载到的内容4从分析到的内容里面选择感兴趣的URI。
加入预定队列。
5标记已经处理过的URI。
Heritrix的使用首先应该知道它的配置与使用,在这里,本系统用的是heritrix的1.14.4的版本,安装heritrix时值得注意的heritrix.properties文件。
在heritrix.properties中配置了大量与Heritrix运行息息相关的参数,这些参数主要是配置了Heritrix运行时的一些默认工具类、WebUI启动参数,以及Heritrix的日志格式等。
当第一次运行Heritrix时,只需要修改该文件,为其加入WebUI的登录名和密码。
接着可以实行简单的任务抓取工作,当然,简单的安装于抓取工作不能满足本系统的需求,因此需要更多的扩展与组件的开发,首先需要扩FrontierScheduler,将需要的所有链接的处理。
将已经爬过的URI做标记,并将未处理的链接放入待处理队列。
其次扩展MirrorWriterProcessor,有的时候我们需要在网页下载之前将网页进行分析并提取有效内容存储起来,这时我们可以扩展MirrorWriterProcessor这个模块。
利用一个开源的包htmlparser分析网页结构,并将结果存储起来。
htmlparser可以在文件中获得。
再将下载的包添加到项目的引用列表中,从而实现下个步骤的开发。
2.2.2Htmlparser技术
HTMLParser主要是常用来解析html页面并获取自己需要的数据,经常是和网络爬虫(如:
Heritrix)一同使用,它的基本功能是:
1、信息提取
1)文本信息抽取,例如对HTML进行有效信息搜索;
2)链接提取,用于自动给页面的链接文本加上链接的标签;
3)资源提取,例如对一些图片、声音的资源的处理;
4)链接检查,用于检查HTML中的链接是否有效;
5)页面内容的监控。
2、信息转换
1)链接重写,用于修改页面中的所有超链接;
2)网页内容拷贝,用于将网页内容保存到本地;
3)内容检验,可以用来过滤网页上一些令人不愉快的字词;
4)HTML信息清洗,把本来乱七八糟的HTML信息格式化;
5)转成XML格式数据。
本系统主要是通过htmlparser解析heritrix爬取下来的许多html文件,通过相关正则表达式知识,遍历解析html信息,再把本来乱七八糟的html信息格式化成txt文本,方便javaio流进行读写操作。
2.2.3java语言
java语言Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
java[7]编程语言的风格十分接近C语言、C++语言。
Java是一个纯粹的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。
Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
Java1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。
从而实现了“一次编译、到处执行”的跨平台特性。
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的性能。
编辑Java源代码可以使用任何无格式的纯文本编辑器,在Windows操作系统上可以使用微软记事本(Notepad)、EditPlus等程序,在Linux平台上可使用vi工具等。
Java是本系统前台及后台以及爬虫、页面解析技术的基础语言,通过运用java编写的程序实现前台的功能如:
登入,注册,论坛帖子发布,会员资源管理等等,而后台主要实现后台会员管理,论坛管理,信息录入等等功能。
2.2.4javaio流技术
流[8][9]是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。
即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
本系统主要是输入流InputStreamIO及输出流outputStreamIO实现对txt文本信息的读取及输入到数据库中。
1.输入字节流InputStream
1)InputStream是所有的输入字节流的父类,它是一个抽象类。
2)ByteArrayInputStrea、StringBufferInputStream、FileInputStream是三种基本的介质流,它们分别从Byte数组、StringBuffer、和本地文件中读取数据。
PipedInputStream是从与其它线程共用的管道中读取数据,与Piped相关的知识后续单独介绍。
3)ObjectInputStream和所有FilterInputStream的子类都是装饰流(装饰器模式的主角)。
2.输出字节流OutputStream
1)OutputStream是所有的输出字节流的父类,它是一个抽象类。
2)ByteArrayOutputStream、FileOutputStream是两种基本的介质流,它们分别向Byte数组、和本地文件中写入数据。
PipedOutputStream是向与其它线程共用的管道中写入数据。
3)ObjectOutputStream和所有FilterOutputStream的子类都是装饰流。
本系统利用输入字节流InputStream和输出字节流OutputStream通过file类实现对需要读取的文件夹进行遍历的操作,File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。
File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。
2.2.5JDBC技术
JDBC[10](JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,简单说,JDBC可做三件事:
与数据库建立连接、发送操作数据库的语句并处理结果。
在使用jdbc[11]技术是,系统需要引用sqljdbc4.jar包,通过建立java平台与sql数据库的数据连接,从而使得赛事信息的查看等的展现。
第3章系统分析与设计
3.1功能需求
3.1.1系统数据流图
系统流程图(SystemFlowchart)是描绘系统物理模型的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。
在本系统中,主要分为前台和后台两大模块,从对象上区分也可以分为会员功能,管理员功能以及游客功能。
对于一般的未注册的游客,只能享受赛事信息的浏览,赛事信息的检索以及赛事网站的分享功能。
对于已经注册了的会员,除了享受信息浏览,检索等一般游客的功能,同时,享有个人空间,个人空间中实现已注册个人信息的修改,论坛发帖,赛事信息邮箱的订阅,以及相关赛事的上传与下载的权利。
对于管理员,主要是后台的论坛管理,包括论坛帖子的添删改查,用户管理及用户信息的添删改查,以及赛事信息的管理,同样是赛事的添删改查。
最后是会员或是管理员的登入后,依据正确的用户名和密码实现完一系列操作即可安全退出登入,反之如用户名、密码出错即登入败。
在后台管理员的赛事信息管理中,还包括了爬虫管理的功能,其中需要管理员开启服务器中的heritrix程序,根据需要爬取的网站,可以一次性或是多次输入需要爬取的网站,再通过后台的htmlparser遍历解析出文本文件和.jpg、
.gif等图片,再通过传入数据库javaio流呈现在后台的信息管理当中,最后管理员可将已经传入数据库的赛事信息进行分类的方式上传至前台网站。
值得一说的是,赛事过期后管理员可根据赛事信息上传的时间分批进行赛事信息的删除,或是根据赛事上传的时间,越是晚更新越排前台网站的前端。
系统数据流图如图3.1和3.2所示:
图3.1系统数据流图
图3.2系统数据流图
3.1.2系统状态图
前台游客需要注册成为用户,可以享受更多功能。
游客点击注册,正确填写信息后核对成功注册完成,反之注册失败。
注册成功则可进行前台登入,成功后可以享受邮箱订阅、查看信息、发帖、论坛删帖、赛事查询、资料下载等功能。
用户在处理的这些个人功能时,需要结合数据库查询,如资料的下载上传或是赛事的上传需要通过数据库匹配,以实现用户积分的增减,为下次的操作提供基础。
而用户赛事的上传也需要后台管理员的审核,通过审核,则可展现在网站前台页面上。
前台系统状态图如图3.3所示:
图3.3前台系统状态图
后台管理员需要登入后台,通过登入成功可以享有后台的用户管理包括用户添加以及删除、论坛帖子管理包括帖子的添加与删除、信息录入、爬虫管理即更新爬虫信息等。
管理员执行任何一种管理功能时,会出现两种不同状态:
操作成功和操作失败。
如在操作发帖功能时,当操作符合后台要求时,操作成功,后台正常发布帖子;反之,失败,后台重新返回发布帖子页面。
后台系统状态图如图3.4所示:
3.4后台系统状态图
3.2功能介绍
前台操作模块主要是会员操作功能
(1)登入模块,通过注册登入,享有个人空间,会员资料的修改、添加;
(2)个人中心模块,赛事资料上传,赛事信息的上传(需后台审核),论坛帖子的发布、修改与删除,邮箱订阅,获取最新赛事信息;
(3)信息模块,主要是浏览赛事信息,包括赛事信息、资料信息、赛事达人信息以及论坛帖子的浏览与回复;
后台操作模块包括管理员能够实现的功能(对数据库的操作)
(1)用户管理:
实现对用户的增加,删除,修改,查看。
(2)比赛信息管理:
实现对信息的更新,发布,删除。
(3)论坛管理:
实现对帖子的删除,管理。
(4)邮箱管理:
对已进行邮箱订阅的用户的邮箱进行统一管理,以便信息统一和及时发送。
(5)上传下载的管理:
对用户所进行的上传下载进行管理,不合法的内容进行屏蔽或删除。
(6)爬虫管理:
对从网上爬来的的信息进行修改、删除和分类,对于一些错误的信息进行修改,对于一些过期的、多余的和杂乱的信息进行删除,对于关于比赛的信息进行统一分类,把错误率降到最低,便于用户查阅。
系统功能模块图如图3.6所示:
图3.6功能模块图
3.3概念结构
3.3.1概念结构设计
在本系统中,实体主要包括管理员、会员和游客三大种类,联系框包括操作、管理等,实现对属性的操作,属性包括账号、密码、上传下载等。
实线则是表示属性与实体之间的联系。
前台中,游客可享受信息浏览查看与注册等功能,而会员在此基础上可以享受更多功能,因此会员都存在一对多的关系,包括通过操作实现上传、下载、查看、更新等多个属性。
后台中,管理员通过操作属性发布赛事信息、更新赛事信息以及删除赛事信息。
同时可以直接管理用户信息,包括添加用户,删除用户等等。
因此可知一个管理员也可以存在一对多的关系,管理员可以包扩赛事、帖子、用户等等的属性。
而相对的,一个属性只能联系一个实体实现其数据的联系。
E-R图如图中3.5所示:
图3.5ER图
3.3.2逻辑结构设计
由上述概念结构ER图可知,关于用户所对应的包括了用户信息、帖子、赛事信息等等属性。
本节则说明相关属性的数据联系所对应的表格。
都是通过后台进行管理的。
后台的数据表包括了用户信息表,信息录入信息表包括(科技创新)内容信息表、(影视歌舞)内容信息表、(艺术爱好)内容信息表、(手机网络)内容信息表、(体育竞技)内容信息表、(自我展示)内容信息表、发布赛事信息表、信息筛选内容信息表。
信息录入表中的几大赛事信息表指定了信息编号、信息内容以及、信息标题等名称。
信息编号是设置为自动增长主键,用的是int型,而信息内容则是设置为Max最大的长度实现内容的完整输入。
信息筛选表除了信息编号设置成主键,内容最大长度外,还存放了网页地址名称,方便存入爬取下来的网页地址,图片地址,即可以重复使用的图片地址资料,以及更新时间,方便后台及时更新赛事信息,时间是数据库在存入资料时自动生成的,类别则是方便爬取不同网站类别而设定的,类别一般是同种网站使用同一种类别。
最后是发布赛事的信息表,方便前台用户的发布,因此多了发布的用户名。
此项功能是为了方便后台管理员的查看与审。
后台数据表如表3.1-3.8所示:
表3.1(科技创新)内容信息表
中文字段名
英文字段名
字段类型
长度
主键
字段值约束
信息编号
number
int
p
Notnull
信息标题
tag
varchar
50
Notnull
信息内容
recontent
varchar
max
Notnull
表3.2(影视歌舞)内容信息表
中文字段名
英文字段名
字段类型
长度
主键
字段值约束
信息编号
number
int
p
Notnull
信息标题
tag
varchar
50
Notnull
信息内容
recontent
varchar
max
Notnull
表3.3(艺术爱好)内容信息表
中文字段名
英文字段名
字段类型
长度
主键
字段值约束
信息编号
number
int
p
Notnull
信息标题
tag
varchar
50
Notnull
信息内容
recontent
varchar
max
Notnull
表3.4(手机网络)内容信息表
中文字段名
英文字段名
字段类型
长度
主键
字段值约束
信息编号
number
int
p
Notnull
信息标题
tag
varchar
50
Notnull
信息内容
recontent
varchar
max
Notnull
表3.5(体育竞技)内容信息表
中文字段名
英文字段名
字段类型
长度
主键
字段值约束
信息编号
number
int
p
Notnull
信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 系统 开发 目标 设计