开学小测总结(上)
河北省环保监测中心网络新闻发布系统(卷面成绩40分,占课程过程考核20分)
1、项目需求:
河北省环保监测中心网络新闻为搭建公众信息交流平台,决定建立新闻发布平台。新闻发布平台按内容包括中心新闻、企业环保信息发布等若干新闻栏目,新闻撰稿人可登陆平台发布新闻,每个新闻栏目至少有一位新闻栏目管理员,负责审查新闻撰稿人所发的新闻稿件,在审查通过后,对应新闻才可以显示在对应新闻栏目上,一般用户登录后才可以看到,另外还可以删除过时或无用的信息。另外,系统管理员可以对用户进行管理和对新闻栏目进行调整。新闻发布流程如下:
2.系统要求与功能设计
2.1 页面要求
(1)通过浏览器查看,能适应常用分辨率;(1分)
(2)布局合理、结构清晰、页面完整;(1分)
(3)网站页面整体风格统一;(1分)
(4)首页为用户登录页面,不同角色用户登录后,进入相应的功能页,要求密码在数据库中加密;(4分)
(5)新闻撰稿人功能页:在线撰写与修改稿件、查看已写稿件及修改意见;
(6)普通用户功能页:浏览相应栏目新闻、用户评论新闻(可匿名)、浏览其他用户评论;
(7)新闻栏目管理员功能页:浏览与管理本栏目待发与已发新闻;
(8)系统管理功能页:用户注册、用户权限管理、新闻栏目管理;
(9)对每页中的查询结果推荐采用分页显示。
2.2 功能要求
(1)在线撰写新闻稿件:新闻撰稿人在线撰写新闻,选择栏目,正式提交;(2分)
(2)查看修改意见:新闻撰稿人查看新闻栏目管理员提出的修改意见;(1分)
(3)修改新闻稿件:新闻撰稿人根据修改意见可以对新闻进行修改;(1分)
(4)查询已经撰写的新闻:新闻撰稿人可以查看自己已经撰写的新闻;(1分)
(5)浏览新闻:普通用户可以浏览栏目的新闻(按照时间倒排);(1分)
(6)发表评论回复:普通用户可以对新闻进行发表评论,可选择匿名回复;(1分)
(7)按照一定条件查询新闻:栏目管理员可以按照时间段,新闻关键字等条件进行查询;(2分)
(8)管理待发与已发新闻:新闻栏目管理员可以批准新闻发布、删除不合适新闻、给出撰稿人修改意见、对已发的过时新闻进行删除;(2分)
(9)管理新闻评论回复:新闻栏目管理员可以查看、删除、禁止新闻的回复;(2分)
(10)管理新闻栏目:新开新闻栏目、删除新闻栏目、合并新闻栏目、更改新闻栏目的基本信息;(2分)
(11)用户管理:管理员可以查询用户、批准新用户、暂停用户、为用户赋予角色,普通用户可以修改用户资料。(2分)
2.1,2.2 评分标准:以上各项分值为页面要求和功能要求,各项分值合计(24分);除此以外设计出合理的数据库和数据表(3分),数据库连接正常(2分),设计出用户权限管理(6分)。
2.3 网站发布
(1)网站制作完成后需指定一台机器作为服务器发布。
(2)在其他主机上可正常浏览。
评分标准:能够在Tomcat服务器中正确部署(3分),其它主机可正常浏览(2分);
首先为基础类:
package passage; public class XinWen { private String lanmu; private String zhengwen; private String timu; public String getLanmu() { return lanmu; } public void setLanmu(String lanmu) { this.lanmu = lanmu; } public String getZhengwen() { return zhengwen; } public void setZhengwen(String zhengwen) { this.zhengwen = zhengwen; } public String getTimu() { return timu; } public void setTimu(String timu) { this.timu = timu; } public XinWen(String lanmu, String zhengwen, String timu) { super(); this.lanmu = lanmu; this.zhengwen = zhengwen; this.timu = timu; } }
链接数据库的代码:
package tool; import java.sql.*; public class Tool { private static Connection connection; private static String url="jdbc:mysql://localhost:3306/teach?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; private static String user="root"; private static String pass="020907"; static { try { Class.forName("com.mysql.cj.jdbc.Driver"); }catch(ClassNotFoundException e){ e.printStackTrace(); } } public static Connection getConnection() { try { connection=DriverManager.getConnection(url,user,pass); }catch(SQLException e) { e.printStackTrace(); } return connection; } public static void release(Connection connection,Statement statement,ResultSet resultSet) { try { if(connection!=null) { connection.close(); } if(statement!=null) { statement.close(); } if(resultSet!=null) { resultSet.close(); } } catch(SQLException e) { e.printStackTrace(); } } }
首先是登陆的书写:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta charset="UTF-8"> <title>登录界面</title> </head> <body> <form action="denglu" method="post"> <center> <p> <select name="shenfen"> <option value="新闻撰稿人">新闻撰稿人</option> <option value="普通用户" >普通用户</option> <option value="新闻栏目管理员">新闻栏目管理员</option> <option value="系统管理员">系统管理员</option> </select> </p> <p>账户 <input type="text" name="hao"/> </p> <p>密码 <input type="password" name="password" /> </p> <p> <input type="submit" value="登录"> </p> </center> </form> </body> </html>
denglu.java
package denglu; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import tool.Tool; public class Denglu { public String find(String zhang) { Connection conn=Tool.getConnection(); PreparedStatement pre=null; ResultSet res=null; String password=null; String sql="SELECT *FROM yonghu where hao= ? "; try { pre=conn.prepareStatement(sql); pre.setString(1, zhang); res=pre.executeQuery(); while(res.next()) { String hao=res.getString("hao"); String passwords=res.getString("password"); String s=res.getString("shenfen"); password=passwords; } } catch(SQLException e) { e.printStackTrace(); }finally{ Tool.release(conn, pre, res); } return password; } }
Sev.java
package denglu; import java.io.IOException; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @WebServlet("/denglu") public class Sev extends HttpServlet{ @Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ String z = request.getParameter("hao"); String password=request.getParameter("password"); String shenfen =request.getParameter("shenfen"); switch(shenfen) { case "新闻撰稿人": Denglu d=new Denglu(); String p=d.find(z); if(p.equals(password)) { request.setAttribute("test", z); request.getRequestDispatcher("xinwenset.jsp").forward(request, response); }else { request.setAttribute("test", "密码错误"); request.getRequestDispatcher("tishi.jsp").forward(request, response); } break; case "系统管理功能": Denglu d1=new Denglu(); String p1=d1.find(z); if(p1.equals(password)) { request.setAttribute("test", z); request.getRequestDispatcher("xitong.jsp").forward(request, response); }else { request.setAttribute("test", "密码错误"); request.getRequestDispatcher("tishi.jsp").forward(request, response); } break; case "普通用户": Denglu d2=new Denglu(); String p2=d2.find(z); if(p2.equals(password)) { request.setAttribute("test", z); request.getRequestDispatcher("yonghu.jsp").forward(request, response); }else { request.setAttribute("test", "密码错误"); request.getRequestDispatcher("tishi.jsp").forward(request, response); } break; case "新闻栏目管理员": Denglu d3=new Denglu(); String p3=d3.find(z); if(p3.equals(password)) { request.setAttribute("test", z); request.getRequestDispatcher("xinwengl.jsp").forward(request, response); }else { request.setAttribute("test", "密码错误"); request.getRequestDispatcher("tishi.jsp").forward(request, response); } break; } } @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ doPost(request,response); } }
之后就是各种用户的界面设计,随后就是基本的增删改查的功能实现:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Insert title here</title> </head> <body> <form action="xw" method="post"> <center> 栏目: <select name="lanmu"> <option value="政治">政治</option> <option value="人文" >人文</option> <option value="自然">自然</option> </select> <p>题目 <input type="text" name="tm"/> </p> <p>正文 <input type="text" name="word"/> </p> <input type="hidden" name="method" value="add"/> <p> <input type="submit" value="提交"> </p> </center> </form> </body> </html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="xw" method="post"> 栏目: <input type="text" name="lanmu" value="${test.lanmu}" readonly/><br/> 标题:<input type="text" name="timu" value="${test.timu}"readonly/><br/> 正文:<input type="text" name="zhengwen" value="${test.zhengwen}"/><br/> <input type="hidden" name="method" value="up"/> <input type="submit" value="修改"/> </form> </body> </html>
以上是界面的大部分代码。