1、在全球网络化、信息化的今天,新闻网迅速发展,大大地丰富了人们的生活,不知不觉中,它已经成为人们生活中不可或缺的重要组成部分。这么大的信息量,如果单纯用静态网页一个一个地制作,不仅耗费人力物力,而且新闻本身的时效性也很难发挥出来。所以动态新闻发布及管理系统的产生顺应当前形势的发展,不仅节省人力物力,也更加体现了新闻本身的时效性。第二章 需求分析2.1 需求分析的任务新闻发布系统是一个功能完善的新闻类网站,由客户前台新闻浏览和后台新闻管理两大部分组成。前台功能模块前台主要包括新闻分类、显示新闻详细信息、新闻信息查询、新闻人物投票、友情链接、提供后台登录口、浏览新闻的人可对新闻进行评论。后台管理模块
2、后台主要包括后台总管理员设置、管理员登陆、管理员密码修改、添加管理员、管理员信息设置、新闻类型管理、新闻详细类型管理、新闻信息管理、链接管理、新闻人物管理、增加新闻、删除新闻、退出后台。本系统面向的对象有两个,用户和新闻发布人员。对于用户来说,他们关心的就是新闻的浏览、新闻的搜索和新闻的评论,同时还得兼顾栏目路径信息,新闻图片信息,推荐新闻信息,新闻单击信息和新闻审核信息。通过系统的功能分析,针对一般的新闻系统用户的需求,总结如下需求信息: 每个新闻对应一个JSP文件; 每个新闻只能对应一个标题包含于一个一级新闻标题中; 每个一级新闻标题中可以包含多个二级新闻标题; 不同的一级新闻标题下的二级
3、新闻标题对应的关键字可以相同; 通过网络,展示各行业新闻及相关信息。 提供新闻搜索功能。 设置新闻人物投票功能,并统计投票数量。 支持其他网站的友情链接。对于新闻发布人员来说,他们所关心的是如何对新闻分类和新闻进行添加、修改、删除。通过以上分析针对管理员,总结处如下需求信息: 为后台管理提供管理入口。 新闻发布人员可以对不同新闻类型进行增、删、改; 新闻发布人员可以对不同的新闻进行增、删、改; 新闻发布人员发布的新闻必须审核通过后才能对用户开放; 管理员可以对新闻进行审核; 管理员可以对一般的新闻发布人员进行管理; 新闻发布人员要登陆该系统必须要有合法的用户名和密码; 新加入的新闻发布人员可以
4、提交注册信息来进行注册; 新闻发布人员可以修改自己的登陆密码; 当新闻发布人员辞职后要进行用户注销;新闻发布系统后台对新闻作了详细的分类,前台以分类形式显示新闻的详细信息,满足了人们浏览新闻网时分类查看新闻信息的要求,同时提供新闻信息查询功能,方便浏览者查找相关的新闻信息。新闻发布系统后台则通过对总管理员设置和管理员添加等模块对网站管理员进行管理,保证了网站的安全性。2.2 数据字典表1.1数据字典编号表名代码内容101UserUserInfo记录新闻发布人员的基本信息主要字段:loginName,password102FirstLevelTitleFirstInfo记录新闻类别信息即一级新闻
5、标题信息Id,titleName,creator,createTime103SecondLevelTitleSecondInfo记录不同新闻信息Id,titleName,creato,createTime,filePath,parentId2.3 数据项表1.2 数据项名称属于的表数据类型长度201Idint3202titleNamenchar100203creator15204createTime20205filePath206parentId207loginName208password第三章 概念结构设计得到上面的数据后,就可以设计出满足用户需求的各种实体,以及它们之间的关系,为后面的逻
6、辑结构设计打下基础。这些实体包含各种信息,通过相互之间的作用形成数据的流动。根据上面的设计规划的实体有:管理员实体、新闻一级标题实体、新闻二级标题实体等。3.1 数据流图新闻发布系统的数据流图如下: 图2_1 数据流图3.2 前台功能图新闻发布系统前台功能结构,如下图所示。图2_2 新闻发布系统前台功能图在新闻发布系统中,后台管理员分为两种:一个是普通管理员,他可以对新闻类型进行定义,也可以发布新闻、设置投票人数及网站链接;另一个是总管理员,他除了可操作以上功能外,还可以对普通管理员进行设置,总管理员和普通管理员都能通过后台登录页面登录后台。3.3 后台功能图新闻发布系统后台功能结构,如下图所
7、示:图2_3 新闻发布系统后台功能3.4 E_R图实体之间的E_R图如下:图2_4 实体关系的E_R图下面是不同单个实体的E_R图,管理员实体的E_R图如下:图2_5 管理员实体E_R图一级新闻标题实体E_R图如下:图2_6 一级新闻标题实体E_R图二级新闻标题实体E_R图如下:图2_7 二级新闻标题实体E_R图第四章 逻辑结构设计数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转换为SQL Server 2005 所支持的实际数据模型,也就是数据的逻辑结构。系统数据库名称为news。数据库news中包含如下几张表。4.1 实体所对应的表及其函数依赖管理员所对应的表如下:表3_1 管
8、理员表字段名类型Null注释默认值否主键,用户名无密码根据此表得出的函数依赖如下图所示:图3_1 管理员表中的函数依赖由图3_1可知,此关系模式属于4NF。该关系模式非常简单并且不存在:部分函数依赖、传递函数依赖、多值依赖等。在此关系模式中常做的操作主要有:用户的注册、用户的注销、用户修改密码等,并不涉及连接运算,故此规范化程度很适合此关系模式。新闻一级标题所对应的表如下:表3_2 新闻一级标题表ID主键,一级新闻标识TitleName唯一,一级新闻标题Creator发布人姓名管理员CreateTimedatetime发布时间getDate()由一级新闻标题表得出的函数依赖关系图如下:图3_2
9、 新闻一级标题表中的函数依赖由图3_2可知,新闻一级标题关系模式中的依赖关系有:完全函数依赖,存在传递函数依赖,消除了部分函数依赖,故此关系模式属于2NF。一级新闻标题的发布、一级新闻标题的删除、一级新闻标题的修改等,2NF有效的控制了插入异常、删除异常和修改的复杂性。故此规范化程度很适合此关系模式。新闻二级标题所对应的表如下:表3_3 二级新闻标题表id主键,二级新闻标识唯一,二级新闻标题新闻位置Int外键,所属一级新闻标题的Id由二级新闻标题表得出的函数依赖关系图如下:图3_3 新闻二级标题表中的函数依赖由图3_3可知,新闻二级标题关系模式中的依赖关系有:二级新闻标题的发布、二级新闻标题的
10、删除、二级新闻标题的修改等,2NF有效的控制了插入异常、删除异常和修改的复杂性。第五章 数据库的实施和维护数据库的实施阶段包括两项重要工作,一项是数据的载入,另一项是应用程序的编码和调试。5.1 后台操作当管理员用户注册时,向数据库中载入数据,其过程如下:图5_1 注册界面图当输入了正确的用户名和密码后,点击提交按钮,弹出下图所示的提示信息,即可将数据写入相应的管理员表中。图5_2 提示信息图用户如果想要进入后台的管理系统对新闻进行管理,还必须要通过登陆页面进行登陆,已经注册过的用户可以直接通过如下图页面进行登陆:图5_3 登陆页面图当输入了用户名和密码后,系统就会在后台的数据库中进行查询该用
11、户是否为合法的用户,如果不是经过注册的合法用户,那么就无法进入后台管理系统,仍然显示该页面,如果是注册过的合法用户就可以进入后台的管理系统,进行新闻发布,发布页面如下图所示:图5_4 新闻发布系统后台页面图当用户感觉自己的密码不安全时可以进行修改密码,用户填完了新的密码信息后,点击提交按钮,系统就会在后台的数据库中进行更新该用户的密码,修改密码的页面如下图所示:图5_5 用户修改密码的页面图当用户不再使用该用户名时,可以通过用户注销页面进行用户注销,注销时,系统会执行SQL语句:delete from User where loginName=? ,之后该用户就被从数据库中删除。5.2 前台操
12、作新闻发布系统的前台界面如下:图5_6 前台界面图当用户点击左边分类的新闻后,在右边会列出相应的二级标题,再点击二级标题后,就会弹出管理员发布的相应的新闻网页。第六章 结论与体会通过这次设计,我们受益非浅,亲身体验了数据库设计的全过程,在实践中了解了数据库系统设计的步骤、流程以及思路,增长了在数据库设计方面的见识,我们深刻认识到以前所学的基础课程的重要性,也使我们掌握了很多新知识,特别是一些课本之外的知识,体会到了理论知识和实践相结合的重要性。经过一个多月的设计和开发,数据库系统设计基本上完成。其功能基本符合要求,此系统尚未实现课程设计任务书中所要求的部分功能,并在一定程度上按照自己的思路进行
13、了补充。课程设计中有很多不尽如人意的地方还没来得急解决,比如,逻辑结构设计部分做得还不是很好,只能说是完成了这个部分,这是因为自己对逻辑结构设计部分的真正了解还不够,很多问题要在以后的系统维护中,来慢慢发现,并将其解决。最后,感谢老师在课程设计的过程中对我们的帮助。在整个课程设计过程中,我们得到了申老师的悉心指导和大力支持,使我们的专业知识有了很大的提高。老师在工作中认真负责对学生的关心爱护,都是我们在以后的学习和工作中的榜样。参考文献数据库系统概论(第四版)王珊 萨师煊 高等教育出版社SQL Server 数据库开发精粹 徐国智 汪孝宜 电子工业出版社JSP&Servlet Web 2.0
14、应用开发 彭一明 张丽伟 刘子乾 机械工业出版社附录新闻一级标题类:package entity;import java.util.Date;public class FirstLevelTitle private int id;/新闻Id private String titleName;/新闻一级标题名 private String creator;/新闻一级标题创建者 private Date createTime;/新闻一级标题创建时间 public FirstLevelTitle() public FirstLevelTitle(int id, String titleName, S
15、tring creator, Date createTime) this.id = id; this.titleName = titleName; this.creator = creator; this.createTime = createTime; public int getId() return id; public void setId(int id) public String getTitleName() return titleName; public void setTitleName(String titleName) public String getCreator()
16、 return creator; public void setCreator(String creator) public Date getCreateTime() return createTime; public void setCreateTime(Date createTime) 新闻二级标题类:public class SecondLevelTitle private String filePath;/文件路径 private int parentId;/二级新闻标题所属的一级新闻标题的Id号 public SecondLevelTitle() public SecondLevel
17、Title(int id, String titleName, String creator,Date createTime, String filePath, int parentId) this.filePath = filePath; this.parentId = parentId; /* * return the id */ * param id the id to set * return the titleName * param titleName the titleName to set * return the creator * param creator the cre
18、ator to set * return the createTime * param createTime the createTime to set * return the filePath public String getFilePath() return filePath; * param filePath the filePath to set public void setFilePath(String filePath) * return the parentId public int getParentId() return parentId; * param parent
19、Id the parentId to set public void setParentId(int parentId) 管理员类:public class User private String loginName;/用户名 private String password;/密码 * param loginName * param password public User(String loginName, String password) this.loginName = loginName; this.password = password; public User() * return
20、 the loginName public String getLoginName() return loginName; * param loginName the loginName to set public void setLoginName(String loginName) * return the password public String getPassword() return password; * param password the password to set public void setPassword(String password) 数据处理的相关类:连接
21、管理类:package dao;import java.sql.*;public class ConnectionManager / 建立连接 public static Connection getConnection() Connection con = null; try / 加载驱动类 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); catch (ClassNotFoundException e) / TODO Auto-generated catch block e.printStackTrace(); / 建立连接数据库 con = DriverManager.getConnection(jdbc:odbc:news, catch (SQLException e)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1