JSP+access手机销售系统(论文+系统+开题+封面+扉页+需求分析+任务书)

JSP+access手机销售系统(论文+系统+开题+封面+扉页+需求分析+任务书)

软 件 课 程 设 计 报 告

线

专 业:计算机科学与技术专业 班级:

小组成员:

指导教师: 职 称:

20 年 月

题 目手机在线销售系统
设计日期20 年 月 日至 20 年 月 日
小组成员在本次设计中承担的任务文档成绩
担任小组组长,在设计中主要设计手机销售论坛。
担任手机销售论坛前台程序的设计和论坛搜索部分。
担任手机销售论坛的后台管理程序。
担任手机销售论坛的用户功能的实现。
指导教师签字: 年 月 日

项目开发总结报告

【摘要】通过网上购物系统的建设以实现对商业零售企业提供信息化管理。建立了B2C的网络销售系统。着重论述了系统功能与实现、数据流程及存储,包括商品目录、用户注册、网上订货与购物、库存查询、后台数据库管理等。

运用HTML语言、JavaScript技术、JSP与后台数据库链接等关键技术建设网上购物系统。实现网上购物系统以下功能:

(1)为客户提供24小时方便快捷的在线订购服务。

(2)商品信息的维护与管理。

(3)高效的商品数据方案,对商品信息进行科学、灵活地分类、存储。

(4)强大、方便、快捷的查询。

(5)订单号模块。

(6)将客户商业逻辑规则融入系统,即根据不同客户属性,提供不同付款方式。

(7)订单管理。

【关键词】B2C、网上购物系统、JSP、数据库

一:引言

  1. 编写目的

以下是根据CNNIC(中国互联网络信息中心)公布的中国B2C电子商务发展报告来进一步分析目前的网上购物的现状。(主要引用其中的分析图表)

由于以上的各种优势,电子商务在我国的发展十分迅速,它已经成为一个非常热门的领域,这就是我们本次课程设计选择网络购物系统的原因!不仅可以学习到网站的制作,还可以对最热门的领域加深了解,为以后的学习或工作积累经验!

1.2 背景

网上订购系统作为B2B,B2C(Business to Customer,即企业对消费者),C2C(Customer to Customer,即消费者对消费者)电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。

在美、日等信息化程度较高的国家和地区,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特,家庭仓储、科罗格、J.C培尼等纷纷挤身于网络经商的行列。调查表明:美国的家庭已越来越习惯于在家中从网上购物。

在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。根据CNNIC的统计结果,截止2004年1月中国有互联网用户7950万人,而又有40.7%以上的网民在过去的一年里有过网上购物经历,这就说明中国有网上购物的用户达是3235.7万人,并且这一数字还在以17%左右的速度增长,预计到2006年中国网上购物用户将达到6962万人,这说明在中国发展网上购物具有良好的群众基础,网上购物方式日趋被大家所接受。

电子商务的特性有以下几点:商务性、集成性、可扩展性、服务性、安全性、协调性。   

一. 商务性   
  电子商务最基本的特性为商务性,即提供买、卖交易的服务、手段和机会。网上购物

提供一种客户所需要的方便途径。因而,电子商务对任何规模的企业而言,都是一种机遇。

对我们中国的传统企业也不例外。

二. 集成性   
 a.技术的集成性

由于电子商务整个流成的处理涉及的内容比较多,比如信息,金融,服务等,要使得整个流程能够正常的运转,就需要运用技术去实现,当然技术是越先进的越好,比如从html到asp到jsp到现在的jsp.net,这是一个技术发展的过程,也是现实运用的需要。

b.信息的集成性

互联网上每个人都在搜索对自己有用的信息,因而它就应当提供大量的信息,满足不同用户的需要,现在中国面对客户的商业网站是越来越多了,怎样让客户一最快的速度,搜索到最有用的信息,可能应该是这类网站最应该考虑的。

三.扩展性

这主要是针对系统的稳定性来说的。电子商务的服务系统应当有自身的扩展功能。因为系统应当能承受住一定的负荷,如果在某个高峰访问期导致了服务器的崩溃,结果是可想而知的。

四.服务性   
  在电子商务环境中,客户不再受地域的限制,运用互联网为媒介的这种贸易,他的合作伙伴可以是地球上其他任一个角落,要想使全球的人都能接受你的所提供的商品,服务质量是最关键的。技术创新带来新的结果,万维网应用使得企业能自动处理商务过程,并不再象以往那样强调公司内部的分工。现在在Internet上许多企业都能为客户提供完整服务,这使得互联网的应用得以充分的发挥。

五.安全性

在电子商务中,安全性是必须考虑的核心问题。欺骗、窃听、病毒和非法入侵都在威胁着电子商务,因此要求网络能提供一种端到端的安全解决方案,包括加密机制、签名机制、分布式安全管理、存取控制、防火墙、安全万维网服务器、防病毒保护等。 随着技术的发展,电子商务的安全性也会相应得以增强。  

六.协调性

商务活动是一种协调过程,它需要雇员和客户,生产方、供货方以及商务伙伴间的协调。为提高效率,许多组织都提供了交互式的协议,电子商务活动可以在这些协议的基础上进行。

1.3定义

HTML语言:

HTML(Hyper Text Markup Language 超文本标记语言)是一种用来制作超文本文档的简单标记语言。与常见的字处理文件不同,Web页以超文本标识语言编排格式。HTML文件是带有特定HTML插入标记的用以编排文档属性和格式的标准文本文件。它能独立于各种操作系统平台(如UNIX,WINDOWS等)。自1990年以来HTML就一直被用作World Wide Web上的信息表示语言,用于描述Homepage的格式设计和它与WWW上其它Homepage的连结信息。

JavaScript技术:

JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择

JSP:

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。

数据库原理:

① SOL语言简单介绍

SQL是英文Structured Query Language的缩写,意思为结构化查询语言。

  SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。

②JDBC,ODBC技术介绍

JDBC
----JDBC(Java DataBase Connectivity)是Java与数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层的应用程序编程接口(API),它由Java 语言编写的类和接口组成,旨在让各数据库开发商为Java程序员提供标准的数据库API。 JDBC API定义了若干Java中的类,表示数据库连接、SQL指令、结果集、数据库元数据等。它允许Java程序员发送SQL指令并处理结果。通过驱动程序管理器,JDBC API可利用不同的驱动程序连接不同的数据库系统。。

ODBC
----ODBC(Open DataBase Connectivity)是微软倡导的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API),它以X/Open和 ISO/IEC的调用级接口(CLI)规范为基础,并使用结构化查询语言(SQL)作为其数据库访问语言。 ODBC总体结构有四个组件:
---- 应用程序 执行处理并调用ODBC API函数,以提交 SQL语句并检索结果。

---- 驱动程序管理器(Driver Manager) 根据应用程序需要加载/卸载驱动程序,处理ODBC函数调用,或把它们传送到驱动程序。

---- 驱动程序 处理ODBC函数调用,提交SQL请求到一个指定的数据源,并把结果返回到应用程序。如果有必要,驱动程序修改一个应用程序请求,以使请求与相关的DBMS支持的语法一致。

---- 数据源 包括用户要访问的数据及其相关的操作系统、DBMS及用于访问DBMS的网络平台。

③ Access数据库

Access是一个数据库管理系统,它之所以被集成到Office中而不是Visual Studio中,是因为它与其它的数据库管理系统(如Visual FoxPro)相比更加简单易学,一个普通的计算机用户即可掌握并使用它。而且最重要的一点是,Access的功能足够强大,足以应付一般的数据管理及处理需要。

1.4参考资料

书籍资料:

《JSP实用编程实例集锦》 清华大学出版社 马文刚等编著

《Java 案例开发》 中国水利水电出版社 张靓等编著

《电子商务网站的设计与实现》华侨大学学报 严桂兰、刘甲耀

参考及专业网站

http://www.cnjsp.org

http://mobile.163.com/

2实际开发结果

2.1产品

手机销售系统,大体分为四部分:前台,后台,购物车和论坛。

前台JSP页面包括:index.,view,paihang,top,basket,userts……等。其中网站主页为index

后台Access数据库共包括19个表:ad,admin,basket,company,dlpf,guest,hw,logo,member,

Modify,news,newsclass,nsort,ps,pub,sort,sub,system,ts各表。

2.2主要功能和性能

(1)为客户提供24小时方便快捷的在线订购服务。

(2)商品信息的维护与管理,包括价格的调整、现有商品信息的修改、新商品信息的加入、过时商品信息的删除等。

(3)高效的商品数据方案,对商品信息进行科学、灵活地分类、存储,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出自己所需商品。

(4)强大、方便、快捷的查询功能。提供关键字查询(如:查找所有“NOKIA ”商品)。

(5)订单号模块所谓订单号模块,就是客户购买完商品后,系统自动分配一个购物号码给客户,以方便客户随时查询账单处理情况。了解现在货物的状态。

(6)将客户商业逻辑规则融入系统,即根据不同客户属性,提供不同付款方式。(如信用卡、支票等)

(7)订单管理。为分销商的EPR系统提供数据接口。管理员可以查看历史记录、订单状态,并且能够在最短的时间内通知用户。

(8)客户论坛。客户可以分享使用心得,在线反映问题,获得最新的新闻资讯!

系统完成了事先制定的功能需求,并且增加了论坛的功能,各项功能使用良好,没有大的毛病。

2.3基本流程

系统前台流程框图

系统后台流程框图

2.4进度

系统完成时间2005-6-28日,预计完成时间2005-6-29日,基本按时完成。

详细进度 2005-5-15至2005-5-31,需求分析阶段

2005-6-1 至 2005-6-10,详细设计阶段

2005-6-11至2005-6-25,代码编写阶段

2005-6-26至2005-6-27,系统测试阶段

2.5费用

计划费用:

电费: 100元

上网费: 60元

消暑降温费: 100元

开发期限:45天

实际费用:

电费: 100元

上网费: 60元

消暑降温费: 100元

人工费:2000元(5元/机时)

大幅超出预计费用

主要原因:课程设计课程学校收费5元/机时

开始并未计算在内!

3开发工作评价

3.1对生产效率的评价

在45天时间做出一个比较完善的商务网站说明大家都比较努力。

3.2对产品质量的评价

由于编程经验的不足以及本次使用的是JSP,程序中难免出现各种错误,不过好在本组组长韩庆宾对网站的建设以及JSP有较高的造诣,很多问题在他的帮助下得以解决,才最终完了本系统!本系统虽然在功能上还有待完善,美工上还比较欠缺,但基本的操作都可以实现,也尽我们的能力将差错控制在了最低的限度。可以说,本系统达到了实际应用的标准。

3.3对技术方法的评价

系统使用JSP+Access,在系统的安全性上会有一定的欠缺,这是由于Access本身所造成的!开发初期想使用SQL SERVER或者MYSQL来做系统后台数据库,但由于在数据类型的转换方面老是出错,迫不得已改用Access!而JSP的安全性弥补了Access的不足,JAVA语言的平台无关性便于本系统的推广使用!并且在JSP中使用了JAVA BEAN等新技术。

3.4出错原因的分析

大部分的错误都是编程经验欠缺以及粗心所致,也有一些其它的错误。

4经验与教训

