




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WEB开发技术课程设计报告 新闻发布系统班 级: 姓 名: 学 号: 指导教师 时 间: 目 录第一章需求分析11.1项目概述11.2需求分析1第二章概要设计22.1 开发与设计的总体思想22.2 系统模块结构图22.3 模块设计22.4 功能图42.5 数据库设计4第三章详细设计63.1 数据库访问63.2 新闻浏览73.3 新闻管理73.4 上传管理113.5 留言管理143.6 用户管理153.7 建立数据库16第四章软件设计结构174.1 MVC模式概述:174.2 Strut2的MVC模式:17第五章设计结果评价与总结195.1设计结果195.2系统部分运行结果215.3总结23第一章 需求分析1.1 项目概述当今社会是一个信息化的社会,新闻作为信息的一部分,有着信息量大、类别繁多、形式多样等特点。新闻发布系统由此提出,简单地说,新闻发布系统就是充当一个网络新闻媒介的功能,主要对新闻的管理功能。随着网络的快速发展和普及,越来越多的用户习惯上网浏览新闻。本系统的主要目的就是为用户提供一个方便、及时的网上新闻发布、浏览平台。利用本系统,用户可以直接在网上发布新闻信息并根据自己的需要对新闻进行检索。1.2 需求分析1.2.1 功能需求描述 新闻发布系统的主要目的是为用户提供一个方便的、可快速浏览当前最新新闻的界面,并且也可以随时发布最新的讯息以达到信息共享的目的。因此要为用户提供方便易用的使用界面,同时也为具有更高权限的管理用户提供添加、删除新闻的系统维护功能。1.2.2 基本功能1 查看新闻功能:任何用户均可以使用查看新闻功能。首页显示不同栏目的最新几条新闻,用户通过在系统导航栏上单击“新闻中心”超链接,可以进入查看所有新闻的页面,查看新闻,并且使用分页显示的效果,每页显示20条新闻,用户可通过单击下方的上下页及首尾页按钮来跳转到任意一页浏览。并且显示的所有新闻按发布的时间降序排列,以保证最新发布的新闻位于最前面。用户通过单击每条新闻的标题可以查看到新闻的详细内容。2新闻搜索功能:任何用广均可以使用新闻搜索功能。通过在“查询类别”下拉列表框中选择按新闻的标题、内容、作者和发布日期等不同的查询方式来搜索符合条件的新闻。这里提供的是模糊搜索功能,即只要在查询字段中包含用户输入的关键字内容就认为是符合查询条件的记录。查询结果同样以分页的方式显示。3 下载中心:任何用户均可以使用下载功能。用户通过在系统导航栏上单击“下载中心”超链接可以进入下载页面。该页面显示所有可供浏览者下载的文件,点击文件名即可下载相应的文件4留言功能:为了了解网站访问者对站点的意见,本系统提供留言功能,所有用户都可以通过导航栏上的“我要留言”链接进入留言板系统进行留言,无需注册,只需填写留言内容、主题、用户名即可进行留言。 5后台管理功能:当管理员登录后台管理后,可以进行新闻管理操作,包括发布新闻,对现有新闻的修改和删除;对文件的管理操作,包括文件上传、下载、删除等;用户管理操作,对管理员用户的增加、删除及修改个人信息等;图片管理操作,包括对图片的上传、删除等;留言管理操作,包括对留言的回复、审核、删除等操作。管理员可通过单击“安全退出”按钮来安全退出。第二章 概要设计在前面对用户需求的分析和研究的过程中,对于本系统中几个主要的功能模块大致有了一个抽象的认识。下面将通过概要设计,给出新闻发布系统的模块结构、流程描述和用户界面布局。2.1 开发与设计的总体思想 新闻发布系统面向各个层次的网络用户,为了使它适合更多的用户使用,系统的界面设计应该尽量做到简洁、友好、方便、易用,用户不需要专门的学习便可熟练操作。首页主要分为七个板块:图片新闻、热点新闻、最新公告、图片掠影、天气预报、下载中心、友情链接。首页头部logo有自动切换功能,管理员进入后台后,左边为导航条,分别有:用户管理、新闻管理、文件管理、图片管理、留言管理,右边为相应操作界面。 本系统采用BS模式,服务器端使用JSP进行动态网页的开发。并使用struts2的MVC模式,使用第三方文本编辑插件fckeditor。2.2 系统模块结构图 依据需求分析结果,新闻发布系统可以分为六个模块:数据库访问模块、新闻查看模块、新闻管理模块、上传管理模块、留言管理模块和用户管理模块,如图21所示。数据库访问模块新闻查看模块新闻发布系统新闻管理模块上传管理模块留言管理模块用户管理模块2-1系统模块结构图2.3 模块设计1、数据库访问模块:利用JavaBean封装对数据库的操作,主要包括连接数据库、添加、修改、删除、查询数据表、关闭连接等功能。当JSP页面中需要访问数据库时直接调用这个JavaBean即可。数据库访问模块功能树如图22所示。2-2数据库访问模块2、新闻查看模块:新闻查看模块提供分页显示全部新闻的功能,用户通过单击每条新闻的标题可以查看到本条新闻的详细内容。还可以通过输入查询类别和查询关键字来选择符合条件的新闻浏览。新闻查看模块功能树如图23所示。2-3新闻查看模块3、新闻管理模块:新闻管理模块包括修改新闻和删除新闻的功能。在进入管理模块前,需要以合法的管理员身份登录。新闻管理模块功能树如图24所示。发布新闻2-4新闻管理模块4、上传管理模块:上传管理模块包括文件上传、下载、删除功能,需以管理员身份进入系统才能操作。5、 留言管理模块:留言管理模块包括留言查看、审核、回复、删除功能需以管理员身份进入系统才能操作。6、用户管理模块:用户管理模块包括对系统管理员得添加、删除及个人信息修改功能,需提供管理员权限才能进行操作。2.4 功能图根据以上分析,可得系统功能图如下所示:搜索新闻发布新闻查看新闻编辑新闻删除新闻新闻管理查看文件下载文件上传文件上传管理网站后台管理删除文件查看图片上传图片删除图片图片管理查看留言审核留言回复留言删除留言新闻发布系统留言管理管理员设置浏览新闻网站前台管理员信息查询管理员信息增加管理员信息删除管理员影息修改留言下载文件2.5 数据库设计本系统主要涉及四张表:管理员表(admin)、新闻表(news)、文件表(upload)、留言表(messages)。采用MySql数据库。新闻:主要属性有Id、类别、关键字、发布人、文章来源、新闻内容、浏览次数、新闻标题以及发布时间。管理员表:主要属性有Id、姓名、密码。上传文件表:主要属性有Id、文件存放路径、文件名称、上传时间。留言表:主要属性有Id、主题、内容、回复内容、留言时间、留言人、心情、头像、父级留言Id、留言人Email存储新闻信息的news表。表结构如表2-1所示。表2-1 数据表news的结构名称字段数据类型主键非空新闻IDnews_idint(11)是是新闻类别news_typevarchar(10)否是新闻关键字news_keysvarchar(50)否否新闻发布人news_authorvarchar(30)否否新闻来源news_originvarchar(80)否否新闻内容news_contentlongtext否是新闻标题news_titlevarchar(100)否是新闻浏览次数news_readint(11)否否新闻发布时间news_timevarchar(20)否是admin数据表存储管理员的信息,表的结构如表2-2所示。表2-2 数据表admin的结构名称字段数据类型主键非空管理员IDIdint(11)是是管理员名称namevarchar(20)否是管理员密码passwordvarchar(30)否否存储上传文件的信息upload表,表结构如2-3所示。表2-3 数据表upload的结构名称字段数据类型主键非空文件Ididint(11)是是文件路径pathvarchar(100)否是文件名namevarchar(30)否是上传时间timevarchar(30)否是存储留言信息的表表2-4 留言表:字段名Desc类型长度备注Id留言编号int11主键title留言主题varchar30content留言内容textrecontent管理员回复内容texttime留言时间varchar20username留言人varchar20photo用户头像varchar20mood留言心情varchar20Email用户Emailvarchar30pid父级留言的Id,为0时表示无父级留言int11not null第三章 详细设计3.1 数据库访问功能:连接数据库实现:使用JDBC驱动,写一个工具类,提供加载驱动、建立连接、释放资源的静态方法,要用时直接通过类名.方法名调用。package com.king.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public final class DBConnector private static String url=”jdbc:mysql:/localhost:3306/newssys”;private static String user = root;private static String password = root;statictry Class.forName(com.mysql.jdbc.Driver); catch (ClassNotFoundException e) e.printStackTrace();public static Connection getConnection() throws SQLExceptionreturn DriverManager.getConnection(url,user,password);public static void free(ResultSet rs,Statement st,Connection con)try if(rs!=null)rs.close(); catch (SQLException e) e.printStackTrace(); finally try if(st!=null)st.close(); catch (SQLException e) e.printStackTrace(); finallytry if(con!=null)con.close(); catch (SQLException e) e.printStackTrace(); 3.2 新闻浏览功能:通过点击新闻查看新闻的详细内容实现:点击新闻后根据新闻ID查询出新闻详细内容,封装至新闻的JavaBean中,传至JSP页面,取出数据显示public News getNewsDetail(String news_id)News news = new News();try con = DBConnector.getConnection();ps = con.prepareStatement(select * from news where news_id=?);ps.setString(1, news_id);rs = ps.executeQuery();while(rs.next()news.setNews_id(rs.getInt(1);news.setNews_type(rs.getString(2);news.setNews_keys(rs.getString(3);news.setNews_author(rs.getString(4);news.setNews_origin(rs.getString(5);news.setNews_content(rs.getString(6);news.setNews_title(rs.getString(7);news.setNews_read(rs.getShort(8);news.setNews_time(rs.getString(9);ps = con.prepareStatement(update news set news_read=? where news_id=?);ps.setInt(1, news.getNews_read()+1);/将阅读次数加1ps.setString(2, news_id);ps.executeUpdate(); catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, ps, con);return news;3.3 新闻管理3.3.1 发布新闻:功能:管理员在后台发布新闻。实现:将新闻的信息存入数据库,添加成功则返回true,否则返回falsepublic boolean addArticle(String news_type, String news_title,String news_keys, String news_author, String news_content,String news_origin, String news_time, int news_read)boolean b = false;String sql = insert into news values (null,?,?,?,?,?,?,?,?);try con = DBConnector.getConnection();ps = con.prepareStatement(sql);ps.setString(1, news_type);ps.setString(2, news_keys);ps.setString(3, news_author);ps.setString(4, news_origin);ps.setString(5, news_content);ps.setString(6, news_title);ps.setInt(7, news_read);ps.setString(8, news_time);int result = ps.executeUpdate();if (result != 0) b = true; catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, ps, con);return b;3.3.2 编辑新闻:功能:修改新闻内容实现:根据新闻的ID,修改新闻信息。成功则返回true,否则返回false public boolean editArticle(String news_type, String news_title,String news_keys, String news_author, String news_content,String news_origin, String news_time, int news_read,String news_id)boolean b = false;String sql = update news set news_type=?,news_keys=?,news_author=?,news_origin=?,news_content=?,news_title=?,news_read=?,news_time=? where news_id=?;try con = DBConnector.getConnection();ps = con.prepareStatement(sql);ps.setString(1, news_type);ps.setString(2, news_keys);ps.setString(3, news_author);ps.setString(4, news_origin);ps.setString(5, news_content);ps.setString(6, news_title);ps.setInt(7, news_read);ps.setString(8, news_time);ps.setString(9, news_id);int result = ps.executeUpdate();if (result != 0) b = true; catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, ps, con);return b;3.3.3 删除新闻:功能:删除指定新闻实现:根据该新闻ID删除记录,成功返回true,否则返回false.public boolean deleteNews(String news_id)boolean b = false;try con = DBConnector.getConnection();ps = con.prepareStatement(delete from news where news_id=?);ps.setString(1, news_id);if(ps.executeUpdate()!=0)b=true; catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, ps, con);return b;3.3.3 搜索新闻:功能:根据关键字搜索新闻实现:接收搜索关键字,对新闻进行模糊搜索,并将搜索结果封装到一个PageModel的Bean中,该Ban存放了搜索结果的所有信息,返回至JSP页面后即可取出相应信息并显示。public PageModel searchNews(String key,int pageNow)PageModel newsModel = new PageModel();ArrayList newsList = new ArrayList();int totalRecord=0;try con = DBConnector.getConnection();ps = con.prepareStatement(select count(*) from news where news_title like ?);ps.setString(1, %+key+%);rs = ps.executeQuery();if(rs.next()totalRecord = rs.getInt(1);ps = con.prepareStatement(select * from news where news_title like ? limit ?,?);ps.setString(1, %+key+%);ps.setInt(2, pageSize*(pageNow-1);ps.setInt(3, pageSize);rs = ps.executeQuery();while(rs.next()News news = new News();news.setNews_id(rs.getInt(1);news.setNews_type(rs.getString(2);news.setNews_keys(rs.getString(3);news.setNews_origin(rs.getString(5);news.setNews_title(rs.getString(7);news.setNews_time(rs.getString(9);newsList.add(news); catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, ps, con);newsModel.setList(newsList);newsModel.setPageNow(pageNow);newsModel.setPageSize(pageSize);newsModel.setTotalRecords(totalRecord);return newsModel;3.4 上传管理3.4.1 上传文件功能:实现文件上传,可一次上传多个文件,并对文件大小、类型进行过滤实现:使用apache的common-fileupload组件实现,将文件上传至服务器,同时在数据库中存储相应文件的信息。1、上传至服务器:package com.king.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.Date;import java.util.List;import org.apache.struts2.ServletActionContext;import com.king.dao.UploadManager;import com.king.utils.DateFormatEditor;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport private List file;/file对应于表单的fileprivate List fileFileName;private List fileContenType;private String savePath;private int id;UploadManager uploadManager = new UploadManager();public int getId() return id;public void setId(int id) this.id = id;public String getSavePath() return savePath;public void setSavePath(String savePath) this.savePath = savePath;public List getFile() return file;public void setFile(List file) this.file = file;public List getFileFileName() return fileFileName;public void setFileFileName(List fileFileName) this.fileFileName = fileFileName;public List getFileContenType() return fileContenType;public void setFileContenType(List fileContenType) this.fileContenType = fileContenType;SuppressWarnings(deprecation)Overridepublic String execute()tryfor(int i = 0;i 0)os.write(buffer, 0, length);is.close();os.close();ServletActionContext.getRequest().setAttribute(state, uploadFileSucc);return SUCCESS;elsereturn ERROR;elsereturn ERROR;catch(Exception e)e.printStackTrace();return ERROR;return SUCCESS;2、文件信息存入数据库:public boolean savePath(String filePath,String name,String time) boolean flag = false;String sql = insert into upload values (null,?,?,?);try con = DBConnector.getConnection();pstmt = con.prepareStatement(sql);pstmt.setString(1, filePath);pstmt.setString(2, name);pstmt.setString(3, time);int result = pstmt.executeUpdate();if(result != 0) flag = true; catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, pstmt, con);return flag;3.4.2 删除文件功能:删除服务器中供下载的文件实现:删除服务器中供下载的文件,并删除数据库中相应的记录package com.king.action;import java.io.File;import org.apache.struts2.ServletActionContext;import org.omg.CORBA.Request;import com.king.dao.UploadManager;import com.opensymphony.xwork2.ActionSupport;public class DeleteFileAction extends ActionSupport private int id;public int getId() return id;public void setId(int id) this.id = id;Overridepublic String execute() throws Exception UploadManager manager = new UploadManager();String path = ServletActionContext.getRequest().getRealPath(/upload/file);System.out.println(manager.getFileNameById(this.getId();File file = new File(path,manager.getFileNameById(this.getId();tryif(manager.deleteFile(this.getId()file.delete();/删除磁盘上的文件ServletActionContext.getRequest().setAttribute(state, deleteFileSuc);catch(Exception e)e.printStackTrace();ServletActionContext.getRequest().setAttribute(state, deleteFileFail);return ERROR;return SUCCESS;3.5 留言管理功能:删除留言实现:根据后台指定要删除留言的Id,在数据库中删除留言及其下级留言public boolean deleteMessage(String id)boolean b = false;try con = DBConnector.getConnection();ps =con.prepareStatement(delete from messages where pid=?);ps.setString(1, id);ps.executeUpdate();ps = con.prepareStatement(delete from messages where Id=?);ps.setString(1, id);if(ps.executeUpdate()=1)b = true; catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, null, con);return b;3.6 用户管理3.6.1 添加用户public boolean addUser(String username,String password)boolean b = false;try con = DBConnector.getConnection();ps = con.prepareStatement(insert into admin(name,password) values(?,?);ps.setString(1, username);ps.setString(2, password);if(ps.executeUpdate()=1)b = true; catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, ps, con);return b;3.6.2 删除用户public boolean delUser(String userid)boolean b = false;try con = DBConnector.getConnection();ps = con.prepareStatement(delete from admin where Id=?);ps.setString(1, userid);if(ps.executeUpdate()=1)b = true; catch (SQLException e) e.printStackTrace();finallyDBConnector.free(rs, ps, con);return b;3.7 建立数据库本系统采用MySql6.0数据库3.7.1 表admin:CREATE TABLE admin ( Id int(11) NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL DEFAULT , password varchar(30) DEFAULT NULL, PRIMARY KEY (Id) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=gbk;3.7.2 表news:CREATE TABLE news ( news_id int(11) NOT NULL AUTO_INCREMENT, news_type varchar(10) NOT NULL, news_keys varchar(50) DEFAULT , news_author varchar(30) DEFAULT , news_origin varchar(80) DEFAULT , news_content longtext NOT NULL, news_title varchar(100)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生猪养殖场租赁与养殖场信息化建设合同范本
- 离婚后子女抚养权法律保障与教育资助合同
- 高端住宅租赁合同范本(含物业管理细则)
- 离婚共同债务电子协议书
- 直播带货商家与广告商合作的营销推广合同范本
- 教育机构线下校区2025年扩建项目绿色建筑技术应用报告
- 建筑工程中介人居间合同范本6篇
- 国际数学高中竞赛试题及答案
- 余姚四中教师考试试题及答案
- 公关传播中的社会责任传播效果-洞察及研究
- GB/T 19963.2-2024风电场接入电力系统技术规定第2部分:海上风电
- 机动车检测机构绩效考核方案
- 神州数码在线测评题答案
- 小学数学三年级(多位数乘一位数)连打版 2000题
- 小学生防性侵安全教育主题班会课件
- 佛教协会会议室管理制度
- 传音控股在线测评题
- GB/T 44139.2-2024睡袋的要求第2部分:原材料性能
- JT-T-496-2018公路地下通信管道高密度聚乙烯硅芯塑料管
- 2022年中国大唐集团有限公司招聘考试试题及答案
- 危重患者的抢救制度
评论
0/150
提交评论