网上贴吧系统设计与实现毕业论文

发布时间:2018-09-03 10:35:16   来源:文档文库   
字号:

网上贴吧系统设计与实现

随着经济的快速发展,网络已经渗透到人们生活及工作中的各个领域,人们越来越注重利用网络的快捷与准确的特点来完成自己的工作,21世纪已经是属于网络的时代。人们把更多的注意力转移到网络上来,除了购物之外,人们也渐渐地在网络上开始想换个交流。以贴吧为例,它已经成为人们获取信息、发表言论的重要场所。它由贴吧注册用户所发表的大量主题组成。近年来随着网络的普及完善发展上的贴吧也越来越火,因此建设一个好的贴吧显得越来越有必要了

贴吧的全称是电子布告系统,起初它还只是个公布信息的一种工具,但是随着技术的不断发展,现在的贴吧最终发展成一个信息整合、思想交流、资源共享的电子互动平台。 它可以提供给注册用户一个平台,用户可以通过网路的接入,登录贴吧,在这个平台上发表文章、阅读文章、回复文章等等。这次的系统开发详细表明了贴吧系统的设计思路,并对各部分设计进行了详尽的分析,最终给出了一个完整的设计方案并对其进行了实现,以便在投入实际应用后系统可以更加稳定可靠的工作。系统开发主要包括后台数据库的建立、维护以及前端应用程序的开发两个方面,真正实现信息资源的共享。

本系统以java为开发语言,在web环境下,基于B/S三层结构模式,以myeclipse为开发工具结合开发的贴吧系统。这个系统具有伸缩性好,扩展性强,能兼容、易维护、界面美观,功能实用的功能。通过本系统,可以让人们实现实时在线交流,真正做到信息资料的共享,也可以积极而及时地参与讨论在了解他人观点意见的同时也可以发表自己的看法

关键词:贴吧系统;B/S结构;sqlserver


The design and implementation of Post Bar system

Abstract

With the rapid development of economy, network has penetrated into every field of life and work of people, people pay more and more attention to using the network fast and accurate to complete their work, the twenty-first Century is the era of network. People pay more attention to the Internet, in addition to shopping, people also gradually began to change in the network communication. In the case of Postbar, it has become an important place for people to obtain information, speech. It consists of the forum registered user sends a lot of theme. In recent years, with the development of Internet, online PostBar is becoming more and more popular, so the construction of a good postbar is becoming more and more important.

The full name of the forum is the electronic notice system, at first it was just released a tool of information, but with the development of technology, now the forum eventually develop into an information integration, resource sharing, exchange ideas of electronic interactive platform. It can provide users a platform, network users can access, login to the forum, published articles, read, reply to the article and so on in this platform. The development of the system with that design ideas of the system, and design the various parts of a detailed analysis, and finally a complete design scheme is given and the realization of them, so that in practice the system can be more stable and reliable work. The system development mainly includes two aspects the establishment, maintenance of the background database and front-end application development, realize the sharing of information resources.

This system is developed by java language, in the web environment, B/S three layer structure model based on the postbar forum system, combined with the development of a tool for the development of myeclipse. This system has good flexibility, expansibility, compatibility, easy maintenance, the interface is beautiful, functional and practical function. Through this system, people can realize real-time online communication, truly sharing of information, can also actively and timely to participate in the discussion, in understanding others opinion also can express their views.

Keywords: postbar system;B/S structure;sqlserver



1 绪论

1.1 系统开发背景

随着信息化社会带给我们的冲击越来越强烈,信息化已经深入到我们生活的方方面面,同时,在信息时代强烈的冲击下,人们已经不再满足于上网只是查看一些资料或是网购,而是更加注重于信息的交流与传递。不同国家、不同地方的人可以像面对面一样的交流、讨论,这对大多数人来说是极具诱惑力的

贴吧是在1992年底随着国际互联网的开始流行而迅速发展起来的互联网的产生使得以前只能在本地访问的贴吧可以被全世界随意访问,这大大加大了人们对它的兴趣。在贴吧上大家可以对一个共同感兴趣的问题进行讨论自由地发表自己的意见与观点并且能直接与其他的人进行沟通从新闻、学习到娱乐、体育,从文字到视频、音频,贴吧汇集了各种形式、内容的网络资源。同时它具有不同的用户类型,权限不同。贴吧正以一种全新的姿态来到这个新的世纪,它以文字为主要的沟通方式,为网友提供了不受地理位置限制的交流空间。它已经成为人与人之间交流的一种形式,它提供一个相互交流、学习的互动平台,能够将分散的信息和分散的智慧都集中调动起来,能使得复杂的事情简单化。

如今,贴吧可以说是一种极为常见的交流互动服务系统。人们不仅可以在此发表自己的见解,相互交流技术、经验以及畅谈人生感悟,同时也可以作为用户与商家交流的渠道,商家可以开设贴吧作为售后服务信息收集和反馈中心,在此回答用户提出的问题式发布消息。

1.2 系统开发意义

随着网络的普及,现在很多人都能够上网,所以基于网络的贴吧也是各种信息资源组合的场所,可以很好的学习者、粉丝、志同道合的人提供自由的交流平台贴吧参与者可以围绕某个关键词或者话题,通过发表、回复话题方式进行互动,形成了一种以关键词为中心的交流方式。同时贴吧的内容也是越来越丰富,花样繁多,贴吧也由此深受广大网民的喜爱,因此不少商业网站对贴吧也重视起来,提供与网民交流的平台,同时在线技术支持也在贴吧中开展起来。同样地,也无从知道交谈的对方的真实社会身份。这样,参与贴吧的人可以处于一个平等的位置与其他人进行任何话题的交流。这对于现有的所有其他交流方式来说是不可能的。

1.3 组织安排

本文首先介绍了贴吧系统的设计与实现的研究背景和现实意义,研究意义和研究内容。然后介绍了系统开发所用到的相关技术,阐述了Java的功能特点和系统等相关的理论。接着阐述了系统的需求分析和可行性,从软件工程的角度分析本系统的各个部分。然后介绍了本系统的各功能模块的功能设计、实体图的设计、数据库设计等。最后总结本系统的结论、现存问题以及对将来的展望

1.3.1 任务目标

本系统主要实现以下功能:

1.贴吧实现用户的注册、发表言论、回复、搜索。

2.贴吧系统可以查看自己的帖子、查看他人的回复、删除信息。

