网站论坛设计报告_第1页
网站论坛设计报告_第2页
网站论坛设计报告_第3页
网站论坛设计报告_第4页
网站论坛设计报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

告题目:论坛系统姓名:学号:指导教师:2011年11月计算机科学与应用系一、系统分析

1、需求分析对于本论坛系统来说用户可以发帖子,浏览帖子,包括三种权限分别是:管理者、版主、普通用户,不同权限的用户登录到系统后所看到的功能不同,具体分析参考功能分析等;2、功能分析该论坛体功能如下:用户设置模块:用来管理用户信息,包括新增用户,更新用户,删除用户等前台功能包括版块列表,主题列表,显示主题详细内容,发表主题,回复主题,主题管理,用户注册,用户登录模块。版块列表模块:显示论坛的所有根版块及其下所有的子版块,还可显示子版块下的主题数目主题列表模块:显示指定版块下的所有主题信息及发帖者的信息和回复记录数显示主题详细内容模块:显示主题的详细信息机该主题下的所有回复信息。二、系统模块划分论坛用户有三种权限:管理员,版主,普通用户。管理员拥有最高权限;版主是每个版块的管理者,可以发表主题还可以对该板块的信息进行维护;普通用户只可以浏览帖子,在登录系统后可以发表帖子回复帖子;三、数据库设计

1、用户表(user)列名类型主键外键是否为空说明namecharYNN用户名passwordcharNNN密码mailvarcharNNN邮箱qqcharNNYQQproblemvarcharNNN密保问题answervarcharNNN密保答案typeintNNN权限(默认普通用户)

2、版块信息表(model)列名数据类型主键外键是否为空说明idintYNN版块标号namevarcharNNN版块名字countintNNY帖子数目masterNameintNNY版主名3、主题信息表(theme)列名数据类型主键外键是否为空说明t_idintYNN主题编号m_idintYYN所在版块u_namecharYYN发帖人titlevarcharNNY主题名contentvarcharNNY主题内容replyCountintNNY回复次数clickCountintNNY浏览次数dateDateNNY发帖时间4、回复信息表(feedback)列名数据类型主键外键是否为空说明idintyny回复帖子号midintnyy版块号tidintnyy主题号unamecharnny发帖者topicvarcharnnn主题contentvarcharnnn内容publishTimevarcharnnn发帖时间modifyTimevarcharnnn修改时间四、关键代码1、数据库连接代码(DataBaseConnection.java)

