课程考核.docx
《课程考核.docx》由会员分享,可在线阅读,更多相关《课程考核.docx(33页珍藏版)》请在冰豆网上搜索。
课程考核
DONGFANGCOLLEGE,FUJIANAGRICULTUREANDFORESTRYUNIVERSITY
课程考核说明书
课程名称:
网络软件开发
系别:
计算机系
年级专业:
学号:
姓 名:
成绩:
任课教师:
2015
年
1
月
10
日
目录
1.开发目的与实现原理……………………………………………………………1
2.开发步骤…………………………………………………………………………2
2.1系统需求分析…………………………………………………………………2
2.1.1用户需求分析………………………………………………………………2
2.2数据分析………………………………………………………………………2
2.3系统流程……………………………………………………………………3
2.4功能模块划分…………………………………………………………………5
2.5功能模块设计…………………………………………………………………5
2.5.1博客注册登录管理模块……………………………………………………6
2.5.2博客页面显示模块…………………………………………………………6
2.5.3博客个人管理维护模块…………………………………………………6
2.6数据库分析……………………………………………………………………7
2.6.1数据库设计E-R图…………………………………………………………7
2.7系统数据表设计………………………………………………………………9
2.8数据连接………………………………………………………………………11
3编写代码………………………………………………………………………11
3.1登录模块………………………………………………………………………11
3.2日志管理模块………………………………………………………………12
3.3撰写日志模块…………………………………………………………………12
3.4查询日志模块…………………………………………………………………13
3.5日志编辑模块…………………………………………………………………13
3.6日志评论模…………………………………………………………………14
3.7相册管理模块…………………………………………………………………15
3.8相册上传模块…………………………………………………………………15
3.9好友管理模块…………………………………………………………………16
3.10个人管理模块…………………………………………………………………17
4.代码运行结果……………………………………………………………………18
4.1登录模块………………………………………………………………………18
4.2日志管理模块…………………………………………………………………19
4.3撰写日志模块………………………………………………………………19
4.4查询日志模块…………………………………………………………………20
4.5日志编辑模块…………………………………………………………………20
4.6日志评论模块…………………………………………………………………21
4.7相册管理模块…………………………………………………………………21
4.8相册上传模块…………………………………………………………………22
4.9好友管理模块…………………………………………………………………22
4.10个人管理模块………………………………………………………………23
5.开发小结………………………………………………………………………23
1.开发目的与实现原理
随着Blog人数的增加,Blog作为一种新的生活方式、新的工作方式和新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构。
它使交流和沟通更有明确的选择和方向性;单一的思想和群体的智慧结合变得更加有效;个人出版变成人人都可以实现的梦想。
Blog正在影响和改变着我们的生活。
本系统采用MVC模式设计实现了一个简单的博客系统。
MVC模式极大地提高了系统的灵活性、复用性、开发效率、适应性和可维护性,充分发挥了JSP、Servlet等J2EE组件的特点。
从而,使更多的人们通过文字、图片、声音、视频、无线等,尽情展示自我、分享感受、参与交流,美好你我生活。
Showyou,shareme,人人都可以博客,人人都需要博客。
使用J2EE技术构建,采用MVC设计模式,降低了各模块的耦合度,使后期的维护和修改更加方便。
定义JavaBean来表示数据,使用Servlet来处理请求。
填写Bean,将Bean存储到请求,会话或者ServletContext中,再将请求转发给JSP从Bean中读取数据并显示。
由于各层独立工作,内部事务的处理过程对用户是不可见的,所以提高了系统的安全性。
MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征。
这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易。
MVC结构提供了一种按功能对各种对象进行分割的方法,这样就可以将各对象间的耦合程度减至最小。
在MVC结构中,模型(Model)代表应用程序的数据和用于控制访问和修改这些数据的业务规则。
通常模型被用来作为对现实世界中一个处理过程的软件近似,当定义一个模型时,可以采用一般的简单的建模技术。
当模型发生改变时,它会通知视图(View),并且为视图提供查询模型相关状态的能力。
同时,它也为控制器(Controller)提供访问封装在模型内部的应用程序功能的能力。
一个视图(View)用来组织模型的内容。
它从模型那里获得数据并指定这些数据如何表现。
当模型变化时,视图负责维持数据表现的一致性,同时将用户要求告知控制器(Controller)。
控制器(Controller)定义了应用程序的行为;它负责对来自视图的用户请求进行解释,并把这些请求映射成相应的行为,这些行为由模型负责实现。
2.开发步骤
2.1系统需求分析
2.1.1用户需求分析
用例图用来描述系统与参与者之间的相互作用,与用例图相关的几个概念:
a)角色:
代表了某一事件发生的参与者,用一个小人表示。
b)用例:
代表系统可以实现的功能,通常一个用例代表一组功能,实质上
规定了系统实现功能的范围。
c)用例图:
当角色和用例发生某种关系时,就可以用一个图将它们关联起来,这就是用例图。
博客信息管理系统允许用户有三种身份:
博客访问者、博客管理员及系统管理员。
博客系统参与者中每种身份操作起来都很方便、快捷。
博客访问者无需登陆就可以浏览信息、发表评论或留言;博客管理员注册后再登陆,就可以发布日志、管理个人主页;而博客管理员的基本信息都由系统管理员对其统一管理。
博客信息管理系统用例图如图2.1所示。
图2.1博客信息管理系统用例图
2.2数据分析
系统的用户主要是博客访问者和博客管理员,下面以博客前台展示系统中的用户查询日志为例进行说明。
该过程的数据流程图如图2.2所示。
图2.2用户查询日志的数据流程图
用户查询日志的数据流程:
首先,用户点击需要查找的日志类型,然后提交数据,服务器接收到关键字后,根据关键字对日志标题进行查询,处理后将结果以日志标题列表链接的形式显示给该用户,用户点击相应的链接就可以浏览日细容。
2.3系统流程
根据博客信息管理系统的特点,将其分为两大模块:
前台用户浏览模块和后台用户管理模块。
前台用户浏览模块主要用于用户浏览日志信息;后台用户管理模块主要用于博客管理员对个人博客网站的管理,如日志管理、留言管理及评论管理等。
博客系统平台的前台用户浏览模块流程图如图2.3所示。
前台用户浏览模块主要用于用户浏览日志信息,用户浏览日志有二种浏览方式可以选择:
一是直接点击日志标题链接进入日志显示页面浏览日志;二是点击博客主题链接进入该个人博客的首页,然后在该首页中选择所需的日志标题链接进入日志显示页面浏览日志。
浏览日志的同时用户可以查看别人对该日志的评论,然后用户也可以对该日志发表自已的评论。
用户进入后台管理平台,首先必需进行权限验证,防止未授权的用户非法登录。
若未通过验证,则显示出错提示,并跳转到登录界面。
若通过验证,则进入个人博客后台管理平台。
用户可以浏览已发表的日志,并对其进行相应的操作如修改日志和删除日志;可以查看日志的评论信息;可以发表新的日志;还可以对个人信息进行修改。
图2.3前台用户浏览模块流程图
博客系统平台的后台用户管理模块流程图如图2.4所示。
图2.4后台用户管理模块流程图
2.4功能模块划分
前台模块功能结构如图2.5所示。
图2.5博客信息系统前台功能结构图
后台模块功能结构如图2.6所示。
图2.6博客信息系统后台功能结构图
2.5功能模块设计
博客信息管理系统为面向网络用户的前台及面向个人博客维护管理的后台,依据博客网站中所要实现的基本功能的设定,将所有功能分解为如下四个主要的功能模块来加以实现。
用户以合法的用户名及密码登录,系统即可按该登录用户的权限分配操作模块。
2.5.1博客注册登录管理模块
博客注册登录管理模块用于建立博客网站固定的客户群体,通过记录对应的博客档案,实现对博客信息的后台维护及管理。
该功能模块实现了以下几个子功能:
a)新博客在线注册。
b)博客登录管理。
c)跳转到博客主页。
只有进行登录并通过身份验证的用户,才可以在个人博客页面发表日志,并借助个人设置实现对个人博客相关信息的管理维护。
对于没有经过身份验证的网络用户不允许在博客页面中发表日志,更不允许对博客页面信息进行管理维护。
该模块实现新博客的注册及登录验证功能。
其中,注册新博客时会对用户输入的注册信息进行有效性验证,包括基本数据格式的有效性以及逻辑有效性,例如,用户名被占用时将及时给出提示。
注册成功的博客登录时,会随时根据博客输入的登录信息进行提示,如用户名错误或者密码错误。
2.5.2博客页面显示模块
当网络用户进入某个人博客主页后,在该页面中将提供博客日志列表的显示,同时为了方便用户浏览,在该模块中提供根据分类名进行日志列表的显示,也提供日志评论的浏览,此外还允许用户在博客日志页面中发表评论。
该功能模块实现了如下几个子功能。
a)用户可以查看对应的日志内容及评论信息。
b)用户可以针对日志内容发表评论。
c)用户可以查看博主的照片。
d)用户可以分类查看日志内容。
e)用户可以查看博主的好友。
2.5.3博客个人管理维护模块
博客个人维护管理模块用于实现用户对博客个人主页及相关信息的动态管理。
该功能模块实现了如下几个子功能:
a)日志及日志分类管理。
b)评论管理。
c)个人基本信息维护管理。
d)相册管理。
e)好友管理。
借助该模块,用户可以随时对个人博客主页中的内容进行增加或修改,包括日志分类信息的更新、评论管理等功能,也允许用户对博客的个人信息进行维护及其管理。
2.6数据库分析
数据库是当前应用软件系统的重要组成部分,如何使基于数据库的应用系统安全、可靠、高效的运行一直是软件开发技术研究的难题。
所以本系统的数据库设计基于以下几点来考虑:
a)数据库规范化与非规范化的考虑。
b)数据查询优化与索引的建立。
c)存储过程与视图。
2.6.1数据库设计E-R图
为了把用户的数据要求清晰明确地表达出来,通常要建立一个概念性的数据模型。
概念性数据模型是一种面向问题的数据模型,是按照用户的观点来对数据和信息建模。
描述了从用户角度看到的数据,反映了用户的现实环境。
最常用的表示概念性数据模型的方法,是实体—联系方法(Entity—RelationshipApproach)。
这种方法用ER图描述现实世界中的实体,而不涉及这些实体在系统中的实现方法。
用这种方法表示的概念性数据模型又称为ER模型。
ER模型中包含“实体”,“联系”和“属性”。
博客信息管理系统涉及的实体包括:
a)用户:
用户ID、用户名称、用户密码、真实姓名、性别、E-mail、QQ号、身份证号、兴趣爱好。
b)日志:
日志编号、日志类别编号、日志标题、日志内容、日志发表日期、浏览次数、日志所属用户ID。
c)日志类别:
日志类别编号、类别名、类别描述。
d)评论:
评论编号、日志ID、评论用户、评论内容、评论标题。
e)相册:
照片编号、照片地址、照片描述、上传时间、用户ID。
f)好友:
用户ID、用户名称、好友ID、好友名称。
综合本系统各子模块要实现的功能,通过前面对博客信息系统数据的分析可以得到:
用户表、类别表、日志表、日志评论表、留言表的数据库概念模型(E-R图)。
用户E-R图如图2.7所示。
图2.7用户E-R图
日志E-R图如图2.8所示。
图2.8日志E-R图
日志类别E-R图如图2.9所示。
图2.9日志类别E-R图
日志评论E-R图如图2.10所示。
图2.10日志评论E-R图
相册E-R图如图2.11所示。
图2.11相册E-R图
好友E-R图如图2.12所示。
图2.12好友E-R图
2.7系统数据表设计
a)用户表,此表主要用于保存用户的基本信息。
其结构如图2.13所示。
图2.13用户表
列名
含义
类型
长度
缺省值
允许空
id
用户编号
int
4
无
否
username
用户名
Varchar
10
无
否
password
用户密码
Varchar
10
无
否
name
真实姓名
Varchar
50
无
否
sex
性别
char
5
无
是
QQNumber
QQ号
Varchar
4
无
否
ideNumber
身份证号
Varchar
100
无
否
interest
兴趣
Varchar
50
无
否
eMail
电子邮箱
Varchar
50
无
否
b)日志表,此表主要用于保存日志的基本信息。
其结构如图2.14所示。
图2.14日志表
列名
含义
类型
长度
缺省值
允许空
Id
日志编号
int
4
无
否
typeId
日志类型编号
int
4
无
否
title
日志标题
varchar
30
无
否
content
日志内容
varchar
2000
无
否
phTime
日志发表时间
varchar
30
无
否
number
日志浏览次数
int
4
无
否
user_id
日志所属用户ID
int
4
无
否
c)日志评论表,此表主要用于保存日志评论的基本信息。
其结构如图2.15所示。
图2.15日志评论表
列名
含义
类型
长度
缺省值
允许空
id
评论编号
int
4
无
否
articleId
日志编号
int
10
无
否
reAccount
评论用户
varchar
40
无
否
reTitle
评论标题
varchar
40
无
否
reContent
评论内容
varchar
200
无
否
d)相册表,此表主要用于保存相片的基本信息。
其结构如图2.16所示。
图2.16留言表
列名
含义
类型
长度
缺省值
允许空
id
照片编号
int
11
无
否
photoAddress
照片地址
Varchar
50
无
否
photoDescription
照片描述
Varchar
50
无
否
photoTime
上传时间
Varchar
50
无
否
user_id
用户ID
int
4
无
否
e)日志类别表,此表用于保存日志类别的基本信息。
其结构如图2.17所示。
图2.17类别表
列名
含义
类型
长度
缺省值
允许空
Id
类别编号
Int
4
无
否
typeName
类别名
Varchar
40
无
否
description
类别描述
Varchar
200
无
是
f)好友信息表,此表用于博主的好友信息。
其结构如图2.18所示。
图2.18好友表
列名
含义
类型
长度
缺省值
允许空
user_id
用户ID
int
4
无
否
user_name
用户名称
Varchar
40
无
是
friend_id
好友ID
int
4
无
否
friend_name
好友名称
Varchar
40
无
是
2.8数据连接
目前流行的数据库连接技术主要有:
JDBC-ODBC桥、JDBC和数据连接池技术。
该系统采用数据连接池技术,使用连接池的优点主要体现在两个方面:
对数据库的连接统一进行配置、管理、监控,以及对数据库连接池的参数进行优化调整,同时对应用程序中没有关闭或其他原因造成没有关闭的数据库连接由连接池统一进行管理。
便于程序的移植和后端数据库的切换,因为在应用中通过统一的JNDI获得数据库的连接,而具体连接的是哪一台机器上的数据库与程序无关。
数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数据库访问请求就可以共享这些连接。
这样,通过复用这些已经建立的数据库连接,可以克服上述缺点,极大地节省系统资源和时间。
数据库连接池的主要操作如下:
a)建立数据库连接池对象(服务器启动)。
b)按照事先指定的参数创建初始数量的数据库连接(即:
空闲连接数)。
c)对于一个数据库访问请求,直接从连接池中得到一个连接。
如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:
最大活跃连接数),创建一个新的数据库连接。
d)存取数据库。
e)关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。
如实际空闲连接数大于初始空闲连接数则释放连接)。
f)释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。
3.编写代码
3.1登录模块
publicvoidcheckConsumer(HttpServletRequestrequest,
HttpServletResponseresponse)throwsServletException,IOException{
Stringusername=request.getParameter("username");
consumerDao=newConsumerDao();ConsumerFormconsumerForm=consumerDao.getConsumerForm(username);
if(consumerForm==null){
request.setAttribute("information","您输入的用户名不存在,请重新输入!
");
}elseif(!
consumerForm.getPassword().equals(request.getParameter("password"))){
request.setAttribute("information","您输入的登录密码有误,请重新输入!
");
}else{
request.setAttribute("form",consumerForm);
}
request.getRequestDispatcher("dealwith.jsp").forward(request,response);
}
说明:
用户在表单中输入用户名和密码,点击“登录”按钮提交到ConsumerServlet后通过验证后进入博客主页。
3.2日志管理模块
3.3撰写日志模块
写日志核心代码:
publicvoidaddArticle(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
ArticleFormarticleForm=newArticleForm();
articleForm.setTypeId(Integer.parseInt(request.getParameter("typeID")));
articleForm.setTitle(request.getParameter("title"));
articleForm.setNumber(Integer.parseInt(request.getParameter("number")));
articleForm.setContent(request.getParameter("content"));
articleForm.setPhTime(request.getParameter("phtime"));
articleForm.setUser_id(Integer.parseInt(request.getParameter("user_id")));
articleDao=newArticleDao();
PrintWriterout=response.getWriter();
Stringresult="文章添加失败!
";
if(articleDao.operationArticle("添加",articleForm)){
out
.print("alert('添加文章成功');window.location.href='article.jsp';");
}
}
说明:
在标题文本框输入标题名称,在日志类型下拉列表框中选择“文章类型”,在文本域输入文本内容后,点击“提交”按钮提交到ArticleServlet完成日志添加。
3.4查询日志模块
日志显示核心代码:
publicListqueryArticle(IntegertypeId,Integeruser_id){
Listlist=newArrayList();
Stringsql=null;
if(typeId==null)
sql="select*fromtb_articlewhereuser_id='"+user_id+"'";
else
sql="select*fromtb_articlewheretypeId='"+typeId+"'anduser_id='"+user_id+"'orderbyidd