3.在后台实现查看贴吧类别、添加类别、修改用户等。

1.3.2 运行环境

操作系统:WindowsXP/win7

数据库:sqlserver

开发环境:jdk1.6 MyEclipse9.0

服务器:Tomcat6.0


2 可行性及技术简介

2.1 Jsp简介

JSP,即Java Server Page,Java应用页面程序。作为开发动态页面的一种技术,JSP是当前大中型企业应用软件首选的开发路线之一。而且JSPJ2EE的重要组成部分,开发人员可以在JSP中获得J2EE的众多优点。学习JSP也是J2EE入门的必经之路。

JSP既依赖于也得益于J2EE技术。“一次编写,随处运行”的可移植性使用户可以专注于JSP的开发,而无须考虑系统层面的问题;Java的开放特性使市面上涌现出了众多的Web框架可供采纳;面向对象的设计,为更加轻松地构筑安全稳定的Web在线系统提供了基础保障。

JSP秉承了J2EE高贵的血统,却又带着平易近人的个性。JSP本质上是一个Java程序,具备Java语言一切无与伦比的优势。相比依赖于VBScript代码的ASP,以及依赖于Perl语言的PHP等其他Web编程语言,JSP有着严格的Java语法支持,可以和Java Bean无缝整合。

ASP采用了解析执行的机制,而JSP则是先编译后执行。因此,在第一次访问时JSPASP要慢,但是JSP的执行则比每次都解析执行的ASP快若干个数量级。微软随后推出了ASP.NET,号称提供了丰富的面向对象类库,引入中间语言的概念来支持多种语言,完整地集成了XMLWeb Service的支持,利用代码托管机制避免危害服务器,并期盼以此代替ASP。事实上ASP.NET的框架设计与J2EE框架十分类似,虽然弥补了ASP之前的缺陷,但是,其对于Windows平台的依赖性以及.NET本身的封闭性却依然存在。尽管现在有Mono计划将所有的开发转移到Linux,但是由于各种原因,Mono有着众多的制肘,并不被业界看好。当然,对于Windows环境下的中小型应用程序,ASP.NET确实是不错的选择。

JSP是线程高度并行的,可以充分利用硬件资源。另外,Java语言与平台无关,开发者可以将JSP部署在几乎任何操作系统上,UNIX系统可以为JSP提供稳定可靠的安全运行环境;利用集群技术还可以把多台主机联合起来服务于JSP应用程序。因此,JSP对于高可靠性、高性能要求的企业级应用系统有较强的吸引力。

从开发者的角度考虑,JSP是开发Web应用程序的首选。JSP支持JavaBean组件,也就获得了众多Java厂商的有力支持,开发者可以利用JavaBean来完成所有Java能实现的功能,如数据库连接池、图形绘制、文件IO操作、XML解析、WebService调用与发布等。

Java的开放性也使系统框架如雨后春笋般涌现, Tapstry,Velocity,Hibernate等开源框架为Web应用开发者简化了开发流程,提高了代码质量,从而降低了学习门槛和开发成本。JSP遵循J2EE规范所采用的分层结构也使得代码容易组织维护,各个独立的层次分别针对特定的编程领域,在某个领域发生变化的时候,只需要在对应层次进行针对性的修改,而不会影响到其他层次的代码。

而相对于Servlet这种Java类,JSP又有着特定的优势。从前面的例子可以看出,要完成一个简单JSP页面具有的功能,需要编写大量的Servlet代码,而且,从代码上根本看不出来生成的HTML文档结构。另外,JSP中双引号等特殊字符,在Servlet中都需要进行转义处理,又进一步降低了程序的可读性。Servlet不能有效地利用原型页面。事实上,在JSP中,还可以使用标签等特性,进一步将JSP中的 Java代码导致的不利因素削弱。

总之,使用JSP可以降低开发门槛,提高程序可读性,开发出高性能的跨平台企业级软件。

2.2 B/S结构工作模式图

BS体系结构系统中,用户通过浏览器向分布在网络上的许多服务器发出请求,服务器对浏览器的请求进行处理,将用户所需信息返回到浏览器。而其余如数据请求、加工、结果返回以及动态网页生成、对数据库的访问和应用程序的执行等工作全部由Web Server完成。

B/S工作模式图如图2.1所示:

2.1 B/S工作模式图

2.3 Myeclipse简介

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持 ,JSP,CSS,Javascript,Hibernate等。

MyEclipse 是一个十分优秀的用于开发Java, J2EE Eclipse 插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。

简单而言,MyEclipseEclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse5.5以前版本需先安装EclipseMyEclipse5.5以后版本安装时不需安装Eclipse

2.4 SQL Server简介

SQL Server 是美国Microsoft公司开发的一个关系型数据库管理系统,是目前世界上最著名的关系数据库管理系统之一。Microsoft SQL Server在性能和可扩展方面确立了世界领先的地位,是一套完全的数据库和数据分析解决方案,使用户可以快速创建下一代的可扩展电子商务和数据仓库解决方案。Microsoft SQL Server 在数据库服务器自动调整和自动管理技术方面在数据库领域中处于领先地位,使客户可以集中精力处理商业战略上的问题,而不是去细微调整数据库服务器的各项参数。SQL Server 的主要功能:

1)数据库管理功能

作为数据库管理系统,SQL Server 自然应该具有数据库管理功能。Microsoft SQL Server的数据库由包含数据的表集合和其他对象(如视图、索引、存储过程和触发器)组成,目的是为执行与数据有关的活动提供支持。存储在数据库中的数据通常与特定的主题或过程相关。

2)数据仓库功能

SQL Server 2005提供了一套全新的综合分析服务系统。分析服务为商业活动提供了集成的OLAP服务和数据挖掘功能。OLAP可以通过多维存储技术对大型、复杂数据集执行快速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数据中的倾向及趋势。SQL Server针对包括集成数据挖掘、OLAP服务、安全性服务及通过Internet对多维数据集进行访问和链接分析提供新的数据仓库功能。

3)网络贴吧

SQL Server 不仅提供网络贴吧所需的可伸缩性与可扩展性之外,还提供了丰富的数据库编程能力,以确保系统的协同工作和灵活性。SQL Server2005 不仅支持集中化数据库管理功能,而且还最大程度地实现了管理与优化工作的自动化,从而,减轻了有关管理人员的负担。

4)完备的 Web 功能

