2022年JSP新闻发布系统课设报告 .pdf
程序语言综合课程设计设计报告学院:信息工程学院组长:黄敏(计算机中加141, 06号)成员:刘存国(计算机中加141, 16号)指导老师杨书新完成时间:2016 年 07 月 1 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 27 页 - - - - - - - - - 目录第一章需求分析 . 1 1.1 功能需求 . 1 1.2 性能需求 . 1 1.3 用户界面需求 . 2 1.4 安全需求 . 2 第二章总体设计 . 3 2.1 系统功能描述 . 3 2.2 E-R模型 . 4 2.3 系统功能模块划分. 5 2.4 系统流程图 . 6 第三章数据库设计 . 7 3.1 概念设计 . 7 3.2 逻辑设计 . 7 3.3 物理设计 . 7 第四章详细设计与实现. 9 4.1 前台界面和功能实现 . 9 4.2 后台界面和功能实现 . 12总结 . 25 致谢 . 25 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 27 页 - - - - - - - - - 1 第一章需求分析1.1 功能需求本系统的目的是实现新闻发布系统的基本功能。(1)查看新闻任何用户均可以使用查看新闻功能, 查看新闻功能在新闻首页显示最新新闻,用户可以点击首页的新闻标题链接查看相关新闻内容,可以根据新闻首页的分类新闻(如国内、社会等)查看你想要了解的新闻消息,也可以通过或者通过点击自己感兴趣图片的下方链接来查看相关新闻。(2)站内新闻检索功能任何用户均可以使用新闻搜素功能, 可通过关键词以及标题来搜索符合的新闻。(3)Admin管理员登录功能当用户需要使用新闻管理功能时,需要先以管理员的身份登录系统,在地址栏中输入管理员登录的地址, 进入登录页面。 用户在登录页面输入用户名和密码以及随机产生的验证码,若登录失败,则清空输入,并简要显示错误原因,管理员登录页面等待下一次登录,否则登录成功,从而使用新闻管理功能。(4)新闻类别管理Admin管理员登录后,可以对新闻的类别进行添加修改删除功能。(5)新闻发布功能获得权限的用户可以使用新闻发布功能。用户通过点击 “添加新闻” 项进入新闻发布页面,填写新闻的主题、标题、作者、摘要以及相关内容和图片,按提交键即可,发布时间取当前系统时间,不需用户填写。(6)新闻管理功能管理员登录后, 可进行新闻管理操作, 包括对现有新闻的删除和修改。在管理页面上,用户可通过单击每条记录右侧的“修改”或“删除”超链接来进行操作。当管理员本次维护结束后,可通过“login out”退出该页面。1.2 性能需求(1) Tomcat 可以免安装,体积小, 运行效率高,能很方便的在 Windows和 linux系统下发布。同时使用mysql 数据库,安装方便且免费使用,mysql 在 Windows和 linux下都能被良好的支持。而JSP 不但可以使用Myeclipse ,也可使用dreamweaver编辑,甚至记事本等文本编辑工具即可编写,因此对系统运行环境非常低,小型服务器和家用电脑均作为本系统运行环境。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 27 页 - - - - - - - - - 程序语言综合课程设计2 (2)界面设计友好美观、 数据要准确安全可靠; 实现对新闻信息的添加、 修改、删除,便于更新网站内容; 系统最大限度地实现易维护性和易操作性;对于一个新闻发布系统而言新闻信息是很多的,而且使用的人数较多, 所以对系统的安全性有着比较高的要求, 对于数据库, 要设置不同用户的权限, 数据的修改必须由合法用户操作。1.3 用户界面需求网站页面是用户直接访问的页面, 所以必须要让用户访问就能看出来这个网站的主题思想是什么, 一下就能体现出这个网站的中心内容。并且首页的模块之间要联系紧密,更好的让用户理解明白。1.4 安全需求由于使用 JSP编写的程序代码隐蔽, 在客户端仅可以看到由JSP输出的动态HTML 文件,因此只要编写程序时注意严谨性,防止SQL注入和 cookies 欺骗,整个系统的安全就能得到保障, 同时也能防止别人抄袭源代码。 本系统的管理员可以有多名,为防止暴力猜解密码, 在设计后台登录模块时需考虑验证码的设计。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 27 页 - - - - - - - - - 程序语言综合课程设计3 第二章总体设计高效的新闻发布系统可简便维护工作,使用新闻发布系统, 管理员只需设计标题、内容和图片等新闻, 系统将自动生成对应的网页,使新闻发布和管理变得很轻松。而对于前台界面,为适应多个用户的需求,必须达到友好、方便、简洁和易用的特点。本文将根据前期的需求分析,对新闻发布系统进行总体设计。2.1 系统功能描述新闻发布及管理系统包括新闻类别管理、新闻发布管理、 新闻查询和图片处理等模块。具体描述如下。1新闻类别管理:(1) 新闻类别的录入,包括类别名称等信息;(2) 新闻类别的修改;(3) 新闻类别的删除;(4) 新闻类别的查询。2新闻发布管理:(1) 基本新闻信息的发布,包括新闻标题、新闻内容和所属类别等;(2) 基本新闻信息的修改;(3) 基本新闻信息的删除;3图片处理模块:(1) 选择图片文件;(2) 上传图片文件;(3) 存储图片新闻;(4) 修改新闻图片;(5) 删除新闻图片;(6) 在网页中浏览新闻图片。4新闻查询模块:(1) 按照新闻类别分页显示新闻;(2) 按照日期分页显示新闻;(3) 按照新闻发布者查询。5系统用户管理功能:(1) 系统用户信息的录入,包括用户名和密码等信息;(2) 系统用户信息的修改;(3) 系统用户信息的删除。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 27 页 - - - - - - - - - 程序语言综合课程设计4 2.2 E-R模型根据分析可划分出新闻信息、 用户信息、评论信息以及新闻信息类别和几个实体,具体 E-R 模型如下。(1) 新闻信息图 2-1 新闻信息实体的E-R 图(2)用户信息图 2-2 用户信息实体的E-R 图(3)新闻类别信息图 2-3 新闻类别信息实体的E-R 图图 2-4 ER 关系模型图主题上传图片标题作者摘要内容用 户 名名密码类别ID名类别名称拥有属于1 1 M M 新闻信息用户信息新闻类别信息新闻信息新闻类别信息用户信息性别邮箱名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 27 页 - - - - - - - - - 程序语言综合课程设计5 2.3 系统功能模块划分从功能的内容可以看到, 该新闻发布系统可以实现6 个完整的功能。 我们根据这些功能,设计出系统的功能模块。图 2-5 系统功能模块图新闻发布及管理系统的功能模块之间的关系:图 2-6 新闻发布及管理系统的功能模块图新闻发布及管理系统新闻类别管理新闻发布管理新闻添加管理新闻查询模块新闻更新管理系统用户管理后台系统新闻类别管理基本信息发布新闻图片发布数据库前台系统查看新闻新闻删改管理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 27 页 - - - - - - - - - 程序语言综合课程设计6 2.4 系统流程图图 2-7 系统的基本流程图任何用户从浏览器输入地址进入本新闻发布系统后首先进入新闻主界面,即可进行新闻的查看, 根据标题或关键字进行浏览自己喜欢的新闻。点击登录与注册,进入登录页面, 未注册的用户能够选择注册,已注册的用户输入自己的用户名和密码可进入后台管理,有新闻的发布、新闻的管理、新闻的类别管理等。点击 login out即可退出本新闻系统。开始新闻系统首页查看新 闻注 册登 录管理员登录新闻发 布新闻修 改类别管 理新闻删 除退出名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 27 页 - - - - - - - - - 程序语言综合课程设计7 第三章数据库设计3.1 概念设计新闻发布系统中,主要需要以下数据来保持相应的信息:1新闻信息表:用于保存新闻信息的基本信息。2管理员信息表:用于保存新闻发布系统管理员的信息。3新闻主题信息表:用于保存新闻主题信息。3.2 逻辑设计本系统主要涉及四张表:新闻信息表(newsinfo ) 、管理员表( userinfo ) 、主题信息表( topic ) 。前面我们已给出他们的E-R图。上述四表的关系如下图所示:图 3-1 逻辑关系图3.3 物理设计本系统主要涉及四张表:新闻信息表(newsinfo ) 、管理员表( userinfo ) 、主题信息表( topic ) 。我们采用了 MySql 数据库 , 在数据库中使用数据表来储存现有的新闻信息。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 27 页 - - - - - - - - - 程序语言综合课程设计8 1. 存储新闻信息的 newsinfo 表,其中表的结构如表3-1 所示。表 3-1 新闻信息表newsinfo 2. 使用数据表userinfo来储存管理员的信息,表的结构如下表3-2 所示。表 3-2 管理员信息表userinfo 名称字段数据类型主键非空管理员 ID tid Int(11) 是是管理员名称tname Varchar(20) 否是管理员密码tpass Varchar(30) 否否3. 使用数据表 topic来储存新闻主题的信息,表的结构如下表3-4 所示。表 3-4 新闻类别信息名称topic名称字段数据类型主键非空主题 ID id Int(11) 是是主题名称topic_name Varchar(30) 否是名称字段数据类型主键非空新闻 ID id Int(10) 是是新闻标题title Varchar(50) 否是新闻发布人author Varchar(30) 否否新闻发布时间time Varchar(20) 否是新闻图片路径pic_path Varchar(80) 否否新闻内容content Varchar(100) 否是新闻摘要abstrate Varchar(50) 否否名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 27 页 - - - - - - - - - 程序语言综合课程设计9 第四章详细设计与实现4.1 前台界面和功能实现4.1.1 主页功能介绍1在 index.jsp页面有普通用户登录窗口,用户可以在主页面浏览新闻,和查看热点新闻列表和每条新闻的详情,用户点击“登录与注册”后在窗口输入账号密码后,登入成功,或者注册。2主页面的名称为index.jsp 如下图图 4-1 前台主页面图任何用户输入域名后直接进入到主页面,以上是从数据库加载的新闻列表和新闻话,题在主页实现的功能有:1. 查看从数据库加载出来所有的新闻主题、新闻列表;2. 用户可以点击右上角的“登录与注册”,跳转到后台登录界面。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 27 页 - - - - - - - - - 程序语言综合课程设计10 3主页的主要实现代码 < > 首页 新闻 图片 视频 娱乐 时尚 体育 财经 汽车 房产 购物 博客 登入与注册 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 27 页 - - - - - - - - - 程序语言综合课程设计11 %List list = (List) request.getAttribute(list); if (list = null | list.size() 1) out.print(没有任何新闻信息!); else % 15) str=str.substring(0,15)+.; % a href=Chakan.jsp?title= 天下要闻 迷惘的人,是因为迷失在物欲纵横的世界里,无法自拔,终日无所事事,庸庸碌碌过完一生,如行尸走肉;人不应作没有思想的芦苇,随波逐流。有梦的人,无论身处何处,都会有梦想指引前行,一路不觉所累,前行的才会更远,变得更强。我一直拥有一个梦想,因为 “ 他” ,即便沉舟侧畔,依旧千帆过。梦想与我一路逐波,我与梦想一路相随。 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 27 页 - - - - - - - - - 程序语言综合课程设计12 4.2 后台界面和功能实现4.2.1 后台功能介绍后台的主要功分为三块:(1)后台管理员登录与注册。(2)新闻类别的添加、删除;(3)新闻的添加、删除、查询、修改;4.2.2 登录与注册界面1后台登入界面如下图:图 4-2 后台登录界面图2后台注册界面如下图:图 4-3 后台注册界面图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 27 页 - - - - - - - - - 程序语言综合课程设计13 3实现页面主要代码: 登录 | 注册 忘记密码 | 意见反馈 | 返回首页 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 27 页 - - - - - - - - - 程序语言综合课程设计14 账号 : 密码 : 性别 : 男 女 邮箱 : 我已阅读并同意相关服务条款和隐私政策 4后台主界面图 4-4 后台主界面图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 27 页 - - - - - - - - - 程序语言综合课程设计15 主界面主要加载了当前管理员,登录状态, 安全退出按钮, 和导航栏的菜单功能及后台系统的功能介绍。4.2.3 新闻操作功能1对新闻操作界面如下图 4-5 后台对新闻添加界面图图 4-6 后台对新闻修改界面图1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 27 页 - - - - - - - - - 程序语言综合课程设计16 图 4-7 后台对新闻修改界面图2 图 4-8 后台新闻列表和删除操作界面图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 27 页 - - - - - - - - - 程序语言综合课程设计17 2实现主要代码(1)新闻添加代码: 主题 % List list = (List) request.getAttribute(list); if (list = null | list.size() 1) out.print(没有任何主题信息!); else for (topicBean td : list) % option value= 标题 作者 摘要 内容 上传图片 (2)新闻修改代码: 修改新闻: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 27 页 - - - - - - - - - 程序语言综合课程设计18 主题 标题 作者 摘要 内容 上传时间 图片上传路径 修改 % List list = (List) request.getAttribute(list); if (list = null | list.size() 1) out.print(没有任何新闻信息! ); else for (XinwenBean xw : list) % input type=hidden name= timevalue= (3)新闻查询代码: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 27 页 - - - - - - - - - 程序语言综合课程设计19 查询新闻: 按时间查询: 按作者查询: 按主题查询: (4)新闻删除代码 删除新闻: 主题 标题 作者 摘要 内容 上传时间 图片上传路径 删除 % List list = (List) request.getAttribute(list); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 27 页 - - - - - - - - - 程序语言综合课程设计20 if (list = null | list.size() 1) out.print(没有任何新闻信息! ); else for (XinwenBean xw : list) % input type=hidden name= timevalue= 4.2.4 话题操作功能1对新闻操作界面如下:图 4-9 后台主题添加和删除操作界面图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 27 页 - - - - - - - - - 程序语言综合课程设计21 2实现主要代码:(1)话题添加代码: 添加主题: 主要 Servlet代码:try Class.forName(com.mysql.jdbc.Driver); String url = jdbc:mysql:/localhost:3306/xw; String username = root; String password = hm6666; Connection conn = DriverManager.getConnection(url,username,password); Statement stat=conn.createStatement(); String sql = insert into topic(topic_name) values(?); PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, topic_name); temp=ps.executeUpdate(); if(temp=1) out.println(alert(添加新闻成功! );); stat.close(); ps.close(); conn.close(); else out.println(alert(添加新闻失败! );); catch (Exception e) e.printStackTrace(); response.sendRedirect(findTServlet); (2)话题删除代码: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 27 页 - - - - - - - - - 程序语言综合课程设计22 删除主题: % List list = (List) request.getAttribute(list); if (list = null | list.size() 1) out.print(没有任何主题信息!); else for (topicBean td : list) % option value= 主要 Servlet代码:request.setCharacterEncoding(UTF-8); String topic_name =request.getParameter(topic_name); System.out .println(topic_name); try Class.forName(com.mysql.jdbc.Driver); String url = jdbc:mysql:/localhost:3306/xw; String username = root; String password = hm6666; Connection conn = DriverManager.getConnection(url,username,password); String sql = delete from topic where topic_name=?; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, topic_name); ps.executeUpdate(); ps.close(); conn.close(); catch (Exception e) e.printStackTrace(); response.sendRedirect(findTServlet); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 27 页 - - - - - - - - - 程序语言综合课程设计23 4.2.5 全局页面分页功能1系统中使用分页技术界面如下:图 4-10 前台显示新闻分页界面图图 4-11 后台显示用于修改新闻分页界面图图 4-12 后台显示用于删除新闻分页界面图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 27 页 - - - - - - - - - 程序语言综合课程设计24 2 分页技术主要代码如下:request.setCharacterEncoding(UTF-8); int currPage = 1; / 当前页码if(request.getParameter(page) != null) / 判断传递页码是否有效currPage = Integer.parseInt(request.getParameter(page);/ 对当前页码赋值 NewsDao dao = new NewsDao(); / 实例化 BookDao List list = dao.find(currPage); / 查询所有新闻信息request.setAttribute(list, list);/ 将list放置到 request中int pages ; / 总页数int count = dao.findCount(); / 查询总记录数if(count % XinwenBean.PAGE_SIZE = 0) / 计算总页数pages = count / XinwenBean.PAGE_SIZE ; / 对总页数赋值 else pages = count / XinwenBean.PAGE_SIZE + 1; / 对总页数赋值 StringBuffer sb = new StringBuffer(); currPage-; sb.append( + 上一页 + ); sb.append(); currPage+; sb.append( + currPage +/+pages+ ); sb.append(); if(currPage=pages) currPage=pages; else currPage+; sb.append( + 下一页 + ); request.setAttribute(bar, sb.toString(); request.getRequestDispatcher(*.jsp).forward(request, response);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 26 页,共 27 页 - - - - - - - - - 程序语言综合课程设计25 总结经过两个星期的课程设计, 新闻发布系统基本功能完成, 但是功能不是很齐,界面也不是很好看。那是因为,两个星期的时间有点不够,时间显得十分紧凑,但我们一直努力对待, 争取使新闻发布系统的功能更加完善。本系统基本能够完成新闻发布、新闻修改、新闻删除、主题删除、主题添加等基础的功能,使用户方便进行新闻浏览和管理员对新闻进行修改、新闻删除。我们开发的这个新闻发布系统还存在许多漏洞和不足,由于时间和技术问题,还得以后继续改进,希望以后能把这个系统完善。经过此次课程设计, 我们发现要用到许多我们上课讲到的知识,还有些上课没讲到的,要通过自己上网搜索或请教别人学习的知识点。把之前学的知识用了一遍后不紧活学活用, 而且增加了自信, 加强了我们解决问题的能力。 特别是要实现一个功能时不是一下子就能完成的,期间会遇到许多困难, 会感到困惑, 但是不要紧, 只要一心想实现那个功能, 通过自己的努力实现了此功能,会感到无比舒畅与自信。 这对我们以后面对各种困难打好了应对基础。因此,这次课程设计对我们的意义很大。致谢此次课设我们非常感谢我们的指导老师- 杨书新,是有了老师严格要求我们必须认真完成此次课程设计,我们有了压力和学习的动力去完成此次课程设计。杨老师在专业上能力很强, 最主要的是懂得如何让我们学到东西。他常说不管做什么,目的只是为了让你们学到东西。我们已经上过杨老师几门课程了,每次都觉得会学到很多知识, 并且学到许多学习方法。 比如说, 杨老师经常会给我们拿一段代码来讲, 告诉我们他是如何一点一点的分析和看懂代码的。我们以后也会按照杨老师的方法继续学习新的知识,让自己的专业能力提升。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 27 页,共 27 页 - - - - - - - - -