JSP课程设计留言板设计
JSP课程设计——留言簿课程设计

1.登录界面
登陆界面
用户名:
密码;
代码如下:
<%@Page ContentType="text∕html;CharSet=gb2312"%>
Vform action ="Tests.jsp" >
<h2 >登陆界面</h2 >
用户名:Vin PUt type = "text" n ame ="userName" >
</ tr >
Vtr height ="30" >
Vtd >留言标题</td >
Vtd ><inPUt type = "text" name = "title" SiZe ="35" ></ td >
</ tr >
Vtr >
Vtd >留言内容</td >
Vtd>vtextareaname="cOntent"rows ="8" cols ="34" χ/ textareaχ/ td >
request.getScheme()++request.getServerName()+":" +request.getServ
erPort()+path+ "/";
%>
<! DoCTYPEHTMLPUBLIC "-//W3C//DTD HTML 4.01 TranSitional//EN"> <html >
用jsp语言开发的留言板

留言簿设计报告班级09软件姓名***学号22号一部分:描述留言簿的模块划分二部分:用流程图的形式描述留言簿的执行流程三部分:各部分界面效果图及代码的具体实现四部分:设计过程中的错误及纠正五部分:设计感受六部分:附用户使用说明(包括安装环境部署环境,及使用),和设计时的数据库第一部分:留言簿的模块划分1.管理员管理模块身为管理员,有查看所有用户的资料信息,和所有用户的留言,并有修改和删除的权利,进入index.jsp首页后,先像其它用户一样访问主页,及留言板,若想留言或查看信息,则先登陆.点击留言请先登陆超链接,进入denglu.jsp的登陆页面.输入管理员的用户名及密码,即admin,进入success.jsp页面,在此页面里,管理员可以查看全部留言信息shuchu.jsp,并可以更改和删除.也可以查看所有用户的注册信息chakan.jsp.也可以查看个人信息gerenxinxi.jsp.在个人信息中可以修改用户名和密码即登录xiugai.jsp页面,但不可以注销用户,因为不能没有管理员.2.普通用户使用模块普通用户进入网站,也要先浏览主页,及留言板,若有意留言,则请先登录,登陆成功后进入success.jsp页面,在此页面中用户可以查看自己已经留言过的信息,即shuchu3.jsp页面,在此页面中可以对自己的留言进行更新和删除,即update.jsp页面和delete.jsp页面,若有意留言,则点击我要留言超链接,进入liuyanyemian.jsp页面,进行留言,再此页面中,可以更新自己的头像.在success.jsp中还可以查看个人信息,并对自己的用户名和密码进行修改,对自己的账号注销.即xiugai.jsp和cancel.jsp页面3.过客浏览模块身份为过客,进入网站后,先浏览主页,若有意留言,则点击留言请先登录,若没有账号,则在denglu.jsp的页面中,点击注册链接,进行注册,即insertuser.jsp页面,若用户名不曾被人注册过,则转到zhucechenggong.jsp的页面.点击此页面的登陆即可重新登陆,也可以退出网站.重新登陆后,就可以想普通会员一样进行操作了.4.退出系统退出,即tuichu.jsp页面.第二部分:流程图第三部分:各部分界面效果图及代码的具体实现index.jsp 页面,主要用了一个qq 表情,然后用marquee 标签实现字体的运动,接下来是两个超级链接.访问主页后,进入留言板主页,标题有主人寄语,然后调用以下方法,public List QureyAll(String sql){ List list=new ArrayList(); this .getConnection(); try {stat =con .createStatement(); rs =stat .executeQuery(sql); while (rs .next()){ Message message=new Message();message.setBorderID(rs .getInt("borderId")); message.setContent(rs .getString("content")); message.setImage(rs .getString("image")); message.setMsgtime(rs .getString("msgtime")); message.setReplyID(rs .getString("replyID")); message.setSubject(rs .getString("subject")); message.setUsername(rs .getString("username"));list.add(message);}} catch (SQLException e) { // TODO Auto-generated catch blockSystem.out .println("数据库异常"); e.printStackTrace();}CloseAll();return list;}输出所有人的留言,界面如下:若想要留言,则进入denglu.jsp页面,即用一个form表单即可,界面如下:登陆成功后,进入success.jsp,设置了几个超链接如下:若点击查看自己的留言,则进入shuchu3.jsp页面,在此页面,可以更新和删除,都是现获取自己的id号,然后操作,如下:输出方法如下:public Message QueryByID(int id){Message message=new Message();String sql="select * from t_board where borderID="+id;this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);if(rs.next()){message.setBorderID(rs.getInt("borderID"));message.setContent(rs.getString("content"));message.setImage(rs.getString("image"));message.setMsgtime(rs.getString("msgtime"));message.setReplyID(rs.getString("replyID"));message.setSubject(rs.getString("subject"));message.setUsername(rs.getString("username"));}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}CloseAll();}在jsp页面调用:String id=request.getParameter("id");int borderid=Integer.parseInt(id);DBConn db=new DBConn();Message message=db.QueryByID(borderid);更新主要实现就是:String id=request.getParameter("id");String subject=request.getParameter("subject");String content=request.getParameter("content");String updatetime=new Date().toLocaleString();String sql="update t_board set subject='"+subject+"',content='" +content+"',msgtime='"+updatetime+"',image='"+image+"' where borderID="+id;DBConn db=new DBConn();int flag=db.executeUpdate(sql);if(flag>0){response.sendRedirect("shuchu3.jsp");}else{out.print("出现异常,重新留言!");}删除主要实现就是将sql语句进行修改一下:String sql="delete from t_board where borderID="+borderid;当然参数也没必要获得那么多.更新和删除的主要方法为:publicint executeUpdate(String sql){int flag=0;try {this.getConnection();stat=con.createStatement();flag=stat.executeUpdate(sql);}catch (SQLException e) {e.printStackTrace();}CloseAll();return flag;}界面如下:若点击查看自己的个人信息,则进入gerenxinxi.jsp 页面,sql 语句用username 追踪, 调用如下的方法:public Genggai QureyAll2(String sql){Genggai xinxi=new Genggai();this .getConnection(); try {stat =con .createStatement(); rs =stat .executeQuery(sql); if (rs .next()){ xinxi.setId(rs .getInt("id"));xinxi.setUsername(rs .getString("username")); xinxi.setPwd(rs .getString("pwd")); xinxi.setSex(rs .getString("sex"));xinxi.setBirthday(rs .getString("birthday")); xinxi.setEmail(rs .getString("email")); xinxi.setAddress(rs .getString("address"));xinxi.setTelephone(rs .getString("telephone"));}} catch (SQLException e) {System.out .println("数据库异常");e.printStackTrace();}CloseAll();return xinxi;}在jsp 页面这样输出:out.print("<tr>");out.print("<td width='40%' align='center'>");out.print("<font size='5' color='orange' face='隶书'>"); out.print("您的id 号是:"); out.print("</font>"); out.print("</td>");out.print("<td align='center'>");out.print(xinxi.getId());out.print("</td>");out.print("</tr>");其他列名输出跟上面的id一样,界面如下:若点击如上的”修改用户名或密码”进入如下页面,即xiugaiyemian.jsp,也是定义一个form表单若修改成功,则进入xiugaichenggong.jsp页面,界面如下:若点击success.jsp 页面的”注销用户”,则进入如下页面,同样也是定义form 表单,成功后进入cancelsuccess.jsp 页面,两个界面如下:注销用户方法是:publicint TestCancel(String username,String pwd){ int flag=0; DBConn db=new DBConn();con =db.getConnection();String sql="delete from t_user where username=? and pwd=?";try {prests = con .prepareStatement(sql); prests .setString(1,username); prests .setString(2,pwd);flag=prests .executeUpdate(); } catch (SQLException e) { // TODO Auto-generated catch blocke.printStackTrace();}return flag;}若在登陆页面,点击”注册”,进入regist.jsp 页面如下,也是一个复杂的form 表单,添加了背景和qq 表情:注册插入到数据库的方法主要有两个,一个用来判断用户名是否已经存在,一个用来插入:如下判断:publicint Testpanduan(String username){int s=0;DBConn db=new DBConn(); con =db.getConnection(); String sql="select * from t_user where username=?"; try {prests =con .prepareStatement(sql);prests .setString(1,username);rs =prests .executeQuery();if (rs .next()) {s=1;rs .close();prests .close();}} catch (SQLException e) { // TODO Auto-generated catch blocke.printStackTrace();} return s;} 插入:publicint Testinsert(String username,String pwd,String repwd,String sex,String birthday,String email,String address,String telephone){ DBConn db=new DBConn();con=db.getConnection();int flag=0;String sql="insert into t_user values(?,?,?,?,?,?,?)";try{if(pwd.equals(repwd)){prests=con.prepareStatement(sql);prests.setString(1,username);prests.setString(2,pwd);prests.setString(3,sex);prests.setString(4,birthday);prests.setString(5,email);prests.setString(6,address);prests.setString(7,telephone);flag=prests.executeUpdate();}}catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return flag;}注册成功后,进入zhucechenggong.jsp页面,也添加了背景图片和qq表情,使之美观,界面如下:若访问的是管理员,则进入如下界面,他可以查看所有用户的所有留言和所有信息:若查看所有用户的全部资料,则进入chakan.jsp页面,在此页面可以管理员进行删除,输出方法是:public ResultSet QureyAll3(String sql){Genggai xinxi=new Genggai();this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);if(rs.next()){xinxi.setId(rs.getInt("id"));xinxi.setUsername(rs.getString("username"));xinxi.setPwd(rs.getString("pwd"));xinxi.setSex(rs.getString("sex"));xinxi.setBirthday(rs.getString("birthday"));xinxi.setEmail(rs.getString("email"));xinxi.setAddress(rs.getString("address"));xinxi.setTelephone(rs.getString("telephone"));}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}return rs;}在jsp页面调用方法后用<%out.print(rs.getString("email")); %> 删除链接是:<a href="deletemsg2.jsp?id=<%=rs.getInt("id")%>">删除</a>界面如下:管理员还可以有权利对所有用户的留言进行删除:主要方法同上面提到的.界面如下:点击我要留言链接后,进入我要留言页面:添加笑脸和更新头像的方法如下:<%int count=0;for(int i=0;i<40;i++){ %><input type="radio" name="image" value="<%=i+1 %>" onclick="addimg(this)"><img src="images2/<%=i+1 %>.png"><% count++;if(count%8==0)out.print("<br>"); }%>更新头像:<select name="image" onchange="change();"><%for(int i=1;i<=30;i++){%><option value="<%=i%>"><%=i %></option><% } %></select><img src="photo/1.jpg" width="100" height="100" name="head"/> 但要用到JavaScript语言:选择头像:function addimg(obj){var s=obj.value;var con=document.form1.content.value;con=con+"<img src=images2/"+s+".png>";document.form1.content.value=con; }更换头像:function change(){var image=document.form1.image1.value;document.head.src="photo/"+image+".jpg";}留言界面如下:最后是退出页面,主要是图片和qq表情的设置.使页面更生动,界面如下:第四部分:设计过程中的错误及纠正在做动态网页的时候,遇到的小错误有很多,每次都是经过反复的调试得出的,有时候写错某个方法中的某个字母,就会调试很长时间,当然同时也加深了印象.例如在用JavaScript语句中,不能弹出alert对话框,仔细分析代码,发现表单form名字写成了from.主要的错误有以下几个方面:1.在编写查看所有人的信息遇到传递参数时的空指针,而且在方法体中用了db.CloseAll();方法,出现连接对象已经关闭的错误.应该用out.print(rs.getString(username));而不是用out.print(xinxi.getUsername());2.在删除留言时,超链接中的id一直传递不过去使得intborderid=Integer.parseInt(id);一直出现错误,出现空指针.,仔细检查发现是超链接中的id=<%=message.getBorderID()%>写错3.在插入新留言的时候,一直出现中文乱码,插入如下两条语句,即可解决byte aa[]=subject.getBytes("ISO-8859-1"); subject=new String(aa);byte bb[]=content.getBytes("ISO-8859-1");content=new String(bb);更新头像的时候,头像不能同时显示出来4.在注册新用户时,由于既要用sql语句判断用户名是否已经存在,又用到要在不存在的时候插入的sql语句,导致逻辑混乱,仔细推敲后,才运行得到.5.因为要在多个页面用到传递的username等等,所以一定要用session获取参数6.在更新留言时,要用到<input type="hidden" name="id" value="<%=id %>">传递隐藏的参数,由于刚开始不明白,出现了很多逻辑上的错误.第五部分: 设计感受1.这次的留言板设计感受很多,有时某一个很小的错误,比如丢一个括号,写错一个字母,就会浪费很长的时间.所以做完就用了很长的时间.当然对程序里的某些方法的应用,也不是太清楚,如过滤信息的设置等.我觉得还是孜孜不倦的从一点点的做起,比如每个网页的背景图片,就设计了不少时间,因为我觉得一个网站的美观效果也是很重要的.每当睡觉的时候,只要一想起,啊,我的留言板还没有做完,就会带着思考入梦了.老实说,这个留言板不是很难,可能是刚接触数据库与jsp的链接吧,当时出了很多例如数据库异常的错误,到后期的时候就好多了…在对用户信息或用户的留言进行更新,删除,插入,查找等等时,这些方法都从jsp的页面,提到java类里面,方法都是大同小异,无非是数据库的链接,执行sql语句的对象的创建和应用,以及接受结果的存放等等.主要是预处理对象和执行对像的flag=stat.executeUpdate(sql);rs=stat.executeQuery(sql);这两个方法的调用.2.在这期间离不开同学与同学,舍友与舍友之间互相学习和交流,所以收益也很大,也感受到了集体的力量.经过这次的留言板制作,收获很多.不仅对连接数据库方面的知识懂了很多,对sql语句的书写记忆深刻,而且还回忆了以前的很多函数的调用,方法的编写等等.相信在以后的学习中会更进一步,掌握更多的知识和应用.第六部分:附用户使用说明(包括安装环境部署环境,及使用),和设计时的数据库在MyEclipse7.0的环境下实现,将Tomcat6.0服务器,JDK7下载以及部署进去设计时的数据库使用Microsoft SQL server 2000。
基于JSP的留言板课程设计报告书

JSP在水一方留言簿设计报告一需求分析随着互联网的迅猛的发展,给我们带来不少的便利,于此同时,论坛基本是每个必有的功能,为用户之间的交流提供的很好的平台。
我通过仔细的分析和规划,本论坛有如下功能:用户注册,登录,用户信息修改,签写留言,留言查看,回复留言和管理员的普通维护功能等。
这些功能的具体描述如下:1)用户注册模块:用户可已成为本论坛的会员,通过表单把用户的相关信息提交给数据库。
2)登录模块:基本是每个系统必备的模块,本论坛的登录的模块分为两个小模块:普通用户登录,另一个是管理员登录。
3)签写留言模块:这是论坛的主要功能之一,用户把自己感兴趣的话题发表到论坛上,与网上的会员进行探讨。
4)查看留言模块:这也是论坛的主要功能之一,把用户发表的留言逐条,序显示出来。
5)回复留言模块:这也是论坛的主要功能之一,用户对别的用户发表的留言进行回复。
6)普通的维护模块:这是给管理员的功能,该功能对那些危害社会风气的留言删除。
7)用户信息修改模块:用户能对自己的信息进行修改。
二分析和设计(页面和数据库)设计论坛时,首先应该区别是普通用户登录还是管理员登录。
如果是普通用户登录,那么该用户只有查看和回复留言的权限。
如果是管理员登录,则除了具有查看和回复权限外,还用具有管理论坛的权限。
在用户发表留言后,将显示该用户的用户名、性别、留言容和留言时间等容。
如果在某个留言有回复容,则显示出是谁恢复了该篇留言和回复的容。
另外还能在页面中显示当前的系统的时间和访问权限。
数据库设计通过以上的分析:数据库应有四个表,tb_user、td_topic、tb_reply、tb_counter。
由于是个小型的论坛,选择AEESS数据库。
具体各表的设计如下:1 分析得知tb_user表功能的记录用户的信息,具有如下字段:ID、UserName、PWD、Birthday、Sex、OICQ、Tel、homepage、address、postcode、Email、status。
JSP个人网站留言板课程设计