SQL Server2005允许通过HTTP协议,在 Web上进行高性能、基于标准的安全访问。基于Web的客户端拥有访问关系型数据存储和访问分析服务的能力。

(5)分布式数据复制功能

分布式数据复制功能可以将一个数据库中的数据复制到通过局域网、广域网或 Internet 网络连接的不同地点服务器或同一服务器中的不同数据库中,并能够自动保持这些数据同步,使各个数据库中具有相同的数据。

2.5 可行性分析

可行性分析是在全面调查的基础上,针对系统的开发是否具备必要性和可能性,对系统的开发从运行、经济、技术的方面进行分析和研究,以避免投资失误,保证新系统开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。这部分将从以下三个方面进行研究:技术可行性、经济可行性、操作可行性。

2.5.1 技术可行性

技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。本系统采用三层结构,用sqlserver数据库作为后台数据库,安装和使用简单易学,方便操作;用的是JSP开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于目前单机模式相对发展成熟,故软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。

2.5.2 经济可行性

经济可行性是指开发并应用此系统,应对其投资成本和未来可能取得的经济利益,权衡其得失。随着计算机软件和硬件技术的飞速发展,计算机软、硬件价格不断下降,设计本系统所投入的资金下降。同时与一些企业发布、获取信息所节省的价值相比,系统的收益还是很大的。开发贴吧系统在经济上是完全可行的。

2.5.3 操作可行性

微软Windows操作平台具有良好的操作性,贴吧系统服务器可以放在UNIX平台,运行也可以基于Windows操作平台。本系统具有友善的用户界面、良好的安全性设置和详细的操作说明,适合各类人群使用。

2.6 需求分析

需求分析是在软件开发的初始阶段进行,它对于整个软件开发过程以及软件开发后质量是举足轻重的。随着软件系统复杂性的提高及规模的扩大,需求分析在软件开发中所处的地位愈加突出。所谓需求,是指用户对目标软件系统在功能、行为、性能设计约束等方面的要求。在需求分析的研究中,系统开发人员必须对用户的需求进行调查和分析,结合实际环境的特征,正确定义目标软件的特征 。因此,需求分析至关重要。

贴吧系统设计实现以下功能:

1)管理员功能:查看用户发布的帖子、回复的内容或是删除帖子,同时可以添加贴吧类别、修改或是删除类别,添加版面、修改或是删除版面,查看、修改或是删除用户。

2)普通用户功能:游客注册后成为普通用户,可以查看他人发布的帖子或是回复帖子,也可以自己发布帖子或是删除帖子。

3)游客功能:游客只能查看他人发布的帖子,无法自己发布帖子或是对其他帖子进行回复,如果想实现以上功能必须先注册。


3 可行性及技术简介

3.1 系统概要设计

在概要设计中主要确定了系统的实现手段,定义了解决方案的边界和主要技术结构,给出了后续工作继续实施的所有技术要点,是开发人员在下一阶段进行详细设计的指导性文件,也是考核系统总体质量的重要技术文档。

本次的系统开发完全是一切为用户着想,界面要美观大方,操作尽量简单明了,使其学校对学生贴吧的管理实现规范化、学科化。

本系统是应用于整个贴吧的管理,所以对于实际中不同身份的用户,在本系统中都有对应其角色的不同操作页面,即不同的用户有不同的功能,并且切互有联系。体现了该系统的完整性。

3.2 系统功能模块设计

在结构化系统设计中,模块一般都是按功能划分的,通常称为功能模块。合理的功能模块的划分能够极大限度地减少重复劳动、提高开发工作的效率并增大系统的可维护性。本系统分为3个用户权限即管理员、普通用户、游客。下面分别介绍各个用户的功能。

(一)管理员功能:

1)我的帖子:管理员在此模块可以发布帖子,查看其他用户给予的回复,回复的人数,或是删除帖子。如果页面过多,可以直接选择跳转到其他页面。

2)精华帖子:管理员在此可以查看系统中的精华帖子,并作出回复或是删除帖子。

3)搜索功能:管理员可以通过帖子标题、帖子内容、发布者或是关键字进行模糊查询或是精确查询。

4)类别管理:管理员在后台可以添加的类别,如贴吧的名称、贴吧介绍,添加后可以查看类别列表,并作出修改或是删除。

5)版面管理:管理员可以添加版面,如版面的所属类别、名称、版主、版面公告等信息,添加可以查看版面列表,并作出修改或是删除。

6)用户管理:管理员可以通过选择不同的用户类型进行查看不同的用户信息,并作出修改或是删除的操作。

具体功能模块图如图3.1所示:

3.1 管理员功能模块图

(二)普通用户功能:

1)注册功能:游客需要注册才能成为普通用户,用户登录后可以在首页中看到其他用户的帖子,并可以做出回复进行交流,也可以自己发帖,查看回复或是删除自己的帖子。

2)搜索功能:用户可以通过帖子标题、帖子内容、发布者或是关键字进行模糊查询或是精确查询。

3)我的帖子:用户在此模块可以发布帖子,查看其他用户给予的回复,回复的人数,或是删除帖子。如果页面过多,可以直接选择跳转到其他页面。

4)精华帖子:用户在此可以查看系统中的精华帖子,并作出回复,在此模块中用户只能删除自己发布的帖子。

普通用户模块的功能图如图3.2所示:

3.2 用户功能模块图

(三)游客功能介绍:

游客只能查看其他人发布的帖子,无法发布、回复或是删除帖子,要想成为普通用户必须通过注册。

3.3 数据库设计

3.3.1 系统实体图

实体图是识别功能模型与数据模型间关联关系的,在主题数据库的抽取和规范化的过程中,采用的是简化的实体图表示方法,从而避免过繁过细的实体图表示影响规划的直观和可用性。构成实体图的基本要素是实体型、属性以及联系,其表示方法为:实体型:用矩形表示,矩形框内写明实体名;属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边的旁边标上联系的类型。

针对本系统特点,数据库设计采用的各个组成部分的数据项和数据结构如下所示:

1tb_bbs 帖子实体图

3.3 帖子实体图

2tb_bbsAnswer 回复实体图

3.4 回复表实体图

3tb_board 贴吧实体图

3.5 贴吧实体图

4tb_class 分类实体图

3.6 分类实体图

5tb_user 用户实体图

3.7 用户实体图

3.3.2 数据库表

