
华东交通大学理工学院
课 程 设 计 报 告 书
所属课程名称 JSP程序设计
题 目 新闻发布系统
分 院 电 信 分 院
专业班级 计算机科学与技术
学 号
学生姓名
指导教师
2013 年 1 月 3 日
华东交通大学理工学院
课 程 设 计( 论 文 )任 务 书
专 业 计算机科学与技术 班 级 姓名
一、课程设计(论文)题目 新闻发布系统
二、课程设计(论文)工作:自 2012 年 12 月 31 日起至 2013 年 1 月 3 日止。
三、课程设计(论文)的内容要求:
利用已经学过的网站开发工具MyEclipse 8.0+SQL Server 2008,设计一个新闻发布系统。
该系统的功能模块有:
1.用户注册;
2.用户修改个人资料;
3.用户发布新闻、修改、更新、删除等;
4.用户评论新闻 等。
要求:用MyEclipse 8.0进行设计;数据库用SQL Server 2008;设计一个新闻发布系统
学生签名:
2013 年 1 月 3 日
课程设计(论文)评阅意见
| 序号 | 项 目 | 等 级 | ||||
| 优秀 | 良好 | 中等 | 及格 | 不及格 | ||
| 1 | 课程设计态度评价 | |||||
| 2 | 出勤情况评价 | |||||
| 3 | 任务难度评价 | |||||
| 4 | 工作量饱满评价 | |||||
| 5 | 任务难度评价 | |||||
| 6 | 设计中创新性评价 | |||||
| 7 | 论文书写规范化评价 | |||||
| 8 | 综合应用能力评价 | |||||
| 综合评定等级 | ||||||
20 年 月 日
目录
第一章: 系统概要及分析 5
1.1设计技术及开发环境 5
1.1.1开发环境 5
1.2运行环境 5
1.3该系统的功能模块有: 5
第二章: 系统功能及构架设计 6
2.1功能层次图 6
2.2业务实体说明 6
2.3系统构架设计 7
第三章: 进行数据库表格的设计 9
第四章: 进行各模块的界面与详细设计 10
4.1 系统运行环境配置 10
4.2 编写实用类 11
4.3 编写抽象基类 11
4.4 模型层的实现 11
4.5 业务层的实现 12
4.6 视图层的实现 13
第五章: 测试运行整个系统 15
第六章: 设计小结 17
第七章: 参考资料 18
第八章: 致谢 19
第一章: 系统概要及分析
internet的蓬勃发展,使新闻的传播方式发生了巨大的变化,传统的信息传播媒体电视、广播、报纸已经不再是人们茶余饭后的主要精神甜点,人们更多的开始关注网络新闻。由于互联网所容纳的信息量大、内容丰富、信息及时、准确,更有相关信息的全面的介绍与比较,大大地方便了人们的阅读。借此东风,新闻网也迅速发展起来,它内容丰富,信息量大,不仅有实事新闻,还有相关的行业信息,同时新闻网具有互联网所具备的一切特性。在全球网络化、信息化的今天,新闻网迅速发展,大大地丰富了人们的生活,不知不觉中,它已经成为人们生活中不可或缺的重要组成部分。
1.1设计技术及开发环境
1.1.1开发环境
Windows 7、 MyEclipse 、SQL server 2005、Tomcat6.0。
1.2运行环境
服务器:Windows 2000/2003 Server及以上版本。
客户端:IE 6.0以上、FF等目前主流浏览器。
1.3该系统的功能模块有:
1.用户注册;
2.用户修改个人资料;
3.用户发布新闻、修改、更新、删除等;
4.用户评论新闻 等。
第二章: 系统功能及构架设计
2.1功能层次图
1-1新闻发布系统功能层次图
2.2业务实体说明
新闻发布系统的业务实体主要包括会员、新闻表和新闻类别:
1会员(Sys _User):代表一个新闻会员实体,主要属性包括会员号自动编号ID、登录帐号、登录密码、姓名、性别、Email、是否新闻管理员。
2新闻表(Inf_News):代表一个新闻实体,主要属性包括新闻字段编号ID、新闻标题、新闻内容、发表时间、点击率、作者、新闻类别ID。
3新闻类别(Inf_NewsType):代表一个新闻类别实体,主要属性包括新闻类别自动编号ID、新闻类别名称、排序ID。
会员、新闻表和新闻类别实体之间的业务实体关系如图1-2所示:
图 1-2 新闻发布系统业务实体关系图
2.3系统构架设计
主要功能明确之后,开始对新闻发布系统进行必要的系统设计。
整个系统采用多层的构架模式,从上到下依次为视图层、业务层、DAO层和数据库层。
视图层负责向用户展现数据,在新闻发布系统中视图层主要有JSP页面构成。设计JSP页面的原则是尽量减少JSP页面中的JSP代码量,把具体的业务逻辑放在业务层实现,JSP页面只负责显示业务层实现的结果。对于一些公用的视图资源(如JSP页面中的图片、公用文字等),应当使用“<%@include%>”的形式包含,提高代码的可重用性。
业务层负责具体业务逻辑的实现,在新闻发布系统中通过编写专门的业务类来实现。各业务类从同一个抽象业务基类继承,例如分别负责处理会员、新闻和新闻类别相关业务逻辑的业务类UserBiz、NewsBiz和NewsTypeBiz都继承自抽象业务基类BaseBiz.,如图1-4所示:
图1-4 业务类的继承关系
所有业务类都从一个抽象的业务基类继承,这种做法使得业务类更加规范、可扩展性更强。
模型层包含了系统中所涉及的业务实体、业务规则以及对数据库层的访问方法,模型层主要由各业务实体类和DAO类构成。在新闻发布系统中,业务实体主要包含会员、新闻和新闻类型,每个实体都有一个相应的实体类,这些实体类本质上是JavaBean,其中封装了实体的各项属性。实体类的作用是依据面向对象的原则描述一个业务实体,DAO模式的实现必须依赖这些实体对象。和业务类类似,各实体类也由同一个抽象实体基类BaseEntity继承而来,图1-5描述了这种继承关系:
图 1-5 实体类的继承关系
DAO类负责实现各实体类的业务规则以及对数据库的访问(例如实现在数据库中添加一个会员实体对象),因而也可以称之为“实体的DAO实现类”。DAO类也是由一个抽象的基类继承而来,所有的DAO类必须实现基类所定义的抽象方法,所有的DAO类都自动继承基类已经实现的方法,如图1-6所示:
图 1-6 DAO类的继承关系
第三章: 进行数据库表格的设计
新闻发布系统采用的是MS SQLServer数据库,直接在SQL Server管理工具中创建各表。
每个实体在数据库中都有对应的表。各表中的ID都设置为int自增长型字段,用作各表的主键。ID字段本身不具有任何业务上的含义,因此不会随着具体业务的变化而改变,适于作为主键。
这个表主要记录会员注册信息:
这个表主要记录新闻有观点信息:
第四章: 进行各模块的界面与详细设计
系统构架设计和数据库设计完成之后,就可以开始立足实现系统各项功能模块。系统是依据多层构架模式实现的。
首先是实现数据库层,即在数据库中创建各物理表。
其次是实现模型层,主要工作是编写各实体类和DAO类。
模型层实现后是编写相应业务类,实现业务层。
最后是编写视图层的JSP页面。
但在这些工作开展之前,还需要先完成两项必要的任务,即:
1.系统运行环境的配置
新闻发布系统采用Tomcat 6.5 作为Web服务器,因此需要对Tomcat进行正确的安装和配置,主要包括数据库连接池的配置、虚拟目录的创建等。
2.实用类的编写
除了各业务类、DAO类和实体类外,还需要编写一些实用工具类,主要包括数据库工具类、日期处理类和字符串处理类。
4.1 系统运行环境配置
图1-8新闻发布系统的目录结构:
图 1-8新闻发布系统的目录结构
JSP页面分别位于user、news、newstypes目录以及news根目录下,css目录、js目录和img目录放到content目录下面,包含的是系统需要的样式表和图片,WEB-INF目录的classes子目录中包含了各Java类文件, model子目录中包含了业务实体类和相应的DAO类。tools目录的base子目录中包含了一些抽象的基类,database和util子目录中包含了基本的实用类。
4.2 编写实用类
实用类位于tools目录的database和util子目录中,database子目录中包含了DataBaseTool.class文件,该Java类文件负责处理数据库相关的各类操作。
4.3 编写抽象基类
实用类编写完成后,开始实现新闻发布系统各层的基类文件,包括实体基类文件BaseEntity.java、DAO实现基类文件BaseDao.java和实体业务类文件BaseBiz.java。这些类文件需要调用实用类中的有关方法。
4.4 模型层的实现
各基类编写完成后,按顺序首先开始实现模型层的各类文件,包括各实体类文件和相应的DAO实现类文件,原理同User实体一样。
UserEntity.java
/**
*UserEntity.java
*会员实体类
*/
package user.model;
import tools.base.BaseEntity;
public class UserEntity extends BaseEntity{
private int ID = 0;//标识会员实体的唯一ID,对应数据库中为自增长型ID
private String Account = "";//会员帐号
private String Password = "";//会员密码
private String Name = "";//会员姓名
private String Sex = "";//会员性别
private String Email = "";//email
private boolean IsAdmin = false;//是否新闻管理员
各属性的get和set方法省略。
4.5 业务层的实现
业务层实现了对各类业务的处理,业务层处理的对象是各业务实体,而不是数据库中的各字段,需要涉及到数据库的操作,一律在DAO实现类中完成。业务层只是对DAO类中相应方法的进一步封装。
UserBiz.java
package user.biz;
import tools.base.*;
import user.model.*;
import tools.database.*;
import java.sql.Connection;
public class UserBiz extends BaseBiz
{
UserDao newUserDao = new UserDao();//创建UserDao对象
//构造函数
public UserBiz()
{
this.baseDao = newUserDao;//覆盖基类定义的抽象变量baseDao
}
//注册一个新会员
public void saveUser(UserEntity user) throws Exception
{
Connection con = DataBaseTool.getConnection();
try
{
//调用DAO层的insert方法
newUserDao.insert(con , user);
}
catch(Exception e)
{
throw e;
}
finally
{
DataBaseTool.close(con);
}
}
//修改会员信息
public void updateUser(UserEntity user) throws Exception {
Connection con = DataBaseTool.getConnection();
try{
//调用DAO层的update方法
newUserDao.update(con , user);
}
catch(Exception e){
throw e;
}
finally{
DataBaseTool.close(con);
}
}
}
4.6 视图层的实现
1.会员注册与系统登陆
根目录下的login.jsp实现了会员注册与系统登陆功能。其源代码如下所示:
login.jsp
<%
//action用来判断表单是否被提交
String action=request.getParameter(“action”);
//如果表单被提交
if(action != null)
{
if(action.equals(“submit”))
{
//获取会员帐号
String account = request.getParameter(“Account”);
//获取会员密码
String password = request.getParameter(“Password”);
String txtYZM = request.getParameter(“txtYZM”);
String checkCode = request.getParameter(“checkCode”);
if(account.length()==0)
{
out.print(“”);
return;
}
if(password.length()==0)
{
out.print(“”);
return;
}
UserBiz userBiz = new UserBiz();
//定义会员对象数组
UserEntity[] users = null;
try
{
//调用会员业务类的findByQueryString()方法进行数据库查询
users = (UserEntity[])userBiz.findByQueryString(sql);
}
catch(Exception e)
{
out.print(“”);
return;
}
if(users==null)
{
out.print(“”);
return;
}
else
{
//判断密码是否准确
if(users[0].getPassword().equals(password))
{
//把当前会员对象保存在session的User属性中
session.setAttribute(“User”,users[0]);
//页面重定位
String isAdmin=String.valueOf(users[0].getIsAdmin());
response.sendRedirect(“frame/index.jsp?isAdmin=”+isAdmin);
}
else
{
out.print(“”);
return;
}
}
}
}
%>
第五章: 测试运行整个系统
运行效果截图
1.首先输入账号密码,绕后接着点击登录进入系统
2. 发布新闻界面
3.新闻管理界面
4.注册会员界面
5.点击新闻首页的标题查看新闻
第六章: 设计小结
通过这课设,我对JSP动态网页设计的基础有深刻的了解,也有了更的巩固和加深。也懂得不管系统设计还是论文的设计不仅需要足够信心和耐心,还需要相当多的专业知识理论与实践操作能力。
本系统采用了三层模式开发,虽然功能不怎么强大,但相对于传统的单层、二层模式却变得灵活多了。
三层模式各层次之间的依赖关系是自上向下,即上层依赖下层实现,而下层则可以基本于上层进行实现。例如视图层的数据显示需要依赖于业务层所提供的相关功能,但业务层所提供的功能本身并不关注视图层的特点,即便视图层完全改变(例如由BS浏览器模式改为CS客户端应用程序),业务层仍然可以沿用。
尽管本管理系统存在着很多不足,但其功能全面、数据库管理容易、操作方便、等优点是本系统所拥有的。在这次的论文设计中,使我受益匪浅,也是对自我的一种检察,自知要学的东西还很多。谢谢老师孜孜不倦的教导,以及对我们的重视,让我能顺利地完成这个课程设计。 我知道在这次的课程设计中自已有许多的欠缺,在以后的日子中,我一定得更加严格要求自己,改正缺点,不断努力,不断进步。
第七章: 参考资料
[1] 《用JSP轻松开发Web网站》曹林有. 北京希望电子出版社.第一版.
[2] 《SQL Server数据库开发实例解析》机械工业出版社 宋昆2006年1月
[3] 《Java基础编程贯通教程》史佳. 清华大学出版社.第一版.
[4] 《JSP程序设计教程》冯沃辉. 冶金工业出版社.第二版.
[5] 《jsp高级编程》马红华. 北京希望电子出版社.第一版.
[6] 《Java项目开发实践》萨师煊. 高等教育出版社.第四版.
[7] 《数据库系统开发完全手册》 人民邮电出版社 2006年3月
[8] 《JSP 信息系统开发实例精选》 机械工业出版社 王国辉、牛强2005年7月
[9] 《JSP工程应用与项目实践》机械工业出版社 陈威、白伟明2005年2月
第八章: 致谢
首先感谢我的指导老师老师,他在我的毕业设计过程中给了指导性的方案和架构,指引我阅读相关的资料和书籍,使我能学习掌握知识并完成了课程设计。
感谢母校对我的培育,让我从思想上、素质上和知识上得到很大的提高。在校学习的过程中程老师的悉心教导让我掌握了更多的知识,对提高我的知识面有很大的帮助。
最后要感谢我的同学在设计完成前后对我的帮助,没有同学的共同学习进步也许就没法完成设计,没有同学的帮助,也许一些潜在的错误难以得到更正,在此一并表示感谢。
在此祝愿学校领导、老师、同学工作顺利 事业更上一层楼 同时也祝愿学校更加辉煌