通过本次体统设计,我们了解了一个网站从需求分析到开发测试以及投入使用的全过程。进一步了解了HTML网页设计,接触了JSP,Java Bean等一些网站建设的新技术新方法。通过一次具体的设计,对一些知识有了理性上的认识,为今后的学习与工作积累了宝贵的经验!并且在其中再一次看到了需求分析与详细设计的重要性,只有正确的需求分析才能做出有市场的产品,而完整良好的详细设计可以使你的编码事半功倍,最后就是我们强调良久的团队与合作,本次系统设计我们是为数不多的组队完成之人,在工作中大家互相帮助,相互促进,相互学习,不仅丰富了你的知识,也培养了你的交际与沟通能力!

1引言11

1.1编写目的11

1.2 背景11

1.3定义11

1.4参考资料22

2项目概述22

2.1工作内容22

2.2主要参加人员22

2.3产品22

2.3.1程序22

2.3.2文件22

2.3.3服务22

2.3.4非移交的产品33

2.4验收标准33

2.5完成项目的最迟期限33

2.6本计划的批准者和批准日期33

3实施计划33

3.1工作任务的分解与人员分工33

3.2预算33

3.3关键问题44

4支持条件44

4.1计算机系统支持44

4.2需由用户承担的工作44

5专题计划要点44

项目开发计划

1引言

计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息自动化的作用也越来越大。从而使我们从繁杂的事务中解放出来,提高了我们的工作效率。

首先,目前国内很多大中城市的商场还是以售货员站柜台为主,这样给商场带来很多管理上的问题;其次,由于商场是人群集中的地区,这样为管理以及保安等方面也带来很多的不便。第三,目前电子商务正处于高速发展时期,绝大多数的企业已全面实施自己的电子商务计划,所以建立属于自己的网络销售平台已是当务之急。因此,为了解决这些管理以及其他等一些问题,我们迫切需要一种通过网络来进行商品交易的平台。借助Internet/Intranet提供给我们的处理信息及时快捷,因此开发了本套网络购物系统。

1.1编写目的

编写这份软件项目开发计划的目的是为接下来的概要设计和详细设计打下基础,以及为系统的维护带来方便。

1.2 背景

  1. 待开发的系统的名称是手机销售系统
  2. 本项目的任务提出者为软件系统设计指导老师;开发者为系统设计小组,成员有:韩庆宾、赵丹、徐剑辉和俞少坊;用户为手机销售商场,实现该软件的计算中心或计算机网络的能力一般即可
  3. 使用该软件系统同时与其他Windows系统兼容,能方便管理与维护。

1.3定义

以下为本文件中用到的专门术语的定义:

手机销售系统 订单投诉

客户服务 新闻中心

我的订单 购物车

收银台 前台管理

后台管理 会员管理

手机销售论坛

1.4参考资料

1.《JSP编程实例集锦》 马文刚等编著 清华大学出版社

2.《数据库原理与技术》 刘方鑫编著 电子工业出版社

2项目概述

2.1工作内容

项目开发阶段要做的工作就是具体的分工,各个小组成员明确自己负责哪一个模块;某一时间段应该完成什么工作和完成什么文档。

这个阶段是比较重要的,它为接下来的工作打好了基础,关系到整个系统的开发。

2.2主要参加人员

参加本项目开发的主要人员有:韩庆宾(组长)、赵丹、徐剑辉和俞少坊。

2.3产品

2.3.1程序

当系统完成以后,交给用户的系统名称为手机销售系统v1.0版,所用的编程语言是JSP。该系统主要分为四大模块:前台管理、后台管理、会员管理和手机销售论坛。具体的每个模块又可以实现以下的功能:前台管理要实现的有搜索引擎,销售排行,分类查看,公告,新闻,友情连接等功能;后台管理要实现的有商品管理、订单管理、用户管理、手机类别管理、信息管理、常规管理的添加,修改与删除的功能;会员管理要实现的是会员注册、订单查看、购物车、收银台、更改资料等的功能;手机销售论坛的功能是要包括一般论坛的功能,如发帖,回帖这些基本的功能。

2.3.2文件

系统完成以后,须移交给用户打包的可执行文件或JSP文件,运行必备的Tomcat和JDK程序以及怎样配置环境的说明文档。

2.3.3服务

当系统完成以后,给用户培训如何安装、一些简单问题维护和运行支持等。以系统交付给用户的日期起算,一年时间内软件开发人员免费向用户提供系统维护的服务。一年以后,系统的维护用户须支付一定的报酬。

2.3.4非移交的产品

系统开发过程中的文档不必交给用户,留做软件开发人员维护之用。

2.4验收标准

系统完成之后,分别对该系统的四个模块进行验证,标准就是看它能否很好的完成预定的功能。安全性是非常重要的,除了正确对数据库进行查询、插入和删除操作,异常处理是很重要的,要求能够根据不同的异常和错误做出相应的异常处理。一个好的系统必须能很好的做到这一点。

2.5完成项目的最迟期限

本系统最迟到2005年6月30日必须完成。

2.6本计划的批准者和批准日期

本计划于2005年5月23日软件系统设计指导老师批准实施。

3实施计划

3.1工作任务的分解与人员分工

对于该系统中的四个模块,具体的分工如下:

韩庆宾:负责完成手机销售论坛,要求论坛的基本功能都要实现,包括发帖,回帖等。

赵丹:负责完成前台管理,要求实现的基本功能包括搜索引擎、销售排行、分类查看、公告、新闻、友情连接等。

徐剑辉:负责完成后台管理,要求实现的基本功能包括商品管理、订单管理、用户管理、手机类别管理、信息管理、常规管理等。

俞少坊:负责完成会员管理,要求实现的基本功能包括会员注册、订单查看、购物车、收银台、更改资料等。

3.2预算

逐项列出本开发项目所需要的劳务(包括人员的数量和时间)以及经费的预算(包括办公费、差旅费、机时费、资料费、通讯设备和专用设备的租金等)和来源。

3.3关键问题

在该项目的开发的过程中,关键的问题就在于数据库设计的合理性以及对数据库的查询、删除、插入和修改。

4支持条件

4.1计算机系统支持

所需的计算机系统支持,包括计算机、外围设备、通讯设备、模拟器、编译程序、操作系统、数据管理程序包、数据存储能力和测试支持能力等都是一般的PC系统.

4.2需由用户承担的工作

在该项目的开发的过程中,用户的任务就是时刻与软件开发人员保持联系,不断地把新的需求反映给软件开发人员,以便软件开发人员能及时做出调整。

5专题计划要点

该项目的开发有如下的计划:

  1. 开发人员培训计划 目的为了加深开发人员的专业水平,更好的胜任工作。
  2. 测试计划 在交付给用户之前,尽可能地发现错误。
  3. 用户培训计划 使用户更好地使用该系统。
  4. 系统安装计划 配置系统的安装环境。

【摘要】通过网上购物系统的建设以实现对商业零售企业提供信息化管理。建立了B2C的网络销售系统。着重论述了系统功能与实现、数据流程及存储,包括商品目录、用户注册、网上订货与购物、库存查询、后台数据库管理等。

运用HTML语言、JavaScript技术、JSP与后台数据库链接等关键技术建设网上购物系统。实现网上购物系统以下功能:

(1)为客户提供24小时方便快捷的在线订购服务。

(2)商品信息的维护与管理。

(3)高效的商品数据方案,对商品信息进行科学、灵活地分类、存储。

(4)强大、方便、快捷的查询。

(5)订单号模块。

(6)将客户商业逻辑规则融入系统,即根据不同客户属性,提供不同付款方式。

(7)订单管理。

【关键词】B2C、网上购物系统、JSP、数据库

一:引言

  1. 编写目的

以下是根据CNNIC(中国互联网络信息中心)公布的中国B2C电子商务发展报告来进一步分析目前的网上购物的现状。(主要引用其中的分析图表)

由于以上的各种优势,电子商务在我国的发展十分迅速,它已经成为一个非常热门的领域,本需求说明是为那些想进入到电子商务中的个人而编写的,丛中你可以决定它是否是一个值得你进入的领域,以及你需要怎样的条件。

1.2 背景

系统名称:JSP网络购物系统(手机销售系统)

开发小组成员:组长:韩庆宾 组员:徐剑辉,赵丹,俞少坊

各成员分工:

: 论坛

: 后台管理

: 前台管理

: 购物车

1.3定义

HTML语言:

HTML(Hyper Text Markup Language 超文本标记语言)是一种用来制作超文本文档的简单标记语言。与常见的字处理文件不同,Web页以超文本标识语言编排格式。HTML文件是带有特定HTML插入标记的用以编排文档属性和格式的标准文本文件。它能独立于各种操作系统平台(如UNIX,WINDOWS等)。自1990年以来HTML就一直被用作World Wide Web上的信息表示语言,用于描述Homepage的格式设计和它与WWW上其它Homepage的连结信息。

JavaScript技术:

JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java与HTML折衷的选择

JSP:

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。 JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。

数据库原理:

① SOL语言简单介绍

SQL是英文Structured Query Language的缩写,意思为结构化查询语言。

  SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。

②JDBC,ODBC技术介绍

JDBC
----JDBC(Java DataBase Connectivity)是Java与数据库的接口规范,JDBC定义了一个支持标准SQL功能的通用低层的应用程序编程接口(API),它由Java 语言编写的类和接口组成,旨在让各数据库开发商为Java程序员提供标准的数据库API。 JDBC API定义了若干Java中的类,表示数据库连接、SQL指令、结果集、数据库元数据等。它允许Java程序员发送SQL指令并处理结果。通过驱动程序管理器,JDBC API可利用不同的驱动程序连接不同的数据库系统。。

ODBC
----ODBC(Open DataBase Connectivity)是微软倡导的、当前被业界广泛接受的、用于数据库访问的应用程序编程接口(API),它以X/Open和 ISO/IEC的调用级接口(CLI)规范为基础,并使用结构化查询语言(SQL)作为其数据库访问语言。 ODBC总体结构有四个组件:
---- 应用程序 执行处理并调用ODBC API函数,以提交 SQL语句并检索结果。

---- 驱动程序管理器(Driver Manager) 根据应用程序需要加载/卸载驱动程序,处理ODBC函数调用,或把它们传送到驱动程序。

---- 驱动程序 处理ODBC函数调用,提交SQL请求到一个指定的数据源,并把结果返回到应用程序。如果有必要,驱动程序修改一个应用程序请求,以使请求与相关的DBMS支持的语法一致。

---- 数据源 包括用户要访问的数据及其相关的操作系统、DBMS及用于访问DBMS的网络平台。

③ Access数据库

Access是一个数据库管理系统,它之所以被集成到Office中而不是Visual Studio中,是因为它与其它的数据库管理系统(如Visual FoxPro)相比更加简单易学,一个普通的计算机用户即可掌握并使用它。而且最重要的一点是,Access的功能足够强大,足以应付一般的数据管理及处理需要。

1.4参考资料

书籍资料:

《JSP实用编程实例集锦》 清华大学出版社 马文刚等编著

《Java 案例开发》 中国水利水电出版社 张 靓等编著

《电子商务网站的设计与实现》华侨大学学报 严桂兰、刘甲耀

参考及专业网站

http://www.cnjsp.org

http://mobile.163.com/

二.任务概述

2.1 目标

一个典型的B2C电子商务网上订购系统主要功能有:

(1)为客户提供24小时方便快捷的在线订购服务。