表的设计是这次设计的一个核心内容。根据前面对网站各个权限用户模块的功能分析和对数据库中实体关系的设计,可以看到网站中所用到的数据信息基本包括:帖子信息表、回复表、贴吧表、分类表等。

设计原则如下:

1)进行规范化设计,尽可能地减少数据冗余和重复。

2)结构设计与操作设计相结合。

3)数据结构具有相对的稳定性。

基于以上三条设计原则,本系统中关于数据库表结构设计如下:

1tb_bbs 帖子表

帖子表主要存储帖子id、贴吧id、帖子标题、内容、发布者、发表时间、表情等信息,具体如表3.1所示:

3.1 帖子表

2tb_bbsAnswer 回复表

回复表主要存储回复id、回复主题、回复内容、回复者、回复时间、表情等信息,具体如表3.2所示:

3.2 回复表

3tb_board 贴吧表

贴吧表主要存储贴吧id、分类id、贴吧名称、吧主、贴吧公告等信息,具体如表3.3所示:

3.3 贴吧表

4tb_class 分类表

分类表主要存分类id、分类名称、贴吧介绍信息等信息,具体如表3.4所示:

3.4 分类表

5tb_user 用户表

用户表主要存储用户id、用户名、密码、用户头像、用户性别、联系电话、QQ、电子邮件、来自、权限等信息,具体如表3.5所示:

3.5 用户表

以上是系统主要实体图和数据库表的介绍。


4 系统实现

4.1 系统概述

人机交互子系统是用户所能直接看到的,是给用户的第一感觉,他现在已经成为判断一个软件好坏的重要标准。在设计人机交互子系统的时候,必须遵循以下原则:

设计出一个易用、低错、适应、美观的界面,能够使用户自如的完成操作,而用户不需要有较高的计算机专业知识和技能。前期对项目的大量细致的分析,以及对用户群的调查,充分考虑实际操作的各项细节,使得普通用户在不需要查看用户手册的情况下亦能很自如的操作系统,并对操作流程有清晰的了解。

4.2 系统页面实现

本系统有三个用户权限,分别是管理员、普通用户和游客,三个用户功能相辅相成,达成一个完美的系统,主要功能如下:

(一)管理员功能:

1)我的帖子:管理员在此模块可以发布帖子,查看其他用户给予的回复,回复的人数,或是删除帖子。如果页面过多,可以直接选择跳转到其他页面。

2)精华帖子:管理员在此可以查看系统中的精华帖子,并作出回复或是删除帖子。

3)搜索功能:管理员可以通过帖子标题、帖子内容、发布者或是关键字进行模糊查询或是精确查询。

4)类别管理:管理员在后台可以添加贴吧的类别,如贴吧的名称、贴吧介绍,添加后可以查看类别列表,并作出修改或是删除。

5)贴吧管理:管理员可以添加贴吧,如贴吧的所属类别、名称、吧主、贴吧公告等信息,添加可以查看贴吧列表,并作出修改或是删除。

6)用户管理:管理员可以通过选择不同的用户类型进行查看不同的用户信息,并作出修改或是删除的操作。

(二)普通用户功能:

1)注册功能:游客需要注册才能成为普通用户,用户登录后可以在首页中看到其他用户的帖子,并可以做出回复进行交流,也可以自己发帖,查看回复或是删除自己的帖子。

2)搜索功能:用户可以通过帖子标题、帖子内容、发布者或是关键字进行模糊查询或是精确查询。

3)我的帖子:用户在此模块可以发布帖子,查看其他用户给予的回复,回复的人数,或是删除帖子。如果页面过多,可以直接选择跳转到其他页面。

4)精华帖子:用户在此可以查看系统中的精华帖子,并作出回复,在此模块中用户只能删除自己发布的帖子。

(三)游客功能介绍:

游客只能查看其他人发布的帖子,无法发布、回复或是删除帖子,要想成为普通用户必须通过注册。

4.2.1 系统首页

在系统首页有登录按钮,在未登录的时候只能浏览其他人发布的帖子,无法操作任何功能,游客也在首页进行注册,如图4.1所示:

4.1 系统首页

主要代码:

/** 设置分页导航栏信息 */

public void setPageLink(String gowhich){

if(gowhich==null)

gowhich="";

if(gowhich.indexOf("?")>=0)

gowhich+="&";

else

gowhich+="?";

if(AllP>1){

//AllP是已定义的变量,代表页面总数

PageLink="

";

if(CurrentP>1){

//CurrentP是已定义的变量,代表当前页面数字

PageLink+="【首页】 ";

PageLink+="【上一页】 ";

}

if(CurrentP

PageLink+="【下一页】 ";

PageLink+="【尾页】";

}

PageLink+="

";

}

}

4.2.2 用户注册页面

用户首次登录前需要先注册,点击注册按钮,填写用户名、密码、性别、联系电话、QQ、邮件、来自哪里即注册成为本站的普通用户,具体如图4.2所示:

4.2 注册页面

主要代码:

/** 用户注册 */

public ActionForward userReg(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){

ActionMessages messages=new ActionMessages();

HttpSession session=request.getSession();//建立会话

session.setAttribute("mainPage","../pages/userReg.jsp");

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

if(validate==null||validate.equals("")||!validate.equals("yes")){

//若果validate对象不存在,或值为空,或validate的值不为yes

return mapping.findForward("result");

}

else{

UserForm regForm=(UserForm)form;

String pass1=regForm.getUserPassword();

String pass2=regForm.getAginPassword();

//若两次密码输入不一致,则在屏幕上显示输出连词输入的密码不一致

if(!pass1.equals(pass2)){

System.out.println("两次输入的密码不一致!");

messages.add("userPassword",new ActionMessage("luntan.user.reg.pass.noEquals"));

saveErrors(request,messages);

}

else{

String userName=Change.HTMLChange(regForm.getUserName()); Object[] params=null;

//检查自定义的用户名是否已经被使用,以保证用户名唯一

String sql="";

sql="select * from tb_user where user_name=?";

params=new Object[1];

params[0]=userName;

OpDB myOp=new OpDB();

UserForm user=myOp.OpUserSingleShow(sql, params);

if(user!=null){

System.out.println(userName+" 用户已经存在!");

messages.add("userOpR",new ActionMessage("luntan.user.reg.exist",userName));

}

else{

String userPassword=Change.HTMLChange(regForm.getUserPassword());

String userFace=regForm.getUserFace();

String userSex=regForm.getUserSex();

String userPhone=regForm.getUserPhone();

String userOICQ=regForm.getUserOICQ();

String userEmail=regForm.getUserEmail();

String userFrom=Change.HTMLChange(regForm.getUserFrom());

String userAble="0";

sql="insert into tb_user values(?,?,?,?,?,?,?,?,?)";

params=new Object[9];

params[0]=userName;

params[1]=userPassword;

params[2]=userFace;

params[3]=userSex;

params[4]=userPhone;

params[5]=userOICQ;

params[6]=userEmail;

params[7]=userFrom;

params[8]=userAble;

//将新用户信息插入数据库用户表

int i=myOp.OpUpdate(sql, params);

if(i<=0){

System.out.println("用户注册失败!");

messages.add("userOpR",new ActionMessage("luntan.user.reg.E"));

}

else{

System.out.println("用户注册成功!");

regForm.clear();

messages.add("userOpR",new ActionMessage("luntan.user.reg.S"));

}

saveErrors(request,messages);

}

}

return mapping.findForward("result"); //完成注册后,跳转到result里设置的页面

}

}