JSP课程设计报告题目:个人网站留言板系统程序设计二0一二年九月摘要个人网站留言板及用户注册系统是一个针对个人而开发的网站系统,个人网站是一个可以发布个人信息及相关内容。
通俗理解个人网站:就是指网站内容是介绍自己的或是以自己的信息为中心的网站,访客可以在网站注册后留言。
本网站是一个典型的简单的个人网站系统,其开发主要包括后台数据库的建立和维护以及前端WEB页面的设计两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库,不会出现增加,删除,修改的异常。
而对于后者则要求应用功能完备,易使用,界面友好等特点。
另外,本文还着重论述了留言板和用户注册系统的功能与实现,包括数据流程及存储、注册用户管理、留言板信息管理、用户权限管理、用户密码管理、留言信息和用户的增加、留言信息的删除、留言信息的查询、注册用户的查询、等。
本系统提供管理员、访客的登录。
管理员可以查看用户注册信息和留言信息,可对其进行删除修改等功能。
访客登录可以在留言板上留言。
关键词:个人网站;访客;管理员;留言板AbstractPersonal website message board and user registration system are web site developed for individual systems, personal Web site can publish a personal information and related content. Popular understanding of website: that the content of a site is to introduce their own information, or to the center of the site, visitors can leave a message after the site up. This site is a typical simple personal website system, which mainly includes the establishment and maintenance of back-end database and front two aspects of the design of WEB pages. Request for the establishment of data consistency and integrity, data security and good libraries, does not appear to add, delete, modify the exception. For the latter requires the application of functions, easy to use, friendly interface and so on. In addition, this paper focuses on the message boards and user registration system function and implementation, including data flow and storage, the registered user management, message board information management, user rights management, user password management, message information and user increases, voice messages delete, the message information query, the query registered users, and so on. The system administrator, visitor login. Administrators can view the user registration information and message information, can be modified to delete its functions. Visitors can sign up for casual users log in and use the user a message. Keywords: Personal website; Visitor; Managor;Message board目录1.第一章课题背景 (5)1.1课程要求 (5)1.2设计概要 (5)1.3工具及环境简介 (5)2.第二章设计简介及设计方案论述 (5)2.1系统功能概述 (5)2.1.1 用户类型 (6)2.1.2 管理员 (6)2.1.3 普通用户 (6)2.2数据库设计 (7)2.2.1管理员息表: (7)2.2.2注册用户留言信息表: (7)3.第三章详细设计 (7)3.1首页设计 (7)3.1.1 管理员登录 (14)3.2管理员审核留言信息 (17)4.第四章设计结果及分析 (18)4.1首页界面结果 (18)4.1.1首页界面如下: (18)4.1.2 管理员登录 (18)4.2留言板信息管理 (19)4.2.1 留言内容信息 (19)4.2.2 删除用户信息 (19)4.2.3 审核通过用户信息 (20)4.2.4 审核不通过用户留言信息 (21)4.2.5 敏感词的过滤实现 (22)4.3留言管理 (22)4.3.1 查看用户留言信息 (22)4.4结果分析 (23)5.总结 (24)1.第一章课题背景1.1 课程要求内容概要:个人网站留言板设计与实现。
软件工程课程设计_留言板管理系统

