首页 软件工程课程设计BBS论坛

软件工程课程设计BBS论坛

举报
开通vip

软件工程课程设计BBS论坛[摘要] 摘 要 当今,随着网络的迅速发展,制作BBS论坛的技术和方法也越来越多。本文主要讲述利用Java Web的相关技术来制作一个简单论坛。通过实际制作,实现了BBS论坛系统应有的一些基本功能,如:登陆功能,通过在登陆界面输入用户名和密码来实现会员的登录,用户只有登录成功了才能进行一系列的操作;注册功能,用户首次登陆,需要先注册,注册时需要用户填写个人信息;找回密码功能,当用户忘记密码时可以通过此功能找回密码,找回密码时需要用户记得注册时填写的个人信息。除此之外,还有浏览帖子、发表帖子、回复贴子以及删除帖子等等...

软件工程课程设计BBS论坛
[摘要] 摘 要 当今,随着网络的迅速发展,制作BBS论坛的技术和 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 也越来越多。本文主要讲述利用Java Web的相关技术来制作一个简单论坛。通过实际制作,实现了BBS论坛系统应有的一些基本功能,如:登陆功能,通过在登陆界面输入用户名和密码来实现会员的登录,用户只有登录成功了才能进行一系列的操作;注册功能,用户首次登陆,需要先注册,注册时需要用户填写个人信息;找回密码功能,当用户忘记密码时可以通过此功能找回密码,找回密码时需要用户记得注册时填写的个人信息。除此之外,还有浏览帖子、发表帖子、回复贴子以及删除帖子等等功能。制作本论坛所用的前台软件是MyEclipse,后台数据库是MySQL,运行时所用的服务器是Tomcat,综合运用了HTML、JSP以及JavaScript语言。 全文先对用到的软件进行了简单的介绍,然后依次对系统的应用进行需求分析、总体设计、详细设计;最后简要介绍了系统的发布和测试。 关键词:BBS 论坛; JSP 技术; 登陆;注册; 找回密码;浏览贴子; 发表帖子; 回复贴子; 删除帖子 目 录 TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc266729948" 第一章 引 言 1 HYPERLINK \l "_Toc266729949" 第二章 需求分析 2 HYPERLINK \l "_Toc266729953" 结 论 16 HYPERLINK \l "_Toc266729954" 参考文献 16 第一章 引 言 BBS的英文全称是Bulletin Board System,翻译为中文就是“电子 公告 职业卫生公告栏下载公告怎么写公司公告范文安全风险承诺公告制度公告栏模版 板”。BBS最早是用来公布股市价格等类信息的,当时BBS连文件传输的功能都没有,而且只能在苹果计算机上运行。早期的BBS与一般街头和校园内的公告板性质相同,只不过是通过电脑来传播或获得消息而已。一直到个人计算机开始普及之后,有些人尝试将苹果计算机上的BBS转移到个人计算机上,BBS才开始渐渐普及开来。BBS最初是为了给计算机爱好者提供一个互相交流的地方。70年代后期,计算机用户数目很少且用户之间相距很远。因此,BBS(当时全世界一共不到一百个站点)提供了一个简单方便的交流方式,用户通过 BBS可以交换软件和信息。到了今天,BBS的用户才扩展到各行各业,花样非常多。 BBS论坛是一种比较好的交流平台,他能方便人们进行即时在线交流,发表各种信息,实现网络资源的共享。而且,也能促使人们敞开心扉去学习知识、追求进步,以至于能更好的利用网络资源。 鉴于BBS的这些优点,又加之制作BBS的一些基本知识我曾学习过,如《Java程序设计》、《JSP网页制作》以及《MyEclipse6.0基础教程》这些 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 我都看过或自学过。考虑到个人喜好,所以最后我决定选择Java Web开发——BBS论坛制作,这个题目作为我 毕业论文 毕业论文答辩ppt模板下载毕业论文ppt模板下载毕业论文ppt下载关于药学专业毕业论文临床本科毕业论文下载 ,同时也能积累一点开发Java小项目的经验,达到锻炼自己在这方面能力的目的。 我将采用基于JSP网页技术的方法进行简单的BBS论坛制作。我所用的开发软件是MyEclipse6.0,它是一款可以做基础Java项目开发的工具;JDK1.6,当前进行Java开发的最新版本;数据库是MySQL,它是一款当前比较流行的进行中小量数据开发的中小型数据库;服务器是Tomcat6.0,它也是一款当前比较流行的软件,主要用于网络服务器的开发。这些东西对一个搞Java开发的人来说应该是很普遍的。因此,无论在技术还是软件上都应该可以实现的。 第二章 需求分析 作为一个BBS论坛,它应该具有BBS所有的一些基本功能,包括:用户登陆功能,用户取回密码功能,用户浏览帖子的功能以及用户发表、回复、修改和删除帖子的功能等。接下来,我将详细阐述一下这些功能。 (一)、用户登录和注册功能 进入登录页面后,对于第一次登陆的用户来说,首先需要注册,单击“新用户注册”按钮即可进入注册界面,注册完成后返回登录界面。输入用户名和密码,点击“登录”按钮,系统即将用户名和密码发送到网络服务器上,与保存在服务器数据库中的信息进行核对。若核对正确,则进入帖子浏览的界面,若不正确,则重新返回登录界面。 (二)、用户找回密码功能 在有些时候,我们可能会忘记登录密码,这时就用到了密码找回功能,通过正确的回答当初注册时的一些信息即可取回密码。 (三)、用户帖子的浏览 当用户登录成功后便进入该页面,在该页面可以浏览他人已经发表的主题帖子, 1、​ 帖子的总览 在主题页面中主要有两部分组成,一是用户的个人信息,再就是他人已经发表的主题帖子,每个帖子都包含了一些简单信息:主题、作者和时间。鼠标单击主题便进入了下一页面——该帖的详细内容页面。 2、查看特定帖的详细信息 详细内容页面主要包含了该帖的详细内容和他人对此帖的回复,点击“我要回复”便可回复此贴。 (四)、用户帖子的发布/修改/删除/回复功能 用户成功登陆后,可以进行一些操作,如发表帖子、删除自己发表的帖子、回复他人或自己的帖子等。 1、​ 帖子的发布 登陆成功进入主题页面后,点击“发表新的主题文章”按钮后,便可进入发表帖子的界面。在该页面中填写完信息,点击“发送新的主题” ,点击“我要回复”按钮便可对该贴进行回复,如要想对其他回复此贴的人进行回复,可以点击回复人后面的“回复XX楼”按钮对其进行回复。 2、帖子的删除 在主题帖子页面中,每幅帖子的最左面都有一个 删除按钮,点击此按钮便可删除你所发表的帖子。每个用户(除管理员外)只可删除自己的帖子。 (五)、管理员对帖子的查看/发表/删除功能 1、管理员查看或发表帖子 管理员查看或发表帖子与普通用户的一样。 2、​ 管理员删除帖子 管理员删除帖子与普通用户的区别在于,他可以删除任何人发表的贴子,另外他还有一项特权,就是可以删除任何人回复的垃圾帖子。 第三章 总体设计 (一)、系统结构设计 本BBS论坛系统共分为三大功能模块: (1)​ 登陆管理功能系统; (2)​ 注册功能系统; (3)​ 找回密码功能系统。 登陆管理功能系统,又包括四个子模块:单纯的用户登录模块,用户发表帖子模块,用户回复他人帖子模块和用户删除自己所发表的帖子模块。 1、​ 各个页面的功能及示意图 有两个页面用于基本功能的实现,被其它页面所调用: 页面名称 主要功能 用于实现基本功能 Opendata.jsp 打开数据库链接 Convert.jsp 用于字符的转换 其余的页面如下表所示: 各个模块 页面名称 页面功能 开始登陆的界面 Login.html 系统启动时的首页 登录管理 功能系统 Enter.jsp 用于判断用户名和密码是否正确 MainForm.jsp 登陆成功后转入该页面 Discuss.jsp 浏览主题帖子的页面,在这可以查看各类帖子 Person.jsp 显示个人信息的页面 NewTitle.jsp 发表新的主题帖子的页面 SaveNewTitle.jsp 将新发表的帖子存入数据库表Discuss中 Detail.jsp 用于显示帖子的内容及回复该帖的内容 SaveRevert.jsp 将回复内容存入数据库表Reply中 Delete.jsp 用于删除帖子 注册功能系统 Register.jsp 该界面用于新用户注册 SaveRegister.jsp 保存新用户注册信息到数据库表Student中 找回密码功能系统 GetPassword.jsp 用于用户找回密码 2、各个页面之间的调用关系 各个页面之间的调用关系如下图所示: 注意:其中有两个基本页面(Convert.jsp 和Opendata.jsp)被其它的页面所引用,在此图中并没有包含这两个页面。 (二)、数据库设计 根据本BBS论坛功能的要求以及功能模块的划分,本信息数据库可存放在三个表中,它们是,用户信息数据库表Student、发表的帖子的数据库表Discuss和回复的帖子的数据库表Reply,数据库表的具体设计如下所示: 1、用户信息表Student 表名:Student 用户信息表Student包括八个字段:即,ID(用户的标识符)、USERNAME(用户名)、PASSWORD(用户密码)、SEX(性别)、AGE(年龄)、BIRTH(生日)、TELEPHONE(联系电话)、EMAIL(电子邮箱)等。 2、存储帖子所用的信息表 DISCUSS 表名:DISCUSS 信息表DISCUSS包括七个字段:即,NAME(发帖人的昵称)、EMAIL(电子邮箱)、SUBJECT(帖子的主题)、CONTENT(帖子的内容)、TIME(发帖的时间)、USERNAME(用户名)、ID(帖子的标识)等。 3、 存储回复帖子的信息表REPLY 表名:REPLY 信息表REPLY包括五个字段:即,NAME(回帖人的昵称)、CONTENT(回帖的内容)、TIME(回帖的时间)、REPLY(所回复的主贴的标识符)、ID(回复贴的标识符)等。 第四章 详细设计与实现 (一)、建立数据库及数据库表 建立一个数据库Test和三个数据库表(STUDENT、DISCUSS和REPLY)。 首先在MyEclipse6.5软件里配置MySQL5.0,配置完成后在MyEclipse界面里建立名为“Test”的数据库,然后再建立三个数据库表(STUDENT、DISCUSS和REPLY)。 创建表student: stmt.executeUpdate("create table student(id int not null auto_increment," + "username varchar(20) unique," + "password varchar(20) not null," + "sex varchar(8) not null,"+ "age varchar(4) ,"+ "birth varchar(20) not null,"+ "telephone varchar(12),"+ "email varchar(40) not null," + "primary key (id))"); 创建表discuss: stmt.executeUpdate("create table discuss(name char(20) not null,"+ "email char(40) not null,"+ "subject char(60) not null,"+ "content text not null,"+ "time char(40),"+ "username char(20),"+ "id int not null auto_increment,primary key (id))"); 创建表reply: stmt.executeUpdate("create table reply(name char(20) not null,"+ "content text not null,"+ "time char(40),reply int,"+ "id int not null auto_increment,"+ "primary key (id))"); (二)、用户登录功能的实现 1、​ 登陆功能的实现 通过Login.html界面传递参数username 和 password 给Enter.jsp界面,然后查询数据库,判断用户名和密码是否正确。若判断正确则为用户建立一个session,并进入了用户主界面。 <% String username = request.getParameter("username");//参数传递,用户名 String password = request.getParameter("password");//参数传递,密码 PreparedStatement pstmt = null;// 数据库表达式 sql = "select * from Student where username = ? and password= ?"; // SQL语句 pstmt = conn.prepareStatement(sql); pstmt.setString(1, username); pstmt.setString(2, password); rs = pstmt.executeQuery(); if (rs.next()) {// request.getSession(true);//创建session //保存登录用户到session中 session.putValue("username", username); session.putValue("password", password); session.putValue("userIP", request.getRemoteAddr()); session.putValue("enter", "true"); //登录成功主题页面 response.sendRedirect("MainForm.jsp"); } else response.sendRedirect("login.html");//登陆失败转向登录页面 %> (三)、浏览主题帖子功能的实现 1、翻页功能的实现 在这里可以实现翻页功能,根据你的实际需求进行选择。 程序为: <% int MaxNum = 10;//每页容纳的主题论文的最大数目 int count = 0, firstPage = 1, lastPage, firstNum, lastNum, prePage, nextPage, pageNO; //firstPage表示首页,lastPage表示末页,pageNO表示第几页, //firstNum表示该页的起始贴的ID,lastNum表示该页的末帖的ID, //prePage表示前一页,nextPage表示后一页 sql = "select * from discuss"; rs = stm.executeQuery(sql); while (rs.next()) count++; if (request.getParameter("pageNO") == null) pageNO = 0; else pageNO = Integer.parseInt(request.getParameter("pageNO")); lastPage = (int) Math.ceil((double) count / MaxNum); if (pageNO == 0) pageNO = 1; if (pageNO > lastPage) pageNO = lastPage; firstNum = (pageNO - 1) * MaxNum + 1; lastNum = pageNO * MaxNum; if (pageNO == 1) prePage = 1; else prePage = pageNO - 1; if (pageNO == lastPage) nextPage = pageNO; else nextPage = pageNO + 1; sql = "select * from discuss where id between " + firstNum + " and " + lastNum; rs = stm.executeQuery(sql); %> (四)、主题帖子详细内容页面的制作 通过Discuss.jsp页面传递参数ID,然后进行数据库查询获得帖子的详细信息,并显示的页面上。 <% int id = Integer.parseInt(request.getParameter("id")); sql = "select * from discuss where id=" + id; String name = null; String email = null; String subject = null; String content = null; String time = null; String replyto = null; rs = stm.executeQuery(sql); while (rs.next()) { name = rs.getString(1); email = rs.getString(2); subject = rs.getString(3); content = rs.getString(4); time = rs.getString(5); id = rs.getInt(7); } %> (五)、在帖子详细内容页面里实现回复功能 在Detail.jsp 页面里实现回复功能,让用户可以在同一页面实现浏览贴子、回复帖子和浏览别人回复的帖子的功能: 1、​ SaveRevert.jsp页面中的代码: 此页面的功能保存由Detail.jsp页面传来的回帖信息,保存次信息到Reply数据库表中: <% String reply = request.getParameter("id"); String name = request.getParameter("name"); String content = request.getParameter("content"); int year, month, day, hour, minute, second; String time; GregorianCalendar calendar; calendar = new GregorianCalendar(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH) + 1; day = calendar.get(Calendar.DAY_OF_MONTH); hour = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); second = calendar.get(Calendar.SECOND); time = year + "年" + month + "月" + day + "日" + hour + ":" + minute + ":" + second; name = convert(name); content = convert(content); content = Replace(content); sql = "insert into reply(name,content,time,reply)values('" + name + "','" + content + "','" + time + "'," + reply + ")"; stm.executeUpdate(sql); //插入数据库中 response.sendRedirect("detail.jsp?id=" + reply); %> (六)、用户发表新帖子页面的制作 1、SaveNewTitle.jsp页面用于保存由NewTitle.jsp页面传来的数据信息 首先将传递来的数据进行转换,然后将其插入数据库Discuss中: <% String name = request.getParameter("name"); String email = request.getParameter("email"); String subject = request.getParameter("subject"); String content = request.getParameter("content"); int year, month, day, hour, minute, second; String time; GregorianCalendar calendar; calendar = new GregorianCalendar(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH) + 1; day = calendar.get(Calendar.DAY_OF_MONTH); hour = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); second = calendar.get(Calendar.SECOND); time = year + "年" + month + "月" + day + "日" + hour + ":" + minute + ":" + second; name = convert(name); subject = convert(subject); content = convert(content); content = Replace(content); String username = session.getValue("username").toString(); sql = "insert into discuss ( name, email, subject, content, time, username) values( '"+ name + "','" + email + "','" + subject + "','" + content + "','" + time + "','" + username + "')"; stm.executeUpdate(sql); //插入数据库中 response.sendRedirect("discuss.jsp"); %> (七)、新用户注册功能的实现 SaveRegister.jsp用于保存新用户的信息,这些信息是由Register.jsp页面传递而来,首先判断用户名是否已被注册过了,若被注册过则提示已注册。 <% String username = request.getParameter("username"); String password = request.getParameter("password"); String sex = request.getParameter("sex"); String age = request.getParameter("age"); String year = request.getParameter("year"); String month = request.getParameter("month"); String day = request.getParameter("day"); String telephone = request.getParameter("telephone"); String email = request.getParameter("email"); String msg = null; username = convert(username); sql = "select * from student where username='" + username + "'"; rs = stm.executeQuery(sql); //查询数据库 if (!rs.next()) {//如果不存在 sex = convert(sex); age = convert(age); String birth; birth = year + "年" + month + "月" + day + "日"; sql = "insert into student ( username, password, sex, birth, age, telephone , email )values('"+ username+ "','"+ password + "','"+ sex+ "','" + birth + "','"+ age+ "','"+ telephone + "','"+ email + "')"; stm.executeUpdate(sql); //插入数据库中 msg = "恭喜你,已注册成功!"; response.sendRedirect("login.html"); } else {//如果注册用户已存在 msg = "你所注册的用户已经存在,请你重新注册!"; out.println("
提示信息: out.println(""); } %> (八)、用户取回密码功能的实现 GetPassword.jsp页面用于取回密码,给该页面传递一些用户填写的信息,将该用户注册时的对应信息与此信息进行比较,当该信息与用户注册时填写的一样时,便能取回密码,否则不能: <% if (request.getParameter("username") != null//username用户名 && request.getParameter("sex") != null//sex性别 && request.getParameter("email") != null) {//email电子邮箱 String username = request.getParameter("username"); String sex = request.getParameter("sex"); String email = request.getParameter("email"); username = convert(username); sex = convert(sex); email = convert(email); sql = "select * from student where username='" + username + "' and sex='" + sex + "' and email='" + email + "'"; rs = stm.executeQuery(sql);//从数据库中查找对应信息 if (rs.next()) {//如果找到 String password = rs.getString(3); String errmsg = "正确的填写信息,你的密码为:"; out.println("
提示信息:
" + errmsg + password + "
"); out.println(""); } else { String errmsg = "对不起,你暂时还不能取回你的密码,原因是你没能正确的填写信息!"; out.println("
提示信息:
" + errmsg + "
"); out.println(""); } } %> (九)、用户和管理员删除帖子功能的实现 Delete.jsp页面用于删除帖子,在此页面获得两个参数id和replyid。其中id为帖子的标识符,replyid为是否是回帖,当replyid>0 时表示要删除的是回复贴,否则,当replyid<0,即等于0时表示要删除主帖: <% int id = Integer.parseInt(request.getParameter("id")); int replyid = Integer.parseInt(request.getParameter("replyid")); if (replyid > 0) {//当replyid>0 时表示要删除的是回复贴 if (session.getValue("username").equals("TongYong")) { sql = "update reply set content='此回复已被删除!'" + " where reply=" + id + " and id=" + replyid; stm.executeUpdate(sql); } response.sendRedirect("detail.jsp?id=" + id); } else {//否则,当replyid=0时表示要删除主帖 sql = "select * from discuss where username='" + session.getValue("username") + "'"; rs = stm.executeQuery(sql); if (rs.next() || session.getValue("username").equals("TongYong")) { sql = "delete from discuss where id=" + id; stm.executeUpdate(sql); sql = "alter table discuss drop id "; stm.executeUpdate(sql); sql = "alter table discuss add id int not null auto_increment primary key"; stm.executeUpdate(sql); } response.sendRedirect("discuss.jsp"); } %> 第五章 系统测试 MyEclipse 支持发布Web, EJB 和 Enterprise Application 项目到任何MyEclipse 支持的服务器上。它支持散包和打包发布。目前来说Tomcat 和JBoss 都是支持散包发布的。 散包发布一般是开发时候来使用,MyEclipse 会把所有的文件按照Java EE 规定的目录结构放在服务器的发布目录下。在这种情况下,MyEclipse 还会自动把修改过的文件,例如JSP 文件,类文件等等复制过去,实现自动同步功能,这时修改了JSP 页面不需要重新发布就能在浏览器里刷新后看到新的结果。这样对开发来说是非常方便的。 本论坛的发布测试分三步完成: (1)​ 散包发布BBSTalk项目 BBSTalk项目文件夹下包含了类库文件及资源文件。其中src文件夹下包含一个Java文件JDBC_BBS.java,用于创建数据库表;WebRoot文件夹下存放了所有的jsp页面,其下的Pictures文件夹存放了页面制作所需的图片。 (2)​ 启动Tomcat服务器 在MyEclipse界面下点击 按钮,在下拉菜单中选择Tomcat5.x服务器并单击“开始”按钮启动服务器,若启动成功显示以下信息: (3)​ 打开IE浏览器进行测试 BBSTalk发布完且Tomcat服务器开启后,再打开IE7.0(或以上版本)浏览器,在其地址栏中输入:http://localhost:8080/BBSTalk/login.html(其中localhost为本地主机IP地址,8080为Tomcat服务器端口号,BBSTalk我项目名称)按回车即可进入BBS论坛首页登录界面。 对于第一次登陆的用户来说,首先需要注册,单击“新用户注册”按钮即可进入注册界面, 注册成功即可登陆论坛。 登陆后浏览帖子,发帖,删帖等一系列功能都可正常运行,起初不能识别中文的问题,也通过修改参数得到了解决。 结 论 此次BBS论坛制作的界面效果比较粗糙,功能也不是很强大,但幸好一些基本的功能都还有,比如,用户(或管理员)登陆,发表新的帖子,查看已存在的帖子,回复别人发表的帖子(也叫跟帖)以及管理员删除垃圾帖子或着垃圾的跟帖等等。但是像一些高级功能,比如,搜寻或查找帖子的功能,上传图片或文件的功能,个人空间的功能等。由于本人所学知识以及能力地限制,并没能将其实现。 参考文献 [[1]刘长炯.《MyEclipse 6 Java 开发中文教程》[DK].北京:2007:1-99 [2]郑阿奇.《MySQL实用教程》[M].北京:电子工业出版社,2009:1-218 [4]萨师煊,王珊.《数据库系统概论》[M].北京:高等教育出版社,2002:56-110 [5]谷雨,阎隽,高春蓉等译.《JSP从入门到精通》[M].北京:电子工业出版社,2002:1-104 [6]李迎秋,姜仲.《JSP实用教程》[M].大连:大连理工大学出版社,2007:1-200 [7]赵明昌译.《JSP数据库编程 指南 验证指南下载验证指南下载验证指南下载星度指南下载审查指南PDF 》[M].北京:北京希望电子出版社,2001:37-48 [8]葛蒙,程显峰.《JavaScript实践与提高》[M].北京:中国电力出版社,2002:108-228 [9]黄嘉辉.《Java网络程序设计》[M].北京:清华大学出版社,2002:445-470 [10]李绪成.《Java Web开发教程——入门与提高篇》[M].北京:清华大学出版社,2009:1-198 [11]舒红平.《Web数据库编程:Java》[M].西安:西安电子科技大学出版社,2006:1-185
本文档为【软件工程课程设计BBS论坛】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_766900
暂无简介~
格式:doc
大小:119KB
软件:Word
页数:18
分类:互联网
上传时间:2011-10-26
浏览量:70