资源描述
摘要:本文采用ASP.NET技术,使用ADO.NET技术访问系统后台SQL server数据库,设计了博客系统。首先对博客系统进行整体分析,明确了系统的可行性和用户需求;根据模块化原理,规划设计了系统功能模块;在数据库设计部分,详细说明了系统数据库的结构和数据库的完整性、安全性措施;程序设计则采用面向对象的程序设计思想,提出系统的程序设计思路,对前台与后台功能的程序实现进行了详细论述;系统测试部分,具体分析测试过程中出现的主要问题,并提出了解决方案,实现系统功能。最后,对系统作以客观、全面的评价,并对进一步改进提出了建议。关键词:博客系统 数据库 设计 Abstract:The system is designed by ASP.NET technology, backstage adoption SQL server database, and use the ADO.NET technology to visit. First, it analysis the blog system by feasibility and the demand of the user. Under the modular theory, planning and design of the system functional modules; In the database design, a detailed description of the database structure and database integrity, security measures; Programming is used object-oriented programming design, system design ideas, background for the future and function of the program in detail; System testing, Analysis of the specific course of testing the key issues and proposed solutions to achieve system function. Finally, the system in an objective, comprehensive evaluation, as well as further improvements made. Key words: Blog system Database Design1目 录第1章 绪论31.1 项目背景41.2 系统开发的意义4第2章 课题研究52.1 研究平台介绍52.2 C#语言简介62.3 SQL Server数据库简介72.4 .NET中通过ADO.NET访问数据库9第3章 需求分析103.1 可行性研究103.2 系统功能和目标113.3 系统总体设计113.4 数据分析113.5 数据流图12第4章 数据库设计134.1 数据库的需求分析134.2 数据库概念结构设计134.3 数据库的完整性和安全性18第5章 网站实现205.1 客户端205.2 管理端25第6章 系统测试316.1 测试目的316.2 测试方法316.3 部分测试用例31结论33参考文献34附录:源代码35第1章 绪论1.1 项目背景 Blog,是Weblog的简称。Weblog,其实是Web和Log的组合词。Web,指World Wide Web,当然是指互连网了;Log的原义则是“航海日志”,后指任何类型的流水记录。合在一起来理解,Weblog就是在网络上的一种流水记录形式或者简称“网络日志”。Blogger或Weblogger,是指习惯于日常记录并使用Weblog工具的人。虽然在大陆早些时候或者台湾等地,对此概念的译名不尽相同(有的称为“网志”,有的称之为“网录”等等),但目前已基本统一到“博客”一词上来。该词最早是在2002年8月8日由著名的网络评论家王俊秀和方兴东共同撰文提出来的。博客也好,网志也罢,仅仅是一种名称而已,它的本义还是逃不过Weblog的范围。只是,通常我们所说的“博客”,既可用作名词Blogger或weblogger指具有博客行为的一类人;也可以作动词用(相当于英文中的Weblog或blog),指博客采取的具有博客行为反映、是第三方可以用视觉感受到的行为,即博客们所撰写的Blog。因此,“他/她是一位博客,他/她天天在博客”及“博客博什么客?”在中文语法与逻辑上都是正确。只是不同场合的用法不同罢了。 Blog究竟是什么?说了半天,其实一个Blog就是一个网页,它通常是由简短且经常更新的帖子(Post)所构成,这些张贴的文章都按照年份和日期倒序排列。Blog的内容和目的有很大的不同,Blog的内容和目的有很大的不同,从对其他网站的超级链接和评论,有关公司、个人、构想的新闻到日记、照片、诗歌、散文,甚至科幻小说的发表或张贴都有。许多Blogs记录着blog个人所见、所闻、所想,还有一些Blogs则是一群人基于某个特定主题或共同利益领域的集体创作。撰写这些Weblog或Blog的人就叫做Blogger或Blog writer。 目前进行网站开发的语言很多,如ASP、PHP、JSP、ASP.NET等。究竟应该选择什么语言来开发一个BLOG网站呢,对于一个中小型的网站来说,ASP.NET无疑是最好的选择,利用简单的HTML代码与脚本融合而成的ASP技术可以开发强大的Web应用程序。ASP.NET是Microsoft推出的一种服务器端脚本环境,ASP.NET让用户可以轻松的结合HTML Web页面、脚本和ActiveX组件建立或执行动态的、交互的Web服务器应用程序。ASP.NET并不单指某一种编程语言,而是一门把HTML代码与VBScript和JavaScript等脚本语言融合在一起的技术,ASP.NET技术的诞生,应该说是一项成功的技术,它开创了非专业人员开发高水平网站的历史。1.2 系统开发的意义 1.2.1 发布想法博客能让个人在互联网上表达自己的心声。这是一个收集和共享任何感兴趣的事物的地方-可以是政治评论、个人日记或是指向您想记住的网站的链接。许多人使用博客只是要组织自己的想法,而有些人则在全球成千上万的浏览者中赢得影响力。职业和业余新闻记者使用博客发布特发新闻,而有写日记习惯的人则会在博客 中宣示自己内心的想法。而摄影和美术发烧者,可以通过博客 系统的管理自己的作品,无论您要发表什么意见,博客都可以帮您表达出来。博客作为一种新表达的方式,它的传播不仅情绪,包括大量的智慧、意见和思想。某种意义上说,它也是一种新的文化现象,博客的出现和繁荣,真正凸现网络的知识价值,标志着互联网发展开始步入更高的阶段。 1.2.2 博客的用途(1)促进学习。写blog可以促进学习,想写出文章来,自然不能是泛泛的了解就可以的,要理解了才能写得出来的。这就促进了对某些领域的不断学习和思考。 (2)记录收获。blog中,常常是记录下来都是瞬间的灵感,对事物的感悟,经过多日思考和实践的结果,对某个问题的解决方案等等,这些都是财富,要记录下来。 (3)反映成长。写blog,可以反映出人的思考过程,而不仅仅是思考结果。对一个问题或领域,从不了解到了解,从了解到熟悉,从熟悉到精通。这纪录了一个人思考和解决问题的成长过程。很久之后,看到自己之前的文章,你将会觉得自己进步了。 (4)结交朋友。写了blog,自然会有许多志趣相同的朋友来阅读,这可以认识许多朋友。大家有共同的兴趣爱好,自然谈得来。 (5)共享知识。blog给大家看,大家的blog也给你看。这个问题我解决了,那个问题他解决了。大家互通有无,建立起一个社群。 (6)交流看法。回复的人对blog的观点或赞同,或反对,大家一起讨论,听听别人的思想,可以促进双方的共同进步。 (7)包装自己。看到一篇篇用心写出的文章,自然是对自己知识技能的最好宣传。第2章 课题研究 2.1 研究平台介绍 2.1.1 .NET平台介绍.NET这个名称涵盖了微软的主要开发平台,这个主题十分广泛,包含了许多规范,如组建格式、编程语言、标准类库和工具等。它主要包括以下内容:.NET Framework(架构),包括:Common Language Runtime (CLR通用语言运行环境),这是用于运行和加载应用程序的软件组件;新的库类,分机组织了开发者可以在他们的应用程序中用来显示图形用户界面、访问数据库和文件以及在Web上通信的代码集。.NET开发者工具,包括:Visual Studio .NET Integrated Development Environment(IDE)(Visual Studio .NET集成开发环境),用来开发和测试应用程序;.NET编程语言(例如Visual Basic .NET和新的Visual C#),用来创建在CLR下并且使用类库的应用程序。ASP.NET,一个取代以前的Active Server Pages (ASP)的特殊类库,用来创建动态的Web内容和Web服务器应用程序,这些都将采用诸如HTML、XML和Simple Object Access Protocol(SOAP)(简单对象访问协议)等Internet协议和数据格式。2.1.2 ASP.NET简介 ASP.NET是统一的Web应用程序平台,它提供了为建立和部署企业级Web应用程序所必需的服务。ASP.NET为能够面向任何浏览器或设备的更安全的、更强的可升级性、更稳定的应用程序提供了新的编程模式和基础结构。ASP.NET是Microsoft .NET Framework的一部分,是一种可以在高度分布的Internet环境中简化应用程序开发的计算环境。.NET Framework包含公共语言运行库,它提供了各种核心服务,如内存管理、线程管理和代码安全。它也包含.NET Framework类库,这是一个开发人员用于创建应用程序的综合的、面向对象的类型集合。ASP.NET提供了以下优点:可管理性:ASP.NET使用了基于文本的、分级的配置系统,简化了将设置应用于服务器环境和Web应用程序的工作。安全:ASP.NET为Web应用程序提供了默认的授权和身份验证方案。开发人员可以根据应用程序的需要很容易的添加、删除或替换这些方案。易于部署:通过简单地将必要的文件复制到服务器上,ASP.NET既可以部署到该服务器上。灵活的输出缓存:根据应用程序的需要,ASP.NET可以缓存页数据、业的一部分或整个页。缓存的项目可以依赖于缓存中的文件或其他项目,或者可以根据过期策略进行刷新。国际化:ASP.NET在内部使用Unicode以表示请求和响应数据。可以为每台计算机、每个目录和每页配置国际化设置。移动设备支持:ASP.NET支持任何设备上的任何浏览器。开发人员使用和用于传统的桌面浏览器相同的编程技术来处理新的移动设备。扩展性和可用性:ASP.NET被设计成可扩展的、具有特别的专有的功能来提供群集的、多处理器环境的性能。跟踪和调试:ASP.NET提供了跟踪服务,该服务可在应用程序级别和页面级别调试过程中使用。与.NET Framework集成:因为ASP.NET是.NET Framework的一部分,整个平台的功能和灵活性对Web应用程序都是可用的。也可从Web上流畅的访问.NET类库以及消息和数据访问解决方案。与现有的ASP应用程序的兼容性:ASP和ASP.NET可并行运行在IIS Web服务器上而不冲突;不会发生应安装ASP.NET而导致现有ASP应用程序崩溃的可能。 2.1.3 Visual Studio 2005 简介Visual Studio 是微软公司推出的开发环境。是目前最流行的Windows平台应用程序开发环境。目前已开发到10.0版本,也就是Visual Studio 2010。Visual Studio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office插件。本课题采用的VS版本为Visual Studio 2005 。Visual Studio 2005是微软在2005年发布的一个VS版本。.NET字眼从各种语言的名字被抹去,但是这个版本的Visual Studio仍然还是面向.NET框架的(版本2.0)。他同时也能开发跨平台的应用程序,如开发使用微软操作系统的手机的程序等。总体来时是一个非常庞大的软件,甚至包括代码测试功能。Visual Studio 2005是一个全面高效的专业开发环境,用于构建高性能、多层的Windows、Web和移动设备应用程序。2.2 C#语言简介C#(C Sharp)是从C和C+演变而来的一种简单的、面向对象的和类型安全的新型程序设计语言,具有语法严谨、结构清晰、可读性强和代码执行效率高等优点;C#凭借其强大的功能、易用性以及在开发数据库和Windows应用程序上的极大优势,一直坚持复杂问题简单化的思想,而且隐藏其细节。有高级语言的优点。它的主要特点是语法简洁,精心设计的面向对象设计,与Web的紧密结合,完全的安全性和错误处理,易于使用的版本处理技术,很好的灵活性和兼容性等。C#是一种最新的面向对象的编程语言。它使得程序员可以快速的编写各种基于Microsoft.NET平台的应用程序,Microsoft.NET提供了一系列的工具和服务来最大程度的开发利用计算和通讯领域。正是由于C#面向对象的卓越设计,使它成为构建各类组件的理想之选,无论是高级的商业对象还是系统级的应用程序,使用简单的C#语言结构,这些组件可以方便的转化为XML网络服务,从而可以使它们可以由任何语言在任何操作系统上通过Internet进行调用。C#是一种现代的面向对象语言。它使程序员快速便捷的创建基于Microsoft.NET平台的解决方案。这种框架使C#组件可以方便的转化为XML网络服务,从而使任何平台的应用程序都可以通过Internet调用它。C#增强了开发者的效率,同时也致力于消除编程中可能导致严重结果的错误。C#使C/C+程序员可以快速进行网络开发,同时也保持了开发者所需要的强大性和灵活性。 2.3 SQL Server数据库简介2.3.1 SQL Server数据库概述SQL Server是大型的关系型数据库,适合大中型企业使用。它建立于Windows的可伸缩性和可管理性之上,提供功能强大的客户/服务器平台,高性能客户/服务器结构的数据库挂历系统,可以将Visual Basic,Visual C+作为客户端开发工具,而将SQL Server作为存储数据的服务器软件。SQL Server不但可以运用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面型数据库。SQL Server数据库处理的基本结构,采取关系型数据库模式,尽管如此,相信大家还是可以轻易的发现,在SQL Server的数据库处理方式,则是使用面向对象的操作方式与精神,也就是说,SQL Server的所有功能,都可以基于系统已经建立好的一些对象来表达,是相当一个OO(面向对象)的一个系统结构。SQL Server企业管理器是SQL Server主要的管理工具,它提供了一个遵从MMC标准的用户界面,使用户得以:定义SQL Server实例组。将个别服务器注册到组中。为每个已注册的服务器配置所有的SQL Server选项。在每个已注册的服务器中创建并管理所有的SQL Server数据库、对象、登录、用户和权限。在每个已注册的服务器上定义并执行所有SQL Server管理任务。通过唤醒调用SQL查询分析器,交互式的设计并测试SQL语句、批处理和脚本。唤醒调用为SQL Server定义的各种向导。2.3.2 SQL Server与ASP的连接建好数据库后,需要建立网站页面和后台服务器的链接。博客系统的数据库连接字符串是在web.config配置文件中设置的,该文件的代码为:“Asp.Net 配置”选项。 设置和注释的完整列表在 ments 中,该文件通常位于 WindowsMicrosoft.NetFrameworkv2.xConfig 中-!- 通过 节可以配置 ASP.NET 使用的 安全身份验证模式, 以标识传入的用户。 -!- 如果在执行请求的过程中出现未处理的错误, 则通过 节可以配置相应的处理步骤。具体说来, 开发人员通过该节可以配置 要显示的 html 错误页 以代替错误堆栈跟踪。 -文件中粗体部分是数据库连接字符串部分,其他是程序配置文件自动生成的。connectionString表示连接字符串,该字符串命名为 SqlServices。字符串中Data Source代表数据源,本系统中的是本地,所以为locahost,这与SQL Server的配置有关。SSPI代表Windows集成身份认证。Initial Catalog=Blog表示数据库名称为Blog。ProvederName为数据可提供者,本功能模块中为System.Data.SqlClient。 2.4 .NET中通过ADO.NET访问数据库几乎所有的应用程序都需要访问从简单的文本文件到大型的关系型数据库等各种不同类型的数据。在Microsoft .NET中访问数据的技术是ADO.NET。ADO.NET提供了一组用来连接到数据库、运行命令和返回记录集的类库,与以前的ADO(ActiveX Data Object)相比,Connection和Command对象很类似,而ADO.NET的革新主要体现在如下几个方面:首先,ADO.NET提供了对XML的强大支持,这也是ADO.NET的一个主要设计目标。在ADO.NET中通过XML Reader、XML Writer和XML Navigator等可以方便的创建和使用XML数据,并且支持W3C的XSLT、DTD、和XDR等标准。ADO.NET对XML的支持也为XML成为Microsoft .NET中的数据交换的统一格式提供了基础。其次,ADO.NET引入了DataSet的概念,这是一个驻于内存的数据缓冲区,它提供了数据的关系型视图。不管数据来源于一个关系型的数据库,还是来源于XML文档,我们都可以用一个统一的编程模型来创建和使用它。它替代了原有的RecordSet对象,提高了程序的交互性和可扩展性,尤其适合于分布式的应用场合。另外,ADO.NET还引入了一些新的对象,例如RecordSet可以用来高效率的读取数据,产生一个只读的记录集等等。数据库服务器是一个存取数据和管理数据的软件,他针对客户的请求为客户提供数据服务。这些服务包括插入、修改和查询等。客户对数据库服务器提出请求的语言是SQL(Structured Query Language)。SQL是大多数数据库服务器使用的查询语句。因此,C#.NET与数据库的关系是“配合”与“协调”的关系。C#.NET完成数据请求、数据表现、菜单和界面等表现方面的工作,而数据库服务器完成数据库数据的存储管理、安全管理、并发控制、事务管理、完整性维护和查询优化等工作。第3章 需求分析 需求分析的定义是:在管理信息系统开发生命周期中系统调查阶段的各项活动和方法。需求分析的目标是:按照系统规划原则在业务系统项目的范围内,具体明确系统开发的目标和用户的信息要求。通过对现行系统的管理水平、原始数据的精确程度、规章制度是否齐全和切实可行、各级领导对开发新的管理系统是否有比较清晰的认识和积极的态度、部门级别中是否能够抽调出比较精通本行业管理业务并且对本单位存在问题有深刻理解的相关内容的详细调查,从而获得软件开发的基础,确定总体设计的条件,确认软件测试的具体要求,定义详细的功能模块,以求达到协助系统开发的根本目的。在需求分析中,主要采用可行性分析、系统功能和目标、业务流程图等进行描述与分析。3.1 可行性研究可行性研究的目的就是要用最小的代价在尽可能短的时间内确定问题是否能够得到解决。当然不能靠主管猜想而是要靠客观分析。必须分析几种主要的可能解法的利弊,从而判定的系统目标和规模是否现实,系统完成后所能带来的效益是否大到值得去投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大的压缩简化了的系统分析和设计的过程,也就是在较高层次以较抽象的方式进行系统的分析和设计的过程。可行性研究主要从以下这几个方面来进行。3.1.1 技术可行性CP3博客系统使用.NET框架作为程序运行平台,采用SQL作为数据库系统,使用C#编程语言开发系统。SQL数据库管理系统是强大的企业级数据库管理系统,他完全能够为应用程序提供稳定、高效的后台数据管理,.NET平台是稳定的应用程序运行平台,采用B/S程序架构构建快速的应用程序。3.1.2 管理可行性管理上的可行性:主要是管理人员是否支持,现有的管理制度和方法是否科学,规章制度是否齐全,原始数据是否正确等。系统的开发主要就是为了方便校友信息的管理,补充现在传统管理方式的不足,因此具备了管理上的可行性。3.1.3 经济可行性 本博客不需要太复杂的功能设计,属于自主研发,因为不涉及经济问题。3.1.4 法律可行性 本博客完全属于自主研发,不涉及侵权行为。 综上所述,本系统开发目标已明确,在技术、管理、经济和法律等方面具备可行性,并且投入少、见效快,因此系统可以进行开发。3.2 系统功能和目标根据博客系统的基本需求,本系统需要完成以下任务。l 浏览日志功能:可以浏览作者的日志以分享作者的心情或知识。l 发表日志功能:可以通过该功能发表自己的日志或知识。l 评论日志功能:对作者的日志发表自己的看法。l 日志管理功能:实现文章的管理。l 我的相册功能:实现相册的维护和管理。l 我的视频功能:实现视频的维护和管理。l 留言功能:实现留言的发表与维护。3.3 系统总体设计博客系统主要分为5个功能模块,分别为日志功能模块、留言功能模块、评论功能模块、相册功能模块和视频功能模块。其系统结构设计如图3.1所示。图 3-1 博客系统总体设计图 3.4 数据分析 博客系统中,主要是管理用户的文章、留言、系统信息等数据。数据的类型决定了程序对数据的处理方式也就是算法,因此,数据是系统实现分析的起点。现通过数据流图的方式分析系统中数据的流动和处理。 对系统的管理员,在登录系统后,本系统接受管理员的修改、添加、删除请求,通过分析将这种请求转化成相应的SQL语句执行对数据库的相关的操作,并将执行的相应结果送回系统中。系统接收到数据库返回的结果集,经过一定的分析处理,将其转化成ASP.NET页面,返回到客户端显示给用户。3.5 数据流图系统运行过程中,主要涉及到两部分的数据流向,一部分是管理员在系统后台管理界面上发出的对数据库操作的数据流,另一部分是用户在应用前台使用系统时所产生的数据流。如图3-2:图3-2 博客系统总体图 对于每一个管理,可以细分为添加、修改、删除、浏览等操作,现以文章管理为例,其具体细节图如图3-3所示。图3-3 文章管理细节图47第4章 数据库设计4.1 数据库的需求分析博客系统的数据库功能主要体现在对各种信息的提供、保存、更新和查询操作上,包括日志信息、日志分类信息、评论信息、相册信息和视屏信息,各部分的数据内容又有内在的联系。针对该系统的数据特点,可以总结出如下的需求。u 日志信息表记录作者发表的日志信息。u 日志分类信息表记录了日志所在的目录分类。u 评论信息表是对应着某个日志浏览者发表的评论。u 相册信息表记录个人相册的信息。u 视频信息表记录了个人上传的视频信息。u 用户信息记录博客主人的信息。经过上述系统功能分析和需求总结,设计如下的数据项和数据结构。v 日志信息表包括日志编号、日志内容和标题等数据项。v 日志分类信息表包括分类编号、类别名称和类别描述等数据项。v 评论信息表包括评论编号、日志编号和评论内容等数据项。v 相册信息表包括照片编号、照片名称、发布时间和照片地址等数据项。v 视频信息表包括视频编号、视频名称、发布时间和地址等数据项。v 用户信息表包括用户编号、用户名和密码等数据项。4.2 数据库概念结构设计4.2.1 实体与属性之间关系 E-R模型的组成元素有:实体、属性、联系。E-R模型用E-R图表示。实体是用户工作环境中所涉及的事务,属性是对实体特征的描述。 (1) 模型中的实体相当于实体集、一个表,而不是单个实体或表中的一行。实体用矩形框表示,实体名称标注在矩形框内。用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型。 (2) 属性是实体的性质。用椭圆框表示,与实体之间用一条线相连表的主码是关键属性,关键属性项加下划线。 (3) 各子系统模块中主键相同的字段之间存在着相互关联的关系。(4) 在程序中实现对它们的完整性和一致性控制。4.2.2 数据库的E-R图(1) 博客系统整体E-R图如图4-1所示。图4-1 博客整体E-R图 (2)博客系统日志信息实体E-R图如图4-2所示。图4-2 日志信息实体E-R图(3)博客系统目录信息实体E-R图如图4-3所示。图4-3 目录信息实体E-R图(4)博客系统评论信息实体E-R图如图4-4所示。 图4-4 评论信息实体E-R图 (5)博客系统留言信息实体E-R图如图4-5所示。图4-5 留言信息实体E-R图 (6)博客系统照片信息实体E-R图如图4-6所示。图4-6 照片信息实体E-R图(7)博客系统视频信息实体E-R图如图4-7所示。 图4-7 视频信息实体E-R图(8) 博客系统用户信息实体E-R图如图4-8所示。 图4-8 用户信息实体E-R图 4.2.3 数据库的逻辑结构设计数据库的概念结构设计完毕后,现在可以将上面的数据库概念结构转化为某种数据库系统所支持的实际数据模型,也就是数据库逻辑结构。博客系统数据库BlogData包括7张表,分别是用户信息表、日志信息表、日志分类信息表、评论信息表、相册信息表、视频信息表和留言信息表。 (1)用户信息表 用户信息表(Admins)记录了用户的账号和密码,结构如表4-1所示。表4-1 Admins表字段名称描述数据类型是否可空主键AdminID用户编号int(4)NYUserId用户名varchar(10)NNPassWord密码varchar(50)NN (2)日志信息表 日志信息表(Articles)记载了日志的编号、分类编号、日志标题、简介和日志内容等详细信息,结构如表4-2所示。表4-2 Articles表字段名称描述数据类型是否可空主键ArticleID日志编号Int(4)NYTitle日志标题Nvarchar(50)NNA_Content日志内容Nvarchar(MAX)YNPubishedTime发表时间datetimeNNTag_ID所属类别Int(4)NNDec简介Nvarchar(200)NNViewNum查看次数Int(4)NN (3)日志分类信息表 日志分类信息表(Tags)记录了日志的分类信息,结构如表4-3所示。表4-3 Tags表字段名称描述数据类型是否可空主键Tag_ID分类编号Int(4)NYTag_Name分类名称Nvarchar(50)NNTag_Dec分类简介Nvarchar(200)YN (4)评论信息表 评论信息表(Ccomments)记载了评论的编号、日志编号、评论内容和时间等信息,结构如表4-4所示。表4-4 Comments表字段名称描述数据类型是否可空主键Cmt_ID评论编号Int(4)NYArticleID文章编号Int(4)NNCmt_UserName用户名Nvarchar(50)YNCmt_Content内容Nvarchar(200)YNCmt_Time时间DatetimeYN (5)相册信息表 相册信息表(Photos)记录了照片的信息,结构如表4-5所示。表4-5 Photos表字段名称描述数据类型是否可空主键Photo_ID照片编号Int(4)NYPhoto_Name照片标题Nvarchar(50)YNPhoto_Intro描述Nvarchar(200)YNAddDate添加日期datetimeYNPhoto_Url存放路径Nvarchar(150)YN (6)视频信息表 视频信息表(Videos)记录了视频的信息,结构如表4-6所示。表4-6 Videos表字段名称描述数据类型是否可空主键Video_ID视频编号Int(4)NYVideo_Name视频标题名Nvarchar(50)YNVideo_Intro描述Nvarchar(200)YNAddDate添加日期datetimeYNVideo_Url存放路径Nvarchar(150)YN (7)留言信息表 留言信息表(Messages)记录了留言的信息,结构如表4-7所示。表4-7 Messages表字段名称描述数据类型是否可空主键Msg_ID留言编号Int(4)NYMsg_Name留言标题名Nvarchar(50)YNMsg_Intro描述Nvarchar(200)YNAddDate添加日期datetimeYNMsg_Url存放路径Nvarchar(150)YN 4.3 数据库的完整性和安全性4.3.1 数据库的完整性约束数据库的完整性是指数据的正确性和相容性。数据库管理系统(DBMS)用一定的机制来检查数据库中的数据是否满足规定的条件完整性约束条件,数据的约束条件是语义的体现,将作为模式的一部分存入数据库中。数据库的完整性约束主要包括以下三方面要求:(1)实体完整性实体完整性是指若属性A是基本关系R的主属性,则属性A不能取空值。对于每个表来说,主键都不可以为空。在用户提交信息时,系统会对用户所填写的信息进行验证,对于其中的关键信息没有填写或者数据非法时,系统会提示用户更改后再提交。这样保证了系统实体完整性。(2)参照完整性由于表和表之间会存在某些联系,当关系R和关系S之间是一对多关系时(R的主键是A,S的主键是b,c是s中的外码),在插入数据时就要保证外码c的值或者为空或者等于R中某个元组的主码值。在对被参照表进行删除操作时应同时进行及联删除。(3)用户定义完整性任何关系数据库系统都应该支持实体完整性和参照完整性。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件。它反映某一具体应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值、某个属性的取值范围等。4.3.2 数据库的安全性 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄漏、更改或破坏。在数据库系统中,大量的数据集中存放,同时又为许多用户直接共享,是宝贵的信息资源,因此系统的安全保护措施就显得更为重要。键全的数据库安全机制可以防止数据库被恶意的破坏和非法的存取。 本系统的安全设计包括服务器和数据库两方面设计。当用户使用系统时,系统首先会检查用户是否登录,如果用户还没有登录,系统将会弹出警告窗口提醒用户,并将相应的页面跳转至用户登录。在用户提交登录信息后,系统会对用户的身份进行核对,如果在数据库中查找到了相关记录,打开用户页面,表明用户登录成功。对于数据库的安全,主要是通过对授权用户的身份验证实现的。在的系统管理页面,提示用户使用管理员帐号在此登录,没有管理权限的系统注册用户无法登录到数据库管理的后台。系统确认了管理员身份之后统会打开管理页面,系统管理者可在此对整个系统的数据库进行管理和维护。第5章 网站实现对博客系统进行系统分析、数据库设计之后,本章将主要介绍系统各功能模块的设计及其实现。CP3系统的界面很多,介于篇幅有限,下面围绕本系统的几个代表性的界面进行重点介绍,其他仅简单涉及,实现此章界面的主要代码见附录。 5.1 客户端5.1.1 首页 首页面主要显示所有文章的列表,如图5-1所示。图5-1 客户端首页面首页主要使用Left用户控件、Nav用户控件和DataList控件。(1) Left用户控件Left用户控件显示了相册中最新的照片、博客导航、公告栏、最新文章列表、我的文章分类、最新留言和最新评论内容,界面布局如图5-2所示。图5-2 客户端Left控件布局页面Left控件使用了NewList用户控件、NweMsg用户控件、NewComment用户控件和Tags用户控件等。控件代码详情见附录。5.1.2 日志分类列表页面日志分类列表页面的效果如图5-3所示。图5-3 客户端日志分类列表页面 日志分类列表页面同首页面类似,知识绑定的文章对应于某个日志分类,该页面的后台支持类(list.aspx.cs)的主要代码见附录。 5.1.3 日志详细内容页面单机首页面中谋篇日志对应的“阅读全文”链接即可进入该日志的详细内容页面,如图5-4所示。图5-4 客户端日志详细内容页面日志详细内容页面显示了文章的详细信息以及评论信息。5.1.4 我的相册我的相册显示相册中的照片列表,如图5-5所示。图5-5 客户端照片列表页面单击照片名称即可查看该照片,如图5-6所示。图5-6 客户端照片查看页面5.1.5 我的视频 我的视频显示视频列表,如图5-7所示。图5-7 客户端视频列表页面点击视频名称即可播放视频,如图5-8所示。图5-8 客户端视频播放页面5.1.6 留言功能留言列表页面如图5-9所示。图5-9 客户端留言列表页面 点击图中的“添加新留言”按钮就可以向博客作者添加留言信息了,如图5-10所示。图5-10 客户端添加留言页面至此,博客系统的客户端功能已经基本实现了。 5.2 管理端5.2.1 登录页面登录页面的效果如图5-11所示。图5-11 管理端登录页面5.2.2 日志的管理和维护日志的管理和维护包括入职文章列表、日志的添加和修改等页面。1. 日志列表页面 日志文章列表页面如图5-12所示。图5-12 管理端日志列表页面日志文章列表功能是由articlelist.ascx文件实现的,主要通过Gridview控件实现文章数据的绑定,界面布局如图5-13所示。图5-13 管理端Gridview控件页面 2. 添加日志文章页面 点击图5-12中的“添加新文章”按钮即可进入添加日志文件页面,添加如图5-14所示的日志后,点击“添加”按钮返回如图5-15所示的日志列表页面。从图中可以看到,已经添加了新的日志文章。图5-14 管理端添加日志页面图5-15 管理端日志添加成功页面2. 修改日志文章页面修改日志文章页面同添加新日志文章页面类似,所不同的是修改日志文章使用update语句修改数据库中的日志信息,而添加文章使用的则是insert into语句。5.2.3 评论管理页面评论管理包括对对评论的查看和删除功能,都实现在一个页面上,代码实现和文章管理基本相同,这里不再详述。评论管理页面的效果如图5-16所示。图5-16 管理端评论管理页面5.2.4 留言管理页面留言管理页面同评论管理页面基本相同,这里不再详述。留言管理页面效果如图5-17所示。图5-17 管理端留言管理页面5.2.5 相册管理相册管理包括相册中照片列表页面和添加照片页面。1. 照片管理首页面照片首页面不仅通过GridView控件实现了向博客作者像是相册中所有照片的基本功能,而且还能实现删除照片的功能。此功能实现和日志管理类似,限于篇幅,这里不再详述。相册列表页面效果如图5-18所示。图5-18 管理端相册列表页面2. 添加照片页面添加照片页面同添加日志文章类似,但是这里使用了上传控件FileUpload。FileUpload类显示一个文本框控件和一个浏览按钮,用户可以选择客户端的文件并将其上传到Web服务器中。本章主要用到了FileUpload类的几个属性和方法。(1) FileUpload.HasFile属性 FileUpload.HasFile属性是 .NET2.0中新增的属性。该属性获取一个值用来指示FileUpload控件是否包含要上传的文件。在对文件执行操作之前,使用该属性来验证要上传的文件是否存在。例如,在调用SaveAs方法将文件保存到磁盘之前,使用HasFile属性来验证文件是否存在。如果HasFile返回true,则调用SaveAs方法。若返回false,则向用户显示消息,指示控件不包含文件。(2) FileUpload.FileName属性FileUpload.FileName属性用来获取客户端使用FileUpload控件上传的文件名称。FileName属性返回的文件名不包含此文件在客户端的路径。该属性是.NET 2.0中新增的属性。(3) FileUpload.PostedFile属性PostedFile属性用来获取文件的基础对象HttpFileUpload(该文件使用FileUpload控件上传)。使用该属性还可访问上传文件的其他属性。可以使用ContentLength属性来获取文件的长度,也可以使用ConetentType属性来获取文件的MIME内容类型。此外,可以使用PostedFile属性来访问FileName属性、InputSteam属性和SaveAs方法。但是,FileName属性、FileContent属性和SaveAs方法也提供了相同的功能。(4) FileUpload.SaveAs方法 SaveAs方法将使用FileUpload控件上传的文件内容保存到Web服务器上的指定路径。用户选择要上传的文件后,FileUpload控件不会自动将该文件保存到服务器。必须显示提供一个控件或机制,使用户能提交指定的文件。例如,可以提供一个按钮,用户单击该按钮即可上传文件。为保存指定文件所写的代码应调用SaveAs方法,该方法将文件内容保存到服务器上的指定路径。调用SaveAs方法时,必须指定服务器上保存上传文件的目录的完整路径。如果没有在应用程序代码中显示指定路径,则当用户试图上传文件时将引发HttpException异常。该行为可防止用户指定保存上传文件的路径,确保可服务器上文件的安全。在调用SaveAs方法之前,应该使用HasFile属性来验证FileUpload控件是否包含要上传的文件。若HasFile返回true,则调用SaveAs方法。若返回false,则向用户显示消息,指示控件不包含文件。SaveAs方法将上传的文件写到指定的目录。因此,ASP.NET应用程序必须具有服务器上该目录的写访问权限。为了获得写访问权限,应用程序可以将要保存上传文件的目录的写访问权限显示授予运行应用程序所使用的账户,也可以提到为ASP.NET应用程序授予的信任级别。添加照片页面的效果如图5-19所示。图5-19 管理端添加照片页面5.2.6 视频管理 视频管理同相册管理类似,包括视频列表、删除视频和添加视频功能,限于篇幅,这里就不再详细陈述。第6章 系统测试 6.1 测试目的程序测试就是在程序投入运行前,对程序的需求分析、设计规格说明和编码的最终复审,是保证程序质量的关键步骤。如果要给程序测试下定义,可以这样讲,程序测试是为了发现错误而执行程序的过程。测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。在开发大型软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。编程人员力求在每个阶段结束之前通过严格的技术审查,尽可能早的发现并纠正错误。 6.2 测试方法程序测试的主要方法分为两大类,白盒测试和黑盒测试。白盒测试:也称结构测试,将软件看成一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查它与设计是否相符。黑盒测试:也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,测试软件的外部特性。根据软件的需求规格说明书设计测试用例,从程序的输入和输出特性上测试是否满足设定的功能。在本次测试工作中使用了两种方法。但主要使用的是黑盒测试方法。6.3 部分测试实例6.3.1 前台文章显示测试测试内容:打开前台首页后,是否会显示相应的文章列表。操作:打开前台首页查看。结果:文章列表区域正确显示发表的文章。结论:测试成功 6.3.2 前台显示文章详细内容测试测试内容:点击一个文章下的阅读全文,是否会显示出文章的全部内容。操作:随意点击一篇文章下的阅读全文。结果:在文章细节页面正确的显示出文章的全部内容。结论:测试成功。 6.3.3 管理员测试测试内容:填写用户名及密码,验证能否成功登陆。操作: 填写正确的用户名及密码。 填写错误的用户名或密码。结果: 管理员成功登陆。 提示用户登录失败。 结论:测试成功。 6.3.4 文章管理(1) 发表文章测试内容:管理员用户发表新文章。操作:以管理员的身份进入博客系统,点击管理按钮,选择添加文章的操作,填写完文章内容之后单击添加按钮,看文章是否会发表成功。结果:文章列表中有新增文章标题并且可以查阅。 结论:测试成功。 (2) 修改文章测试内容:管理员对自己所发表的文章信息是否可以修改。操作:点击修改打开文章编辑页面。结果:文章信息重新编辑后提交成功。结论:测试成功。(3) 删除文章。测试内容:用户对自己所发表的文章信息能否成功删除。操作:点击删除系统询问是否删除该文章信息。结果:文章信息被成功删除。结论:测试成功。结论本系统的设计开发基本上实现了博客应有的基本功能,用户通过使用系统可以利用Internet建立自己的博客系统,与互联网上的网友进行交流,并可以与网友们共同分享文章资源。由于是基于网络开发的系统,所以本系统具有网络应用系统方便、信息交流及时、系统使用不受地域限制等诸多优点,在世界任何角落,用户都可以通过Internet与其他
展开阅读全文