4.2.3 管理员发布帖子页面

管理员在登录到系统后,在此模块可以发布帖子,发布后可以对其删除或是查看他人给予的回复,具体实现页面如图4.3所示:

4.3 管理员发帖页面

主要代码:

/** 发表帖子 */

public ActionForward addBbs(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){

HttpSession session=request.getSession();

session.setAttribute("mainPage","/pages/add/bbsAdd.jsp");

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

if(validate==null||validate.equals("")||!validate.equals("yes")){

//如果validate对象不存在,或值为空,或validate的值不为yes

return mapping.findForward("showAddJSP");

}else{

BbsForm bbsForm=(BbsForm)form;

String boardId=(String)session.getAttribute("boardId");

String bbsTitle=Change.HTMLChange(bbsForm.getBbsTitle());

String bbsContent=Change.HTMLChange(bbsForm.getBbsContent());

String bbsSender=((UserForm)session.getAttribute("logoner")).getUserName();

String bbsSendTime=Change.dateTimeChange(new Date());

String bbsFace=bbsForm.getBbsFace();

String bbsOpTime=bbsSendTime;

String bbsIsTop="0";

String bbsToTopTime="";

String bbsIsGood="0";

String bbsToGoodTime="";

String sql="insert into tb_bbs values(?,?,?,?,?,?,?,?,?,?,?)";

Object[] params={boardId,bbsTitle,bbsContent,bbsSender,bbsSendTime,bbsFace,bbsOpTime,bbsIsTop,bbsToTopTime,bbsIsGood,bbsToGoodTime};

ActionMessages messages=new ActionMessages();

OpDB myOp=new OpDB();

int i=myOp.OpUpdate(sql,params);

if(i<=0){

System.out.println("发表帖子失败!");

messages.add("userOpR",new ActionMessage("luntan.bbs.add.E"));

saveErrors(request,messages);

return mapping.findForward("error"); //发帖成功后,跳转到error中设置的页面

}

else{

System.out.println("发表帖子成功!");

session.setAttribute("currentP","1");//发帖成功后,将当前页面设置为1

messages.add("userOpR",new ActionMessage("luntan.bbs.add.S"));

bbsForm.clear();//清空发帖面板

saveErrors(request,messages);

return mapping.findForward("success");//发帖成功后,跳转到success中设置的页面

}

}

}

4.2.4 类别管理页面

管理员在系统中可以添加贴吧的类别,添加后可以查看类别列表,并可以做出修改或是删除,如图4.4所示:

4.4 管理类别页面

主要代码:

/** 后台-添加贴吧类别 */