(2)商品信息的维护与管理,包括价格的调整、现有商品信息的修改、新商品信息的加入、过时商品信息的删除等。

(3)高效的商品数据方案,对商品信息进行科学、灵活地分类、存储,方便客户迅速从少则几万,多则几十万甚至上百万种商品中找出自己所需商品。

(4)强大、方便、快捷的查询功能。提供关键字查询(如:查找所有“Electronic Cannon”商品)。

(5)订单号模块所谓订单号模块,就是客户购买完商品后,系统自动分配一个购物号码给客户,以方便客户随时查询账单处理情况。了解现在货物的状态。

(6)将客户商业逻辑规则融入系统,即根据不同客户属性,提供不同付款方式。(如信用卡、支票等)

(7)订单管理。为分销商的EPR系统提供数据接口。管理员可以查看历史记录、订单状态,并且能够在最短的时间内通知用户。

2.2 用户特点

本系统操作简单,配置要求低,适用于希望建设自己的电子商务网站的入门人员!不要求专业的知识,维护简单,并且我们会提供在线升级,问题解答等相关服务!

2.3 假定和约束

开发经费:

电费: 100元

上网费: 60元

消暑降温费: 100元

开发期限:45天

三.需求规定

3.1 对功能的规定

3.2对3.2性能的规定

用户认为目前网上交易存在的主要问题:

图3用户认为目前网上交易存在的最大问题

从上面的图中可以看出目前两个最严重的问题是安全性和产品服务。因此交易的安全性是我们系统所强调的!

四.运行环境规定

由于我们定位于初级用户,故对系统的要求不高!但对于网站的稳定运行,我们建议使用专业的服务器!

本系统具有良好的兼容性,充分体现了Java和Access的通用性!可以稳定的运行于WIN98或WIN NT3.0以上版本的WINDOWS操作系统,同时支持各版本的UNIX,LINUX操作系统!

对各类通用及专业软件良好的支持,同时在线服务系统会随时解决您遇到的困难!

数据库设计说明书

1.引言

  1. 1编写目的

编写此文档的目的在于用文档的形式列出数据库中的数据对象与及数据对象之间的关系,探求合理的数据库设计规范,减少数据冗余,实现数据库的高效、准确的数据查询、数据连接工作,并对软件课程设计小组成员的工作起到协助和规范作用。

本需求的预期读者是与学习成绩管理系统软件开发有联系的决策人,开发组成人员,扶助开发者,支持本项目的领导和公司人员,软件验证者。

  1. 2背景

此数据库的名称为手机销售系统数据库;

使用此数据库的软件系统是手机销售系统;

任务提出者为手机销售系统制作小组全体成员;

用户为某某手机销售公司;

将安装该软件和该数据库的计算站是某某手机销售公司的某某主机。

  1. 3定义
    a..数据库-----指长期存储在计算机系统内的一个通用化的、综合性的、有结构的、可共享的数据的集合,具有较小的数据冗余度和较高的数据独立性、安全性和完整性。
    b. E-R图----E-R数据模型的图形表示法,是一种直观表示现实世界的有力的工具。目前,E-R图已经广泛用于数据库的概念设计。
    1.4 参考资料
    《软件工程---原理、方法与应用》 第二版 高等教育出版社
    《数据库原理与技术》 刘方鑫主编 电子工业出版社
    2 .数据分析
    2.1 数据实体的组成
    数据由9个实体组成,分别为
    管理员;购物车;手机;会员;新闻;新闻分类;手机品牌;手机分类;定单。
    2.2 实体分析
    1.管理员实体分析
    管理员

    .2.购物车实体分析
    购物车

    3.手机实体分析
    手机

    4.会员实体分析
    会员

    5.新闻实体分析
    新闻

    6.新闻分类实体分析
    新闻分类

    7.手机品牌实体分析
    手机品牌

    8.手机分类实体
    手机分类

    9.定单实体
    定单

    管理
    2.3 E-R图分析
    管理员
    其他实体

    结帐
    购物车
    定单

    3.数据库具体设计
    3.1数据库组成
    数据库由9个表组成(不包括其他附属的表),分别为
    admin:管理员;
    basket:购物车;
    hw:手机;
    member:会员;
    news:新闻;
    newsclass:新闻分类;
    sort:品牌分类;
    Nsort:手机分类;
    Sub:定单
    1:admin表:
字段名称数据类型说明
Admin-idCHAR管理员编号,主键
Admin-nameCHAR管理员姓名
Admin-passCHAR管理员密码


2:basket表:

字段名称数据类型说明
Basket-idCHAR购物车编号,主键
Hw-idCHAR手机编号
usernameCHAR客户名
Basket-countCHAR购物数量
Basket-dateTIME/DATE购物日期
Basket-checkCHAR处理信息
cashCHAR手机价格
Sub-numberCHAR定单号
Hw-nameCHAR手机名


3:hw表

字段名称数据类型说明
Hw-idint手机编号
Sort-idint品牌编号
Nsort_idint品牌手机编号
Hw_namechar手机名
Hw_cashint价格
Hw_contentchar描述
Hw_buysint购买次数
Hw_datechar出厂日期
Hw_picchar手机图片


4:member表

字段名称数据类型说明
User-idINT会员编号
UsernameCHAR用户名
UserpassCHAR密码
UsermailCHAR邮箱
UseraddrCHAR地址
UsertelCHAR电话
UserregtimeTIME/DATE注册时间
UserregipCHAR注册时的IP
UserlastipCHAR最后登陆IP
UserlasttimeTIME/DATE最后登陆时间
UserturenameCHAR会员真名
UsertypeCHAR会员类型


5:new表

字段名称数据类型说明
News-idINT新闻编号
Newclass-idINT新闻类型编号
News-titleCHAR新闻标题
News-contentCHAR新闻内容
News-timeTIME/DATE新闻时间


6:newsclass表

字段名称数据类型说明
Newsclass-idINT新闻类型编号
Newsclass-nameCHAR新闻类型名称


7:sort表

字段名称数据类型说明
Sort-idINT品牌编号
Sort-nameCHAR品牌名称


8:nsort表

字段名称数据类型说明
Nsort-idINT品牌手机编号
Nsort-nameCHAR品牌手机名称
Sort-idINT品牌编号


4.运用设计
4.1 数据字典
传统的数据字典包括以下几种类型的条目:

    1. .数据流条目--数据流条目给出某个数据流和定义,它通常是列出该数据流的各组成数据元素。

该系统中的数据流条目有:

管理员=管理员编号+管理员姓名+管理员密码

购物车=购物车编号+手机编号+手机数目+客户姓名+购买日期

手机信息=手机编号+手机名称+品牌类型+手机描述+出厂日期+出售数目

会员信息=会员编号+用户名+密码+用户基本信息+注册时间及IP+最后登陆时间及IP。

(2).文件条目--文件条目给出某个文件的定义,列出它的组成数据项,此外还要给出文件的组织形式。

例:手机信息文件={手机基本信息记录}+{手机购买记录}

主键:手机编号+客户编号

(3).数据元素条目--给出某个数据单项的定义,通常是数据项的值类型。

例:手机基本信息记录中“手机编号”的数据值类型为数值类型,有效值范围为000000~999999。

(4).处理说明条目--给出数据流程图中不再分解的变换处理说明的定义。

此处不再举例说明。

4.2 数据库安全设计

本数据库采用Acess 平台的安全验证机制,能很大程度上保证数据的安全,可以很好的防止数据的泄露,数据在编程时的毁坏。由于Acess与Windows很好的兼容性,可以很好的保证数据的运行安全。

4.3 性能要求

1. 数据精确度

由于采用数据库技术并且用户的应用领域对数据精确度的要求不是太高,所以这点在系统中表现得比较少,但是用户数据的安全性与正确性是完全保证的,所以对用户的使用没有多大的障碍。

2. 时间特性

本系统的数据库较小,所以程序在响应时间,数据更新处理时间上性能是比较突出的。而且也正由于数据量相对较少,故在数据传输时间和系统运行时间上表现的较让人满意。

3. 适应性

该数据库是使用Acess2000在windows xp系统下完成的所以只要是兼容windows的软件或是操作系统,该软件都可以正确地运行,有较好的适应能力与兼容性。而且应用户的特殊需求软件在完成后的维护阶段可以保持一个与其他类软件接口,随时满足用户的使用要求。

操作手册(GB8567——88)

1引言

1.1编写目的

编写这份操作手册的目的是方便选择本系统客户的使用,使大家能够最好的使用本系统的各项功能,发挥出它的每一个闪光点!同时也为本系统的维护提供方便,操作人员或维修人员可以据此进行错误的排查,还有就是可以通过用户对各功能的使用,发现系统的不足,促进我们后继版本的完善,当然我们会提供在线升级,发布相关的补丁。

1.2前景

系统名称:JSP网络购物系统(手机销售系统)

开发小组成员:组长:韩庆宾 组员:徐剑辉,赵丹,俞少坊

各成员分工:

韩庆宾: 论坛

徐剑辉: 后台管理

赵丹: 前台管理

俞少坊: 购物车

2软件征述

2.1软件的结构

本软件为C/S模式,整个网上购物的流程如下图:

3运行说明

本系统为网络模式,要正常提供服务应首先开启服务器。这样才可以打开网页。

由于我们采用的是tomcat5.5.4为测试服务器,现在就以它为例讲解。

一、首先安装tomcat5.5.4,假设安装路径为E:\tomcat5.4

二、安装jdk1.5.1,安装目录尽量保持跟tomcat的路径相同。E:\jdk1.5.1

三、修改环境变量:右击"我的电脑"-->"属性"-->"高级"-->"环境变量"

在系统变量中添加如下变量及值:

TOMCAT_HOME 值为E:\tomcat5.4

CATALINA_BASE 值为E:\tomcat5.4

CATALINA_HOME 值为E:\tomcat5.4

JAVA_HOME 值为E:\jdk1.5.1

classpath 值为.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME% \common\lib\servlet-api.jar;

path 值为%JAVA_HOME%\bin

四、设置数据源。在数据源设置中设置两个数据源shnxn为手机销售系统的数据库db.mdb数据源bbs为论坛的数据库bbs.mdb.

五、在浏览器中输入http://localhost:8080/出现tomcat公司的页面即为成功。

3.1前台管理