学年设计课程名称:学年设计(论文)(软件工程)实验项目:留言板管理系统姓名:XXX专业:计算机科学与技术班级:XX班学号:XXX指导教师XXX计算机科学与技术学院XXXX年XX月XX日目录第一章题目背景 ------------------------------------------------------------------------------- 11.1题目背景 ------------------------------------------------------------------------------------------------ 11.2设计概要 ------------------------------------------------------------------------------------------------ 11.3问题分析 ------------------------------------------------------------------------------------------------ 11.4可行性分析 --------------------------------------------------------------------------------------------- 21.4.1技术可行性 ------------------------------------------------------------------------------------ 21.4.2经济可行性 ------------------------------------------------------------------------------------ 21.4.3操作可行性 ------------------------------------------------------------------------------------ 2 第二章系统需求分析------------------------------------------------- 22.1功能需求------------------------------------------------------------------------------------------------- 2 2.2性能需求------------------------------------------------------------------------------------------------------- 3 第三章数据库设计 ---------------------------------------------------------------------------- 33.1数据库设计 ----------------------------------------------------------------------------------------- 33.2概念模型------------------------------------------------------------------------------------------------- 43.3关系模型------------------------------------------------------------------------------------------------- 53.4物理模型------------------------------------------------------------------------------------------------- 53.5 oracle 数据库---------------------------------------------------------------------------------------- 63.6模块设计说明 ------------------------------------------------------------------------------------------ 6 第四章系统实现 ------------------------------------------------------------------------------- 64.1页面实现 ------------------------------------------------------------------------------------------------ 64.1.1留言系统的首页------------------------------------------------------------------------------ 64.1.2查看留言 --------------------------------------------------------------- 错误!未定义书签。
关于留言板js课程设计