public ActionForward addClass(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){

HttpSession session=request.getSession();

session.setAttribute("backMainPage","../class/classAdd.jsp");

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

if(validate==null||validate.equals("")||!validate.equals("yes")){

return mapping.findForward("result");//发帖成功后,跳转到result中设置的页面

}else{

ActionMessages messages=new ActionMessages();

ClassForm classForm=(ClassForm)form;

String className=Change.HTMLChange(classForm.getClassName());

String classIntro=Change.HTMLChange(classForm.getClassIntro());

String sql="";

Object[] params=null;

OpDB myOp=new OpDB();

sql="select * from tb_class where class_name=?";

params=new Object[1];

params[0]=className;

if(myOp.OpClassSingleShow(sql, params)!=null){

//若新建的贴吧类别名称已经存在

System.out.println("添加贴吧类别-名称:"+className+" 的贴吧类别已经存在!");

messages.add("adminOpR",new ActionMessage("luntan.admin.add.class.exist",className));

}else{

sql="insert into tb_class values(?,?)";

params=new Object[2];

params[0]=className;

params[1]=classIntro;

//将新定义的贴吧类别添加到数据库表中

int i=myOp.OpUpdate(sql, params);

if(i<=0){

System.out.println("添加贴吧类别失败!");

messages.add("adminOpR",new ActionMessage("luntan.admin.add.class.E"));

}else{

System.out.println("添加贴吧类别成功!");

classForm.clear();//清空表单里的内容

}else{

ClassForm classform=(ClassForm)form;

String classId=classform.getClassId();

if(classId==null||classId.equals("")){

classId=(String)session.getAttribute("boardListId");

classform.setClassId(classId);

}

else{

session.setAttribute("boardListId",classId);

}

//透过classID字段查询数据库表tb_board中的所有字段

String sql="select * from tb_board where board_classID=?";

Object[] params={classId};

boardList=myOp.OpBoardListShow(sql,params);

}

session.setAttribute("backBoardList",boardList);

return mapping.findForward("success");

}

4.2.6 用户管理页面

管理员在系统中可以按照不同的用户权限来查看不同用户的信息,并可以对信息进行修改或是删除。具体实现页面如图4.6所示:

4.6 用户管理页面

主要代码:

/** 后台-列表查看用户 */

public ActionForward getUserList(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){

HttpSession session=request.getSession();

session.setAttribute("backMainPage","../user/userListShow.jsp");

String getType=request.getParameter("type");

if(getType==null||getType.equals("")||!getType.equals("show")){

//如果validate对象不存在,或值为空,或validate的值不为show

List ableList=new List();

ableList.add(new LabelValueBean("全部","all"));

ableList.add(new LabelValueBean("管理员","2"));

ableList.add(new LabelValueBean("吧主","1"));

ableList.add(new LabelValueBean("普通用户","0"));

session.setAttribute("backListAble",ableList);

}else{

AbleForm ableform=(AbleForm)form;

String able=ableform.getShowAble();

if(able==null||able.equals("")){

able=(String)session.getAttribute("userAble");

ableform.setShowAble(able);

}else

session.setAttribute("userAble",able);

String sql="";

Object[] params=null;

if(able.equals("all")){

//查询tb_user表中所有字段,并根据权限降序排列

sql="select * from tb_user order by user_able DESC";

}else{

//根据选择的权限类型,查询tb_user表中的所有用户信息

sql="select * from tb_user where user_able=?";

params=new Object[1];

params[0]=able;

}

OpDB myOp=new OpDB();

List userlist=myOp.OpUserListShow(sql, params);

request.setAttribute("backUserList",userlist);

}

return mapping.findForward("success");

}

4.2.7 用户精华帖子页面

用户登录后查看版系统中的精华帖子,并作出回复,但是用户无权删除他人发布的帖子,只能删除自己的帖子,下图为精华帖子查看页面,图4.7所示:

4.7 精华帖子页面

主要代码:

/** 查看精华帖 */

public ActionForward goodListShow(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){

super.setParams(request);

HttpSession session=request.getSession();

session.setAttribute("mainPage","/pages/show/bbs/goodListShow.jsp");

OpDB myOp=new OpDB();

int perR=5;

String currentP=request.getParameter("showpage");

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

currentP=(String)session.getAttribute("currentPgood");

else

session.setAttribute("currentPgood",currentP);

String gowhich="user/goodListShow.do?method=goodListShow";

myOp.setMark(true);//进行分页显示

myOp.setPageInfo(perR, currentP, gowhich);//设置进行分页显示需要的信息

String sql="select * from tb_bbs where bbs_isGood='1' order by bbs_toGoodTime DESC";

List goodlist=myOp.OpBbsListShow(sql,null);

CreatePage page=myOp.getPage();

session.setAttribute("goodlist",goodlist);

session.setAttribute("page",page);

return mapping.findForward("success");

}

4.2.8 搜索帖子页面

用户在系统可以搜索站内的帖子,通过输入帖子标题、内容、发表者或是关键字都可以进行模糊或是精确的搜索,具体如图4.8所示:

4.8 搜索帖子页面

主要代码:

/**搜索操作**/

SearchForm searchform=(SearchForm)form;

String subsql=searchform.getSubsql();

String sqlvalue=searchform.getSqlvalue();

String searchType=searchform.getSearchType();

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

if(validate==null||validate.equals("")||!validate.equals("yes")){

//通过返回超链接触发的搜索操作

subsql=(String)session.getAttribute("subsql");

sqlvalue=(String)session.getAttribute("sqlvalue");

sqlvalue=(String)session.getAttribute("sqlvalue");

searchform.setSubsql(subsql);

searchform.setSqlvalue(sqlvalue);

searchform.setSearchType(searchType);

}else{

session.setAttribute("subsql",subsql);//通过提交表单触发的搜索操作

sqlvalue=Change.HTMLChange(searchform.getSqlvalue());

session.setAttribute("sqlvalue",sqlvalue);

session.setAttribute("searchType",searchType);

}

String opname="";

String param="";

if(searchType.equals("all")){

opname=" = ";

param=sqlvalue;

}else{

opname=" like ";

param="%"+sqlvalue+"%";

}

5 系统测试

5.1 正确认识软件测试

1)不能彻底测试程序。我们知道,软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成软件开发项目。在测试阶段既然穷举测试是不可实现的,为了节省时间和资源,提高测试效率,就必须精心设计测试用例,使得采用这些测试数据能够取得最佳的测试效果。

2)软件测试的目的不是证实程序的正确性。

3)软件错误是不可避免的。开发过程中软件错误之所以不可避免,从客观上讲,是由于所开发的软件具有相当的复杂性。软件开发的实践一再表明,指望整个开发过程完全不出现人为的差错是不可能的,问题在于如何能够及时地发现和排除各种隐匿的差错。

4)及时排除早期开发中的错误。这样可以排除它给后期工作带来的麻烦。也就避免付出高额的代价,从而大大提高开发的效率。

5)程序验证方法无法取代测试。在实际的软件开发项目中,测试仍然是最为现实、有效的质量保证手段。

5.2 软件测试的目的

软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件。

第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。

第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量。四、质量也代表着它符合客户的需要。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。

5.3 系统测试的方法

1)黑盒测试

黑盒测试也称功能测试或数据驱动测试或基于规范的测试,它是在己知产品所应具有的功能的前提下,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。

2)白盒测试

白盒测试也称结构测试或逻辑驱动测试或基于实现的测试,它是知道产品内部工作过程。可通过测试来检测产品内部动作是否按照规格说明书的规定止常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。对所有逻辑路径进行测试。因此,白盒”法是穷举路径测试。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。


本系统通过不断改善,已经可以正常运行,基本实现所设计的功能。系统运行稳定,操作简单,维护方便,实现对贴吧的管理。本系统充分考虑人性化设计,每个模块都仅可能的简化用户和操作员的输入,并有各种的系统提示,以方便用户的使用。由于本身水平有限,时间仓促,本系统还有很多不尽人意的地方。比如统计比较粗糙,设计时没有过多的考虑数据库查找效率等等。

通过近两个月的毕业设计,使我深深体会到程序开发的不易,它不仅仅是要求扎实的基础知识,更注重的是动手能力,并且在程序开发过程中需要有超乎寻常的耐力,因为对于一个经验尚浅的人来说,在做系统编码的时候是会出现相当一部分的错误,所以耐力不够的人是很难坚持到最后的。在此次设计当中无论是基础知识,还是动手能力,对于我都有了进一步的提高,尤其是对于开发系统的相关技术有了更深刻的认识,同时也对系统开发有了一个系统的认识,除此之外,通过对贴吧信息的搜集与查阅,对网站管理方面的知识也有了一定的认识,相信这次的毕业设计不仅是对于我大学几年知识的汇总,也是对于我今后在选择工作道路的指南针。但是在贴吧系统在开发过程中,仍存在一定的不足。比如由于知识水平以及时间精力等方面的原因,学生只对系统进行过简单的单元测试和集成测试,并没有对系统进行严格的综合测试,所以系统难免存在着某些还没解决的纰漏。寄希望于自己在往后的学习生活工作中,不断提高自己的知识水平、思想水平和工作效率。

