cc学院
毕业设计(论文)开题报告
题 目: 基于JSP的学生学籍管理系统
学 科 部: 信工学科部
专 业: 计算机科学与技术
班 级:
学 号:
姓 名:
指导教师:
填表日期: 20 年 月 日
研究目标:
(1)建立一个B/S层结构的学生学籍管理系统,实现管理员对学生信息的获取、统计等各环节的计算机管理。
(2)跟踪记录学生个体学业原始成绩和学年评语。
(3)查询学生的基本情况、异动情况,学生来源的流向分布,男女学生比例等统计。
(4)以同届不同年级的同次考试或不同届不同年级的不同次考试为常模参照,以有效分、标准分等对学生学业成绩进行科学的分析和评价。
(5)利用计算机对考试成绩进行成绩分布频率曲线分析,以了解全校学生成绩的整体情况,为教育行政部门、教研部门提供决策和研究的依据。
主要特点:
(1)系统分为学生用户操作和管理员操作两部分。学生的个人信息可以通过管理员对其进行管理。
(2)界面友好,简单易用。
(3)系统操作简单,功能强大,易于维护。
进度计划:
序号 | 各阶段工作内容 | 起讫日期 | 备注 |
---|---|---|---|
1 | 查阅资料,撰写开题报告 | 2007/3/5-3/19 | |
2 | 系统分析与数据库设计,确定功能模块 | 3/20-4/1 | 含论文材料收集归纳 |
3 | 系统具体设计 | 4/2-4/11 | 含论文材料收集归纳 |
4 | 主程序设计 | 4/12-4/30 | 含论文材料收集归纳 |
5 | 系统测试,编写论文初稿 | 5/1-5/7 | 含论文材料收集归纳 |
6 | 完善系统 | 5/8-5/13 | 含论文材料收集归纳并修改完善系统 |
7 | 完成毕业论文 | 5/14-5/20 | 在指导教师的指导修改完善论文 |
8 | 答辩准备 | 5/21-5/25 |
六、参考文献:
[1] 吴士力,汪孝宜 《JSP网络系统开发》 北京:电子工业出版社
[2] 石志国,董洁,薛为民 《JSP应用教程》 北京:清华大学出版社
[3] 丁宝康,董健全 《数据库实用教程》 北京:清华大学出版社
[4] 朱俊炎 WEB开发技术[M] 2006.6
[5]岑玲 基于Browser/Server结构的办公自动化系统[M]. 计算机与现代化 2001.2
基于JSP的BBS实现
专业:计算机科学与技术 学号:7000803008 学生姓名:梁炽昌 指导教师:胡军
摘 要
现今的社会是一个信息飞速发达的社会,其中在信息的交流当中,互联网占据着一个非常重要的位置。人们可以通过在互联网上收到最新的消息,也可以通过互联网进行信息的交流。而论坛就是大家进行信息交流的其中一个渠道。
论坛的概念:论坛(BBS)是Bulletin-Board-System的缩写,即电子公告栏。它是一种在Internet网上开放的信息服务系统,通过论坛用户可以方便的实现信息的交换和文件的共享。
本文主要完成了基于JSP技术的信息交流论坛的设计和实现,主要实现了客户端和服务器端的动态交互。该系统包含六个模块:论坛用户登陆注册模块,论坛账户信息模块,论坛文章发布模块,公告/制度模块,版块管理模块,信息管理模块。论文详细描述了模块的结构、功能以及具体设计过程。系统采用了JSP技术以及JavaBeans组件技术和JDBC技术实现。
关键词:JSP,BBS,MYSQL,JavaBeans,系统设计
Bulletin-Board-System realization based on JSP
Abstract
Nowadays is a flourishing society that information travels fast. Among the exchanges of information, the Internet occupies a very important position, through which people can receive the latest news, and can exchange with each other as well. And the forum is an outlet for everyone to exchange information, which can also make the exchange of information convenient.
The concept of the forum: The forum (BBS) is the abbreviation of the Bulletin- Board- System, namely the column of the electronics announcement. It is a service system that is open on Internet, through which, the forum customer can conveniently realizes the commutation of the information and the share of the documents.
In this text, it mainly completed the design and realizations of information exchanges forum based on the JSP technique. And it main carry out a dynamic state between the customer and the server. There are six molds piece: The forum customer debarkation registers the mold piece, the forum bank account information mold piece, the forum article releases the mold piece, announce/ the system mold piece, a management mold piece, information management mold piece. The thesis has described module structure、function detailed and has designed process concretely. System has adopted the JSP technology and the JavaBeans module technology and the JDBC technology have come true.
KeyWord: JSP, BBS, MYSQL, JavaBeans, System design
目 录
摘 要I
AbstractII
绪 论1
第一章 系统概述2
1.1设计目标2
1.2 研究方法2
1.3项目中涉及的技术2
1.3.1 JSP技术2
1.3.2 JavaBeans技术3
1.3.3 JDBC技术3
1.4设备要求4
第二章 需求分析5
2.1需求规格5
2.1.1系统组成5
2.1.2功能性需求5
2.1.3非功能性需求7
2.2开发环境的选择7
第三章 概要设计8
3.1总体设计8
3.2系统结构与程序的关系10
3.3运行模式10
3.4接口设计10
3.4.1用户接口10
3.4.2外部接口10
3.4.3内部接口11
3.5数据结构设计11
3.5.1系统ER图11
3.5.2逻辑结构设计要点11
3.5.3物理结构设计要点13
3.5.4数据结构与程序的关系13
3.6功能模块设计16
3.6.1总体设计16
3.6.2功能模块设计16
3.7系统故障处理设计18
3.7.1出错信息18
3.7.2补救措施19
3.7.3系统维护设计19
第四章 详细设计20
4.1用户注册登陆模块20
4.1.1功能说明20
4.1.2功能实现20
4.1.3程序运行过程截图23
4.2帐户信息模块24
4.2.1功能说明24
4.2.2功能实现25
4.2.3程序运行过程截图28
4.3文章发布模块28
4.3.1功能说明28
4.3.2功能实现28
4.3.3程序运行过程截图29
4.4公告制度模块29
4.4.1功能说明29
4.4.2功能实现29
4.4.3程序运行过程截图31
4.5版块管理模块31
4.5.1功能说明31
4.5.2功能实现31
4.5.3程序运行过程截图33
4.6信息管理模块34
4.6.1功能说明34
4.6.2功能实现34
4.6.3程序运行过程截图36
第五章 结论37
参考文献(References)38
致谢39
随着互联网日益深入社会生活,BBS开发技术发展至今,从CGI,ASP,到PHP已经日趋成熟,功能也更加丰富,但携着Sun公司的Java技术所实现的“一次编写,到处运行”的优势,继承这一衣钵的JSP技术越来越受到人们的注视。BBS作为一种对外的展示窗口,进行内外信息交流,已成为大众的广泛需要。为了进行更好的交流,用户想就自己的专业和爱好能和其他的用户进行及时专业的交流,这就有了论坛,这样以来我们就可以在网络这个虚拟的空间中方便地实现交流。Internet上发布信息主要是通过网站来实现的,获取信息是要在网站论坛中和Internet“海洋”中按照一定的检索方式将所需要的信息的。因此论坛建设在Internet应用上的地位显而易见,它已成为现代人勾通和获取信息的重要组成部分,从而倍受人们的重视。现在各个大学网站都有BBS论坛,在BBS上,同学与同学之间,老师之间可以非常轻松的进行交流,有网络的地方,不同的地区和国家的各种不同的人都可加入到BBS上进行交流。这也节省了大量的教育资源,和充分的利用教育资源。
Java是未来的主流开发技术,具有很多优势。JSP则是Java在Internet/Intranet Web上的重要应用技术,得到了广泛的支持和承认,它可以和各种Java技术完好地结合在一起,从而实现非常复杂的应用。本网站使用JSP + JavaBeans和后台数据库MYSQL在WEB系统开发的,从而创建一个更为稳定,高效,安全的运行环境。
本文主要讨论了基于B/S模式的一种JSP论坛的设计与实现,主要功能是实现客户端和服务器端的动态交互。其中有六个模块:论坛用户登陆注册模块,论坛帐户信息模块,论坛文章发布模块,公告/制度模块,版块管理模块,信息管理模块。实现论坛的基本功能,具体功能的实现利用JavaBeans组件技术。
BBS是互联网一种人与人之间交互的必备工具,特别是做网站必备。以前我们一直用留言本形式,但是随着您的网站的大规模化,越来越多的迫切需要一种可以易于维护和易于交流的平台,那就要用BBS。BBS可以通过WEB浏览器访问,并且实现在线交流等诸多功能。网民们便逐步开始接受这种使用方便快捷、功能日渐强大的系统。在它上面网民们可以发贴和发布各种各样的信息,讨论各式话题。随着中国网络的普及和计算机及其外设的大幅度降价,Internet这个概念逐渐深入人心。中国网民的数量呈几何级数量增长,BBS的普及程度也直追Email。每个网站几乎都拥有自己的BBS或者BBS链接, BBS社区提供给用户的服务是全面而且非常友好的,用户在社区中可以根据自己的喜好设置不同的显示风格,根据自己的需求定制各种服务。
本虚拟社区是采用JSP + JavaBeans + MYSQL开发的。运行平台:JDK 1.5 + Tomcat5.5 + MYSQL + Windows XP。
采用模块化思想,分为3层:
a.数据存储层:使用MYSQL来存放BBS的所有数据,包括用户信息,文章数据用户消息,系统数据,关键问题,数据库的规划。
b. 系统功能层:完成BBS的基本功能,由多个并列模块组成,向下调用MYSQL的数访问数据库,向上接受处理请求,将处理的结果返回上层,根据请求类型,返回成败结果和其他数据。而且模块高度灵活,可以方便的修改增加。
c. 服务层:直接和客户机对话,根据客户机的请求,调用功能模块取得数据,然后将数据发送回客户端,根据客户端的类型,分别开发不同的服务模块,并且尽可能合理进行抽象,使对不同的服务层,能共用系统功能层的模块。
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。
在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。
什么是JavaBeans?JavaBeans就是Java的可重用组件技术。最初,JavaBeans的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在综合开发环境(IDE)下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBeans就可以扩展为一个java web 应用的标准部件,并且JavaBeans部件框架已经扩展为企业版的 Bean(EJB)。JavaBeans是描述JAVA的软件组件模型,有点类似于Microsoft的COM组件概念。在JAVA模型中,通过JavaBeans可以无限扩充JAVA程序的功能,通过JavaBeans的组合可以快速的生成新的应用程序。对于程序员来说,最好的一点就是JavaBeans可以实现代码的重复利用,另外对于程序的易维护性等等也有很重大的意义。ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或复杂计算分离出来成为独立可重复利用的模块。JSP通过JavaBeans实现了同样的功能扩充。JSP对于在Web应用中集成JavaBeans组件提供了完善的支持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开发),也为JSP应用带来了更多的可伸缩性。JavaBeans组件可以用来执行复杂的计算任务,或负责与数据库的交互以及数据提取等。在实际的JSP开发过程中,读者将会发现,和传统的ASP或PHP页面相比,JSP页面将会是非常简洁的,由于JavaBeans开发起来简单,又可以利用Java语言的强大功能,许多动态页面处理过程实际上被封装到了JavaBeans中。
JDBC是一种可用于执行SQL语句的Java API(Application Programming Interface,应用程序设计接口)。它由一些Java语言写的类、界面组成。JDBC给数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。
Java 具有坚固、安全、易于使用、易于理解和从网络上自动下载等特性,是编写数据库应用程序的杰出语言。所需要的只是 Java 应用程序与各种不同数据库之间进行对话的方法。而 JDBC 正是作为此种用途的机制。
通过使用JDBC,开发人员可以很方便地将SQL语句传送给几乎任何一种数据库。也就是说,开发人员可以不必写一个程序访问Sybase,写另一个程序访问Oracle,再写一个程序访问Microsoft的SQL Server。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。不但如此,使用Java编写的应用程序可以在任何支持Java的平台上运行,不必在不同的平台上编写不同的应用。Java和JDBC的结合可以让开发人员在开发数据库应用时真正实现“Write Once,Run Everywhere!”
JDBC 扩展了 Java 的功能。例如,用 Java 和 JDBC API 可以发布含有 applet的网页,而该 applet 使用的信息可能来自远程数据库。企业也可以用 JDBC 通过Intranet 将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有 Windows、 Macintosh 和 UNIX 等各种不同的操作系统)。随着越来越多的程序员开始使用 Java 编程语言,对从 Java中便捷地访问数据库的要求也在日益增加。
主机类型:
服务器(IBM兼容机)最低配置
CPU:P3-850MHz;
内存:256MB
硬盘:20GB
网卡:10/100MB自适应
客户机(IBM兼容机)最低配置
CPU:P3-450MHz;
内存:128MB
硬盘:10GB
网卡:10/100MB自适应
系统可以分为以下几个功能模块:
模块名称:用户注册登陆 | 模块标识:A1 |
---|---|
其中可能涉及到的操作有以下几种: 用户登录:管理员及用户可以根据用户名及密码登陆系统。 用户注册:用户可以独立注册论坛帐户。修改数据:管理员可以修正错误数据,比如用户信息等。用户退出:用户退出时,变成游客权限,只能浏览帖子。 |
2. 帐户信息模块
表2-2 帐户信息模块
模块名称:帐户信息 | 模块标识:A2 |
---|---|
该模块主要在个人中心中,对用户信息及发表文章进行操作。其中可能涉及到的操作有以下几种:添加,删除,修改个人信息。查看,修改或删除本用户发表过的文章消息。更换照片,修改签名,预览签名。 |
表2-3 文章发布模块
模块名称:文章发布 | 模块标识:A3 |
---|---|
该模块主要完成整个BBS系统面向用户的各种功能。其中可能涉及到的操作有以下几种:1 发布论坛话题:用户可以通过此功能发布论坛话题,也就是常说的发帖。2 回复话题:用户可以回复任何已存在的话题,同时可以加上自己的个性签名。 |
4、公告/制度模块
表2-4 公告/制度模块
模块名称:公告/制度 | 模块标识:A4 |
---|---|
论坛管理员(站长)可以通过后台管理任命斑竹,拥有最高权限。斑竹只能在自己的版块发布论坛公告,最新话题,可以对帖子置顶,删除,锁定等操作。 |
5.版块管理模块
表2-5 版块管理模块
模块名称:版块管理模块 | 模块标识:A5 |
---|---|
论坛管理员可以通过后台管理系统控制论坛的版块,管理员可以完成下列功能:任命斑竹,修改版块等操作。 |
6. 信息管理模块
表2-6 信息管理模块
模块名称:信息管理 | 模块标识:A6 |
---|---|
信息管理模块主要完成下面的功能:社区信息配置;添加管理员; 编辑管理员;设定等级;改变权限;会员管理;安全退出;用户等级。 |
本系统界面友好,使用方便,运行稳定。是一种典型的BBS系统。
系统需求分析阶段: Microsoft Windows XP
系统代码开发阶段:Windows XP+ JDK1.5 + tomcat5.5 +MYSQL。
系统GUI/LOGO辅助设计工具:Photoshop8.0,Dreamware8.0。
我们采用基于B/S结构的三层应用模型来实现BBS系统。Browser/Server计算方式是一种两层结构的体系。随着技术的进步以及需求的改变,更多的层次划分出来。目前,在Internet应用体系结构中,事物处理被划分为3层,即:Web Browser—Internet Server—Database Server。在这种体系结构中,业务的表达通过简单的Web Browser来实现,用户通过Web Browser提交表单,把信息传递给Internet Server,Internet Server根据用户的请求,分析出要求数据库服务器进行的查询,交给数据库服务器去执行,Database Server把查询的结果反馈给Internet Server,在由Internet Server用标准的HTML语言反馈给Web Browser。
三层应用模型同传统的C/S(Client/Server)模型相比,提高了系统的可扩展性、安全性和可重用性。它将应用逻辑与用户界面和数据访问相剥离,这样便使系统的维护变得简单,同时可以通过采用组件技术,降低数据库服务器的负担,从而提高性能。
典型C/S计算的特点:
低了开发及管理成本。而C/S的应用不论是安装、配备还是升级,都需要在所有的客户机上实施。
B/S技术维护工作主要集中在服务器端,客户端的维护工作量十分少。而C/S结构中客户机和服务器的维护工作量都较大。Web Browser技术简明易用,一旦用户掌握了Web Browser的用法,也就掌握了使用系统上各种信息资源的钥匙。
本虚拟社区是采用JSP + JavaBean + MYSQL开发的一套网络虚拟社区系统。通过BBS系统和别人讨论计算机软件、硬件、Internet、多媒体、以及程序设计等等各种有趣的话题。
图3.1 网络结构图
图3.2 系统结构图
表3-1 各项功能需求模块的实现同各块程序的分配关系
功能模块 | 相关程序 |
---|---|
注册登陆 | reg.jsp;login.jsp;online.jsp;shutdown.jsp;pcmain.jsp |
帐户信息 | first.jsp;modify.jsp;repassword.jsp;modifype.jsp;showpenname |
文章发布 | send.jsp;reply.jsp;display.jsp |
公告制度 | actboardset.jsp;inform.jsp |
版块管理 | adminmast.jsp;changeroot.jsp;addmast.jsp |
信息管理 | madmin.jsp;mdel.jsp;medit.jsp;msend.jsp;mshow.jsp |
图3.3 本系统的各个模块的运行顺序
本系统采用的标准的HTML编写,内部套用JavaScript、CSS,风格统一,用户可通过一个窗体即可完成所有的输入工作,本模块不涉及大图片、音频和视频等,这样能保证输出时的快速性。用户可以直观的查看数据和填写数据,尽可能的简化操作,其主界面简便易于使用。
系统的数据库连接主要采用JDBC的方式,这样的连接方法简单,避免了过多的配置,数据库的访问全部由操作系统内部来完成。数据库的接口采用JavaBean连接实现。使用MYSQL来存放BBS的所有数据,包括用户信息,文章数据,用户消息,系统数据等。
JavaBean完成Jsp程序和数据库的连接;方便对数据库的读写,提高重用度,减少代码量。
根据UML系统模型,可以确定系统中的各种实体以及它们之间的关系。本系统的实体包括管理员数据实体(Numb1)、用户数据实体(User)、帖子数据实体(btable)等。
M
浏览
浏览
帖 子
用户
1
M
管理
管理
N
管理员
1
1
图3.4 系统ER图
数据库表结构
1.Board表
表3-2 Board表
字 段 | 类 型 | 长 度 | 允 许 空 |
---|---|---|---|
Id | Int | 11 | |
Btable | varchar | 20 | |
Name | Varchar | 30 | |
Logo | Varchar | 100 | yes |
Inform | Varchar | 160 | yes |
Focus | Varchar | 200 | yes |
Boardmast | Varchar | 255 |
2. Numb1表
表3-3 Numb1表
字 段 | 类 型 | 长 度 | 允 许 空 |
---|---|---|---|
Userid | Varchar | 20 | |
Pw | Varchar | 20 | |
Varchar | 40 | yes | |
Tim | Datetime |
3. Onlcount表
表3-4 Onlcount表
字 段 | 类 型 | 长 度 | 允 许 空 |
---|---|---|---|
Id | Int | 11 | |
Page | Varchar | 80 | |
Time | Varchar | 10 | |
Userid | Varchar | 20 | |
Username | Varchar | 20 | |
Ip | Varchar | 15 |
4.Online表
表3-5 Online表
字 段 | 类 型 | 长 度 | 允 许 空 |
---|---|---|---|
Userid | Varchar | 20 | |
Ontims | Int | 11 | yes |
Txt | Int | 11 | yes |
Point | Int | 10 | yes |
Penname1 | Varchar | 250 | yes |
Penname2 | Varchar | 250 | yes |
5.btable表
表3-6 btable表
字 段 | 类 型 | 长 度 | 允 许 空 |
---|---|---|---|
Id | Int | 11 | |
super | Int | 11 | |
Boardid | Int | 11 | |
title | Varchar | 40 | |
Txt | Text | ||
Userid | Varchar | 20 | |
Username | Varchar | 20 | |
Time | Datetime | ||
ip | Datetime | ||
editime | Varchar | 250 | yes |
6.User表
表3-7 User表
字 段 | 类 型 | 长 度 | 允 许 空 |
---|---|---|---|
userid | Varchar | 20 | |
Step | Int | 11 | |
Root | Varchar | 75 | |
Question | Varchar | 30 | yes |
Answer | Varchar | 30 | yes |
Face | Varchar | 50 | |
Name | Varchar | 20 | |
Sex | Varchar | 5 | yes |
Varchar | 5 | yes | |
Varchar | 15 | yes | |
Tel | Varchar | 15 | yes |
Job | Varchar | 20 | yes |
系统数据库采用MYSQL。今天的商业环境要求不同类型的数据库解决方案。性能、可伸缩性及可靠性是基本要求,MYSQL 给数据管理与分析带来了灵活性。从数据管理和分析角度看,MYSQL可以作为一个完备的数据库和数据分析包。作为重要的基准测试可伸缩性和速度奖的记录保持者,MYSQL 是一个具备完全功能支持的数据库产品,提供了对可扩展标记语言 (XML) 的核心支持以及在 Internet 上和防火墙外进行查询的能力。
服务器端程序采用JDBC来访问数据库:
----------------------------------------------------------------------------------------------------------------
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://"+"localhost"+"/"+numb1,"root","");
----------------------------------------------------------------------------------------------------------------
上面两条Java语句完成数据库的连接,而下面几条语句则完成最基本的信息数据查询操作。
----------------------------------------------------------------------------------------------------------------
package numb1.com;
import java.lang.*;
import java.sql.*;
public class db{
private Connection con;
private Statement st;
private ResultSet rs;
private String host="localhost";
private String user="root";
private String pw="";
private String db="numb1";
private String Dri="com.mysql.jdbc.Driver";
private String url="jdbc:mysql://"+host+"/"+db;
public String getStr(String s){
String str=s;
try{
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
return str;
}
catch(Exception e){return null;}
}
public String gb2iso(String qs){
try{
if (qs == null) return "NULL";
else return new String(qs.getBytes("gb2312"),"iso-8859-1");
}
catch(Exception e){
System.out.print("gb2iso error:"+e.getMessage());
}
return "NULL";
}
public void close(){//关闭连接
try{
if(rs!=null)rs.close();
}catch(Exception e){
System.out.print("rs"+e.getMessage());
}
try{
if(st!=null)st.close();
}catch(Exception e){
System.out.print("st"+e.getMessage());
}
try{
if(con!=null)con.close();
}catch(Exception e){
System.out.print("con"+e.getMessage());
}
}
public ResultSet query(String sql)throws Exception{
try{
Class.forName(Dri).newInstance();
con=DriverManager.getConnection(url,user,pw);
st=con.createStatement();
rs=st.executeQuery(sql);
return rs;
}catch(SQLException e){
System.out.print(e.getMessage());
return null;
}
}
public void update(String sql)throws Exception{
try{
Class.forName(Dri).newInstance();
con=DriverManager.getConnection(url,user,pw);
st=con.createStatement();
st.executeUpdate(sql);
st.close();
con.close();
}catch(SQLException e){
System.out.print(e.getMessage());
}
}
}
通过上面的Java语句,服务器端就完成了对数据库的连接,并且实现了对数据库的查询、更新等操作。
---------------------------------------------------------------------------
BBS系统总体上分6个模块,模块之间相互连接,互相作用,从用户的注册,登陆退出到发表文章,回复文章,对BBS系统的管理都可以通过简单的操作来完成。论坛系统设计简洁明了,没有过多的附属功能。
要完成论坛的各项操作,用户必须登陆论坛系统,如果没有论坛帐户,用户注册是必须的。用户命令如果是退出,则清除用户的状态信息,并返回BBS 首页,如果是登录则使用JDBC连接数据库,取得用户输入的帐号和密码并查询数据库,将得出的结果和用户输入的信息做比较,验证正确,显示用户已经登陆到系统,错误将返回消息让用户从新输入。如果用户想注册帐户,则返回注册页面,用户填写信息后,将检测信息的正确性,如果帐号允许注册,则完成帐号的注册,将信息写入到数据库中,如果帐户已经存在,则返回错误信息,告诉用户帐号存在,请用户从新输入,并完成注册,进程结束。
图3.5 用户注册登陆模块
(2)帐户信息模块
当用户登陆系统后,在个人中心中,可以通过修改资料的链接来修改个人资料(其中帐户名是不允许修改的),通过我的话题来查看和修改自己发布的文章。
图3.6 帐户信息模块
(3) 文章发布模块
用户登陆系统后可以查看其他所有用户发的文章,并可以发布自己的话题,也可响应回复其他用户和自己发表的话题。
图3.7 文章发布模块
(4) 公告制度模块
论坛管理员可以通过后台管理系统发布论坛公告,今日话题,并可以设置版面图标。
(5) 版块管理模块
论坛管理员可以通过后台管理系统控制论坛的版块,管理员可以完成下列功能:添加分类或版面,版面配置或删除;并可以对已存在的版块设置属性。
(6) 信息管理模块
信息管理模块主要完成下面的功能。信息配置;添加管理员; 编辑管理员;设定等级;配置权限;重新登录;安全退出;用户等级;用户列表。
以上的功能完成了整个论坛的配置,用户的管理,管理员的管理都可以通过对应的链接来完成。
表3-8出错或故障情况一览表
错误类型 | 错误代号 | 异常类型 | 输出信息 | 处理方法 | |
---|---|---|---|---|---|
1 | 用户帐号不存在 | ERR_01 | NULL | 无此帐号 | 请用户注册 |
2 | 用户密码错误 | ERR_02 | Check Error | 密码错误 | 重新输入 |
3 | 数据库连接错误 | ERR_03 | Connect | 无法连接数据库 | 告诉用户错误。 |
4 | 数据库查询错误 | ERR_04 | Select | 查询数据库出错 | 请客户稍后重试 |
5 | 数据库查询错误 | ERR_04 | Insert(创建帐号) | 无法创建帐户 | 请客户稍后重试 |
6 | 数据库查询错误 | ERR_04 | Delete(删除好友) | 无法删除好友 | 请客户稍后重试 |
7 | 数据库查询错误 | ERR_04 | Updata(更新数据) | 无法更新数据库 | 请客户稍后重试 |
8 | 用户没有权限 | ERR_05 | Permissions(权限) | 用户没有权限 | 告知用户 |
当出现帐号,密码等通常的错误时,用户可以重新输入信息,即可解决,或是重新启动客户端,当出现无法连接数据库或者是查询中的错误,通常系统管理员重新启动服务即可解决,由于数据库的连接错误是全局的,所以重新启动服务是最佳的操作。
用于系统的检查与维护的检测点和专用模块,在这个版本中没有出,将会在后续开发中增加,例如自动重新启动服务,自动纠正数据的错误。以及用户数据的安装问题,密码的加密问题。
要完成论坛的各项操作,用户必须登陆论坛系统,如果没有论坛帐户,用户注册是必须的。用户命令如果是退出,则清除用户的状态信息,并返回BBS 首页,如果是登录则使用JDBC连接数据库,取得用户输入的帐号和密码并查询数据库,将得出的结果和用户输入的信息做比较,验证正确,显示用户已经登陆到系统,错误将返回消息让用户从新输入。如果用户想注册帐户,则返回注册页面,用户填写信息后,将检测信息的正确性,如果帐号允许注册,则完成帐号的注册,将信息写如到数据库中,如果帐户已经存在,则返回错误信息,告诉用户帐号存在,请用户从新输入,并完成注册,进程结束。
----------------------------------------------------------------------------------------------------------------
登陆页面:login.jsp
部分代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ include file = "include/config.jsp" %>
<%
String p=request.getParameter("page");p=ht.donull(p);
String bdid=request.getParameter("bdid");bdid=ht.donull(bdid);
String bbsid=request.getParameter("bbsid");bbsid=ht.donull(bbsid);
String name="";
String root="";
String sendredir="first.jsp";
String sql;
ResultSet rs;
if(p.indexOf("display")!=-1){
sendredir=p+".jsp?bdid="+bdid+"&bbsid="+bbsid;
}else if(p.indexOf("main")!=-1){
sendredir=p+".jsp?id="+bdid;
}
%>
<%
String id=(String)request.getParameter("id");id=ht.donull(id);
String mm=(String)request.getParameter("pw");mm=ht.donull(mm);
boolean test;
if(id.compareTo("")!=0 && mm.compareTo("")!=0){
if(online_enable == "on"){
test=onLine.Login(id,request.getRemoteAddr());
}else{
test=true;
}
if(test){
sql="select*from numb1 where userid='"+id+"' and pw='"+mm+"'";
rs=con.query(sql);rs.next();if(rs.getRow()!=0){
session.setAttribute("id",id);
sql="select step, name from user where userid='"+id+"'";
rs=con.query(sql);rs.next();
if(rs.getRow()!=0){
root=rs.getString(1);
name=con.getStr(rs.getString(2));
session.setAttribute("root",root);
session.setAttribute("name",name);
}
sql="select ontims from online where userid='"+id+"'";
rs=con.query(sql);rs.next();
int count=rs.getInt(1)+1;
String ip=request.getRemoteAddr();
sql="update online set ontims="+count+",lastip='"+ip+"',lastim=now() where userid='"+id+"'";
con.update(sql);
response.sendRedirect(sendredir);
上面代码实现用户登陆界面,对用户信息进行验证,如果用户名和密码没有错误,则进入论坛系统,可以拥有注册用户所有的权限。否则提示错误信息。
----------------------------------------------------------------------------------------------------------------
注册页面reg.jsp
部分代码:
function check_form(theform)
{
if (theform.id.value.length<4)
{
alert("对不起,您的ID长度不够!");
theform.id.focus();
return false;
}
if (theform.mm1.value.length<4)
{
alert("对不起,您的密码长度不够!");
theform.id.focus();
return false;
}
if (theform.mm1.value==""||theform.mm2.value==""||theform.mm1.value!=theform.mm2.value)
{
alert("您输入密码的方式不正确,请确认后正确输入!");
theform.mm1.focus();
return false;
}
if (theform.mail.value=="")
{
alert("请输入您的E-mail,以便您的密码遗失后取回密码!");
theform.mail.focus();
return false;
}
if (theform.mail.value.indexOf('@') == -1||
theform.mail.value.indexOf('.') == -1||
theform.mail.value.charAt(0)==".")
{
alert("Email地址格式不正确!");
theform.mail.focus();
return false;
}//value
if (theform.name.value=="")
{
alert("请输入您的昵称!");
theform.name.focus();
return false;
}
}
function KeyFilter(){
if (!((event.keyCode>96 && event.keyCode<123)||(event.keyCode>47 && event.keyCode<58)||(event.keyCode=95)))
return false;
}
上面代码实现对用户信息的验证,提示新用户需要注意的问题,那些选项是必须填写的,那些是可选的,并过滤一些非法字符,使注册功能更完善。
----------------------------------------------------------------------------------------------------------------
用户登陆页面login.jsp
图4.1 用户登陆页面
用户注册页面reg.jsp
图4.2 用户注册页面
当用户登陆系统后,在个人中心,可以通过修改资料的链接来修改个人资料(其中帐户名是不允许修改的),通过我的主题来查看和修改自己发布的文章。
----------------------------------------------------------------------------------------------------------------
主题显示:pcmain.jsp
部分代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ include file = "include/config.jsp" %>
<%
String id=(String)session.getAttribute("id");id=ht.donull(id);
String root=(String)session.getAttribute("root");root=ht.donull(root);
String name=(String)session.getAttribute("name");name=ht.donull(name);
String bdid=request.getParameter("id");
String stringpage=request.getParameter("page");//stringpage为未处理的字符串型的页码数
String table="";
String bdname="";
String logo="";
String information="";
String focus="";
String main="main.jsp";
String display="display.jsp";
String reer="";
String sql;
int retimes,readtimes;
int x=0;//计数器
int count=0;
int showrow=36;//每页显示条数
int pages=1;//当前页数
int startrow; //本页开始条数
int allcount=0;
//本页文件名
String f_name=request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/")+1,request.getRequestURI().lastIndexOf("."));
if(root.compareTo("")==0){root="0";}
int step=Integer.parseInt(root);
pages=ht.getInteger(stringpage,1);
if(!ht.isNumber(bdid)){
out.print("
}else{
sql = "SELECT btable, name, logo, inform, focus, page FROM board WHERE id="+bdid;
ResultSet board=con.query(sql);board.next();
if(board.getRow()==0){
out.print("
}else{
table=board.getString(1);
bdname=con.getStr(board.getString(2));
logo=con.getStr(board.getString(3));
information=con.getStr(board.getString(4));
focus=con.getStr(board.getString(5));
main=board.getString(6)+main;
display=board.getString(6)+display;
java.io.File f1=new java.io.File(absDir+relDir+main);
java.io.File f2=new java.io.File(absDir+relDir+display);
if(!f1.isFile()){main="main.jsp";}
if(!f2.isFile()){display="display.jsp";}
//验证页面
if((main.compareTo(_self)!=0)){
response.sendRedirect(main+"?id="+bdid);
}else{
//计算本版总贴数
if(table.compareTo("")==0){table="btable1";}
sql="SELECT COUNT(id) FROM "+table+" WHERE boardid="+bdid;
ResultSet bcount=con.query(sql);bcount.next();
if(bcount.getRow()!=0){
allcount=bcount.getInt(1);
}
//计算页数
sql="SELECT id, title, clas, super, recommendation, locked, userid, username, lastid, lastname, readtimes, retimes, lastretime FROM "+table+" WHERE boardid="+bdid+" AND up='n' ORDER BY lastretime DESC" ;
ResultSet rs=con.query(sql);
rs.last();
count=rs.getRow();
int pcount=count/showrow;
if(count%showrow>0){pcount=pcount+1;}
if(pcount<2)pcount=1;
if(pages<2)pages=1;
if(pages>pcount)pages=pcount;
startrow=(pages-1)*showrow+1;
if(online_enable == "on"){
String uId,uName,ip=request.getRemoteAddr();
if(id.compareTo("")==0){
uId="guest";
uName="guest";
}else{
uId=id;
uName=name;
}
onLine.addUser(uId,uName,(_self+"?id="+bdid),ip,onTime);
}
%>
本页面实现对文章的分页显示功能,验证页面,对各个版块的主题进行显示和处理,可以提高用户的浏览速度,结构更整洁。
----------------------------------------------------------------------------------------------------------------
主题显示:pcmain.jsp
图4.3 主题显示
用户登陆系统后可以查看其他所有用户发的文章,并可以发布自己的话题,也可响应回复其他用户和自己发表的话题。
----------------------------------------------------------------------------------------------------------------
文章发表:send.jsp
部分代码:
<%
String bdid=request.getParameter("id");
String id=(String)session.getAttribute("id");
String bdname="";
String main="main.jsp";
if(id==null){response.sendRedirect("login.jsp");}else{
String sql="select name, page from board where id="+bdid;
ResultSet rs=con.query(sql);rs.next();
if(rs.getRow()!=0){
bdname=con.getStr(rs.getString(1));
main=rs.getString(2)+main;
}
con.close();
%>
本页面提供用户的发帖功能,用户可以根据自己的需要发表帖子,可以选择自己的类型,比如普通,原创,转帖等类型,有签名功能,还可以使用多彩文本,给用户提供更完美的选择。
---------------------------------------------------------------------------------------------------------------
文章发表:send.jsp
图4.4 文章发表
论坛管理员可以通过后台管理系统发布论坛公告,今日话题。
论坛的制度上可以设置对文章操作的客户积分,发帖数,精华帖等功能。
公告信息:boardset.jsp
部分代码:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
String id=(String)session.getAttribute("id");id=ht.donull(id);
String root=(String)session.getAttribute("root");root=ht.donull(root);
String bdid=request.getParameter("bdid");
String table="";
String logo="";
String bdname="";
String inform="";
String focus="";
String bdmast="";
boolean test=false;
if(root.compareTo("")==0){root="0";}
int step=Integer.parseInt(root);
String sql="select btable,name,logo,inform,focus,boardmast from board where id="+bdid;
ResultSet rs=con.query(sql);rs.next();
if(rs.getRow()!=0){
table=rs.getString(1);
bdname=con.getStr(rs.getString(2));
logo=rs.getString(3);
inform=con.getStr(rs.getString(4));
focus=con.getStr(rs.getString(5));
bdmast=con.getStr(rs.getString(6));
String mast[]=ht.split(bdmast,"*");
for(int i=0;i if(mast[i].compareTo(id)==0){ test=true; } } }con.close(); if(step>2 || test){ %> 本页面是给管理员提供了对版块更好的管理,可以通过发布公告给本论坛的用户最新的通知,还有发表今日话题,能更快的对论坛进行有效的管理。 --------------------------------------------------------------------------------------------------------------- 公告信息:boardset.jsp 图4.5 公告信息 论坛管理员可以通过后台管理系统开控制论坛的版块,管理员可以完成下列功能:添加分类或版面,版面配置或删除. -------------------------------------------------------------------------------------------------------------- 权限列表:rootlist.jsp 部分代码: <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %> <% String root=(String)session.getAttribute("root");root=ht.donull(root); String user_id=request.getParameter("id");user_id=ht.donull(user_id); String user_name=""; String user_ontimes=""; String user_txts=""; String user_retxts=""; String user_point=""; String user_popu=""; String user_sup=""; String user_recom=""; String duty=""; int user_step=0; boolean test=true; if(root.compareTo("")==0){root="0";} int step=Integer.parseInt(root); if(step<4){ out.print("4.4.3程序运行过程截图
4.5版块管理模块
4.5.1功能说明
4.5.2功能实现
}else{
String user="select step,root,name from user where userid='"+user_id+"'";
ResultSet use_rs=con.query(user);use_rs.next();
if(use_rs.getRow()==0){
test=false;
}else{
user_step=use_rs.getInt(1);
String user_root[]=ht.split(con.getStr(ht.donull(use_rs.getString(2))),"*");
if(user_root.length>1) duty=""+user_root[1]+"";
user_name=con.getStr(use_rs.getString(3));
}
con.close();
String online="select ontims,txt,re,point,popu,suptxt,recomtxt from online where userid='"+user_id+"'";
ResultSet onl_rs=con.query(online);onl_rs.next();
if(onl_rs.getRow()==0){
test=false;
}else{
user_ontimes=onl_rs.getString(1);
user_txts=onl_rs.getString(2);
user_retxts=onl_rs.getString(3);
user_point=onl_rs.getString(4);
user_popu=onl_rs.getString(5);
user_sup=onl_rs.getString(6);
user_recom=onl_rs.getString(7);
}
con.close();
if(!test){
out.print("
}else{
%>
论坛管理员可以通过后台管理系统控制论坛的版块,管理员可以完成下列功能:任命斑竹,取消斑竹,改变权限等功能。
---------------------------------------------------------------------------------------------------------------
权限列表:rootlist.jsp
图4.6 权限列表
信息管理模块主要完成下面的功能。
留言管理;添加管理员; 编辑管理员;设定等级;配置权限;重新登录;安全退出;用户等级。
以上的功能完成了整个论坛的配置,用户的管理,管理员的管理都可以通过对应的链接来完成。
---------------------------------------------------------------------------------------------------------------
留言管理:msend.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%
String acid=request.getParameter("id");
%>
本页面主要实现对注册用户之间的留言管理,可以方便的在用户之间留言,这样增加了消息的隐蔽性,其他用户是接收不到的。
---------------------------------------------------------------------------------------------------------------
留言管理:msend.jsp
图4.7 留言管理
在该系统的开发过程中采用了当今流行的多种热门技术,在开发过程中严格遵守正规软件系统开发的流程,本系统在开发过程中利用JSP和JavaBean相结合的技术充分体现了java这一语言一次开发处处运行的特点。开发中严格遵守软件工程中技术和说明文档的书写和备份,为系统测试和维护提供一个良好的书面说明。
本系统实现了大部分论坛所拥有的功能。使用了JSP和JavaBean相结合的这门技术使系统的可移植性得到很大的提高,在系统将来使用范围进一步扩大的情况下本系统可以在原有的基础上作升级和拓展。
[1]彭木根. 数据仓库技术与实现[M]. 电子工业出版社,2002-6
[2]Lou Agosta. 数据仓库技术指南[M]. 人民邮电出版社,2000-11
[3]Efrem G.Mallach. Decision Support and Data Warehouse Systems. 清华大学出版社,2001-1
[4]Marty Hall著,邓英才译. Servlet与JSP核心技术. 人民邮电出版社,2001-10
[5]Michael Abbey, Michael J. Corey, lan Abramson 著,王兰成译. Oracle 8i初学者指南. 机械工业出版社,2001-4
[6]耿祥义. JAVA课程设计. 清华大学出版社, 2001-6
[7]飞思科技产品研发中心编著. JSP应用开发详解. 电子工业出版社,2002-1
[8]飞思科技产品研发中心编著. JAVA TCP/IP应用开发详解. 电子工业出版社,2002-1
[9]网冠科技编著. JavaScript时尚编程百例. 机械工业出版社,2001.
[10]Hans Bergsten著.何健辉,许俊娟译. JSP设计. 中国电力出版社,2004-11
[11]Hans Bergsten. Java Server Pages. 3rd Edition. O'Reilly Publisher, December 2003.
在本系统的开发过程中得到了多方面的帮助和协作,在此感谢学校领导给予的重视和指导老师胡军多方面帮助,同时感谢所有在项目开发过程中提供帮助的人员。
感谢我的导师胡军老师,他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;你循循善诱的教导和不拘一格的思路给予我无尽的启迪。这篇论文的设计细节和数据,都离不开你的细心指导。你严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。帮助我能够很快的融入这个新的设计。感谢我的室友们,来自各个地区,相聚到这个陌生的城市里,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。我们在一起的日子,我会记一辈子的。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!