关于留言板js课程设计一、课程目标知识目标:1. 学生能够理解留言板的基本原理,掌握JavaScript(JS)语言在网页中的应用;2. 学生能够运用HTML和CSS知识,结合JS实现留言板的动态交互功能;3. 学生了解并能使用JS数组、对象等数据结构存储和管理留言数据。
技能目标:1. 学生能够运用所学知识,独立编写并调试简单的JS代码,实现留言板的增删改查功能;2. 学生能够运用事件处理机制,实现用户与留言板之间的交互;3. 学生能够通过本课程的学习,提高解决问题的能力和编程实践能力。
情感态度价值观目标:1. 学生培养对编程的兴趣和热情,增强对计算机科学的认识和好奇心;2. 学生在学习过程中,培养团队协作和沟通能力,学会分享和借鉴他人的经验;3. 学生通过编程实践,培养创新思维和动手能力,提高自信心和成就感。
本课程针对高年级学生,结合学科特点和教学要求,将目标分解为具体的学习成果。
通过本课程的学习,使学生能够掌握JavaScript编程基础,实现留言板功能,并在实践中培养编程兴趣和团队协作能力。
教学过程中,注重知识传授与实践操作相结合,以提高学生的综合素养。
二、教学内容1. 留言板功能需求分析- 了解留言板的基本功能,如发表留言、查看留言、删除留言等;- 分析留言板涉及的前端技术,包括HTML、CSS和JavaScript。
2. JavaScript基础知识回顾- 变量、数据类型、运算符;- 控制结构(条件语句、循环语句);- 函数定义与调用;- 事件处理机制。
3. 留言板核心功能实现- 使用HTML和CSS搭建留言板界面;- 使用JavaScript实现留言的发表、删除功能;- 使用JavaScript数组存储和管理留言数据;- 实现留言的动态展示。
4. 留言板高级功能拓展- 使用JavaScript对象存储留言信息;- 实现留言的编辑功能;- 添加时间戳显示留言时间;- 留言排序和分页功能。
用jsp语言开发的留言板