总之,本次开发的系统完成了前期制定的任务与计划,符合了毕业设计的要求,对自身而言,累计了相当丰富的经验,相信在未来的工作中能对自己有所帮助。

参考文献

[1] 杨冠宇,陈璐. 浅谈网络文化的新驱动媒介——百度贴吧[J]. 剑南文学. 2013-6.12~14

[2] 谢颖. 基于.Net的贴吧系统设计[J]. 数字技术与应用,Digital Technology&Application. 2012-05.20~26

[3] 李刚. 疯狂Java讲义[M]. 2 北京:电子工业出版社. 2012-1.33~35 ISBN 9787121155789

[4] 张跃平,耿祥义. JSP程序设计[M]. 北京:清华大学出版社. 2009-8-1.26~40 ISBN 9787302199403

[5] 徐林林. Java Web编程从入门到实践[M]. 北京:清华大学出版社. 2010-3.10~15 ISBN 9787302197478

[6] 郝玉龙,姜韡. Java EE编程技术[M]. 北京:清华大学出版社,北京交通大学出版社. 2008-6.33~35 ISBN 9787811232417

[7] 秦靖,刘存勇. Oracle从入门到精通[M]. 机械工业出版社. 2011-1-1.10~15 ISBN 9878111324485

[8] Bruce A.Tate. Bitter Java[M]. AmericaManning Publications. 2006-2.8~15 ISBN 7111183150

[9] Watts D J.Small Worlds. The dynamics of networks between order and randomness[P]. America: 56A2579BB6,l999-5-13.22~27

[10] LinwoodJsff. Beginning Hibernate[M]. Apress. 2010-5-31.19~25 ISBN 9781430228509


结束了几个月的毕业设计生活,我们这一届的学生也面临着毕业了。在这里,我首先要感谢的是我的指导老师。在这次毕业设计的过程中,虽然遇到了许许多多的问题,但是老师仍然给了我大量的时间让我完成设计,耐心的指导和严谨的工作态度都让我受益匪浅。正是他的悉心教导和妥善安排保证了我各项任务的完成和论文写作的顺利进行。特别是在论文的审查阶段,老师为了指导我们的论文写作严格督促,并耐心指导。在此,向我的导师表示最诚挚的敬意和最衷心的感谢。

感谢在毕业设计期间给予我指导和建议的老师们,在我遇到问题时,他们耐心的讲解使我能够很好的解决遇到的问题,积累到宝贵的经验。

感谢和我一起讨论和解决问题的其他同学,他们让我体会到了团队精神的重要性。正是我们之间的交流,相互的鼓励和帮助才令整体的毕业设计的进度得以保持,同样衷心的感谢他们!

其次我要向计算机系的全体老师表示衷心的感谢,在这几年的时间里,你们不仅教授了我们专业知识,也为我们的成长和进步做出了贡献。另外,我也会在以后加强专业知识的学习,将该系统进一步的完善。


外文资料

An Introduction to Database Systems

A Database Management System (DBMS) consists of a collection of interrelated data and a set of programs to access those data. A database is a collection of data organized to server many applications efficiently by centralizing the data and minimizing redundant data. The primary goal of a DBMS is to provide an environment that is both convenient and efficient to use in retrieving and storing database information.

Database systems are designed to manage large bodies of information. The management of data involves both the definition of structures for the storage of information and the provision of mechanisms for the manipulation of information stored, despite system must avoid possible anomalous results.

The important of information in most organizations, which determines the value of the database, has led to the development of a large body of concepts and techniques for the database, has led to the development of a large body of concepts and techniques for the efficient management of data.

The typical file-processing system is supported by a conventional operating system. Permanent records are stored in various files, and different application programs are written to extract records from, and to add records to, the appropriate files. Before the advent of DBMSs, organizations typically stored information using such systems.

Keeping organizational information in a file-processing system has a number of major disadvantages.

Data redundancy and inconsistency. Data redundancy is the presence of duplicate data in multiple data files. Since the files and application programs are created by different programmers over a long period, the various files are likely to have different formats and the programs may be written in several programming languages. Moreover, the same information may be duplicated in several places (files). This redundancy leads to higher storage and access cost. In addition, it may lead to data inconsistency; that is, the various copies of the same data may no longer agree.

Difficulty in accessing data. The point here is that conventional file-processing environments do not allow needed data to be retrieved in a convenient and efficient manner. More responsive data-retrieval systems must be developed for general use.

Integrity problems. The data values stored in the database must satisfy certain types of consistency constrains. Developers enforce the constraints in the system by adding appropriate code in the various application programs. However, when new constraints are added, it is difficult to change the programs to enforce them. The problem is compounded when constraints involve several data items from different files.

Atomicity problems. A computer system, like any other mechanical or electrical device, is subject to failure. In many applications, it is crucial to ensure that, once a failure has occurred and has been detected, the data are restored to the consistent state that existed prior to the failure. Consider a program to transfer $50 from account A to B. If a system failure occurs during the execution of the program, it is possible that the $50 was removed from account A but was not credited to account B , resulting in an inconsistent database state. Clearly, it is essential to database consistency that either both the credit and debit occur, or that neither occurs. That is, the funds transfer must be atomic-------it must happen in its entirety or not at all. It is difficult to ensure this property in a conventional file-processing system.

Concurrent-access anomalies. So that the overall performance of the system is improved and a faster response time is possible, many systems allow multiple users to update the data simultaneously. In such an environment, interaction of concurrent updates may result in inconsistent data. Consider bank account A, containing $500. If two customers withdraw funds from account A at about the same time, the result of the concurrent executions may leave the account in an incorrect state. Suppose that the programs executing on behalf of each withdrawal read the old balance, reduce that value by the amount being withdraw, and write the result back. If the two programs run concurrently, they may both read the value $500, and write back $450 and $400, respectively. Depending on which one writes the value last, the account may contain either $450 or $400, rather than the correct value of $350. To guard against this possibility, the system must maintain some form of supervision. Because data may be accessed by many different application programs that have not been coordinated previously, however, supervision is difficult to provide.