publicclassDataBaseConnection{ publicstaticConnectiongetConnection(){ Connectionconn=null; try{ Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/bbs","root","123"); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnconn; }publicstaticvoidcloseConnection(Connectionconn){ if(conn!=null) try{ conn.close(); }catch(SQLExceptione){ e.printStackTrace(); }}publicstaticvoidcloseResultSet(ResultSetrs){ if(rs!=null) try{ rs.close(); }catch(SQLExceptione){ e.printStackTrace(); }}publicstaticvoidclosePreparedStatment(PreparedStatementps){ if(ps!=null) try{ ps.close(); }catch(SQLExceptione){ e.printStackTrace(); }}}2、用户登录及注册处理代码(CheckDataBase.java)

publicclassCheckDataBase{//判断数据库中是否存在该用户,如果存在则注册不成功 publicbooleanisExist(Stringusername)throwsException{ Connectioncon=DataBaseConnection.getConnection(); Stringsql="select*fromuserwherename=?"; try{ PreparedStatementstatement=con.prepareStatement(sql); statement.setString(1,username); ResultSetset=statement.executeQuery(); if(!set.next()){ //如果无效则证明此用户名可用 returntrue; } DataBaseConnection.closeResultSet(set); DataBaseConnection.closePreparedStatment(statement); } catch(SQLExceptione){ e.printStackTrace(); } finally{ DataBaseConnection.closeConnection(con); } returnfalse; }//判断数据库中是否存在某个用户,若存在注册不成功,若不存在注册成功publicvoidsaveDataBase(UserBeanuser)throwsException{ Connectioncon=DataBaseConnection.getConnection(); Stringsql="insertintouser(name,password,mail,qq,problem,answer,photo,type)values(?,?,?,?,?,?,?,?)"; try{ PreparedStatementps=con.prepareStatement(sql); ps.setString(1,user.getName()); ps.setString(2,user.getPassword()); ps.setString(3,user.getMail()); ps.setString(4,user.getQq()); ps.setString(5,user.getProblem()); ps.setString(6,user.getAnswer()); ps.setString(7,user.getPhoto()); ps.setInt(8,user.getType()); ps.executeUpdate(); DataBaseConnection.closePreparedStatment(ps); }catch(SQLExceptione) { e.printStackTrace(); } finally{ try{ DataBaseConnection.closeConnection(con); }catch(Exceptione2){ //TODO:handleexception } } }//按用户名查询publicUserBeanfindByName(Stringname){ UserBeanuser=null; Connectioncon=DataBaseConnection.getConnection(); Stringsql="select*fromuserwherename=?"; try{ PreparedStatementps=con.prepareStatement(sql); ps.setString(1,name); ResultSetrs=ps.executeQuery(); if(rs.next()) {user=newUserBean(); user.setName(rs.getString(1)); user.setPassword(rs.getString(2)); user.setMail(rs.getString(3)); user.setQq(rs.getString(4)); user.setAnswer(rs.getString(5)); user.setProblem(rs.getString(6)); user.setPhoto(rs.getString(7)); user.setType(rs.getInt(8)); } }catch(Exceptione){ e.printStackTrace(); } returnuser;}//得到用户的权限publicStringgetLimit(intlimit){ Stringstr=null; switch(limit){ case0: { str="管理员"; break; } case1:{ str="版主"; break; } case2:{ str="普通用户"; break; } } returnstr;}//用户登录publicUserBeanlogin(Stringusername,Stringpassword)throwsException{ UserBeanuser=null; Connectioncon=DataBaseConnection.getConnection(); Stringsql="select*fromuserwherename=?andpassword=?"; try{ PreparedStatementps=con.prepareStatement(sql); ps.setString(1,username); ps.setString(2,password); ResultSetresult=ps.executeQuery(); if(result.next()){ user=newUserBean(); user.setName(result.getString(1)); user.setPassword(result.getString(2)); user.setMail(result.getString(3)); user.setQq(result.getString(4)); user.setAnswer(result.getString(5)); user.setProblem(result.getString(6)); user.setPhoto(result.getString(7)); user.setType(result.getInt(8)); } DataBaseConnection.closeResultSet(result); DataBaseConnection.closePreparedStatment(ps); }catch(Exceptione){ //TODO:handleexception } finally{ DataBaseConnection.closeConnection(con); } returnuser;}}3、发帖子页面PostTheme.jsp

<%@pagelanguage="java"import="java.util.*"pageEncoding="gbk"%><%@pageimport="bean.*"%><%UserBeanuser=(UserBean)session.getAttribute("user");%><tablealign="center"border="1"width="400"><tr><td>欢迎你!<%=user.getName()%></td></tr><tr><td><formname="form1"action="PostTheme"method="post">主题:  <inputtype="text"name="title"size=10/>[不超过20个字]<br/>选择版块:<selectid="theme"name="theme"><optionvalue="JavaSE">JavaSE</option><optionvalue="JavaEE">JavaEE</option><optionvalue="JSP">JSP</option><optionvalue="Reading">Reading</option></select><br/>内容:<br><textarearows="30"cols="50"name="text"style="margin-left:10px"></textarea><br/><inputtype="submit"name="submit"value="提交"><inputtype="reset"name="reset"value="重置"></form></td></tr></table>4、查看详细帖子的页面:detail.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="gbk"%><%@pagecontentType="text/html;charset=gbk"%><%@pageimport="bean.*"%><%@pageimport="daoFactory.DaoFactory"%><%@pageimport="login_regedit.CheckDataBase"%><%//获得某个主题帖子下的所有回复 List<ReplyBean>list=(List<ReplyBean>)request.getAttribute("list");//获得回复的帖子的主题 ThemeBeantheme=(ThemeBean)request.getAttribute("theme"); //获得回复帖子的权限 CheckDataBasecdb=newCheckDataBase(); inttype=0; Stringstr=null; intmid=0; intid=0; Stringuname=null; Stringtitle=null; if(theme!=null){ type=cdb.findByName(theme.getU_name()).getType(); str=cdb.getLimit(type); mid=theme.getM_id();//获得版块的id uname=(DaoFactory.getModelInstance().getModel(mid)).getMasterName();//获得该版块版主的昵称 title=theme.getTitle(); id=theme.getId(); }intsize=0; if(size!=0){ //获得所有回复记录的个数 size=(Integer)request.getAttribute("size");}%><tablewidth="900"align="center"border="0"><tr><tdcolspan="2"><%@includefile="banner.jsp"%></td></tr> <trbgcolor="#cccccc"> <tdcolspan="2"><%=title%></td> </tr> <% if(theme!=null){ %> <trheight="200"> <thwidth="200"> <b>#1</b> <br> <imgalt="头像"src="image/photo.gif"/> <br> 用户名:<%=theme.getU_name()%><br> 组别: <%=str%> </th> <th> <%=theme.getContent()%><br> <br> <br> <divalign="left"> 发贴时间[<%=theme.getDate()%>] </div> </th> </tr><%}%><%--显示回复的帖子--%><%inttotalRecord=0;//回复的总次数inttotalPage;//总页数intperCount=2;//每页有十条记录intnextPage;//下一页intper=0;Stringss=request.getParameter("page");intcurrentPage;if(ss==null||ss==""){ ss="1";} currentPage=Integer.parseInt(ss);if(currentPage<1)currentPage=1;if(list!=null){totalRecord=list.size();}totalPage=(totalRecord+perCount-1)/perCount;if(currentPage>totalPage)currentPage=totalPage;for(inti=0;i<totalRecord;i++){ ++per; if((per>=(current1)*perCount+1)&&per<=currentPage*perCount){ intlimit=(newCheckDataBase()).findByName(list.get(i).getUname()).getType(); Stringquanxian=(newCheckDataBase()).getLimit(limit); %> <tr><tdcolspan="2"><hrwidth="90%"align="center"/></td></tr> <trheight="200"> <tdwidth="200"align="center"> <b>#<%=i+2%></b><br> <imgalt="头像"src="image/photo.gif"><br/> 用户名:<%=list.get(i).getUname()%><br> 权限:<%=quanxian%> </td> <tdvalign="top"> <%=list.get(i).getContent()%><br/> 回复时间:[<%=list.get(i).getPublishTime()%>] </td> </tr> <%}}%> <tr><tdheight="40"colspan="2"align="center"><hrwidth="90%"align="center"/><ahref="detail.jsp?page=<%=1%>">首页</a><%if(currentPage>1){%><ahref="detail.jsp?page=<%=current1%>">上一页</a><%}else{%>上一页<%}%><%if(currentPage<totalPage){%><ahref="detail.jsp?page=<%=currentPage+1%>">下一页</a><%}else{%>下一页<%}%><ahref="detail.jsp?page=<%=totalPage%>">尾页</a>转倒<inputonkeypress="if(event.keyCode==13)window.location='detail.jsp?page='+this.value;"maxlength="5"size="3"value="1"name="page">页共<%=currentPage%>/<%=totalPage%>页</td></tr> <trheight="50"align="center"> <tdcolspan="2"><fontsize="5"> <b>你还没有登录!不能发帖、回复帖子!请先<ahref="index.jsp">登录</a>或<ahref="regedit.jsp">注册</a></b></font> </td> </tr> <tr><tdcolspan="2"><%@includefile="bottom.jsp"%></td></tr></table>5修改密码的servlet(ModifyPassword.java)publicclassLoginServletextendsHttpServlet{ protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ Stringusername=newString((request.getParameter("username")).getBytes("iso-8859-1"),"gbk"); Stringpassword=newString((request.getParameter("password")).getBytes("iso-8859-1"),"gbk"); CheckDataBasecdb=newCheckDataBase(); if(username==null&&password==null){ request.setAttribute("error","请输入用户名和密码"); request.getRequestDispatcher("/index.jsp").forward(request,response); } elseif(username==null||"".equals(username)){ request.setAttribute("error","请输入用户名"); request.getRequestDispatcher("/index.jsp").forward(request,response); }elseif(password==null||"".equals(password)){ request.setAttribute("error","请输入密码"); request.getRequestDispatcher("/index.jsp").forward(request,response); }else{ try{ UserBeanuser=cdb.login(username,password); if(user!=null){ request.getSession().setAttribute("user",user); request.getRequestDispatcher("/LoadModel.jsp").forward(request,response); }else{ request.setAttribute("error","该用户不存在请核对后登陆"); request.getRequestDispatcher("/error.jsp").forward(request,response); } } catch(Exceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }}11、注册的servlet(RegeditServlet.java)

publicclassRegeditServletextendsHttpServlet{ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{Stringusername=request.getParameter("username");Stringpassword=request.getParameter("password");Stringmail=request.getParameter("mail");Stringqq=request.getParameter("QQ");Stringproblem=request.getParameter("problem");Stringanswer=request.getParameter("answer");Stringphoto=request.getParameter("photo");CheckDataBasecdb=newCheckDataBase();if(username!=null&&!username.isEmpty()){//判读数据库是否已存在这个名如果不存在则可以注册成功 try{ if(cdb.isExist(username)){ UserBeanuser=newUserBean(); user.setName(username); user.setPassword(password); user.setMail(mail); user.setQq(qq); user.setProblem(problem); user.setAnswer(answer); user.setPhoto(photo); user.setType(2); cdb.saveDataBase(user); request.setAttribute("info","恭喜,注册成功!<br>"); request.getRequestDis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论