留言簿设计报告班级09软件姓名***学号22号一部分:描述留言簿的模块划分二部分:用流程图的形式描述留言簿的执行流程三部分:各部分界面效果图及代码的具体实现四部分:设计过程中的错误及纠正五部分:设计感受六部分:附用户使用说明(包括安装环境部署环境,及使用),和设计时的数据库第一部分:留言簿的模块划分1.管理员管理模块身为管理员,有查看所有用户的资料信息,和所有用户的留言,并有修改和删除的权利,进入index.jsp首页后,先像其它用户一样访问主页,及留言板,若想留言或查看信息,则先登陆.点击留言请先登陆超链接,进入denglu.jsp的登陆页面.输入管理员的用户名及密码,即admin,进入success.jsp页面,在此页面里,管理员可以查看全部留言信息shuchu.jsp,并可以更改和删除.也可以查看所有用户的注册信息chakan.jsp.也可以查看个人信息gerenxinxi.jsp.在个人信息中可以修改用户名和密码即登录xiugai.jsp页面,但不可以注销用户,因为不能没有管理员.2.普通用户使用模块普通用户进入网站,也要先浏览主页,及留言板,若有意留言,则请先登录,登陆成功后进入success.jsp页面,在此页面中用户可以查看自己已经留言过的信息,即shuchu3.jsp页面,在此页面中可以对自己的留言进行更新和删除,即update.jsp页面和delete.jsp页面,若有意留言,则点击我要留言超链接,进入liuyanyemian.jsp页面,进行留言,再此页面中,可以更新自己的头像.在success.jsp中还可以查看个人信息,并对自己的用户名和密码进行修改,对自己的账号注销.即xiugai.jsp和cancel.jsp页面3.过客浏览模块身份为过客,进入网站后,先浏览主页,若有意留言,则点击留言请先登录,若没有账号,则在denglu.jsp的页面中,点击注册链接,进行注册,即insertuser.jsp页面,若用户名不曾被人注册过,则转到zhucechenggong.jsp的页面.点击此页面的登陆即可重新登陆,也可以退出网站.重新登陆后,就可以想普通会员一样进行操作了.4.退出系统退出,即tuichu.jsp页面.第二部分:流程图第三部分:各部分界面效果图及代码的具体实现index.jsp页面,主要用了一个qq表情,然后用marquee标签实现字体的运动,接下来是两个超级链接.访问主页后,进入留言板主页,标题有主人寄语,然后调用以下方法, public List QureyAll(String sql){List list=new ArrayList();this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);while(rs.next()){Message message=new Message();message.setBorderID(rs.getInt("borderId"));message.setContent(rs.getString("content"));message.setImage(rs.getString("image"));message.setMsgtime(rs.getString("msgtime"));message.setReplyID(rs.getString("replyID"));message.setSubject(rs.getString("subject"));message.setUsername(rs.getString("username"));list.add(message);}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}CloseAll();return list;}输出所有人的留言,界面如下:若想要留言,则进入denglu.jsp页面,即用一个form表单即可,界面如下:登陆成功后,进入success.jsp,设置了几个超链接如下:若点击查看自己的留言,则进入shuchu3.jsp页面,在此页面,可以更新和删除,都是现获取自己的id号,然后操作,如下:输出方法如下:public Message QueryByID(int id){Message message=new Message();String sql="select * from t_board where borderID="+id;this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);if(rs.next()){message.setBorderID(rs.getInt("borderID"));message.setContent(rs.getString("content"));message.setImage(rs.getString("image"));message.setMsgtime(rs.getString("msgtime"));message.setReplyID(rs.getString("replyID"));message.setSubject(rs.getString("subject"));message.setUsername(rs.getString("username"));}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}CloseAll();}在jsp页面调用:String id=request.getParameter("id");int borderid=Integer.parseInt(id);DBConn db=new DBConn();Message message=db.QueryByID(borderid);更新主要实现就是:String id=request.getParameter("id");String subject=request.getParameter("subject");String content=request.getParameter("content");String updatetime=new Date().toLocaleString();String sql="update t_board set subject='"+subject+"',content='" +content+"',msgtime='"+updatetime+"',image='"+image+"' where borderID="+id;DBConn db=new DBConn();int flag=db.executeUpdate(sql);if(flag>0){response.sendRedirect("shuchu3.jsp");}else{out.print("出现异常,重新留言!");}删除主要实现就是将sql语句进行修改一下:String sql="delete from t_board where borderID="+borderid;当然参数也没必要获得那么多.更新和删除的主要方法为:public int executeUpdate(String sql){int flag=0;try {this.getConnection();stat=con.createStatement();flag=stat.executeUpdate(sql);}catch (SQLException e) {e.printStackTrace();}CloseAll();return flag;}界面如下:若点击查看自己的个人信息,则进入gerenxinxi.jsp 页面,sql 语句用username 追踪, 调用如下的方法:public Genggai QureyAll2(String sql){ Genggai xinxi=new Genggai(); this .getConnection(); try { stat =con .createStatement(); rs =stat .executeQuery(sql); if (rs .next()){ xinxi.setId(rs .getInt("id"));xinxi.setUsername(rs .getString("username")); xinxi.setPwd(rs .getString("pwd")); xinxi.setSex(rs .getString("sex"));xinxi.setBirthday(rs .getString("birthday")); xinxi.setEmail(rs .getString("email")); xinxi.setAddress(rs .getString("address"));xinxi.setTelephone(rs .getString("telephone"));}} catch (SQLException e) {System.out .println("数据库异常");e.printStackTrace();}CloseAll();return xinxi;}在jsp 页面这样输出:out.print("<tr>");out.print("<td width='40%' align='center'>");out.print("<font size='5' color='orange' face='隶书'>"); out.print("您的id 号是:"); out.print("</font>"); out.print("</td>");out.print("<td align='center'>");out.print(xinxi.getId());out.print("</td>");out.print("</tr>");其他列名输出跟上面的id一样,界面如下:若点击如上的”修改用户名或密码”进入如下页面,即xiugaiyemian.jsp,也是定义一个form表单若修改成功,则进入xiugaichenggong.jsp页面,界面如下:若点击success.jsp 页面的”注销用户”,则进入如下页面,同样也是定义form 表单,成功后进入cancelsuccess.jsp 页面,两个界面如下:注销用户方法是:public int TestCancel(String username,String pwd){ int flag=0;DBConn db=new DBConn(); con =db.getConnection();String sql="delete from t_user where username=? and pwd=?"; try { prests = con .prepareStatement(sql); prests .setString(1,username); prests .setString(2,pwd); flag=prests .executeUpdate(); } catch (SQLException e) {// TODO Auto-generated catch block e.printStackTrace();}return flag;}若在登陆页面,点击”注册”,进入regist.jsp 页面如下,也是一个复杂的form 表单,添加了背景和qq 表情:注册插入到数据库的方法主要有两个,一个用来判断用户名是否已经存在,一个用来插入:如下判断:public int Testpanduan(String username){int s=0;DBConn db=new DBConn();con =db.getConnection();String sql="select * from t_user where username=?";try {prests =con .prepareStatement(sql);prests .setString(1,username);rs =prests .executeQuery();if (rs .next()) {s=1;rs .close();prests .close();}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return s; } 插入:public int Testinsert(String username,String pwd,String repwd,String sex,String birthday,String email,String address,String telephone){ DBConn db=new DBConn();con=db.getConnection();int flag=0;String sql="insert into t_user values(?,?,?,?,?,?,?)";try{if(pwd.equals(repwd)){prests=con.prepareStatement(sql);prests.setString(1,username);prests.setString(2,pwd);prests.setString(3,sex);prests.setString(4,birthday);prests.setString(5,email);prests.setString(6,address);prests.setString(7,telephone);flag=prests.executeUpdate();}}catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return flag;}注册成功后,进入zhucechenggong.jsp页面,也添加了背景图片和qq表情,使之美观,界面如下:若访问的是管理员,则进入如下界面,他可以查看所有用户的所有留言和所有信息:若查看所有用户的全部资料,则进入chakan.jsp页面,在此页面可以管理员进行删除,输出方法是:public ResultSet QureyAll3(String sql){Genggai xinxi=new Genggai();this.getConnection();try {stat=con.createStatement();rs=stat.executeQuery(sql);if(rs.next()){xinxi.setId(rs.getInt("id"));xinxi.setUsername(rs.getString("username"));xinxi.setPwd(rs.getString("pwd"));xinxi.setSex(rs.getString("sex"));xinxi.setBirthday(rs.getString("birthday"));xinxi.setEmail(rs.getString("email"));xinxi.setAddress(rs.getString("address"));xinxi.setTelephone(rs.getString("telephone"));}} catch (SQLException e) {// TODO Auto-generated catch blockSystem.out.println("数据库异常");e.printStackTrace();}return rs;}在jsp页面调用方法后用<%out.print(rs.getString("email")); %> 删除链接是:<a href="deletemsg2.jsp?id=<%=rs.getInt("id")%>">删除</a>界面如下:管理员还可以有权利对所有用户的留言进行删除:主要方法同上面提到的.界面如下:点击我要留言链接后,进入我要留言页面:添加笑脸和更新头像的方法如下:<%int count=0;for(int i=0;i<40;i++){ %><input type="radio" name="image" value="<%=i+1 %>" onclick="addimg(this)"><img src="images2/<%=i+1 %>.png"><% count++;if(count%8==0)out.print("<br>"); }%>更新头像:<select name="image" onchange="change();"><%for(int i=1;i<=30;i++){%><option value="<%=i%>"><%=i %></option><% } %></select><img src="photo/1.jpg" width="100" height="100" name="head"/> 但要用到JavaScript语言:选择头像: function addimg(obj){var s=obj.value;var con=document.form1.content.value;con=con+"<img src=images2/"+s+".png>";document.form1.content.value=con; }更换头像: function change(){var image=document.form1.image1.value;document.head.src="photo/"+image+".jpg";}留言界面如下:最后是退出页面,主要是图片和qq表情的设置.使页面更生动,界面如下:第四部分:设计过程中的错误及纠正在做动态网页的时候,遇到的小错误有很多,每次都是经过反复的调试得出的,有时候写错某个方法中的某个字母,就会调试很长时间,当然同时也加深了印象.例如在用JavaScript语句中,不能弹出alert对话框,仔细分析代码,发现表单form名字写成了from.主要的错误有以下几个方面:1.在编写查看所有人的信息遇到传递参数时的空指针,而且在方法体中用了db.CloseAll();方法,出现连接对象已经关闭的错误.应该用out.print(rs.getString(username));而不是用out.print(xinxi.getUsername());2.在删除留言时,超链接中的id一直传递不过去使得intborderid=Integer.parseInt(id);一直出现错误,出现空指针.,仔细检查发现是超链接中的id=<%=message.getBorderID()%>写错3.在插入新留言的时候,一直出现中文乱码,插入如下两条语句,即可解决byte aa[]=subject.getBytes("ISO-8859-1"); subject=new String(aa);byte bb[]=content.getBytes("ISO-8859-1");content=new String(bb);更新头像的时候,头像不能同时显示出来4.在注册新用户时,由于既要用sql语句判断用户名是否已经存在,又用到要在不存在的时候插入的sql语句,导致逻辑混乱,仔细推敲后,才运行得到.5.因为要在多个页面用到传递的username等等,所以一定要用session获取参数6.在更新留言时,要用到<input type="hidden" name="id" value="<%=id %>">传递隐藏的参数,由于刚开始不明白,出现了很多逻辑上的错误.第五部分: 设计感受1.这次的留言板设计感受很多,有时某一个很小的错误,比如丢一个括号,写错一个字母,就会浪费很长的时间.所以做完就用了很长的时间.当然对程序里的某些方法的应用,也不是太清楚,如过滤信息的设置等.我觉得还是孜孜不倦的从一点点的做起,比如每个网页的背景图片,就设计了不少时间,因为我觉得一个网站的美观效果也是很重要的.每当睡觉的时候,只要一想起,啊,我的留言板还没有做完,就会带着思考入梦了.老实说,这个留言板不是很难,可能是刚接触数据库与jsp的链接吧,当时出了很多例如数据库异常的错误,到后期的时候就好多了…在对用户信息或用户的留言进行更新,删除,插入,查找等等时,这些方法都从jsp的页面,提到java类里面,方法都是大同小异,无非是数据库的链接,执行sql语句的对象的创建和应用,以及接受结果的存放等等.主要是预处理对象和执行对像的flag=stat.executeUpdate(sql);rs=stat.executeQuery(sql);这两个方法的调用.2. 在这期间离不开同学与同学,舍友与舍友之间互相学习和交流,所以收益也很大,也感受到了集体的力量.经过这次的留言板制作,收获很多.不仅对连接数据库方面的知识懂了很多,对sql语句的书写记忆深刻,而且还回忆了以前的很多函数的调用,方法的编写等等.相信在以后的学习中会更进一步,掌握更多的知识和应用.第六部分:附用户使用说明(包括安装环境部署环境,及使用),和设计时的数据库在MyEclipse7.0的环境下实现,将Tomcat6.0服务器,JDK7下载以及部署进去设计时的数据库使用Microsoft SQL server 2000。
基于JSP的在线留言板系统设计

字段名 I D Us s e r I D S u b j e c t C O ] a t e n t T i me I P T e l e p h o n e
字段类型 整 型 字符型 字符型 字符型 字 符 型 字 符 型 字符型
字段宽度 1 0 1 0 5 0 5 0 1 O 1 0 回复表 r e p l y表
统的总体设计
数 据 库 设 计
系统 流 程 图
数据 库 设计 是把 现 实世界 的模 型按 照 需 析转换成数据库 的模 型的过程 ,它是建立 库应用系统 的核 心问题。数据库的数据是 ) 操作 的基础 ,如果数据库设计不好 ,则影
的三 张表 , 分 别 为,u s e r 用 户 表 ,l e a v e wo r d 执行 的功 能各不相 同。实现 了多个不 同用户 的 留 言表 ,r e p l y留 言 回复 表 。 访 问。 ( 3 )页面风格统一 ,简单且美观。 2 . 2 系 统 主 页 设 计 ( 4 )数 据库设计合 理规范 ,用户 注册 的 ; 开发功能 的实现及后 期的维护 。通过需求 为了使留言板系统的页面更加美观 ,页面 信息符合要求才可 以注册成功 。具有很好 的完 抽 象 出现实 世 界 的实体模 型 有人 ,留 整性 。 回复留言 。每个 实体在 留言系统中有其重 风 格保持 一致 ,编 写 了 CS S文件和 J a v a S c r i p t ; 性。如人的属性有用户 I D, 姓 名 , 权限, 文 件,采 用 了 CS S外 部样 式。并 建立 了一 个 参考文献 } ,电话,邮箱等,其中用户 I D是主属性。 独立 的 J S文件 ,方便 多个 网页文件 引入。 [ 1 ] 王品 . J S P实现 留言板 系统 [ J ] . 计算机光 的属性有 留言 I D,留言姓名,留言主题 , 2 . 3 系 统 功 能设 计 盘 与软件 , 2 0 1 2 . 内容 ,留言时间 ,I P,电话等 。其 中留言 主 属性 ,回复留 言的主属 性有用户 I D, 详 见 系 统流 程 图 作 者简介 I D, 回复的 内容 ,回复 的时 间等。其 中 2 . 4 系统特 色 黄军 ,男 ,教师,研 究方向为软件 开发 。 t I D为 主属性 。在 以上 分析 中,留言板 中 } 的用户有两类人 员,一是普通 用户 ,一是 ( 1 )此 留 言板 系统 虽然小巧 。但 功能完 作 者单 位 员,为 了区分两者身份 ,可 以在人 的属性 善。 贵 州工 业职 业技 术 学 院 贵 州省 贵 阳 市 } 加权 限属 性,如 其值 1为管理员 ,0为普 ( 2 )不 同用户 都有个 自的权 限。登陆后 5 5 0 0 O O 『 户 。据此 便可 以设计 出符合实 际需求 分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录引言 (1)系统设计 (1)系统需求分析 (1)可行性分析 (1)数据库概念设计 (3)数据库逻辑设计 (4)系统实现 (5)结束语 (16)课程设计题目:留言板1引言科技不断的发展和创新,现在的生活越来越电子化,人们现在大多利用电脑做留言板或者做备忘薄,以提醒自己,渐渐地很少使用纸张进行记录.因为在计算机储存的内容容易保管,而且有着良好的保密功能,同时利用计算机可以更好的保护我们的资料.本次课程设计内容就是留言板.2系统设计系统需求分析随着经济和科技发展,人们通过网络传达信息,简化生活,提高人们生活质量的提高,利用网络给我们带来的方便.?所以我们更多的时候已用网络的功能来简便我们的生活.在科技不发达的时代,人们用纸来记录一天发生的事情给别人传达信息和记录下准备要做的事情,但是这种方法很容易将信息泄露而且不容易保存.现在信息化时代,利用高科技来实现我们信息的保密和及时传达.该系统主要完成目标是建立一个功能齐全、使用方便、能够迅速准确地完成各种会员基本信息和传达信息的添加、删除、修改。
通过调查,要求系统需要有以下功能:⑴由于该系统支持多用户管理,要求支持添加用户的功能;⑵原始数据修改简单方便,支持多条件修改;⑶方便的数据查询,支持多条件查询;⑷删除数据方便简单,数据稳定性好;(5)系统的维护和更新、升级功能。
可行性分析本次课程设计题目:“留言板”,主要目的是建立一个功能齐全、使用方便、能够迅速准确地完成各种会员基本信息的添加、删除、修改。
编制一个网页登陆系统,连接数据库系统,用以用户,以及用户查询信息等多项管理。
同时对整个系统的分析、设计过程给出一个完整的论证。
留言板系统是一种基于集中统一规划的数据库数据管理新模式,其实就是对用户以及用户信息的管理。
目前已有很多成功开发留言板系统的先例,社会需要管理的现代化和信息化。
信息系统开发和运行与国家的政策法规不存在任何冲突和抵触之处。
通过经济、技术和社会等方面的可行性分析,可以确定本系统的开发完全必要,而且是可行的,可以立项开发。
由于本系统管理的对象简单,且每个数据内容之间都具有较强的关联性,涉及过程并不是很复杂。
因此,比较适合于采用数据库管理。
在技术难度方面,由于有指导老师的指导和相关参考文献,特别是网上资料,特别是参考其它程序的功能,因此完全可以实现数据库的概念设计根据以上需求分析,可画出数据库的E-R模型图:(1).用户及属性的E-R模型图:数据库的逻辑设计根据系统功能设计的要求以及功能模块的划分,对留言板网站可以列出以下数据项及数据结构:用户个人基本信息:主要包括会员的用户名、密码、联系电话、email、真实姓名留言板基本信息:主要包括姓名、标题、时间、内容。
数据库的物理设计根据系统需求及逻辑结构设计,本网站基于SQLServer2008数据库,建立如下数据库表。
说明:用户的基本情况,logname设为主键。
说明:留言板的基本情况,name设为主键。
系统功能分析留言板网站基于用户验证登录的方式实现用户信息管理、留言板信息管理及留言内容的保存等功能。
其功能结构如图:3系统实现系统功能模块设计留言板网站主要包含用户登录、用户注册、留言、留言板的查询等模块。
1、进入网站界面进入网站有多个选项供用户使用2、用户注册用户在使用留言板之前要先进行注册,在注册之后才可以进行操作。
3、用户登录留言板理网站采用用户名及密码验证方式,进入留言板网站前,用户必须在登录页面输入用户名及密码,只有验证通过的用户方可进入留言板网站操作主页面。
3、留言板信息管理包含3个功能模块:留言内容基本信息添加与删除处理和修改。
(1)添加留言板内容(2)留言成功后程序提示(3)留言查询4、系统信息维护模块包括用户基本信息管理与留言内容的管理。
其中,用户管理包括用户的添加、删除、密码修改。
系统目标分析留言板网站主要提供用户信息的管理以及留言板内容的管理,其主要功能如下。
●登录管理模块用户名及密码验证处理●会员注册信息管理模块实现会员基本信息的维护,功能如下:○录入会员个人信息。
○会员信息列表及修改、删除处理。
○会员信息查询。
●留言板管理模块实现留言内容的维护,功能如下:○留言板的内容维护和加密。
○留言板内容基本信息维护:添加、删除。
○留言板内容的查询系统操作流程图:(1)<divalign="center"><H2>留言板</H2><trvalign="bottom"><td><Ahref=""><fontsize=2>用户注册</font></A></td><td><Ahref=""><fontsize=2>用户登录</font></A></td><td><Ahref=""><fontsize=2>留言板</font></A></td><td><Ahref=""><fontsize=2>留言查询</font></A></td></tr></Font></table></div>(2)<%@pagecontentType="text/html;charset=GB2312"%><html><head><title>留言板</title></head><%@includefile=""%><center><h1><FontSize=4color=green>欢迎使用留言板</font></h1><imagesrc="width=300height=200></image></center></body></html>(3)<%@pagecontentType="text/html;charset=GB2312"%><HEAD><%@includefile=""%></HEAD><%@taglibtagdir="/WEB-INF/tags"prefix="register"%><title>注册页面</title><HTML><BODYbgcolor=cycan><Fontsize=2><CENTER><FORMaction=""name=form><table>输入您的信息,用户名中不能含有符号。
<tr><td>用户名称:</td><td><Inputtype=textname="logname">*</td></tr> <tr><td>设置密码:</td><td><Inputtype=textname="mima">*</td></tr><tr><td>联系电话:</td><td><Inputtype=textname="tel"></td></tr><tr><td>真是姓名:</td><td><Inputtype=textname="realname"></td></tr> <tr><td>电子邮件:</td><td><Inputtype=textname="email"></td></tr><tr><td><Inputtype=submitname="g"value="提交"></td></tr></table></Form></CENTER><%Stringlogname=("logname");Stringmima=("mima");Stringtel=("tel");Stringrealname=("realname");Stringemail=("email");%><register:Registerlogname="<%=logname%>"mima="<%=mima%>"tel="<%=tel%>"realname="<%=realname%>"email="<%=email%>"/><Center><P>返回的信息:<%=backMess%></Center></Body></HTML>(4)<%@tagimport=".*"%><%@tagpageEncoding="gb2312"%><%@attributename="logname"required="true"%><%@attributename="mima"required="true"%><%@attributename="tel"required="true"%><%@attributename="realname"required="true"%><%@attributename="email"required="true"%><%@variablename-given="backMess"scope="AT_END"%><%booleanboo=true;if(logname!=null){if(",")||(","))boo=false;}if(boo){try{}catch(ClassNotFoundExceptione){(e);"%><%@tagpageEncoding="gb2312"%><%@attributename="logname"required="true"%><%@attributename="mima"required="true"%><%@variablename-given="backMess"scope="AT_END"%> <%byte[]a=("iso-8859-1");logname=newString(a);byte[]b=("iso-8859-1");mima=newString(b);Stringmess="";try{}catch(ClassNotFoundExceptione){(e);}Connectioncon;Statementsql;ResultSetrs;stringloginMess=(String)("logname");if(loginMess==null){loginMess="********************";}Stringstr=logname+","+mima;if(str)){mess=logname+"已经登陆";}else{Stringuri="jdbc:odbc:mymoon";boolenboo=()>0)&&()>0);try{con=(uri,"","");Stringcondition="select*fromkehuwherelogname=""+logname+""andmima=""+mima+"";sql=();if(boo){rs=(condition);booleanm=();if(m==true){mess=logname+"登陆成功"str=logname+"","+mima;;("logname",str);}else{mess="您输入的用户名"+logname+"不存在,或密码错误"; }}else{mess="还没有登陆或您输入的用户名不存在或密码错误。