首先进入网站主页。本机测试(http://localhost:8080/jspshop)

外网测试(http://服务器IP:8080/jspshop)

你会看到如下的页面 (图 1)

在主页上你可以登陆会员,也可以在各手机专区间相互跳转,查看一些信息(不要求会员权限的)。

并且在前台有各手机的销售排行,你还可以搜索你所感兴趣的产品,例如:你可以在搜索的文字录入处写6600,然后点击搜索,NOKIA 6600符合要求就会显示出来,如果有你需要的,点击它就会转到相应的产品页面。(图2)

图 1

图 2

3.2购物车

当用户登陆以后,如果选中要购买的产品,就点击改产品下方的“订购”

会出现如下界面(图3)

ZD是当前的购物人,购物车包含所选商品的基本信息,订购数量为一下拉列表,

方便购物者的选择。

图 3

确定购买的数量后,店击确认,返回如图4所示界面:

信息包括 订购的商品名称 单价,数量,日期以及合计价格。

图 4

3.3后台管理

首先进入后台管理页面

本地地址(http://localhost:8080/jspshop/admin/manage.jsp

外网地址(http://服务器IP:8080/jspshop/admin/manage.jsp)

所有后台对数据库的操作在这都可以完成

图5为添加新商品的界面

图 5

手机销售系统详细设计说明

1引言22

1.1编写目的22

1.2背景22

1.3定义22

1.4参考资料22

2程序系统的结构22

3会员管理设计说明44

3.1程序描述44

3.2功能99

3.3性能99

3.4输入项99

3.5输出项1010

3.6流程逻辑1010

4后台管理设计说明1010

4.1程序描述1010

4.2功能描述1414

4.3性能1414

4.4输入项1515

4.5输出项1515

4.6流程逻辑1515

5前台设计说明1616

5.1程序描述1616

5.2功能描述1818

5.3性能1818

6销售论坛设计说明1818

6.1程序描述1919

6.2功能描述2525

6.3性能描述2525

详细设计说明书

1引言

1.1编写目的

本说明书主要是针对程序设计人员的而写的,程序设计人员以后详细设计为参考编写网站程序。

1.2背景

说明:

  1. 待开发软件系统的名称:手机销售系统。
  2. 项目经理:韩庆宾

小组成员:赵丹、徐建辉、俞少坊

1.3定义

JSP、JAVABEAN、TOMCAT、SQL。

1.4参考资料

参考资料:JSP设计教程、javabean和serverlet等。

2程序系统的结构

功能模块图

购物流程图

子功能模块图

  1. 会员功能
    功能包括(会员注册、订单查看、购物车、收银台、更改资料)
  2. 后台管理
    功能包括(商品管理、订单管理、用户管理、手机类别管理、信息管理、常规管理)
  3. 前台信息
    功能包括(搜索引擎、销售排行、分类查看、公告、新闻、友情连接)
  4. 客户论坛

论坛的基本功能都要实现。

3会员管理设计说明

3.1程序描述

一、注册功能:

1.图示

2.主要程序:

<%

String errmsg="错误!";

boolean founderr=false;

String user_name,user_pass,user_pass2,user_adds,user_tel,user_mail,user_postcode;

user_name=errmsg;

user_pass=errmsg;

user_pass2=errmsg;

user_adds=errmsg;

user_tel=errmsg;

user_mail=errmsg;

user_postcode=errmsg;

if(request.getParameter("user_name").equals("")){

errmsg=errmsg+"用户名不能为空,";

founderr=true;

}else user_name=getStr(request.getParameter("user_name"));

if(request.getParameter("user_pass").equals("")){

errmsg=errmsg+"密码不能为空,";

founderr=true;

}else user_pass=getStr(request.getParameter("user_pass"));

if(request.getParameter("user_pass2").equals("")){

errmsg=errmsg+"密码确认不能为空,";

founderr=true;

}else user_pass2=getStr(request.getParameter("user_pass2"));

if(!user_pass.equals(user_pass2)){

errmsg=errmsg+"两次密码不同!";

founderr=true;

}

if(request.getParameter("user_adds").equals("")){

errmsg=errmsg+"地址不能为空,";

founderr=true;

}else user_adds=getStr(request.getParameter("user_adds"));

if(request.getParameter("user_tel").equals("")){

errmsg=errmsg+"电话号码不能为空,";

founderr=true;

}else user_tel=getStr(request.getParameter("user_tel"));

if(!IsMail(request.getParameter("user_mail"))){

errmsg=errmsg+"你的E-mail有错误,";

founderr=true;

}else user_mail=getStr(request.getParameter("user_mail"));

if(request.getParameter("user_postcode").equals("")){

errmsg=errmsg+"邮编不能为空,";

founderr=true;

}else user_postcode=getStr(request.getParameter("user_postcode"));

sql="select * from member where user_name='"+user_name+"'";

rs=mdb.executeQuery(sql);

if(rs.next()){

errmsg=errmsg+"用户名已被别人注册";

founderr=true;

}

%>

<div align="center">

<center>

<table border="0" width="500" cellspacing="0" cellpadding="0" height="5" style="border-collapse: collapse" bordercolor="#111111">

<%if(founderr==false){

String sql1;

sql1="Insert into member(user_name,user_pass,user_adds,user_mail,user_tel,user_regip,user_namec,user_type) values('"+user_name+"','"+user_pass+"','"+user_adds+"','"+user_mail+"','"+user_tel+"','"+request.getRemoteHost()+"','"+getStr(request.getParameter("user_namec"))+"','会员')";

mdb.executeInsert(sql1);

%>

二、购物车

1.图示:

2.主要程序:<jsp:useBean id="mdb" class="ckstudio.db.faq" scope="page"/>

…………………………

<%

String user_name=(String)session.getValue("user_name");

String user_type=(String)session.getValue("user_type");

if(user_name!=null)

{

%>

<%=user_name%>的购物车

……………………….

{//having login check

int hw_id;

String hw_ids=request.getParameter("hw_id");

if(hw_ids==null)

{

out.print("没有此货物");

}

else

{//hw_id exists or not--------------------------------------------------------------

hw_ids.trim();

ResultSet rs;

int daili;

hw_id=Cint(hw_ids);

sql="select * from hw where hw_id="+hw_id;

rs=mdb.executeQuery(sql);

if(rs.next())

{

//result showing begin ------------------------------------------

hw_cash=rs.getInt("hw_cash");

daili=rs.getInt("daili");

hw_name=rs.getString("hw_name");

%>

三、收银台

1.图示:

2.主要程序:String sql="select * from basket where hw_id='"+hw_id+"' and user_name='"+(String)session.getValue("user_name")+"' and basket_check=false";

ResultSet rs;

rs=mdb.executeQuery(sql);

if(!rs.next()){

String sql1="insert into basket(hw_id,user_name,basket_count,hw_name,hw_cash,user_type) values('"+hw_id+"','"+session.getValue("user_name")+"','"+count+"','"+request.getParameter("hw_name")+"','"+request.getParameter("hw_cash")+"','"+request.getParameter("user_type")+"') where hw_id='"+hw_id+"' and user_name='"+session.getValue("user_name")+"' and basket_check=false";

mdb.executeInsert(sql1);

}

else{

//rs("basket_count")=int(rs("basket_count"))+int(count)

rs.next();

int basket_count=Integer.parseInt(rs.getString("basket_count"));

basket_count=basket_count+Integer.parseInt(count);

String basket_count2=Integer.toString(basket_count);

String sql2="update basket set basket_count='"+basket_count+"'";

mdb.executeUpdate(sql2);

}

}

四、用户资料修改

1.图示:

2.主要程序:

user_name=request.getParameter("user_name");

sql="select * from member where user_name='"+user_name+"'";

ResultSet rs;

rs=mdb.executeQuery(sql);

if(rs.next()){

rs.updateString("user_pass",user_pass);

rs.updateString("user_mail",user_mail);

rs.updateString("user_adds",user_adds);

rs.updateString("user_postcode",user_postcode);

rs.updateString("user_tel",user_tel);

rs.updateString("user_namec",user_namec);

rs.updateRow();

out.print("<font>");

out.print("用户资料更改完毕,请记牢你更改后的信息");

out.print("</font>");

rs.close();

3.2功能

功能包括(会员注册、订单查看、购物车、收银台、更改资料)

3.3性能

要求把各种异常处理情况都要考虑到并返回相应的结果,比方说如果两次输入的密码不相同则要返回“两次输入的密码不相同”的结果。

3.4输入项

用户注册

字段名称数据类型说明
User-idINT会员编号
UsernameCHAR用户名
UserpassCHAR密码
UsermailCHAR邮箱
UseraddrCHAR地址
UsertelCHAR电话
UserturenameCHAR会员真名

3.5输出项

判断输入的数据是否正确,如果有错误就转入err.jsp并显示出错误项,如果数据正确则注册成功。

3.6流程逻辑

4后台管理设计说明

4.1程序描述

一、商品管理

商品管理主要包括:添加新的商品、商品分类管理、商品查看与修改、商品定单管理(未实现)

  1. 图示:①添加新商品


②商品修改

  1. 主要程序:

①添加新商品<%

if(request.getParameter("action")!=null)

{//-----------------------------------action=save-----------------------------------------------------

if(request.getParameter("action").equals("save"))

{

String hw_name=request.getParameter("hw_name");

………………………..

String errmsg="输入有错!";

boolean founderr=false;

if(Cint(hw_cashs)==0)

{

errmsg="<br>"+"<li>价格应该为数字";

founderr=true;

}

…………………………..

if(month>12||day>31||month<=0||day<=0){

errmsg=errmsg+"<br>"+"<li>产品生产日期格式不正确";

founderr=true;

}else{

datas=new Date(year-1900,month-1,day);

}else

{

hw_name=getStr(hw_name);

company=getStr(company);

hw_content2=encode(getStr(hw_content2));

hw_content=encode(getStr(hw_content));

boolean btuijian=false,bjia=false;

if(tuijian.equals("1")){ btuijian=true;}

if(jia.equals("1")){ bjia=true;}

sql="insert into hw (hw_name,hw_content,hw_content2,hw_cash,sort_id,Nsort_id,company,daili,pifa,hw_sn,chubsh,kaiben,yeshu,";

sql=sql+"data,isbn,zhuang,hw_pic,tuijian,jia)";

sql=sql+"values('"+hw_name+"','"+hw_content+"','"+hw_content2+"',"+Cint(hw_cashs)+","+Cint(sort_ids)+","+Cint(Nsort_ids);

sql=sql+",'"+company+"',"+Cint(dailis)+","+Cint(pifas)+",'"+hwsn+"','"+chubsh+"','"+kaiben+"','"+yeshu+"','"+datas.toLocaleString()+"','"+isbn;

sql=sql+"','"+zhuang+"','"+hw_pic+"',"+btuijian+","+bjia+")";

mdb.executeInsert(sql);

out.print("货物添加成功");

out.print("<br>");

out.print("<a href=addhw.jsp>返回</a>");

②商品修改

sql="update hw set hw_name='"+hw_name+"',hw_content='"+hw_content+"',hw_content2='"+hw_content2;

sql=sql+"',hw_cash="+hw_cash+",sort_id="+sort_id+",company='"+company+"',daili="+daili+",pifa="+pifa;

sql=sql+",hw_sn='"+hw_sn+"',chubsh='"+chubsh+"',kaiben='"+kaiben+"',yeshu='"+yeshu+"',data='"+data.toLocaleString()+"',isbn='"+isbn;

sql=sql+"',zhuang='"+zhuang+"',hw_pic='"+hw_pic+"',Nsort_id="+Nsort_id+",tuijian="+tuijian+" where hw_id="+hw_id;

mdb.executeUpdate(sql);

out.print("商品修改成功!");

二、订单管理(时间有限未能实现)

三、用户管理

用户管理主要是查看和删除用户,提升用户为VIP用户的功能。

  1. 图示
    ①查看用户

  1. 主要程序:

①查看用户:

while(rs.next()&&i<=PageSize){

i++;

int user_id=rs.getInt("user_id");

String user_mail=rs.getString("user_mail");

String user_name=rs.getString("user_name");

String user_adds=rs.getString("user_adds");

String user_postcode=rs.getString("user_postcode");

Date user_regtime=rs.getDate("user_regtime");

String user_type=rs.getString("user_type");

%>

②删除用户:

<%@ include file="conn.jsp"%>

<%

if(request.getParameter("action").equals("deluser")){

int user_id=Integer.parseInt(request.getParameter("user_id"));

sql="select * from member where user_id="+user_id+"";

rs=mdb.executeQuery(sql);

if(!rs.next())

out.print("<center>用户信息已删除!");

else{

sql="delete from member where user_id="+user_id+"";

mdb.executeDelete(sql);

out.print("<center>用户信息已删除!");

}

}

mdb.Close();}

%>

③提升权限:

<%@ include file="conn.jsp"%>

<%

if(request.getParameter("action").equals("up")){

int user_id=Integer.parseInt(request.getParameter("user_id"));

sql="select user_type from member where user_id="+user_id+"";

rs=mdb.executeQuery(sql);

if(!rs.next())

out.print("<center>没有此用户信息!");

else{

sql="update member set user_type='VIP' where user_id="+user_id+"";

mdb.executeUpdate(sql);

out.print("用户升级为VIP会员成功!");

}

}

mdb.Close();

}

%>

四、商品分类管理、信息管理、和常规管理其原理跟上面的是一样的,只是所操作的数据表不同,在这里就不一一列出。

4.2功能描述

后台管理只要是管理员来操纵的,管理员登录以后可以控制所有相关的数据库内容,主要功能为商品管理(商品的添加、修改、删除、信息查看、商品的分类管理(分两类一个大类一个小类))订单管理(查看和处理客户的订单)、用户管理(查看、删除用户、提升用户权限)、信息管理(网站的一些基本信息)、常规管理

4.3性能

最重要要有相应的异常处理功能,对一些不正常的数据要返回错误

4.4输入项

添加商品:

字段名称数据类型说明
Hw-idint手机编号
Sort-idint品牌编号
Nsort_idint品牌手机编号
Hw_namechar手机名
Hw_cashint价格
Hw_contentchar描述
Hw_buysint购买次数
Hw_datechar出厂日期
Hw_picchar手机图片

添加新闻:

字段名称数据类型说明
News-idINT新闻编号
Newclass-idINT新闻类型编号
News-titleCHAR新闻标题
News-contentCHAR新闻内容
News-timeTIME/DATE新闻时间

4.5输出项

根据程序中的判断,如果数据不相符就返回相应的结果。如果相符就返回添加成功。所有的错误类型都包含在err.jsp中。

4.6流程逻辑

5前台设计说明

5.1程序描述

搜索引擎、销售排行、分类查看、公告、新闻、友情连接

一、搜索引擎

  1. 图示

2、主要程序:<%String hw_name,sort_id;

if(session.getAttribute("sort_id")==null){

hw_name=getStr(request.getParameter("hw_name"));

sql="select * from hw where hw_name like '%"+hw_name+"%' order by hw_id DESC";

rs=mdb.executeQuery(sql);

}

else{

sort_id=request.getParameter("sort_id");

hw_name=getStr(request.getParameter("hw_name"));

sql="select * from hw where sort_id='"+sort_id+"' and hw_name like '%"+hw_name+"%' order by hw_id DESC";

rs=mdb.executeQuery(sql);

}

if(!rs.next()){

%>

<tr>

<td width="380">没有你要找的商品,请先确定商品的类别</td>

</tr>

<%}

else{rs.previous();

%>

二、销售排行

  1. 图示

2、主要程序<%

sql="select top 11 * from hw order by hw_buys DESC";

rs=mdb.executeQuery(sql);

if(!rs.next())

{

out.print("本站目前没有成交任何商品");

}else

{

rs.previous();

i=0;

int hw_id,daili;

String hw_name;

while(rs.next()&i<=10){

hw_id=rs.getInt("hw_id");

hw_name=rs.getString("hw_name");

daili=rs.getInt("daili");

%>

三、主要页面

图示:

5.2功能描述

前台设计主要是美工方面的、使用Dreamweaver MX设计界面,要求风格统一,色彩鲜明能勾起顾客的购买欲望,同时网站结构也要分明,是顾客很容易就可以找到想要的商品。网站设计方面我们基本上做到了以上几点。

5.3性能

网页的布局要合理,使人有一目了然的感觉。颜色搭配要合理,不要让人有杂乱的感觉。

6销售论坛设计说明

论坛设计实现了论坛的一些基本功能,

用户功能:用户注册、发表新贴、回复帖子、个性签名(可以自己控制显不显示)、资料修改、搜索帖子、查看在线用户、联系用户。

管理员功能:管理版块、管理用户、帖子编辑(删除、修改)、管理斑竹。

6.1程序描述

由于程序庞大,在这里只列出了部分主要程序:

  1. 数据库连接的javabean 编译后的文件名jdbc.class

package bbsclass;

import java.io.*;

import java.sql.*;

public class jdbc {

public jdbc() {

}

Connection conn = null ;

public java.sql.Connection getConn(){

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();

conn= DriverManager.getConnection("jdbc:odbc:bbs");

}

catch(Exception e){

e.printStackTrace();

System.out.println("hanqingbin");

}

return this.conn ;

}

public String ex_chinese(String str){

if(str==null){

str ="" ;

}

else{

try {

str = new String(str.getBytes("iso-8859-1"),"gb2312") ;

}

catch (Exception ex) {

}

}

return str ;

}

public String getTime() {

String datestr = "" ;

try {

java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-M-d HH:ss") ;

java.util.Date date = new java.util.Date() ;

datestr = df.format(new java.util.Date()) ;

}

catch (Exception ex) {

}

return datestr ;

}

}

二、在线用户状态:showonline.jsp

<%

Guest_List="";

User_List="";

Connection con=yy.getConn();

Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet rs=null;

sql="select * from 在线 where 在线id='"+session.getId()+"'";

rs=stmt.executeQuery(sql);

rs.last();

if (rs.getRow()>0)

{

if (session.getValue("UserName")==null)

sql="update 在线 set 在线后面时间='"+yy.getTime()+"',在线最后时间='"+DateToString()+"' where 在线id='"+session.getId()+"'";

else

sql="update 在线 set 在线用户名='"+session.getValue("UserName")+"',在线后面时间='"+yy.getTime()+"',在线最后时间='"+DateToString()+"' where 在线id='"+session.getId()+"'";

stmt.executeUpdate(sql);

}else

{

sql="insert into 在线(在线id,在线用户名,在线开始时间,在线后面时间,在线最后时间,在线IP地址) ";

if (session.getValue("UserName")==null)

sql=sql+" values('"+session.getId()+"','客人','"+yy.getTime()+"','"+yy.getTime()+"','"+DateToString()+"','"+request.getRemoteAddr()+"')";

else

sql=sql+" values('"+session.getId()+"','"+session.getValue("UserName")+"','"+yy.getTime()+"','"+yy.getTime()+"','"+DateToString()+"','"+request.getRemoteAddr()+"')";

//out.println(sql);

stmt.executeUpdate(sql);

}

Time_Str=DateToString();

Online_Time=Integer.parseInt(Time_Str);;

Online_Time=Online_Time-60;

sql="delete from 在线 where 在线最后时间<'"+Online_Time+"'";

stmt.executeUpdate(sql);

//out.println(Online_Time);

sql="select 在线用户名 from 在线 where 在线用户名<>'客人' order by 在线最后时间 desc";

rs=stmt.executeQuery(sql);

rs.last();

User_Num=rs.getRow();

if (User_Num>0)

{

for (int i=1;i<=User_Num;i++)

{

UserName=rs.getString("在线用户名");

User_List=User_List+"<a href=member.jsp?member="+UserName+">"+UserName+"</a>&nbsp;&nbsp";

}

}

sql="select 在线用户名 from 在线 where 在线用户名='客人' order by 在线最后时间 desc";

rs=stmt.executeQuery(sql);

rs.last();

Guest_Num=rs.getRow();

if (Guest_Num>0)

{

for (int i=1;i<=Guest_Num;i++)

{

Guest_List=Guest_List+"客人&nbsp;&nbsp";

}

}

%>

三、帖子查询:search.jsp

//out.println(S_Member);

if ((S_Member==null) || (S_Member.equals("null")))

{

//out.println("OK");

if (S_Time.equals("0"))

Time_Sql="";

else

Time_Sql=" datediff('d',[发表日期],now()) < "+S_Time+" and ";

if (S_User.equals(""))

User_Sql="";

else

User_Sql=" 贴子作者='"+S_User+"' And";

if (S_Board.equals("all"))

Board_Sql="";

else

Board_Sql=" 版块id="+S_Board+" And";

if (S_Area.equals("content"))

sql="Select * from 贴子 Where "+Time_Sql+User_Sql+Board_Sql+" 贴子内容 like '%"+S_Key+"%' order by 贴子id desc";

else if (S_Area.equals("title"))

sql="Select * from 贴子 Where "+Time_Sql+User_Sql+Board_Sql+" 贴子名称 like '%"+S_Key+"%' order by 贴子id desc";

else if (S_Area.equals("both"))

sql="Select * from 贴子 Where "+Time_Sql+User_Sql+Board_Sql+" 贴子内容 like '%"+S_Key+"%' or "+Time_Sql+User_Sql+Board_Sql+" 贴子名称 like '%"+S_Key+"%' order by 贴子id desc";

}else

{

sql="Select * from 贴子 Where 贴子作者='"+S_Member+"'";

//sql="Select * from 贴子 Where 贴子作者='admin'";

}

//out.println(sql);

String fid=request.getParameter("fid");

Connection con=yy.getConn();

Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet rs=null;

rs=stmt.executeQuery(sql);

rs.last();

RecordCount=rs.getRow();

PageCount=(RecordCount % PageSize==0)?(RecordCount/PageSize):(RecordCount/PageSize+1);

String Page=request.getParameter("page");

if (Page!=null)

{

ShowPage=Integer.parseInt(Page);

if (ShowPage>PageCount)

ShowPage=PageCount;

else if(ShowPage<0)

ShowPage=1;

}else

ShowPage=1;

if (RecordCount>0)

{

rs.absolute((ShowPage-1)*PageSize+1);

for (int i=1;i<PageSize;i++)

{

Note_Id=rs.getString("回复id");

if (Note_Id.equals("0"))

Note_Id=rs.getString("贴子id");

Note_Name=rs.getString("贴子名称");

Note_Author=rs.getString("贴子作者");

Replay_Name=rs.getString("回复用户");

Replay_Time=rs.getString("回复时间");

Forum_Id =rs.getString("版块id");

%>

四、发贴主要程序

{

Connection con=yy.getConn();

Statement stmt=con.createStatement();

if (Return_Id!="0")

{

sql="update 贴子 set 回复次数=回复次数+1 where 贴子id="+Return_Id;

stmt.executeUpdate(sql);

sql="update 论坛栏目 set 贴子数量=贴子数量+1,最后发表人='"+session.getValue("UserName")+"',最后发表时间='"+yy.getTime()+"' where 论坛id="+Board_Id;

stmt.executeUpdate(sql);

}else

{

sql="update 论坛栏目 set 贴子数量=贴子数量+1,最后发表人='"+session.getValue("UserName")+"',主题数量=主题数量+1 where 论坛id="+Board_Id;

stmt.executeUpdate(sql);

}

sql="update 用户表 set 发贴次数=发贴次数+1 where 用户名='"+session.getValue("UserName")+"'";

stmt.executeUpdate(sql);

sql="insert into 贴子(版块id,回复id,贴子名称,贴子内容,发表日期,贴子作者,贴子长度,显示签名,贴子图片,IP地址,回复用户,回复时间)";

sql=sql+"values("+Board_Id+","+Return_Id+",'"+Note_Title+"','"+Note_Content+"','"+yy.getTime()+"','"+session.getValue("UserName")+"',"+Note_Content.length()+","+Note_Singid+",'"+Note_Icon+"','"+request.getRemoteHost()+"','"+session.getValue("UserName")+"','"+yy.getTime()+"')";

//sql=sql+"values('"+Board_Id+"','"+Return_Id+"','"+Note_Title+"',"+Note_Content+","+yy.gettime()+",'lichao','"+Note_Content.length()+"','"+Note_Singid+"','"+Note_Icon+"','"+request.getRemoteHost()+"','lichao','"+yy.gettime+"')";

//out.println(sql);

stmt.executeUpdate(sql);

if (Return_Id=="0")

{

%>

<font size=2 color=blue>您的贴子发表成功,正在处理您的提交信息,稍后自动返回</font><meta http-equiv='refresh' content='2;url=board.jsp?fid=<%=Board_Id%>'>

<%

}else

{

%>

<font size=2 color=blue>您的贴子发表成功,正在处理您的提交信息,稍后自动返回</font><meta http-equiv='refresh' content='2;url=shownote.jsp?fid=<%=Board_Id%>&noteid=<%=Return_Id%>'>

五、回帖主要程序

<%

String Board_id=request.getParameter("fid");

String Note_id=request.getParameter("noteid");

String Return_id=request.getParameter("Returnid");

Connection con=yy.getConn();

Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

ResultSet rs=null;

if (Note_id!=null)

{

sql="Select 贴子内容 from 贴子 Where 贴子id="+Note_id;

rs=stmt.executeQuery(sql);

while (rs.next())

Note_Content=rs.getString("贴子内容");

}else

Note_Content="";

if (Note_id!=null)

Note_Content="[quote]"+Note_Content +"[/quote]";

if (Return_id!=null)

{

sql="Select 贴子名称 from 贴子 Where 贴子id="+Return_id;

rs=stmt.executeQuery(sql);

while (rs.next())

Note_Title="回复:"+rs.getString("贴子名称");

}else

Note_Title="";

sql="Select 论坛名称 From 论坛栏目 Where 论坛id="+Board_id;

//out.println(sql);

rs=stmt.executeQuery(sql);

while (rs.next())

Board_Name=rs.getString("论坛名称");

%>

6.2功能描述

论坛上的一些基本功能都要实现:用户注册、发贴、回帖、查看在线用户、给用户发邮件、后台管理等。

6.3性能描述

论坛最忌的就是数据量庞大,所以数据库要优化好,尽量减少冗余数据。还要考虑到安全性的问题,以保护会员安全。要能重复利用相同的模块,以减少系统开销。

1引言

软件测试分布在编码、测试和验收等几个阶段,是软件开发时期最繁重的任务,也是保证软件可靠性最主要的手段。

测试的目的是发现程序的错误,而不是证明程序是没有错误,设计测试用例和纠错,是搞好软件测试的两项关键技术。选择测试用例的目标,是用尽可能少的测试数据,达到尽可能大的程序覆盖面,发现尽可能多的软件错误和问题。

1.1编写目的

编写本测试计划是为了软件测试人员能够更好地、有的放矢地进行测试,尽可能地找出软件中的错误。

1.2背景

  1. 测试计划所从属的软件系统的名称:手机销售系统。
  2. 实现该软件的计算中心或计算机网络的能力一般即可,测试之前编码工作要完成,同时须配置好相应的运行环境以便系统能运行。

1.3定义

以下为本文件中用到的专门术语的定义:

手机销售系统 订单投诉

客户服务 新闻中心

我的订单 购物车

收银台 前台管理

后台管理 会员管理

手机销售论坛

1.4参考资料

1.《JSP编程实例集锦》 马文刚等编著 清华大学出版社

2.《数据库原理与技术》 刘方鑫编著 电子工业出版社

2计划

2.1软件说明

该系统主要分为四大模块:前台管理、后台管理、会员管理和手机销售论坛。具体的每个模块又可以实现以下的功能:前台管理要实现的有搜索引擎,销售排行,分类查看,公告,新闻,友情连接等功能;后台管理要实现的有商品管理、订单管理、用户管理、手机类别管理、信息管理、常规管理的添加,修改与删除的功能;会员管理要实现的是会员注册、订单查看、购物车、收银台、更改资料等的功能;手机销售论坛的功能是要包括一般论坛的功能,如发帖,回帖这些基本的功能。

2.2测试内容

系统完成以后,测试主要是看系统能否很好的完成预期的功能,以及异常处理做得怎么样,程序的可维护性和可扩展性如何。在这里测试主要采用的是黑盒测试。

以下给出四个模块的测试。

2.2.1前台管理测试

前台管理主要实现的功能包括搜索引擎、销售排行、分类查看、公告、新闻、友情链接等。对上述功能分别测试。

  1. 搜索引擎
    测试用例一:在搜索栏输入“诺基亚7710”,期望结果是显示一条“诺基亚7710”的记录,单击进入具体介绍“诺基亚7710”的页面。
    测试用例二:搜索栏输入为空,即直接单击“搜索”,期望结果是弹出“请输入搜索内容!”的页面。
    测试用例三:在搜索栏输入“诺基亚10”,期望结果是弹出“对不起,没有你要找的商品!”的页面。
  2. 对于销售排行、分类查看、公告和新闻的测试主要是看能否把数据库中的结果正确的显示到主页面上。
  3. 友情链接的测试是运行该系统,再点击相关链接,看能否转到相应的地址。

2.2.2后台管理的测试

后台管理主要实现的功能包括商品管理、订单管理、用户管理、手机类别管理、信息管理、常规管理等。对上述功能分别测试。

  1. 添加新商品
    测试用例一:对于要添加的属性项目,型号名称、市场价、会员价和VIP价填入如下内容(诺基亚10,1780,1650,1550),期望结果是弹出“添加成功!”的提示。
    测试用例二:对于要添加的属性项目,型号名称、市场价、会员价和VIP价填入如下内容( “ ”,1780,1650,1550),期望结果是弹出“请输入型号名称!”的提示,并返回到添加新商品的页面。
    测试用例三:对于要添加的属性项目,型号名称、市场价、会员价和VIP价填入如下内容(诺基亚10,1780,“ ”,1550),期望结果是弹出“请输入会员价!”的提示,并返回到添加新商品的页面。
    测试用例四:对于要添加的属性项目,型号名称、市场价、会员价和VIP价填入如下内容(诺基亚10,1780,1650,“ ”),期望结果是弹出“请输入VIP价!”的提示,并返回到添加新商品的页面。
  2. 查看与修改
    单击该项功能,会列出一系列手机的信息,如商品名称、会员价和VIP价,每条记录后都有两个功能删除和修改。以(诺基亚10,1650,1550)这条记录为例,点击“删除”,期望结果显示删除成功的提示;点击“修改”,把这条记录修改为(诺基亚10,1750,1550)确定后,显示修改成功的提示。
  3. 对于网站信息管理和网站常规设置主要是看前台的主页面能否正确的显示这些信息。
  4. 分类管理是把某类商品换个名称,如把“三星”,改为“SUMSUNG”。

2.2.3会员管理测试

会员管理主要实现的功能包括会员注册、订单查看、购物车、收银台、更改资料等。对上述功能分别测试。

  1. 会员注册
    测试用例一:对会员注册时要填的项目(用户名,密码,密码确认,E-mail,,地址,电话,邮编,真实姓名),填入下列内容(jiawei,845960,845960,xujianhui8407@163.com,江苏徐州,3594884,221008,xujianhui),期望结果是提示注册成功。
    测试用例二:对会员注册时要填的项目(用户名,密码,密码确认,E-mail,,地址,电话,邮编,真实姓名),填入下列内容(jiawei,845962,845960,xujianhui8407@163.com,江苏徐州,3594884,221008,xujianhui),期望结果是提示两次的密码必须一致。
    测试用例三:对会员注册时要填的项目(用户名,密码,密码确认,E-mail,,地址,电话,邮编,真实姓名),填入下列内容(jiawei,845960,845960,“ ”,江苏徐州,3594884,221008,xujianhui),期望结果是提示E-mail不能为空。
    会员注册时的这几个属性(用户名,密码,密码确认,E-mail,,地址,电话,邮编,真实姓名),设置的时候都不为空,少了任何一项都会出现少了该项的提示。
  2. 对于订单查看、购物车、收银台这些功能都是会员才有的功能,没有登陆之前,点击这些功能,会出现先登陆的提示,登陆后相应的操作可以验证相关的功能。
  3. 更改资料是对会员注册时填的项目(用户名,密码,密码确认,E-mail,,地址,电话,邮编,真实姓名)的修改。如把(jiawei,845960,845960,xujianhui8407@163.com,江苏徐州,3594884,221008,xujianhui)这条记录修改为(jiawei,845960,845960,xujianhui8407@163.com,江苏南通,3594884,221008,xujianhui),期望结果是出现修改成功的提示。

2.2.4手机销售论坛的测试

手机销售论坛有好几个版快,如三星,飞利浦等都有各自的论坛版快。这个模块的测试就是看能否在各自的论坛版快中发帖回帖,以及版主对帖子的修改和删除功能。

基于JSP的BBS实现

摘 要

现今的社会是一个信息飞速发达的社会,其中在信息的交流当中,互联网占据着一个非常重要的位置。人们可以通过在互联网上收到最新的消息,也可以通过互联网进行信息的交流。而论坛就是大家进行信息交流的其中一个渠道。

论坛的概念:论坛(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组件技术。

第一章 系统概述

1.1设计目标

BBS是互联网一种人与人之间交互的必备工具,特别是做网站必备。以前我们一直用留言本形式,但是随着您的网站的大规模化,越来越多的迫切需要一种可以易于维护和易于交流的平台,那就要用BBS。BBS可以通过WEB浏览器访问,并且实现在线交流等诸多功能。网民们便逐步开始接受这种使用方便快捷、功能日渐强大的系统。在它上面网民们可以发贴和发布各种各样的信息,讨论各式话题。随着中国网络的普及和计算机及其外设的大幅度降价,Internet这个概念逐渐深入人心。中国网民的数量呈几何级数量增长,BBS的普及程度也直追Email。每个网站几乎都拥有自己的BBS或者BBS链接, BBS社区提供给用户的服务是全面而且非常友好的,用户在社区中可以根据自己的喜好设置不同的显示风格,根据自己的需求定制各种服务。

1.2 研究方法

本虚拟社区是采用JSP + JavaBeans + MYSQL开发的。运行平台:JDK 1.5 + Tomcat5.5 + MYSQL + Windows XP。

采用模块化思想,分为3层:

a.数据存储层:使用MYSQL来存放BBS的所有数据,包括用户信息,文章数据用户消息,系统数据,关键问题,数据库的规划。

b. 系统功能层:完成BBS的基本功能,由多个并列模块组成,向下调用MYSQL的数访问数据库,向上接受处理请求,将处理的结果返回上层,根据请求类型,返回成败结果和其他数据。而且模块高度灵活,可以方便的修改增加。

c. 服务层:直接和客户机对话,根据客户机的请求,调用功能模块取得数据,然后将数据发送回客户端,根据客户端的类型,分别开发不同的服务模块,并且尽可能合理进行抽象,使对不同的服务层,能共用系统功能层的模块。

1.3项目中涉及的技术

1.3.1 JSP技术

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。

1.3.2 JavaBeans技术

什么是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中。

1.3.3 JDBC技术

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中便捷地访问数据库的要求也在日益增加。

1.4设备要求

主机类型:

服务器(IBM兼容机)最低配置

CPU:P3-850MHz;

内存:256MB

硬盘:20GB

网卡:10/100MB自适应

客户机(IBM兼容机)最低配置

CPU:P3-450MHz;

内存:128MB

硬盘:10GB

网卡:10/100MB自适应

第二章 需求分析

2.1需求规格

2.1.1系统组成

系统可以分为以下几个功能模块:

  1. 论坛用户登陆注册模块:包括用户登陆,退出,注册等功能。
  2. 论坛帐户信息模块:当用户登陆系统后,在个人中心,可以通过修改个人资料的链接来修改个人资料(其中用户ID是不允许修改的),通过我的话题来查看和修改自己发布的文章。
    3.论坛文章发布模块:用户登陆系统后可以查看其他所有用户发的文章,并可以发布自己的话题,也可响应回复其他用户和自己发表的话题。
    4.公告/制度模块:论坛管理员可以通过后台管理系统发布论坛公告,今日话题等功能,论坛的制度上可以设置对文章操作的得分,发帖数,精华帖。
    5. 版块管理模块:论坛管理员可以通过后台管理系统控制论坛的版块,管理员可以完成下列功能:任命斑竹,修改版块等操作。
    6.信息管理模块。社区信息配置;添加管理员; 编辑管理员;设定等级;配置权限;重新登录;安全退出;用户等级。
    以上的功能完成了整个论坛的配置,用户的管理,管理员的管理都可以通过对应的链接来完成。
    以下是该BBS系统软件的功能模块图:
    BBS软件系统

    注册登陆
    帐户信息
    文章发布
    公告制度
    版块管理
    信息管理
    图2.1 BBS系统软件的功能模块图
    2.1.2功能性需求
    1.用户注册登陆模块
    表2-1 用户注册登陆模块
模块名称:用户注册登陆模块标识:A1
其中可能涉及到的操作有以下几种: 用户登录:管理员及用户可以根据用户名及密码登陆系统。 用户注册:用户可以独立注册论坛帐户。修改数据:管理员可以修正错误数据,比如用户信息等。用户退出:用户退出时,变成游客权限,只能浏览帖子。

2. 帐户信息模块
表2-2 帐户信息模块

模块名称:帐户信息模块标识:A2
该模块主要在个人中心中,对用户信息及发表文章进行操作。其中可能涉及到的操作有以下几种:添加,删除,修改个人信息。查看,修改或删除本用户发表过的文章消息。更换照片,修改签名,预览签名。
  1. 文章发布模块

表2-3 文章发布模块

模块名称:文章发布模块标识:A3
该模块主要完成整个BBS系统面向用户的各种功能。其中可能涉及到的操作有以下几种:1 发布论坛话题:用户可以通过此功能发布论坛话题,也就是常说的发帖。2 回复话题:用户可以回复任何已存在的话题,同时可以加上自己的个性签名。

4、公告/制度模块

表2-4 公告/制度模块

模块名称:公告/制度模块标识:A4
论坛管理员(站长)可以通过后台管理任命斑竹,拥有最高权限。斑竹只能在自己的版块发布论坛公告,最新话题,可以对帖子置顶,删除,锁定等操作。

5.版块管理模块

表2-5 版块管理模块

模块名称:版块管理模块模块标识:A5
论坛管理员可以通过后台管理系统控制论坛的版块,管理员可以完成下列功能:任命斑竹,修改版块等操作。

6. 信息管理模块

表2-6 信息管理模块

模块名称:信息管理模块标识:A6
信息管理模块主要完成下面的功能:社区信息配置;添加管理员; 编辑管理员;设定等级;改变权限;会员管理;安全退出;用户等级。

2.1.3非功能性需求

本系统界面友好,使用方便,运行稳定。是一种典型的BBS系统。

2.2开发环境的选择

系统需求分析阶段: Microsoft Windows XP

系统代码开发阶段:Windows XP+ JDK1.5 + tomcat5.5 +MYSQL。

系统GUI/LOGO辅助设计工具:Photoshop8.0,Dreamware8.0。

第三章 概要设计

3.1总体设计

我们采用基于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计算的特点:

  1. 服务器负责数据管理及程序处理;
  2. 客户机负责界面描述和截面显示;
  3. 客户机向服务器提出处理要求;
  4. 服务器响应后将处理结果返回客户机;
  5. 网络数据传输小。
    经过分析,B/S结构适合本系统,它具有以下优点:
    1. B/S技术所基于的标准是开放、非专有的,是经标准化组织指定而非单一厂商制定的。
    2. B/S技术成本较低,一般只需安装、配备还在服务器上。在客户机上的工作较少,故降。

低了开发及管理成本。而C/S的应用不论是安装、配备还是升级,都需要在所有的客户机上实施。

B/S技术维护工作主要集中在服务器端,客户端的维护工作量十分少。而C/S结构中客户机和服务器的维护工作量都较大。Web Browser技术简明易用,一旦用户掌握了Web Browser的用法,也就掌握了使用系统上各种信息资源的钥匙。

本虚拟社区是采用JSP + JavaBean + MYSQL开发的一套网络虚拟社区系统。通过BBS系统和别人讨论计算机软件、硬件、Internet、多媒体、以及程序设计等等各种有趣的话题。

图3.1 网络结构图

图3.2 系统结构图

3.2系统结构与程序的关系

3-1 各项功能需求模块的实现同各块程序的分配关系

3.3运行模式

功能模块相关程序
注册登陆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 本系统的各个模块的运行顺序

3.4接口设计

3.4.1用户接口

本系统采用的标准的HTML编写,内部套用JavaScript、CSS,风格统一,用户可通过一个窗体即可完成所有的输入工作,本模块不涉及大图片、音频和视频等,这样能保证输出时的快速性。用户可以直观的查看数据和填写数据,尽可能的简化操作,其主界面简便易于使用。

3.4.2外部接口

系统的数据库连接主要采用JDBC的方式,这样的连接方法简单,避免了过多的配置,数据库的访问全部由操作系统内部来完成。数据库的接口采用JavaBean连接实现。使用MYSQL来存放BBS的所有数据,包括用户信息,文章数据,用户消息,系统数据等。

3.4.3内部接口

JavaBean完成Jsp程序和数据库的连接;方便对数据库的读写,提高重用度,减少代码量。

3.5数据结构设计

3.5.1系统ER图

根据UML系统模型,可以确定系统中的各种实体以及它们之间的关系。本系统的实体包括管理员数据实体(Numb1)、用户数据实体(User)、帖子数据实体(btable)等。

M

浏览

浏览

帖 子

用户

1

M

管理

管理

N

管理员

1

1

图3.4 系统ER图

3.5.2逻辑结构设计要点

数据库表结构

1.Board表

3-2 Board表

字 段类 型长 度允 许 空
IdInt11
Btablevarchar20
NameVarchar30
LogoVarchar100yes
InformVarchar160yes
FocusVarchar200yes
BoardmastVarchar255

2. Numb1表

3-3 Numb1表

字 段类 型长 度允 许 空
UseridVarchar20
PwVarchar20
MailVarchar40yes
TimDatetime

3. Onlcount表

3-4 Onlcount表

字 段类 型长 度允 许 空
IdInt11
PageVarchar80
TimeVarchar10
UseridVarchar20
UsernameVarchar20
IpVarchar15

4.Online表

3-5 Online表

字 段类 型长 度允 许 空
UseridVarchar20
OntimsInt11yes
TxtInt11yes
PointInt10yes
Penname1Varchar250yes
Penname2Varchar250yes

5.btable表

3-6 btable表

字 段类 型长 度允 许 空
IdInt11
superInt11
BoardidInt11
titleVarchar40
TxtText
UseridVarchar20
UsernameVarchar20
TimeDatetime
ipDatetime
editimeVarchar250yes

6.User表

3-7 User表

字 段类 型长 度允 许 空
useridVarchar20
StepInt11
RootVarchar75
QuestionVarchar30yes
AnswerVarchar30yes
FaceVarchar50
NameVarchar20
SexVarchar5yes
MailVarchar5yes
QqVarchar15yes
TelVarchar15yes
JobVarchar20yes

3.5.3物理结构设计要点

系统数据库采用MYSQL。今天的商业环境要求不同类型的数据库解决方案。性能、可伸缩性及可靠性是基本要求,MYSQL 给数据管理与分析带来了灵活性。从数据管理和分析角度看,MYSQL可以作为一个完备的数据库和数据分析包。作为重要的基准测试可伸缩性和速度奖的记录保持者,MYSQL 是一个具备完全功能支持的数据库产品,提供了对可扩展标记语言 (XML) 的核心支持以及在 Internet 上和防火墙外进行查询的能力。

3.5.4数据结构与程序的关系

服务器端程序采用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语句,服务器端就完成了对数据库的连接,并且实现了对数据库的查询、更新等操作。

---------------------------------------------------------------------------

3.6功能模块设计

3.6.1总体设计

BBS系统总体上分6个模块,模块之间相互连接,互相作用,从用户的注册,登陆退出到发表文章,回复文章,对BBS系统的管理都可以通过简单的操作来完成。论坛系统设计简洁明了,没有过多的附属功能。

3.6.2功能模块设计

  1. 用户注册登陆模块

要完成论坛的各项操作,用户必须登陆论坛系统,如果没有论坛帐户,用户注册是必须的。用户命令如果是退出,则清除用户的状态信息,并返回BBS 首页,如果是登录则使用JDBC连接数据库,取得用户输入的帐号和密码并查询数据库,将得出的结果和用户输入的信息做比较,验证正确,显示用户已经登陆到系统,错误将返回消息让用户从新输入。如果用户想注册帐户,则返回注册页面,用户填写信息后,将检测信息的正确性,如果帐号允许注册,则完成帐号的注册,将信息写入到数据库中,如果帐户已经存在,则返回错误信息,告诉用户帐号存在,请用户从新输入,并完成注册,进程结束。

图3.5 用户注册登陆模块

(2)帐户信息模块

当用户登陆系统后,在个人中心中,可以通过修改资料的链接来修改个人资料(其中帐户名是不允许修改的),通过我的话题来查看和修改自己发布的文章。

图3.6 帐户信息模块

(3) 文章发布模块

用户登陆系统后可以查看其他所有用户发的文章,并可以发布自己的话题,也可响应回复其他用户和自己发表的话题。

图3.7 文章发布模块

(4) 公告制度模块

论坛管理员可以通过后台管理系统发布论坛公告,今日话题,并可以设置版面图标。

(5) 版块管理模块

论坛管理员可以通过后台管理系统控制论坛的版块,管理员可以完成下列功能:添加分类或版面,版面配置或删除;并可以对已存在的版块设置属性。

(6) 信息管理模块

信息管理模块主要完成下面的功能。信息配置;添加管理员; 编辑管理员;设定等级;配置权限;重新登录;安全退出;用户等级;用户列表。

以上的功能完成了整个论坛的配置,用户的管理,管理员的管理都可以通过对应的链接来完成。

3.7系统故障处理设计

3.7.1出错信息

3-8出错或故障情况一览表

错误类型错误代号异常类型输出信息处理方法
1用户帐号不存在ERR_01NULL无此帐号请用户注册
2用户密码错误ERR_02Check Error密码错误重新输入
3数据库连接错误ERR_03Connect无法连接数据库告诉用户错误。
4数据库查询错误ERR_04Select查询数据库出错请客户稍后重试
5数据库查询错误ERR_04Insert(创建帐号)无法创建帐户请客户稍后重试
6数据库查询错误ERR_04Delete(删除好友)无法删除好友请客户稍后重试
7数据库查询错误ERR_04Updata(更新数据)无法更新数据库请客户稍后重试
8用户没有权限ERR_05Permissions(权限)用户没有权限告知用户

3.7.2补救措施

当出现帐号,密码等通常的错误时,用户可以重新输入信息,即可解决,或是重新启动客户端,当出现无法连接数据库或者是查询中的错误,通常系统管理员重新启动服务即可解决,由于数据库的连接错误是全局的,所以重新启动服务是最佳的操作。

3.7.3系统维护设计

用于系统的检查与维护的检测点和专用模块,在这个版本中没有出,将会在后续开发中增加,例如自动重新启动服务,自动纠正数据的错误。以及用户数据的安装问题,密码的加密问题。

第四章 详细设计

4.1用户注册登陆模块

4.1.1功能说明

要完成论坛的各项操作,用户必须登陆论坛系统,如果没有论坛帐户,用户注册是必须的。用户命令如果是退出,则清除用户的状态信息,并返回BBS 首页,如果是登录则使用JDBC连接数据库,取得用户输入的帐号和密码并查询数据库,将得出的结果和用户输入的信息做比较,验证正确,显示用户已经登陆到系统,错误将返回消息让用户从新输入。如果用户想注册帐户,则返回注册页面,用户填写信息后,将检测信息的正确性,如果帐号允许注册,则完成帐号的注册,将信息写如到数据库中,如果帐户已经存在,则返回错误信息,告诉用户帐号存在,请用户从新输入,并完成注册,进程结束。

4.1.2功能实现

----------------------------------------------------------------------------------------------------------------

登陆页面:login.jsp

部分代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<jsp:useBean id="con" scope="page" class="numb1.com.db"/>

<jsp:useBean id="ht" scope="page" class="numb1.com.Dohtml"/>

<jsp:useBean id="onLine" scope="application" class="numb1.com.onLine"/>

<%@ 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

部分代码:

<script language="JavaScript" type="text/JavaScript">

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;

}

</script>

上面代码实现对用户信息的验证,提示新用户需要注意的问题,那些选项是必须填写的,那些是可选的,并过滤一些非法字符,使注册功能更完善。

----------------------------------------------------------------------------------------------------------------

4.1.3程序运行过程截图

用户登陆页面login.jsp

图4.1 用户登陆页面

用户注册页面reg.jsp

图4.2 用户注册页面

4.2帐户信息模块

4.2.1功能说明

当用户登陆系统后,在个人中心,可以通过修改资料的链接来修改个人资料(其中帐户名是不允许修改的),通过我的主题来查看和修改自己发布的文章。

4.2.2功能实现

----------------------------------------------------------------------------------------------------------------

主题显示:pcmain.jsp

部分代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<jsp:useBean id="con" scope="page" class="numb1.com.db"/>

<jsp:useBean id="ht" scope="page" class="numb1.com.Dohtml"/>

<jsp:useBean id="onLine" scope="application" class="numb1.com.onLine"/>

<%@ 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("<meta http-equiv=\"refresh\" content=\"1;URL=first.jsp\"><center><font color=#FF0000><strong>参数错误</strong></font></center>");

}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("<meta http-equiv=\"refresh\" content=\"1;URL=index.jsp\"><center><font color=#FF0000><strong>该版不存在,参数错误或该版以被删除</strong></font></center>");

}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);

}

%>

本页面实现对文章的分页显示功能,验证页面,对各个版块的主题进行显示和处理,可以提高用户的浏览速度,结构更整洁。

----------------------------------------------------------------------------------------------------------------

4.2.3程序运行过程截图

主题显示:pcmain.jsp

图4.3 主题显示

4.3文章发布模块

4.3.1功能说明

用户登陆系统后可以查看其他所有用户发的文章,并可以发布自己的话题,也可响应回复其他用户和自己发表的话题。

4.3.2功能实现

----------------------------------------------------------------------------------------------------------------

文章发表: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();

%>

本页面提供用户的发帖功能,用户可以根据自己的需要发表帖子,可以选择自己的类型,比如普通,原创,转帖等类型,有签名功能,还可以使用多彩文本,给用户提供更完美的选择。

---------------------------------------------------------------------------------------------------------------

4.3.3程序运行过程截图

文章发表:send.jsp

图4.4 文章发表

4.4公告制度模块

4.4.1功能说明

论坛管理员可以通过后台管理系统发布论坛公告,今日话题。

论坛的制度上可以设置对文章操作的客户积分,发帖数,精华帖等功能。

4.4.2功能实现

公告信息:boardset.jsp

部分代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<jsp:useBean id="con" scope="page" class="numb1.com.db"/>

<jsp:useBean id="ht" scope="page" class="numb1.com.Dohtml"/>

<%

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<mast.length-1;i+=2){

if(mast[i].compareTo(id)==0){

test=true;

}

}

}con.close();

if(step>2 || test){

%>

本页面是给管理员提供了对版块更好的管理,可以通过发布公告给本论坛的用户最新的通知,还有发表今日话题,能更快的对论坛进行有效的管理。

---------------------------------------------------------------------------------------------------------------

4.4.3程序运行过程截图

公告信息:boardset.jsp

图4.5 公告信息

4.5版块管理模块

4.5.1功能说明

论坛管理员可以通过后台管理系统开控制论坛的版块,管理员可以完成下列功能:添加分类或版面,版面配置或删除.

4.5.2功能实现

--------------------------------------------------------------------------------------------------------------

权限列表:rootlist.jsp

部分代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<jsp:useBean id="con" scope="page" class="numb1.com.db"/>

<jsp:useBean id="ht" scope="page" class="numb1.com.Dohtml"/>

<%

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("<meta http-equiv=\"refresh\" content=\"3;URL=../index.jsp\"><center><font color=#FF0000><strong>对不起,您无权进入该页面!</strong></font></center>");

}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="<a href=../main.jsp?id="+user_root[0]+">"+user_root[1]+"</a>";

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("<meta http-equiv=\"refresh\" content=\"2;URL=../index.jsp\"><center><font color=#FF0000><strong>该会员不存在!</strong></font></center>");

}else{

%>

论坛管理员可以通过后台管理系统控制论坛的版块,管理员可以完成下列功能:任命斑竹,取消斑竹,改变权限等功能。

---------------------------------------------------------------------------------------------------------------

4.5.3程序运行过程截图

权限列表:rootlist.jsp

图4.6 权限列表

4.6信息管理模块

4.6.1功能说明

信息管理模块主要完成下面的功能。

留言管理;添加管理员; 编辑管理员;设定等级;配置权限;重新登录;安全退出;用户等级。

以上的功能完成了整个论坛的配置,用户的管理,管理员的管理都可以通过对应的链接来完成。

4.6.2功能实现

---------------------------------------------------------------------------------------------------------------

留言管理:msend.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>发送短消息</title>

<style type="text/css">

<!--

.style2 {color: #FFFFFF}

td{font-size:13px;color:#868686}

th{font-size:15px}

-->

</style>

</head>

<body><br>

<br>

<%

String acid=request.getParameter("id");

%><form name="form1" method="post" action="actsend.jsp">

<table width="480" border="0" align="center" cellspacing="1" bgcolor="#cccccc">

<tr bgcolor="#7188e0">

<th colspan="2"><span class="style2">发 送 留 言</span></th>

</tr>

<tr bgcolor="#f8f8f8">

<td width="79"><div align="right">收信人ID:</div></td>

<td width="364"><% if(acid == null){ %>&nbsp;<input name="acid" type="text" id="acid" size="20" style="BORDER: #aaaaaa 1px solid;color:#686868;"><% }else{%>

&nbsp;<input name="acid" type="hidden" id="acid" value="<%=acid%>"><% out.print(acid);}%></td>

</tr>

<tr bgcolor="#f8f8f8">

<td><div align="right">留言主题:</div></td>

<td>&nbsp;<input name="title" type="text" id="title" size="30" style="BORDER: #aaaaaa 1px solid;color:#686868;">

</td>

</tr>

<tr bgcolor="#f8f8f8">

<td><div align="right">留言内容:<br>

≤100汉字&nbsp; </div></td>

<td>&nbsp;<textarea name="text" cols="45" rows="5" id="text" style="BORDER: #aaaaaa 1px solid; background:#f8f8f8; color:#686868; overflow:auto;"></textarea></td>

</tr>

<tr bgcolor="#f8f8f8">

<th colspan="2">&nbsp; <input name="imageField" type="image" src="../img/next1.gif" onMouseOver="this.src='../img/next2.gif'" onMouseout="this.src='../img/next1.gif'" width="60" height="22" border="0"> &nbsp;<a href="javascript:history.back()"><img src="../img/close1.gif" width="60" height="22" border="0" onMouseOver="this.src='../img/close2.gif'" onMouseout="this.src='../img/close1.gif'"></a></th>

</tr>

</table>

</form>

</body>

</html>

本页面主要实现对注册用户之间的留言管理,可以方便的在用户之间留言,这样增加了消息的隐蔽性,其他用户是接收不到的。

---------------------------------------------------------------------------------------------------------------

4.6.3程序运行过程截图

留言管理:msend.jsp

图4.7 留言管理

第五章 结论

在该系统的开发过程中采用了当今流行的多种热门技术,在开发过程中严格遵守正规软件系统开发的流程,本系统在开发过程中利用JSP和JavaBean相结合的技术充分体现了java这一语言一次开发处处运行的特点。开发中严格遵守软件工程中技术和说明文档的书写和备份,为系统测试和维护提供一个良好的书面说明。

本系统实现了大部分论坛所拥有的功能。使用了JSP和JavaBean相结合的这门技术使系统的可移植性得到很大的提高,在系统将来使用范围进一步扩大的情况下本系统可以在原有的基础上作升级和拓展。

参考文献(References)

[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.

致 谢

在本系统的开发过程中得到了多方面的帮助和协作,在此感谢学校领导给予的重视和指导老师胡军多方面帮助,同时感谢所有在项目开发过程中提供帮助的人员。

感谢我的导师胡军老师,他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;你循循善诱的教导和不拘一格的思路给予我无尽的启迪。这篇论文的设计细节和数据,都离不开你的细心指导。你严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。帮助我能够很快的融入这个新的设计。感谢我的室友们,来自各个地区,相聚到这个陌生的城市里,是你们和我共同维系着彼此之间兄弟般的感情,维系着寝室那份家的融洽。我们在一起的日子,我会记一辈子的。

在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值