JSP网站新闻管理系统-计算机专业毕业设计-毕业论文.doc
JSP网站新闻管理系统毕业设计论文系别专业班级姓名学号指导教师24目 录前 言II第一章 系统分析11.1 需求分析11.2 可行性分析1第二章 总体设计22.1 项目规划22.2 系统功能结构图2第三章 系统设计43.1 设计目标43.2 开发及运行环境43.3 逻辑结构设计4第四章 网站总体架构54.1 网站首页的运行结果5第五章 网站后台主要功能模块设计85.1 后台登陆模块设计85.2 会员回复模块设计95.3 会员修改个人信息模块设计115.4 会员删除新闻145.5 总结15第六章 网站前台主要功能模块设计166.1 今日新闻的显示166.2 查看新闻具体内容模块的设计176.3 输入新闻的关键字查找新闻186.4 游客留言模块的设计20附录B 数据表22 前 言Internet的蓬勃发展,使新闻的传播方式发生了巨大的变化,传统的信息传播媒体电视、广播、报纸已经不再是人们茶余饭后的主要精神甜点,人们更多的开始关注网络新闻。由于互联网所容纳的信息量大、内容丰富、信息及时、准确,更有相关信息的全面的介绍与比较,大大地方便了人们的阅读,因此在短短几年的时间里,互联网便济身于众多媒体之间,并具有相当一部分媒体人群。借此东风,新闻网也迅速发展起来,它内容丰富,涉及到商业、工业、农业、银行、财政、教育、娱乐、信息等各个产业,信息量大,不仅有实事新闻,还有相关的行业信息,同时新闻网具有互联网所具备的一切特性。在全球网络化、信息化的今天,新闻网迅速发展,大大地丰富了人们的生活,不知不觉中,它已经成为人们生活中不可或缺的重要组成部分。第一章 系统分析1.1 需求分析通过相关调查,要求网站具有以下功能;提供新闻搜索功能。发布新闻的功能。留言的功能。回复的功能。为后台管理提供管理入口。1.2 可行性分析网站新闻管理系统后台对新闻作了详细的分类,前台以分类形式显示新闻的详细信息,满足了人们浏览新闻网时分类查看新闻信息的要求,同时提供新闻信息查询功能,方便浏览者查找相关的新闻信息。新闻网后台则通过对会员设置和管理员添加等模块对网站管理员进行管理,保证了网站的安全性。第二章 总体设计2.1 项目规划新闻网是一个功能完善的新闻类网站,由客户前台新闻浏览和后台新闻管理两大部分组成。前台功能模块前台主要包括新闻分类、显示新闻详细信息、新闻信息查询、发布新闻、留言、回复、会员注册、会员登录、提供后台登录口。后台管理模块后台主要包括新闻类型管理、会员的管理。2.2 系统功能结构图新闻网前台功能结构新闻分类新闻详细信息新闻信息查询留言发布新闻后台登录口新闻发布系统前台功能结构,如图2-1所示。图2-1 新闻网前台功能结构图新闻网后台功能结构,如图2-2所示。新闻网后台功能结构会员管理员发布新闻修改个人信息修改新闻删除新闻查看留言并回复添加类别查看类别修改类别查看用户图2-2 新闻网后台功能结构图第三章 系统设计3.1 设计目标本网站是根据各行业新闻信息分类进行开发设计的,主要实现如下目标:显示新闻的详细信息。设置新闻搜索功能模块。会员发布新闻、查看留言并进行回复。游客留言。3.2 开发及运行环境硬件平台:CPU:P41.8GHz;内存:256MB以上。软件平台:操作系统:Windows 2000;开发工具包:JDK Version1.4.1;Web服务器:Tomcat;浏览器:IE5.0,推荐使用IE6.0;分辨率:最佳效果1024*768像素。3.3 逻辑结构设计本系统数据库采用access数据库,系统数据库名称为db1。数据库db1s中包含6张表。关于数据库中的数据表请参见附录B第四章 网站总体架构4.1 网站首页的运行结果网站前台首页的运行结果如图4-1所示。321图4-1 网站前台首页运行结果网站框架图说明如如表4-1所示: 表4-1 网站前台首页页面说明区域名称说明对应文件1内容显示主要用于显示所有的新闻ckxinwen.jsp2搜索新闻主要用于快速查找新闻lxw.jsp3功能模块主要用于显示导航模块中的功能adminLogin.jspzhuce.jspyhdel.jsp网站后台会员首页的运行结果如图4-2所示。21图4-2 会员后台首页运行结果会员后台首页中的各部分说明如表4-2所示。表4-2 会员台首页页面说明区域名称说明对应文件1网站导航主要链接各个功能模块ly.jsp2内容显示主要用于显示功能模块中的内容rz.jsp网站后台管理员首页的运行结果如图4-3所示。12图4-3 管理员后台首页运行结果管理员后台首页中的各部分说明如表4-3所示。表4-3管理员后台首页页面说明区域名称说明对应文件1网站导航主要链接各个功能模块zuo.jsp2内容显示主要用于显示功能模块中的内容you.jsp第五章 网站后台主要功能模块设计5.1 后台登陆模块设计在新闻发布系统中,后台分为两种:一个是普通管理员,即会员。他可以发布新闻、修改新闻、删除新闻、查看留言、回复、修改个人信息;另一个是总管理员,他可以对新闻的类别进行修改、添加、查看、对会员进行查看。总管理员和普通管理员都能通过前台登录页面登录后台。在前台单击“管理员登陆”超链接,即可进入到后台登录页面,如图5-1所示。图5-1 会员登录页面 .5.1.1.后台的验证<body><%! public String transch(String str) try byte lb=str.getBytes("iso-8859-1"); str=new String(lb,"utf-8"); return str; catch(Exception e)return str; %><% String user=transch(request.getParameter("user"); session.setAttribute("user",user); String pwd=transch(request.getParameter("pwd"); Connection con; Statement sql; ResultSet rs; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM user where user='"+user+"' and password='"+pwd+"'"); if(rs.next()%><jsp:forward page="yonghupage.jsp"/><%else %><jsp:forward page="yhdel.jsp" /><%con.close();catch(SQLException el)%></body>5.2 会员回复模块设计会员登陆成功后,可以查看自己发布的新闻的留言,并对留言进行回复。运行结果如图5-2所示:图5-2 留言显示页面5.2.1.查看留言页面的显示通过传递新闻的编号查看留言,具体代码如下:<body background="4.JPG"><%! public String transch(String str) try byte lb=str.getBytes("iso-8859-1"); str=new String(lb,"utf-8"); return str; catch(Exception e)return str; %> <% String isbn=transch(request.getParameter("isbn"); Connection con; Statement sql; ResultSet rs; ResultSet rs1; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM liuyan where isbn='"+isbn+"'"); while(rs.next()%><form name="form1" method="post" action="huifusave.jsp"> <p>新闻编号: <input name="isbn" type="text" id="isbn" value="<%=rs.getString("isbn")%>"/> </p> <p>新闻题目: <input name="timu" type="text" id="timu"value="<%=rs.getString("timu")%>"/></p> <p>留言: <textarea name="liuyan" id="liuyan"><%=rs.getString("liuyan")%></textarea></p> <p>回复: <textarea name="huifu" id="huifu"></textarea></p><% con.close();catch(SQLException e) out.print(e);%> <p> <input type="submit" name="Submit" value="提交"> </p>5.2.2.后台数据插入后台插入数据库的代码如下:<body><%! public String transch(String str) try byte lb=str.getBytes("iso-8859-1"); str=new String(lb,"gb2312"); return str; catch(Exception e)return str; %><% String huifu=transch(request.getParameter("huifu"); String isbn=transch(request.getParameter("isbn"); String timu=transch(request.getParameter("timu"); String liuyan=transch(request.getParameter("liuyan"); Connection con=null; Statement sql=null; ResultSet rs=null; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException event) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); String condition="INSERT INTO huifu VALUES('"+isbn+"','"+timu+"','"+liuyan+"','"+huifu+"')" int i=sql.executeUpdate(condition); if(i>0) %> <jsp:forward page="lly.jsp"/> <%else%> <jsp:forward page="huifu.jsp"/> <% con.close(); catch(SQLException event) %></body>5.3 会员修改个人信息模块设计会员登录成功后,可对个人的信息进行修改。运行结果如图5-3所示:图5-3 查看个人信息页面5.3.1.会员信息页面的显示查看个人信息的代码如下:<body background="4.JPG"><% Object obj = session.getAttribute("user"); String user = obj.toString();Connection con; Statement sql; ResultSet rs; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM user where user='"+user+"'"); if(rs.next()%><form name="form1" method="post" action="userupdate.jsp"> <table width="356" border="0.5" align="center" cellspacing="20"> <tr> <td>用户编号</td> <td><input name="userid" type="text" id="userid" value="<%=rs.getString("userid")%>"></td> </tr> <tr> <td width="116">用户名:</td> <td width="224"><input name="user" type="text" id="user"value="<%=rs.getString("user")%>"></td> </tr> <tr> <td>密码:</td> <td><input name="password" type="text" id="password"value="<%=rs.getString("password")%>"></td> </tr> <tr> <td>性别:</td> <td><input name="sex" type="radio" value="男" checked> 男 <input type="radio" name="sex" value="女"> 女</td> </tr> <tr> <td>年龄:</td> <td><input name="age" type="text" id="age2"value="<%=rs.getString("age")%>"></td> </tr> <tr> <td>地址:</td> <td><input name="adds" type="text" id="adds2"value="<%=rs.getString("adds")%>"></td> </tr> <tr> <td height="54">邮箱:</td> <td><input name="email" type="text" id="email2"value="<%=rs.getString("email")%>"></td> </tr> <% con.close();catch(SQLException e) out.print(e);%> <tr> <td height="50"><div align="center"> </div></td> <td><div align="center"> <input type="submit" name="Submit2" value="提交"> </div></td> </tr> </table></form></body>5.3.2.后台数据的更改后台保存的代码如下:<body><%! public String transch(String str) try byte lb=str.getBytes("iso-8859-1"); str=new String(lb,"gb2312"); return str; catch(Exception e)return str; %><% String userid=request.getParameter("userid");String user=transch(request.getParameter("user");String password=transch(request.getParameter("password");String sex=transch(request.getParameter("sex");String age=transch(request.getParameter("age");String adds=transch(request.getParameter("adds");String email=transch(request.getParameter("email"); Connection con=null; Statement sql=null; ResultSet rs=null; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException event) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); String condition="update user set user='"+user+"',password='"+password+"',age='"+age+"',adds='"+adds+"' ,email='"+email+"' where userid='"+userid+"' " int i=sql.executeUpdate(condition); if(i>0)out.print("修改成功 <a href=yonghupage.jsp>请返回</a>" ); %> <%elseout.print("修改失败 <a href=xfxx.jsp>请返回</a>" );%> <% con.close(); catch(SQLException event) %></body>5.4 会员删除新闻会员登录成功后对自己发布的新闻可以进行删除,对别的会员发布的新闻则无法删除。运行界面如图5-4:图5-4 删除新闻页面通过获得新闻的编号来对新闻进行删除,具体代码如下:5.4.1.后台数据库中数据的删除<body><%String isbn=request.getParameter("isbn");Connection con; Statement sql; ResultSet rs; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); int i=sql.executeUpdate("delete FROM xinwen where isbn='"+isbn+"'"); con.close(); %> <jsp:forward page="deletexw.jsp"/> <% catch(SQLException e1) %></body>5.5 总结对新闻信息管理的操作,主要应用到添加、删除、修改和查询的功能,在本小节反复的应用到这四种sql语句。第六章 网站前台主要功能模块设计6.1 今日新闻的显示新闻全部内容运行结果如图6-1所示:图6-1 新闻显示页面6.1.1.查看所有新闻页面的显示这个功能就是新闻的查看,主要用到了sql语句中的select语句。显示所有的新闻具体的代码如下:<% Connection con; Statement sql; ResultSet rs; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM xinwen"); while(rs.next()%> <tr> <td><%String isbn=rs.getString("isbn");%><%=isbn%></td> <td><%=rs.getString(2)%></td> <td><%=rs.getString(5)%></td> <td><a href="look.jsp?isbn=<%=isbn%>" target="rightFrame">查看新闻</a></td></tr> <% con.close(); catch(SQLException e1) out.print(e1.getMessage(); %> 6.2 查看新闻具体内容模块的设计6.2.1.新闻详细内容的显示通过传递新闻编号的值从数据库中查找对应的新闻并显示,具体代码如下: <% String isbn=request.getParameter("isbn"); Connection con; Statement sql; ResultSet rs; ResultSet rs1; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM xinwen where isbn='"+isbn+"'"); if(rs.next()%><form name="form1" method="post" action="liuyan.jsp"> </p> <div align="left">编号: <input name="isbn" type="text" id="isbn"value="<%=rs.getString("isbn")%>" size="20"> </div> <p>题目: <input name="timu" type="text" id="timu" value="<%=rs.getString("timu")%>" size="20"/> </p> <p>内容: <textarea name="neirong" cols="45" rows="5" id="neirong"><%=rs.getString("neirong")%></textarea> </p> <p>发布人: <input name="faburen" type="text" id="faburen" value="<%=rs.getString("fabuzhe")%>" size="20"/></p> <p>留言: <textarea name="liuyan" cols="45" rows="5" id="liuyan"></textarea></p><% con.close();catch(SQLException e) out.print(e);%> <p align="left"> <input type="submit" name="button" id="button" value="提交" /> <a href="lhf.jsp?isbn=<%=isbn%>" target="rightFrame">查看回复</a> <div align="right" class="style1"><a href="ckxinwen.jsp" target="rightFrame">返回 </a> </div></form>6.3 输入新闻的关键字查找新闻关键字查找新闻就是在文本框中输入新闻的相关内容,执行SQL语句,查找相关新闻信息,其中的下拉列表框是一个查询的动作,实现过程与前面的后台新闻相似,这里就不做介绍了。新闻查找运行结果如图6-2所示。图6-2 关键字查询6.3.1.新闻搜索并显示关键字查找新闻控制层代码实现如下:<%! public String transch(String str) try byte lb=str.getBytes("iso-8859-1"); str=new String(lb,"utf-8"); return str; catch(Exception e)return str; %><% String key=transch(request.getParameter("key"); String leibie=transch(request.getParameter("leibie"); Connection con; Statement sql; ResultSet rs; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException e) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); rs=sql.executeQuery("SELECT * FROM xinwen where neirong like '%"+key+"%' and leibieid='"+leibie+"'"); if(rs.next()%><form name="form1" method="post" action="liuyan.jsp">编号: <input name="isbn" type="text" id="isbn" size="20" value="<%=rs.getString("isbn")%>"/> <p>题目: <input name="timu" type="text" id="timu" value="<%=rs.getString("timu")%>" size="20"/></p> <p>内容: <textarea name="neirong" cols="45" rows="5" id="neirong"><%=rs.getString("neirong")%></textarea> </textarea> </p> <p>发布人: <input name="faburen" type="text" id="faburen" value="<%=rs.getString("fabuzhe")%>" size="20"/></p> <p>留言: <textarea name="liuyan" cols="45" rows="5" id="liuyan"></textarea></p> <p align="left"> <input type="submit" name="button" id="button" value="提交" /> </p> <div align="right" class="style1"><a href="ckxinwen.jsp" target="rightFrame">返回 </a> </div> <% elseout.print("对不起,找不到相关的新闻"); con.close();catch(SQLException e) out.print(e);%></form>通过上述的方法,在jsp页面利用String key=transch(request.getParameter("key"); String leibie=transch(request.getParameter("leibie");找到相关新闻,在页面中使用即可。6.4 游客留言模块的设计游客留言就是游客查看新闻后,对新闻发布留言,通过执行SQL语句,插入数据库中。留言运行结果如图6-3所示图6-3 留言6.4.1.后台数据库的插入<%! public String transch(String str) try byte lb=str.getBytes("iso-8859-1"); str=new String(lb,"gb2312"); return str; catch(Exception e)return str; %><% String isbn=transch(request.getParameter("isbn");String timu=transch(request.getParameter("timu");String liuyan=transch(request.getParameter("liuyan"); Connection con=null; Statement sql=null; ResultSet rs=null; tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundException event) try con=DriverManager.getConnection("jdbc:odbc:wzxw","",""); sql=con.createStatement(); String condition="INSERT INTO liuyan VALUES('"+isbn+"','"+timu+"','"+liuyan+"')" int i