1.1课题背景
在现代信息技术的基础上,随着网络的不断的发展,计算机性能不断提高,价格不断下降,很多人已经有了上网浏览新闻的习惯。网络新闻不但浏览方便,而且更新速度快,所以出现了很多新闻网站为网民提供服务。
1.2课程设计目的
很多人每天都在关注着各地发生的一些让他们关注的新闻,新闻管理系统就是为了实现这个目标而做的。记者可以在通过网页发表新闻,实现了新闻的即时共享,网民可以通过访问网页就可以看到找到他们关注的新闻,新闻的后台管理员可以审核记者发表的新闻,不合格的可以删除。
通过新闻管理系统的课程设计,熟练掌MyEclipse,MySQL-Font等工具软件,系统地掌握需求分析、数据库设计、编码实现、测试等软件开发的流程,提高自身分析问题、解决问题的能力。
1.3课程设计任务
本课程设计任务是通过开发一个新闻管理系统,学习数据库系统的设计与开发,采用MyEclipse和MySQL-Font等软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。
《基于Mysql的新闻管理系统》 第2页 共15页 2系统结构分析
2.1 需求分析
新闻管理系统应该可以通过后台管理员用户登录后对新闻进行审核、编辑、删除等操作,及时为用户提供及时的新闻。
经过分析,确定了新闻系统的主要包括以下功能: (1). 记者增加新闻
(2). 后台管理员审核、编辑新闻 (3). 后台管理员删除新闻 (4). 所有进入网站的人查看新闻
2.2 功能模块图
根据上述的功能,可以设计出系统的总体功能模块,如图2.1所示。
新闻管理系统记者管理新闻管理注册记者注册记者
增加新闻删除新闻更改新闻新闻查看
图2.1 新闻管理系统功能模块示意图
《基于Mysql的新闻管理系统》 第3页 共15页 3数据库设计
3.1 概念结构设计
根据需求分析抽象出信息结构,可得该系统的E-R图。 (1). 用户E-R图,如图3.1所示。
用户 用户名 密码 用户类型
图3.1 用户E-R图
根据分E-R图和需求分析,可得到总E-R图,如图2.10所示。
用户 1 操作 n 属于 1 用户类型 n 新闻 n 拥有 1 新闻类型
图 3.2 总体E-R图
3.2逻辑结构设计
根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。
数据库news包含以下4个表:用户表user、用户类型表userType、新闻表news、新闻类型表newsType。 (1) 用户类型表usertype
《基于Mysql的新闻管理系统》 第4页 共15页 表3-1 表usertype的结构
编号 1 2
(2) 用户表User
表3-2 表User的结构
编号 1 2 3 4 5 6 7 8 字段名称 uid utid uname phone age Sex workYear Pwd 数据结构 int int Varchar(20) Varchar(12) Int Varchar(4) Int Varchar(16) 说明 记录编号 用户类型编号,1-记者,2-后台管理员 用户名 联系方式 年龄 性别 工龄 密码 字段名称 utid utypeName 数据结构 int Varchar(30) 说明 记录编号 用户类型信息名称 (3) 新闻表 news
表3-3 表news的结构
编号 1 2 3 4 字段名称 nid newsName ntid content 数据结构 int Varchar(100) int Varchar(500) 记录编号 新闻名 新闻类型 新闻内容 说明 (4). 新闻类型表newsType
表3-4 表newsType的结构
编号 1 2
通过对上面表的分析,插入,删除,查找等操作,所有模式都符合3NF。 本系统将用户划分为两种类型,即系统管理员和普通用户。系统管理员为Admin,他可以管理其他用户的信息,在其他方面所有用户的权限相同。
前面是通过前台来实现系统安全性的,我们也可以对数据库进行身份验证,可以从服务器角度建一个登录名,使得不同的服务器角色拥有不同的权限,从而实现对数据库的不同权限的管理,以此来增强医院门诊收费系统的安全性。
字段名称 ntid ntypeName 数据结构 int Varchar(30) 记录编号 新闻类型名 说明 3.3数据库表的建立
《基于Mysql的新闻管理系统》 第5页 共15页 在设计数据库表结构之前,首先要创建一个数据库。本系统使用的数据库为news。可以在MySQL-Front的sql编辑器中输入sql,以下为sql语句:
CREATE DATABASE `news` /*!40100 DEFAULT CHARACTER SET utf8 */; (1). 创建表usertype
create table usertype (
utid int not null AUTO_INCREMENT, utypeName national varchar(20) not null, primary key (utid) );
(2). 创建表user
create table user (
uid int not null AUTO_INCREMENT, uname varchar(20) not null, pwd varchar(16) not null, utid int not null, phone varchar(13), age int, sex varchar(4), workyear int, primary key (uid, uname) );
(3). 创建表newsType
create table newsType (
ntid int not null AUTO_INCREMENT, utypeName national varchar(20) not null, primary key (ntid) );
《基于Mysql的新闻管理系统》 第6页 共15页 (4). 创建表 news
create table news (
nid int not null AUTO_INCREMENT, ntid int not null,
newsName varchar(100) not null, content varchar(1000) not null, updateTime primary key (nid) );
date not null, 《基于Mysql的新闻管理系统》 第7页 共15页 4系统实现
4.1 数据库的连接
在该系统中数据库的连接使用JDBC链接数据库。在类DBUtils中用JDBC链接数据库的代码如下:
static { }
public static Connection getConn() {
Connection conn = null; String url = try {
Class.forName(\"com.mysql.jdbc.Driver\");
} catch (ClassNotFoundException e) { }
e.printStackTrace();
\"jdbc:mysql://127.0.0.1:3306/news?user=root&password=admin&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false\";
}
try {
conn = DriverManager.getConnection(url);
} catch (SQLException e) { }
return conn;
e.printStackTrace();
4.2 系统功能模块设置
(1). 实现增加新闻的代码
public boolean addNews(News news) {
int row = 0;
Connection conn = DBUtils.getConn(); String
sql
=
\"insert
into
news(newsName,content,updateTime,ntid)
《基于Mysql的新闻管理系统》 第8页 共15页 values(?,?,?,?)\"; }
PreparedStatement pstmt = DBUtils.getPreparedStatement(conn, sql); try {
pstmt.setString(1, news.getNewsName()); pstmt.setString(2, news.getContent());
pstmt.setTimestamp(3, new Timestamp(news.getUpdateTime().getTime())); pstmt.setInt(4, news.getNtid()); row = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally { }
if (row > 0)
return true;
DBUtils.close(conn, pstmt, null);
else
return false;
(2). 实现删除新闻的代码
public boolean delNewsById(int id) {
int row = 0;
Connection conn = DBUtils.getConn(); String sql = \"delete from news where nid=?\";
PreparedStatement pstmt = DBUtils.getPreparedStatement(conn, sql); try {
pstmt.setInt(1, id);
row = pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBUtils.close(conn, pstmt, null);
《基于Mysql的新闻管理系统》 第9页 共15页
}
}
return (row > 0 ? true : false);
(3). 实现编辑新闻的代码
public boolean modifyNews(News news) {
int row = 0;
Connection conn = DBUtils.getConn();
String sql = \"update news set newsName = ?, content = ?, postTime = ? where
nid = ?\";
}
(4). 实现获得新闻列表的代码 public List PreparedStatement pstmt = DBUtils.getPreparedStatement(conn, sql); try { pstmt.setString(1, news.getNewsName()); pstmt.setString(2, news.getContent()); pstmt.setTimestamp(3, new Timestamp(news.getUpdateTime().getTime())); pstmt.setInt(4, news.getNid()); row = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { } return (row > 0 ? true : false); DBUtils.close(conn, pstmt, null); Connection conn = DBUtils.getConn(); String sql = null; ResultSet res = null; List 《基于Mysql的新闻管理系统》 第10页 共15页 } sql = \"select nid, ntid, newsName, updateTime from news\"; PreparedStatement pstmt = DBUtils.getPreparedStatement(conn, sql); res = DBUtils.getResultSet(pstmt, sql); try { while (res.next()) { } News news = new News(); news.setNid(res.getInt(\"nid\")); news.setNewsName(res.getString(\"newsName\")); news.setNtid(res.getInt(\"ntid\")); news.setUpdateTime(res.getDate(\"updateTime\")); list.add(news); } catch (SQLException e) { e.printStackTrace(); } finally { } return list; DBUtils.close(conn, pstmt, res); 《基于Mysql的新闻管理系统》 第11页 共15页 5功能测试 5.1网站首页 在tomcat上部署该系统并启动,然后访问http://127.0.0.1/news-mysql/index.do,得到界面如图5.1所示。 图 5.1 首页 5.2查看一条新闻 点击一条新闻的标题,查看一条新闻的完整内容,如图5.2所示。 图5.2 查看一条新闻的界面 《基于Mysql的新闻管理系统》 第12页 共15页 5.3发表新闻 记者登陆后可以发表新闻,访问界面如图5.3所示。 图5.3 记者发表新闻的界面 5.4后台管理员界面 后台管理员登陆后可对新闻进行审核,删除等操作界面如图5.4 图5.4 管理员操作新闻的界面 《基于Mysql的新闻管理系统》 第13页 共15页 6系统技术实现 6.1 MySQL MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购.对于Mysql的前途,没有任何人抱乐观的态度.目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。 6.2 JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行”的优势。 《基于Mysql的新闻管理系统》 第14页 共15页 7 结束语 经过这些天的努力,本次课程设计终于完成了。通过这次课程设计,使我对数据库这门课程有了更深入的理解,数据库是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。 在本次课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织数据及编写程序的能力,培养了基本的、良好的程序设计技能。这次课程设计同样提高了我的综合运用所学知识的能力。并对MySQL有了更深入的了解。 由于我的经验和知识的不足,在程序中还存在很多缺陷。经过这次课程设计,我的知识得到了很大提高,经验也更加丰富。今后我会更多的学习编程技巧,不断的提高程 《基于Mysql的新闻管理系统》 第15页 共15页 参考文献 [1] 孙卫琴. 精通Struts基于MVC的Java.Web设计与开发,2004 [2] [美]CAY S.HORSTMANN GARY CORNELL著 陈昊鹏 王浩 姚建平等译.JAVA核心技术,2007 [3] 王成春,周文玲. MySQL数据库大进击,2008 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- zicool.com 版权所有 湘ICP备2023022495号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务