Security problems. Not every user of the database system should be able to access all the data. For example, in a banking system, payroll personnel need to see only that part of the database that has information about the various bank employees. They do not need access to information about customer accounts. Since application programs are added to the system in an ad hoc manner, it is difficult to enforce such security constraints.

These difficulties, among others, have prompted the development of DBMSs. In what follows, we shall see the concepts and algorithms that have been developed for database systems to solve the problems mentioned. A typical data-processing application stores a large number of records, each of which is fairly simple and small.

A DBMS is a collection of interrelated files and a set of programs that allow users to access and modify these files. A major purpose of a database system is to provide users with an abstract view of the data. That is, the system hides certain details of how the data are stored and maintained.

For the system to be usable, it must retrieve data efficiently. This concern has led to the design of complexity from users through several levels of abstraction, to simplify users’ interactions with the system:

A: Physical levels. The lowest level of abstraction describes how the data are actually stored. At the physical level, complex low-level data structures are described in detail.

B: Logical level. The next-higher level of abstraction describes what data are stored in database, and what relationships exist among those data. The entire database is thus described in terms of a small number of relatively simple structures. Although implementation of the simple structures at the logical level may involve complex physical-level structures, the user of the logical level does not need to be aware of this complexity. The logical level of abstraction is used by database administrators, who must decide what information is to be kept in the database.

C: View level. The highest level of abstraction describes only part of the entire database. Despite the use of simpler structures at the logical level, some complexity remains, because of the large size of the database. Many users of the database system will not be concerned with all this information. Instead, such users need to access only a part of the database. So that their interaction with the system is simplified, the view level of abstraction is defined. The system may provide many views for the same database.

The ability to modify a schema definition in one level without affecting a schema definition in the next higher level is called data independence. There are two levels of data independence:

Physical data independence is the ability to modify the physical schema without causing application programs to be rewritten. Modifications at the physical level are occasionally necessary to improve performance.

Logical data independence is the ability to modify the logical schema without causing application programs to be rewritten. Modifications at the logical level are necessary whenever the logical structure of the database is altered.

Logical data independence is more difficult to achieve than physical data independence, since application programs are heavily dependent on the logical structure of the data that they access.

The concept of data independence is similar in many respects to the concept of abstract data types in modem programming languages. Both hide implementation details from the users, to allow users to concentrate on the general structure, rather than on low-level implementation details.

The structured query language (SQL) is the most widely used and standard query language for relational database management systems. It is a kind of non-procedural language. The SQL language has several parts:

Data-definition language (DDL). The SQL DDL provides commands for defining relation schemas, deleting relations, creating indices, and modifying relation schemas.

Interactive data-manipulation language (DML). The SQL DML include a query language based on both the relational algebra and the tuple relational calculus. It includes also commands to insert tuples into, delete tuples from, and modify tuples in the database.

Embedded DML. The embedded form of SQL is designed for use within general-purpose programming languages.

View definition. The SQL DDL include commands for defining views.

Authorization. The SQL DDL includes commands for specifying access rights to relations and views.

Integrity. The SQL DDL includes commands for specifying integrity constraints that the data stored in the database must satisfy. Updates that violate integrity constraints are disallowed.

Transaction control. SQL includes commands for specifying the beginning and ending of transactions. Several implementations also allow explicit locking of data for concurrency control.

A transaction is a collection of operations that performs a single logical function in a database application. Each transaction is a unit of both atomicity and consistency. Thus, we require that transaction do not violate any database consistency constraints. That is, if the database was consistent when a transaction started, the database must be consistent when the transaction successfully terminates. However, during the execution of a transaction, it may be necessary temporarily to allow inconsistency. This temporary inconsistency, although necessary, may lead to difficulty if a failure occurs.


中文翻译

对于数据库系统的介绍

一个数据库管理系统由一些相关的数据和一组用来访问那些数据的程序组成。一个数据库是一个为了有效地服务各种应用软件的数据组织的集合通过集中并减少数据的冗余。数据库管理系统最主要的一个目标就是去提供一个既方便又有效地查询、存储数据信息系统的环境。

数据库系统被设计用来管理拥有很大数据量的信息。这些数据的管理包括存储信息结构的定义和处理存储信息的规范机制,尽管系统必须避免可能的不规则的结果。

在大多数的机构里信息有着重要性,这点决定了数据库的价值,让数据库的观念和技术有了很大的发展,让有效的数据管理观念和技术有了很大的发展。

典型的文件处理系统被传统的操作系统支持。永久性的记录存储在各种各样的文件中,并且,不同应用程序被编写用来读取记录和添加记录在恰当得文件里。在数据库管理系统出现以前,组织代表性的信息存储用那些系统来实现。

在文件处理系统中保持组织的信息有许多不利得条件。

1)数据冗余和矛盾。数据冗余是完全相同的数据存在于若干数据文件中。既然文件和应用程序被不同的编程员创建在很长的一个周期里,各种各样的文件很可能有着不同的格式和程序,可能用不同的编程语言编写。此外,相同的信息可能在一些文件里被复制出来。这种冗余导致数据矛盾;更确切的说,各种各样的相同数据的复制不再一致。

2)访问数据的困难。这一点是关于传统的文件处理环境不允许被需求的数据通过一种方便和有效地方式被找回。更多的响应得数据检索系统必须被开发用来普遍使用。

3)完整性的问题。数据有价值的存储在数据库中必须满足强迫连接的确定类型。开发者坚持系统中的约束通过增加适当的编码在各种各样的应用程序中。然而,当新的约束被添加改变程序去执行它们是困难的。当约束涉及不同文件中的一些数据项,这种问题是复合的。

4)原子数问题。一个计算机系统,想起他的机械的或电子的装置常遭受失败。在许多应用软件中,保证它的安全性是最重要的,一旦故障发生并且已经被发觉,数据被先前的故障还原保持一致状态。考虑到一个程序传递50美元从总账AB。如果一个系统故障发生在程序的执行期间,它可能从总账A转移50美元,但是并没有记入到总账B,结果是造成了不一致的数据库状态。明显地,无论是贷方或借方发生,还是两者都不发生,有必要去保持数据库的一致性。更确切的说,基金过户必须是原子的------它必须全部发生或完全不发生。确保这种性质在传统的文件处理系统实现时不可能的。

本文来源:https://www.2haoxitong.net/k/doc/6189879080c758f5f61fb7360b4c2e3f57272586.html

《网上贴吧系统设计与实现毕业论文.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式