BBS系统的设计与实现
摘 要
在Internet飞速发展的今天,互联网已经成为人们快速获取、发布和传递信息的重要渠道,它在人们的生活、学习和工作中发挥着重要的作用。现今的社会,人们已经离不开网络,网络为人与人之间的沟通和交流提供了一种新的平台。本课题设计与实现的BBS系统是互联网上实现网民沟通和交流的平台之一。
本系统的主要功能如下:
前台:用户登录;用户注册;用户注销;文章查阅;查看版面下根贴;搜索根贴;查看根贴内容;回复帖子;申请版主;发表帖子;看自己发表的根贴。 后台:数据库的设计;版主管理;用户管理;帖子管理;版块管理。
本系统采用B/S结构(Browser/Server,浏览器/服务器模式),客户端只需用WEB浏览器就可以访问本系统。本系统是利用ASP.NET、C#语言和Microsoft SQL Server 2005在Microsoft Visual Studio 2008平台上进行开发的。
本文按照软件工程的开发流程详细阐述了本系统的开发过程,对本系统的需求分析、总体设计思路、具体实现方法等做了全面的阐述。
关键词:BBS,发帖,回帖,ASP.NET,SQL
[键入文字]
[键入文字]
目 录
前 言 ....................................................................................................1 第1章 概述...........................................................................................2
1.1系统开发背景 .............................................................................2 1.2 SQL Server 2005概述 .................................................................3 1.3 ASP.NET概述 ............................................................................4 第2章 需求分析 ...................................................................................7
2.1 系统功能需求分析 ....................................................................7
2.1.1 角色划分 ..........................................................................7 2.1.2 详细用例图 ......................................................................7 2.2 系统可行性分析 ........................................................................9 2.3 数据库需求分析 ........................................................................9 第3章 系统总体设计 ..........................................................................11
3.1系统架构 .................................................................................. 11 3.2 系统介绍与功能模块............................................................... 11 3.3数据库设计...............................................................................12
3.3.1 数据库概念设计 .............................................................12 3.3.2 数据库逻辑设计 .............................................................13 3.3.3数据库表设计..................................................................14
第4章 详细设计 .................................................................................16
4.1 web. config配置文件................................................................16 4.2页面链接关系 ...........................................................................16 4.3论坛首页 ..................................................................................17 4.4登录界面设计 ...........................................................................18 4.5 注册界面设计 ..........................................................................19 4.6 游客功能设计 ..........................................................................19
4.6.1浏览版块下帖子名称列表 ...............................................20 4.6.2查看贴子内容及回复 ......................................................20
[键入文字]
[键入文字]
4.7 会员功能设计 ..........................................................................20
4.7.1个人中心页面..................................................................21 4.7.2发帖页面 .........................................................................21 4.7.3 查看帖子页面.................................................................22 4.7.4 修改个人信息页面 .........................................................23 4.8 版主功能设计 ..........................................................................23 4.9 管理员功能设计 ......................................................................24
4.9.1 版主管理 ........................................................................25 4.9.2 用户管理 ........................................................................25 4.9.3 版块管理 ........................................................................26 4.9.4 查看申请版主人员 .........................................................26 4.9.5 帖子管理 ........................................................................26
第5章 系统测试 .................................................................................28
5.1软件测试的基本方法................................................................28 5.2 单元测试 .................................................................................29 5.3 集成测试 .................................................................................33 结 论 ..................................................................................................35 谢 辞 ..................................................................................................36 参考文献 ..............................................................................................37 附 录 ..................................................................................................38 外文资料翻译 .......................................................................................54
[键入文字]
洛阳理工学院毕业设计(论文)
前 言
论坛又名网络论坛BBS,是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。
它是一种交互性强、内容丰富而及时的Internet电子信息服务系统。通过应用该系统可以实现用户与用户间的交流、企业与企业间的信息交互。利用网络可以经济而又快捷地与外界进行各种信息沟通,取得有用的信息资源。论坛系统服务已经是互联网上一种极为常见的互动交流服务。论坛可以向网友提供开放性的分类专题讨论区。网友可以在此发表自己的某些观感、交流某些技术和经验乃至人生的感悟与忧欢。论坛亦可以作为网友们之间的交流渠道,回答网友们提出的问题或发布某些消息。通过论坛的方式,增强了个人与个人,团体与团体,个人与团体之间的交流联系,在Internet上实现信息的传递,提高办事效率。因此论坛建设在Internet应用上的地位显而易见,它已成为现代人沟通和获取信息的重要组成部分并倍受人们的重视。
本课题是设计并实现一个BBS系统,该系统在Microsoft Visual Studio 2008平台上开发,数据库管理系统采用SQL Server 2005数据库管理系统,服务器端采用C#程序设计语言编写。
本文包括五章,具体内容如下:
第一章 概述,介绍了本系统开发的环境以及使用的相关工具和技术。 第二章 需求分析,对系统的开发进行功能需求分析确定系统要实现的功能以及进行可行性分析。
第三章 总体设计,通过需求分析为该系统选择合适的设计模式,分析系统所需要的功能模块并设计数据库。
第四章 详细设计,详细介绍本系统中页面之间的链接和主要功能模块的实现和页面的设计。
第五章 测试,对系统进行测试,验证系统的正确性。
1
洛阳理工学院毕业设计(论文)
第1章 概述
1.1系统开发背景
论坛又名网络论坛BBS,是Internet上的一种电子信息服务系统。它提供一块公共电子白板,每个用户都可以在上面书写,可发布信息或提出看法。
它是一种交互性强、内容丰富而及时的Internet电子信息服务系统。 在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们生活、学习和工作中发挥着重要的作用。现今的社会,人们已经离不开网络,网络已经成为人与人之间交流的一种形式,它能够把事情的复杂化转为简单化。进入21世纪,计算机技术迅速向着网络化的、集成化方向发展。传统的单机版应用软件正在逐渐退出舞台,取而代之的是支持网络、支持多种数据信息(多媒体)的新一代网络版应用软件,而目前网络版软件中似乎存在着两种不同的趋势,一种是称为客户端--服务器的C/S结构应用系统,这类软件具有结构严谨,运行效率高,服务器端压力小,安全性好等优点,被广泛运用于局域网中。另一种是称为浏览器--服务器的B/S结构应用系统,它的特点是在客户端直接采用了功能强大的浏览器软件作为界面,其优点在于软件开发效率高,客户端不受操作平台的限制、也不受地域的限制,网络传输量少,即适用于局域网,更适用于Internet,而且投资小、见效快,用户可以不必进行服务器方面的投资,而是去租用,甚至是免费使用ISP的服务器资源,因而受到越来越多中小型单位的青睐。
现在大部分论坛都是基于B/S结构实现的。随着中国网络的普及和计算机及其外设的大幅度降价,Internet这个概念逐渐深入人心。中国网民的数量呈几何级数量增长,BBS的普及程度也直追Email。每个网站几乎都拥有自己的BBS或者BBS链接,BBS社区提供给用户的服务是全面而且非常友好的,用户在社区中可以根据自己的喜好设置不同的显示风格,根据自己的需求定制各种服务。
通过应用该系统可以实现用户与用户间的交流、企业与企业间的信息交互,利用网络可以经济而又快捷地与外界进行各种信息沟通,取得更有用的信息资源。论坛系统服务已经是互联网站一种极为常见的互动交流服务。论坛可以向网友提供开放性的分类专题讨论区服务。网民可以在此发表自己的某些观感、交流某些
2
洛阳理工学院毕业设计(论文)
技术和经验乃至人生的感悟与忧欢。论坛亦可以作为网友们之间的交流渠道,回答网友们提出的问题或发布某些消息。通过论坛的方式,增强了个人与个人,团体与团体,个人与团体之间的交流联系,在Internet上实现信息的传递,提高办事效率。因此论坛建设在Internet应用上的地位显而易见,它已成为现代人沟通和获取信息的重要组成部分,从而倍受人们的重视。
1.2 SQL Server 2005概述
SQL Server 是一个全面的、集成的、端到端的数据解决方案,它为企业中的用户提供了一个安全、可靠和高效的平台用于企业数据管理和商业智能应用。SQL Server 2005 为IT专家和信息工作者带来了强大的、熟悉的工具,同时减少了在从移动设备到企业数据系统的多平台上创建、部署、管理及使用企业数据和分析应用程序的复杂度。通过全面的功能集、和现有系统的集成性、以及对日常任务的自动化管理能力,SQL Server 2005 为不同规模的企业提供了一个完整的数据解决方案。
SQL Server 数据平台包括以下工具:
关系型数据库:安全、可靠、可伸缩、高可用的关系型数据库引擎,提升了性能且支持结构化和非结构化(XML)数据。
复制服务:数据复制可用于数据分发、处理移动数据应用、系统高可用、企业报表解决方案的后备数据可伸缩存储、与异构系统的集成等,包括已有的Oracle数据库等。
通知服务:用于开发、部署可伸缩应用程序的先进的通知服务能够向不同的连接和移动设备发布个性化、及时的信息更新。
集成服务:可以支持数据仓库和企业范围内数据集成的抽取、转换和装载能力。
分析服务:联机分析处理(OLAP)功能可用于多维存储的大量、复杂的数据集的快速高级分析。
报表服务:全面的报表解决方案,可创建、管理和发布传统的、可打印的报表和交互的、基于Web的报表。
管理工具:SQL Server 包含的集成管理工具可用于高级数据库管理和调谐,
3
洛阳理工学院毕业设计(论文)
它也和其他微软工具,如MOM和SMS紧密集成在一起。标准数据访问协议大大减少了SQL Server和现有系统间数据集成所花的时间。此外,构建于SQL Server内的内嵌Web service支持确保了和其他应用及平台的互操作能力。
开发工具:SQL Server 为数据库引擎、数据抽取、转换和装载(ETL)、数据挖掘、OLAP和报表提供了和Microsoft Visual Studio集成的开发工具,以实现端到端的应用程序开发能力。SQL Server中每个主要的子系统都有自己的对象模型和API,能够以任何方式将数据系统扩展到不同的商业环境中。
SQL Server 2005 数据平台为不同规模的组织提供了以下好处:
充分利用数据资产:除了为业务线和分析应用程序提供一个安全可靠的数据库之外,SQL Server 2005也使用户能够通过嵌入的功能,如报表、分析和数据挖掘等从他们的数据中得到更多的价值。
提高生产力:通过全面的商业智能功能,和熟悉的微软Office系统之类的工具集成,SQL Server 2005为组织内信息工作者提供了关键的、及时的商业信息以满足他们特定的需求。SQL Server 2005目标是将商业智能扩展到组织内的所有用户,并且最终允许组织内所有级别的用户能够基于他们最有价值的资产——数据来做出更好的决策。
减少IT复杂度:SQL Server 2005 简化了开发、部署和管理业务线和分析应用程序的复杂度,它为开发人员提供了一个灵活的开发环境,为数据库管理人员提供了集成的自动管理工具。
1.3 ASP.NET概述
ASP.NET是建立在微软 .NET Framework上的Web 编程框架,可用于在服务器上建立功能强大的Web应用程序,相对于以往的Web开发技术,ASP.NET提供众多令人心动的新特性。其优势如下:
1. 执行效率的大幅提高
ASP.NET是基于通用语言的程序在服务器上运行。不像以前的ASP即使解释程序,而是当程序首次在服务器上运行时进行编译,这样的执行效果,当然逐条解释的效率高很多。
2. 众多工具的支持
4
洛阳理工学院毕业设计(论文)
ASP.NET构架可以用Microsoft公司最新的产品Visual Studio.NET开发环境进行开发,具有WYSIWYG(What You See Is What You Get,所见即为所得)的编辑功能,面这仅是ASP.NET强大软件支持的一小部份。
3. 强大性和适应性
因为ASP.NET是基于通用语言的编译运行程序,所以它的强大性和适应性,可以 使它运行在Web应用软件开发者的几乎全部平台上,通用语言的基本库、消息机制、数据接口的处理都能无缝地整合到ASP.NET的Web应用中,ASP.NET同时也是language-independent语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的C#、VB、Delphi等。将来,这样的多种程序语言协同工作的能力保护你现在的基于COM+开发的程序,能够完整地移植向ASP.NET。
4. 简单性和易学性
ASP.NET是运行一些很平常的任务(如表单的提交、客户端的身份验证、分布系统和网站配置)变得非常简单。例如ASP.NET页面构架允许用户建立你自己的用户分界面,使其不同于常见的界面。
5. 高效可管理性
ASP.NET使用一种字符基础、分级的配置系统,使用户的服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为零本地管理的观念使ASP.NET的基于应用的开发更加具体和快捷。一个ASP.NET的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。
6. 多处理器环境的可靠性
ASP.NET已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的ASP.NET应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的ASP确是做不到这一点。
7. 可扩展性和自定义性
ASP.NET设计时考虑了让网站开发人员可以在自己的代码中自己定义\"plug-in\"的模块。这与原来的包含关系不同,ASP.NET可以加入自己定义的任一组
5
洛阳理工学院毕业设计(论文)
件。网站程序的开发从来没有这么简单过。
8. 安全性
基于Windows认证技术和应用程序配置,你可以确信你的原程序是绝对安全的。
ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有ASP 应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。
ASP.NET是一个已编译的、基于.NET的环境,并把基于通用语言的程序在服务器上运行。程序在服务器首次运行时将进行编译,比ASP即时解释程序速度上要快很多,而且可以用任何与.NET兼容的语言(包括 Visual Basic .NET、C# 和 Jscript.NET)创作应用程序。另外,任何 ASP.NET 应用程序都可以使用整个 .NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
ASP.NET可以无缝地与WYSIWYG HTML编辑器和其他编程工具(包括 Microsoft Visual Studio .NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。
当创建ASP.NET应用程序时,开发人员可以使用Web窗体或XML Web SERVERS,或以他们认为合适的任何方式进行组合。每一个功能都能得到同一个结构的支持,使您能够使用身份验证方案,缓存经常使用的数据,或者对应用程序的配置进行自定义。
Web窗体用于生成功能强大的基于窗体的Web页。生成这些页时,可以使用 ASP.NET服务器控件来创建公共 UI 元素,以及对它们进行编程以用于执行常见的任务。这些控件使程序员能够用可重复使用的内置或自定义组件生成Web窗体,从而简化页面的代码。
6
洛阳理工学院毕业设计(论文)
第2章 需求分析
2.1 系统功能需求分析
为了开发出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提条件。不论人们把设计和编码做的多么出色,不能满足用户需求的产品就是失败的产品。做需求分析就是确定系统必须要完成那些功能。也就是以书面形式把用户的需求尽量准确、具体的描述出来。
2.1.1 角色划分
首先分析BBS系统,按照权限将系统用户划分为四种角色,分别是游客、会员、版主和管理员。
2.1.2 详细用例图
1. 游客角色的主要功能
包括浏览帖子和回复帖子。游客角色用例图如图2-1 所示。
图 2-1 游客用例图
2. 会员角色的主要功能
包括发表帖子、回复帖子、删除自己发的帖子、删除回复、查看、修改个人信息等。会员角色用例图如图2-2 所示。
3. 版主角色的主要功能
包括发表帖子、删除本版块帖子、回复帖子,删除回复;查看、修改个人信
7
洛阳理工学院毕业设计(论文)
息等。版主角色用例图如图2-3 所示。
图2-2 会员用例图
图 2-3 版主用例图
4. 管理员角色的主要功能
管理员拥有最大权限,包括删除会员或版主、将会员设为版主或撤销版主、添加板块、修改板块、删除板块、删除所有帖子、删除所有回复等。管理员角色的用例图如图2-4 所示。
图2-4 管理员用例图
8
洛阳理工学院毕业设计(论文)
2.2 系统可行性分析
可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。要达到这个目的,必须分析几种主要的可能解法的利弊,从而判断原定的系统规模和目标是否现实,系统完成后所能带来的效益是否大到值得投资开发这个系统的程度。因此,可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
系统的可行性分析主要包括技术上的可行性、经济上的可行性、操作上的可行性、法律上的可行性和开发环境上的可行性。本系统的可行性分析如下:
在技术方面:随着国内软件开发的日益发展壮大,各种中小企事业单位已具备独立开发各种类型的软件的能力,能够满足不同行业的特别的需求。从整个系统的技术构成上来看,它属于一个数据库应用类的系统。其基本操作就是对存在数据库中的数据进行添加、删除、查找、编辑等。所以就单纯的数据库应用来看,暂不存在太大的技术问题。因此从技术方面考虑开发此系统是可行的。
在经济方面:现在越来越多的人都通过网络做许多事情,这个BBS系统易于操作,虽然对硬件要求比较高但是其安全性和管理性比较好,实用性比较好,相信经济效益也比较高。因此从经济方面考虑开发此系统是可行的。
在操作方面:随着时代的发展,全民素质逐步提高,不论是对于电脑系统的基本操作还是对于系统的维护都有了一定的基础。同时还可以配置专业的电脑维护人员来维护电脑,不必担心电脑故障问题,因此从操作方面考虑开发此系统是可行的。
在法律方面:此系统没有侵犯他人合法权益,系统所涉及的条款与国家的现行法律没有抵触,不损害国家、集体、个人的任何利益,所以在法律上是完全可行的。
2.3 数据库需求分析
数据的组织形式对系统的影响很大。如果数据库设计的好,往往能产生很好的软件体系结构,具有很强的模块独立性和较低的程序复杂性。数据库设计的第
9
洛阳理工学院毕业设计(论文)
一步是做好数据需求分析,一个好的数据库应该充分适应系统的功能要求。
根据系统的功能需求分析和角色的划分,该系统的数据对象主要包括以下几种:
管理员信息,包括:管理员姓名,管理员密码。
帖子信息,包括:帖子编号,帖子名称,版块编号,帖子内容,发帖时间,发帖人等。
版块信息,包括:版块ID,版块名称,版块主题等。
回帖信息,包括:回帖编号,回帖时间,回帖内容,回帖人等。
用户信息,包括:用户名,用户密码,真实姓名,性别,出生日期,电话,Email,地址等。
10
洛阳理工学院毕业设计(论文)
第3章 系统总体设计
3.1系统架构
本系统的设计思想完全采用MVC设计模式。使用MVC设计模式,系统被分成三个核心部件:模型、视图、控制器。视图是用户看到并与之交互的界面。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。控制器接受用户的输入并调用模型和视图去完成用户的需求。它们各自处理自己的任务。开发者通过在ASPX页面中开发用户接口来实现视图;控制器的功能在逻辑功能代码(.cs)中实现;模型通常对应应用系统的业务部分。在ASP NET中实现这种设计而提供的一个多层系统,较经典的ASP结构实现的系统来说有明显的优点。将用户显示(视图)从动作(控制器)中分离出来,提高了代码的重用性。将数据(模型)从对其操作的动作(控制器)分离出来可以让你设计一个与后台存储数据无关的系统。就MVC结构的本质而言,它是一种解决耦合系统问题的方法。
3.2 系统介绍与功能模块
根据需求分析,需要为本系统的四种用户角色提供不同的功能集合。四种用户角色分别代表四种不同的级别。游客级别最低,管理员级别最高。
游客模块:浏览帖子和回复帖子。
会员模块:发表帖子、回复帖子、删除自己发的帖子、删除回复、查看、修改个人信息。
版主模块:发表帖子、删除本版块帖子、回复帖子、删除本版块所有帖子的回复、查看和修改个人信息。
管理员模块:删除会员或版主、将会员设为版主或撤销版主、添加板块、修改板块、删除板块、删除所有帖子、删除所有回复。
系统各模块之间的关系如图3-1所示。
11
洛阳理工学院毕业设计(论文)
图 3-1 系统功能模块图
3.3数据库设计
3.3.1 数据库概念设计
根据数据库需求分析可确定的数据实体有:管理员信息实体、帖子信息实体、版块信息实体、回帖信息实体和用户信息实体。数据库各个E-R实体图列举如下。
1. 管理员信息实体。
图3-2 管理员实体
2. 帖子信息实体
图3-3 帖子实体
3. 版块信息实体。
图3-4 版块实体
12
洛阳理工学院毕业设计(论文)
4. 回帖信息实体。
图3-5 回帖实体
5. 用户信息实体。
图3-6 用户实体
3.3.2 数据库逻辑设计
关系模式如下:
1. 管理员(管理员姓名,管理员密码)
主键:管理员姓名。
2. 帖子(帖子编号,帖子名称,版块编号,帖子内容,发帖时间,发帖人,精华)
主键:帖子编号。 外键:版块编号。
3. 版块(版块ID,版块名称,版块主题,版主)
主键:版块ID。 外键:版主。
4. 回帖(回帖编号,主帖编号,回帖时间,回帖内容,回帖人)
主键:回帖编号。
外键:主帖编号,回帖人。
5. 用户(用户名,用户密码,真实姓名,性别,出生日期,电话,Email,地址,版块ID,权限,申请版主,申请版块ID)
13
洛阳理工学院毕业设计(论文)
主键:用户名。
外键:版块ID,申请版块ID。
3.3.3数据库表设计
1.表结构
(1) 管理员信息表。
表3-1 管理员信息表bbs_Admin
列名 管理员姓名 管理员密码 数据类型 nvarchar(50) nvarchar(50) 可否为空 否 否 字段描述 管理员姓名 管理员密码 (2) 帖子信息表。
表3-2 论坛帖子信息表bbs_Card
列名 帖子编号 帖子名称 版块编号 帖子内容 发帖时间 发帖人 精华 数据类型 int nvarchar(1000) int nvarchar(4000) datetime nvarchar(50) int 可否为空 否 否 否 否 否 否 否 说明 帖子的编号 帖子的名称 隶属的版块 帖子的内容 发帖的时间 发帖人 是否是精华帖 (3) 版块信息表。
表3-3 版块信息表bbs_Module
列名 版块ID 版块名称 版块主题 版主 数据类型 int nvarchar(100) nvarchar(50) nvarchar(50) 可否为空 否 否 否 否 说明 版块编号 版块的名称 版块的主题 该板块版主 (4) 回帖信息表。
表3-4 回帖信息表bbs_Receive
列名
数据类型 14
可否为空 说明 洛阳理工学院毕业设计(论文)
回帖编号 主帖编号 回帖时间 回帖内容 回帖人 int nvarchar(50) smalldatetime nvarchar(4000) nvarchar(50) 否 否 否 否 否 回帖的编号 主帖的编号 回帖的时间 回帖内容 回帖人 (5) 用户信息表。
表3-5 用户信息表bbs_User
列名 用户名 用户密码 真实姓名 性别 出生日期 电话 Email 地址 版块ID 权限 申请版主 申请版块ID 数据类型 nvarchar(50) nvarchar(50) nvarchar(20) nvarchar(4) smaldatetime nvchar(20) nvarchar(50) nvarchar(100) int smallint int int 可否为空 否 否 是 是 是 是 是 是 否 否 否 否 说明 用户名 用户密码 真实姓名 性别 出生日期 电话 邮箱 地址 某板块的版主 是会员或版主 是否正在申请版主 申请版块的ID 15
洛阳理工学院毕业设计(论文)
第4章 详细设计
4.1 web. config配置文件
为了保持系统的可移植性,采用对数据库配置进行统一管理的方法,将程序中所用到的数据库连接字符串信息放于web.config配置文件中,在程序中对该文件的这一配置进行调用,实现统一更改、统一使用。
在web.config中,主要做了数据库连接字符串的设置,将数据库连接字符串设置放在 connectionString=\"Data Source=.\\SQLEXPRESS; AttachDbFilename=|DataDirectory|\\db_BBS.mdf; Integrated Security=True;User Instance=True\"/>
在以上代码段中,.\\SQLEXPRESS为服务器名称(即本机),AttachDbFilename表示数据库的路径和文件名,|DataDirectory|表示网站默认数据库路径App_Data,Integrated Security=True表示使用的是windows身份验证,User Instance=True表示使用用户实例。
4.2页面链接关系
本系统由多个页面组成,任何用户都需要进入登录页面进行登录,经身份验证合法后,才可以进入系统并执行相应的操作。本系统所有页面的链接关系如图4-1所示。
1. 与游客相关的页面有Module_Gentie.aspx、Card_info.aspx。
2. 会员登录成功后进入Self_inof.aspx页面。此页面有与会员相关的操作,其中包括Modify.aspx页面、DeliverCard.aspx页面、Self_Gentie.aspx页面和index.aspx页面。
16
洛阳理工学院毕业设计(论文)
3. 版主登录成功后进入Self_inof.aspx页面。此页面有与会员相关的操作,其中包括Modify.aspx页面、DeliverCard.aspx页面、Self_Gentie.aspx页面和index.aspx页面。
4. 管理员登录成功后进入Manager1.aspx页面。此页面有与管理员相关的操作,其中包括Host_Manage1.aspx页面、Module_Manage1.aspx页面、User_Manager1.aspx页面、Set_banzhu1.aspx页面和index.aspx页面。
图4-1 页面链接关系图
4.3论坛首页
系统的首页设计如图4-2所示。
首页中包含四个主题,分别是社会、文学、校园和情感。每个主题模块挡住包含与本主题相关的版块列表。当页面加载时对数据库执行查询并将查询出的表与页面中的datalist控件绑定后显示在页面中。
在未登录时,用户的身份是游客。游客可以浏览论坛中的帖子,也可以回复论坛中的帖子。
【用户登录>>】超链接是用户登录的入口,单击【用户登录>>】超链接后进入用户登录界面。【管理员登录>>】超链接是管理员登录的入口,单击【管理员登录>>】超链接后进入管理员登录界面。
17
洛阳理工学院毕业设计(论文)
图4-2 论坛首页界面图
4.4登录界面设计
系统用户单击登录超链接后进入登录界面。用户输入自己的用户名和密码后可以登录系统。如果游客没有注册为会员可以单击【注册新账号】链接进行注册。如图4-3所示。
图4-3 登录界面
18
洛阳理工学院毕业设计(论文)
4.5 注册界面设计
要成为系统的会员必须通过注册。成为系统的会员将会拥有更多的权限比如发帖。注册页面如图4-4所示。
图4-4 用户注册界面
4.6 游客功能设计
游客的功能主要是:浏览帖子和回复帖子。游客功能模块流程图:
图4-5 游客功能流程图
19
洛阳理工学院毕业设计(论文)
4.6.1浏览版块下帖子名称列表
当单击首页中的版块名称后,页面跳转到该板块的根贴页面。根贴页面显示该板块的帖子列表。如果要搜索指定的帖子可以按帖子名称或者按发帖人搜索。如图4-6所示。
图4-6 版块下帖子列表
4.6.2查看贴子内容及回复
当单击根贴页面的帖子链接后,打开该贴内容页面。该页面包含帖子内容和回帖内容。也可以在下方的文本框中输入要回复的内容发表自己对该贴的看法。如图4-7所示。
图4-7 帖子内容及回复页面
4.7 会员功能设计
20
洛阳理工学院毕业设计(论文)
会员的主要功能是:发表帖子、回复帖子、删除自己发的帖子、删除回复、查看、修改个人信息和申请版主。
4.7.1个人中心页面
会员登录成功后进入个人中心页面,会员可以进行信息更改、查看发过的帖子、发帖和申请版主操作。如图4-8所示。
图 4-8 个人中心页面
4.7.2发帖页面
注册成为论坛的会员后就可以拥有发帖权限。 会员登录成功后可以发帖,发帖页面如图4-9所示。
在“帖子名称”栏中输入帖子的名称。并在版块的下拉列表中选择发的帖子隶属的版块。
输入帖子内容后单击【提交】按钮,发帖操作完成。
图4-9 发帖界面图
21
洛阳理工学院毕业设计(论文)
会员进入发帖页面后,可以执行发帖操作。发帖时判断帖子内容是否为空,为空时刷新页面,不为空时,点击【回复】按钮,发帖操作完成。如图4-10所示。
图4-10 发帖流程图
4.7.3 查看帖子页面
会员查看自己发的帖子时,拥有删除本贴的回帖权限和删除本帖的权限。也可以对自己的帖子进行回复。如图4-11所示。
图4-11 查看帖子界面
会员进入帖子页面时,如果是自己的发帖则可以删除该帖和该帖的所有回复。删除该帖后,跳转到主页。删除回复后刷新该页面。当回复内容不为空时可以回
22
洛阳理工学院毕业设计(论文)
复该帖。如图4-12所示。
图4-12 帖子页面流程图
4.7.4 修改个人信息页面
会员要修改个人信息时进入修改个人信息页面。如图4-13所示。
图4-13 修改个人信息
4.8 版主功能设计
版主的功能:发表帖子、删除本版块帖子、回复帖子,删除回复;查看、修改个人信息。如图4-14所示。
23
洛阳理工学院毕业设计(论文)
图4-14 版主模块流程图
版主查看本版块的帖子时可以将帖子设置为精华也可以删除本版块所有的帖子和所有的回复。如图4-15所示。
图4-15 查看帖子页面
4.9 管理员功能设计
管理员的功能主要是:版主管理、用户管理、版块管理、帖子管理、查看申请版主人员。如图4-16所示。
24
洛阳理工学院毕业设计(论文)
图4-16 管理员模块流程图
4.9.1 版主管理
管理员通过版主管理页面可以编辑版主的部分信息,删除版主。如图4-17所示。
图4-17 版主管理
4.9.2 用户管理
管理员通过用户管理可以编辑那些不是版主的会员的部分信息,也可以删除会员。如图4-18所示。
图4-18 用户管理
25
洛阳理工学院毕业设计(论文)
4.9.3 版块管理
管理员通过版块管理页面可以执行编辑版块名称、编辑版块主题和删除版块操作。单击下方的添加版块链接,跳转到添加版块页面。如图4-19所示。
图4-19 版块管理
4.9.4 查看申请版主人员
会员申请版主后,管理员通过查看申请版主人员页面可以查看申请版主的会员,并通过本页面通过或拒绝会员的请求。如图4-20所示。
图4-20 设置版主
4.9.5 帖子管理
管理员拥有系统中最大的权限,查看论坛中所有的帖子时拥有设置精华,删除所有帖子,删除所有回帖的权限。如图4-21所示。
26
洛阳理工学院毕业设计(论文)
图4-21 帖子管理
27
洛阳理工学院毕业设计(论文)
第5章 系统测试
5.1软件测试的基本方法
测试的目的是在软件投入使用生产性运行以前,尽可能的发现软件中的错误。目前软件测试是保证软件质量的关键步骤,它是对软件规格说明,设计和编码的最后复审。软件测试在软件生命周期中横跨两个阶段。在编写出每个模块之后就对它做必要的测试,成为单元测试。在这个阶段结束后还要对系统进行各种综合测试。
从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试; 1. 黑盒测试
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。 2. 白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证 “白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是
28
洛阳理工学院毕业设计(论文)
穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。
5.2 单元测试
测试用例1:登录功能单元测试的方法和步骤如下: 功能模块:用户登录模块。 功能特性:用户登录进入系统。
测试目的:验证用户的输入,允许合法的登录,阻止错误登录并返回错误信息。
测试方法:白盒测试。
测试数据(以会员身份登录)如表5-1所示。
表5-1 测试数据
序号 1 2 3 用户名 007 007 张伟 密码 007 002 007 备注 正确的编号和密码 正确的编号、错误的密码 不正确的编号 测试步骤: 1. 运行服务器。
2. 打开浏览器,选择普通用户登陆。
3. 输入测试数据1,成功登陆系统,转入个人中心页面。
4. 输入测试数据2,显示用户名不存在或者密码错误,如图5-1所示。
图5-1 错误提示框
29
洛阳理工学院毕业设计(论文)
5. 输入测试数据3,显示用户名不存在或者密码错误,如图5-2所示。
图5-2 错误提示框
测试用例2:用户名检测单元测试的方法和步骤如下: 功能模块:用户名检测模块。 功能特性:检测用户名是否存在。
测试目的:验证系统是否已经存在该用户。 测试方法:白盒测试。
测试数据(以会员身份登录)如表5-2所示。
表5-2 测试数据
序号 1 2 用户名 007 周杰伦 备注 已存在的用户 不存在的用户 1. 运行服务器。
2. 打开浏览器,选择普通用户登陆,单击注册新账号。
3. 输入测试数据1,显示用户已存在的提示信息,如图5-3所示。
图5-3 用户存在提示信息
4. 输入测试数据2,显示您可以使用该用户进行注册提示信息,如图5-4所示。
30
洛阳理工学院毕业设计(论文)
图5-4 用户可以注册信息
测试用例3:用户注册单元测试的方法和步骤如下: 功能模块:用户注册模块。 功能特性:用户注册新账号。
测试目的:当输入的信息合法时进行注册操作。 测试方法:白盒测试。
测试数据(以会员身份登录)如表5-3所示。
表5-3 测试数据
序号 1 2 3 4 用户名 周杰伦 空 周杰伦 空 密码 空 周杰伦 fantasy 空 备注 不存在的用户;密码为空 用户名为空为空;密码不为空 用户名和密码不为空 用户名和密码均为空 1. 运行服务器。
2. 打开浏览器,选择普通用户登陆,单击注册新账号。
3. 输入测试数据1,显示用户名或密码不为空提示信息,如图5-5所示。
图5-5 错误提示信息
4. 输入测试数据2,显示用户名或密码不为空提示信息,如图5-6所示。
31
洛阳理工学院毕业设计(论文)
图5-6 错误提示信息
5. 输入测试数据3,显示注册成功提示信息,如图5-7所示。
图5-7 注册成功信息
6. 输入测试数据4,显示用户名或密码不为空提示信息,如图5-8所示。
图5-8 错误提示信息
测试用例4:回帖功能单元测试的方法和步骤如下: 功能模块:回帖功能模块。 功能特性:回复帖子。
测试目的:当回复内容不为空时,可以回复。 测试方法:白盒测试。
测试数据(以会员身份登录)如表5-4所示。
表5-4 测试数据
序号 1 2
回复内容 中华振兴 空 32
备注 回复内容不为空 回复内容为空 洛阳理工学院毕业设计(论文)
测试步骤: 1. 运行服务器。
2. 打开浏览器,选择普通用户登陆。
3. 输入测试数据1,单击【回复】按钮,成功回复。
图5-9 回复信息后页面
4. 回复内容空时,单击【回复】按钮,显示账号或者密码错误如图5-10所示。
图5-10 回复内容为空的提示信息
5.3 集成测试
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。
集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相
33
洛阳理工学院毕业设计(论文)
应技术指标及要求的活动。也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价。
34
洛阳理工学院毕业设计(论文)
结 论
本系统是为了方便网民的沟通和交流而设计的一个BBS系统,最基本的功能是发帖和回帖。通过发帖和回帖操作网民可以在网络上进行自由的沟通和交流。
整个BBS系统采用模块化程序设计方法,以软件工程知识和数据库设计原理为指导,以功能强大的Microsoft Visual Studio 2008为开发工具。本系统采用B/S模式架构,服务器端采用SQL Server 2005数据库系统和ASP.NET组件,客户端使用浏览器来访问本BBS系统。在张红霞老师的指导下,我完成了以下功能模块。
1.用户登录注册模块:实现了用户的登录及注册功能。
2.发帖和回帖功能模块:用户可以执行发帖和回帖操作进行交流和沟通。 3.浏览版块下根帖和根帖内容:用户可以选择查看版块下的根帖内容。 4.删除发帖和删除回帖: 用户可以删除自己的发帖和该帖的回复。版主可以删除本版块的发帖和回复。管理员可以删除所有的发帖和回复。
5.后台管理模块:管理员可以执行版主管理、用户管理、帖子管理和版块管理等操作。
本系统重点阐述了对数据库的操作,详细设计了系统的各个管理模块,实现了BBS论坛的基本功能,并达到了预期目标。
但是本系统还有很多不足之处。
1.代码冗余:系统中的代码冗余会给人一种繁琐的感觉。今后的开发要尽量避免代码冗余。
2.系统的UI设计:系统的界面设计应该更人性化一些。
3.系统的执行效率:系统的大量操作是针对数据库执行的,当数据量比较大时系统执行会比较慢。
尽管此次毕业设计自己设计的系统还不是那么完善,相信自己一定会在今后的生活中开发出一套更加实用、安全和高效的BBS系统。
35
洛阳理工学院毕业设计(论文)
谢 辞
毕业设计是对大学四年所学知识的一次综合实践,是对自我提升的一次锻炼。我要特别感谢我的指导老师。无论是在理论上还是在实践中,她都给了我莫大的帮助,让我受益匪浅。她不仅仅对我现在的个人提升给予了良好的指导,同时也对我今后的人生给予了良好的建议。她的指导和建议使我能够清楚的认清自己更好的完善自我。
四年大学生活,感谢所有曾经给予我指导和帮助的老师,是他们教会了我专业知识,提高了我的个人能力,让我学会了解决问题和解决困难的方法。
此次毕业设计,还要感谢我的同学、好朋友,在我遇到技术性难题的时候,是他们给了我无私的帮助,使我顺利的克服了困难,完成了毕业设计。
最后,感谢这么多年来一直在我身后默默养育、支持我的父母。感谢你们。
36
洛阳理工学院毕业设计(论文)
参考文献
[1] 刘燕.基于ASP技术的论坛网站的设计与实现[J].淮北职业技术学院学报,2009,8(5):50-51
[2] 陈巧莉, 冯于户.基于B/S和.NET的网络论坛系统的设计与实现[J].Value Engineering,2011,5:149-151
[3] 陈敏.基于“ASP.NET”的大学生网上论坛的设计与开发[J].重庆工学院学报, 2008,22(9):162-165
[4] 张海藩.软件工程导论[M].北京: 清华大学出版社, 2008 [5] 郑宇军.C#面向对象程序设计[M].北京: 人民邮电出版社, 2009 [6] 王珊, 萨师煊. 数据库系统概论[M].北京:高等教育出版社, 2006
[7] 陈伟, 卫林. ASP.NET 3.5网站开发实例教程[M].北京: 清华大学出版社,2009
[8] 薛华成.管理信息系统(第3版)[M].北京: 清华大学出版社, 2006 [9] 路琳.ASP.NET开发实例(第2版)[M].北京: 机械工业出版社, 2007 [10] 马嘉.精通ASP.NET3.0网络编程(第2版)[M].北京: 人民邮电出版社, 2004 [11] 林金霖.ASP.NET实务宝典(第2版)[M].北京: 中国铁道出版社, 2005 [12] 郑阿奇. SQL Server实用教程(第2版)[M].北京: 电子工业出版社, 2007 [13] 李禹生.数据库应用技术(第1版)[M].北京: 中国水利水电出版社, 2002 [14] 麦克唐纳博思. ASP.NET 3.5高级程序设计[M].北京: 人民邮电出版社, 2008
[15] James Huddleston.C#数据库入门经典[M].北京: 清华大学出版社, 2008 [16] 姜桂洪, 张龙波.SQL Server 2005数据库应用与开发[M].北京: 清华大学出版社, 2010
[17] 周峰, 王征, 李永.C#典型模块开发[M].北京: 中国铁道出版社, 2010
37
洛阳理工学院毕业设计(论文)
附 录
1.主页后台代码
if (!Page.IsPostBack) {
//绑定版块 this.dataBind(); }
//判断Session[name]的值null时不显示注销按钮 if (Session[\"username\"] == null||Session[\"username\"]==\"\") {
this.lbLogout.Visible = false; } else {
this.lbLogout.Visible = true; this.lbSelfInfo.Visible = true;
this.lbSelfInfo.Text = \"您是:\" + Session[\"username\"].ToString(); } }
/// /// 数据库的版块分别绑定到四个DataList中 ///
str
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
DataSet ds = new DataSet();
using (SqlConnection sqlConnection = new SqlConnection(str)) {
38
洛阳理工学院毕业设计(论文)
//主题--社会--版块绑定
SqlDataAdapter sqlda = new SqlDataAdapter(\"select * from bbs_Module where 版块主题='社会'\
sqlda.Fill(ds, \"Society\");
this.DataList1.DataSource = ds.Tables[\"Society\"].DefaultView; this.DataList1.DataBind(); //主题--文学--版块绑定
SqlDataAdapter sqlda1 = new SqlDataAdapter(\"select * from bbs_Module where 版块主题='文学'\
sqlda1.Fill(ds, \"Literature\");
this.DataList2.DataSource = ds.Tables[\"Literature\"].DefaultView; this.DataList2.DataBind(); //主题--校园--版块绑定
SqlDataAdapter sqlda3 = new SqlDataAdapter(\"select * from bbs_Module where 版块主题='校园'\
sqlda3.Fill(ds, \"School\");
this.DataList3.DataSource = ds.Tables[\"School\"].DefaultView; this.DataList3.DataBind(); //主题--情感--版块绑定
SqlDataAdapter sqlda4 = new SqlDataAdapter(\"select * from bbs_Module where 版块主题='情感'\
sqlda4.Fill(ds, \"Emotion\");
this.DataList4.DataSource = ds.Tables[\"Emotion\"].DefaultView; this.DataList4.DataBind(); } }
protected void lbLogout_Click(object sender, EventArgs e) {
Session[\"username\"] = null; Response.Redirect(\"index.aspx\");
39
洛阳理工学院毕业设计(论文)
}
2.登录模块代码
protected void Page_Load(object sender, EventArgs e) {
if (Session[\"username\"] != null) {
//Response.Write(\"\");
Response.Redirect(\"../index.aspx\"); }
if (Request.QueryString[\"id\"] == \"0\") {
//Label1.Text = \"【用户登录】\"; }
if (Request.QueryString[\"id\"] == \"1\") {
//Label1.Text = \"【管理员登录】\"; this.LinkButton1.Visible = false; } }
protected void Button1_Click(object sender, EventArgs e) {
if (TextBox1.Text == string.Empty) {
//Response.Write(\"\");
Response.Redirect(\"../Common/login.aspx\"); } else
40
洛阳理工学院毕业设计(论文)
{
if (Request.QueryString[\"id\"] == \"0\") { String
strConn
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
String strsql = \"select * from bbs_User where 用户名 ='\" + TextBox1.Text + \"' and 用户密码='\" + TextBox2.Text + \"'\";
DataRowCollection coldrow; DataRow drow;
DataTable dt = new DataTable();
SqlConnection Conn = new SqlConnection(strConn); Conn.Open();
SqlDataAdapter Cmd = new SqlDataAdapter(strsql, Conn); Cmd.Fill(dt); Conn.Close(); coldrow = dt.Rows; if (coldrow.Count > 0) {
drow = coldrow[0];
if (coldrow.Count > 0 && drow[\"权限\"].ToString() == \"0\")
{
Session[\"username\"] = TextBox1.Text;
Response.Redirect(\"../Common/SelfInfo1.aspx\"); }
if (coldrow.Count > 0 && drow[\"权限\"].ToString() == \"1\")
{
Session[\"username\"] = TextBox1.Text;
Session[\"ModuleID\"] = drow[\"版块ID\"].ToString();
41
洛阳理工学院毕业设计(论文)
Response.Redirect(\"../Common/SelfInfo1.aspx\"); } }
else {
this.TextBox1.Text = \"\"; this.TextBox2.Text = \"\";
this.Label2.Text = \"用户名不存在或密码错误,请确认再登录!\";
} }
if (Request.QueryString[\"id\"] == \"1\") { String
strConn
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
String strsql = \"select * from bbs_Admin where 管理员姓名 ='\" + TextBox1.Text + \"' and 管理员密码='\" + TextBox2.Text + \"'\";
DataTable dt = new DataTable();
SqlConnection Conn = new SqlConnection(strConn); Conn.Open();
SqlDataAdapter Cmd = new SqlDataAdapter(strsql, Conn); Cmd.Fill(dt); Conn.Close(); if (dt.Rows.Count > 0) {
Session[\"username\"] = TextBox1.Text; Session[\"admin\"] = TextBox1.Text; Session[\"ModuleID\"] = \"\";
42
洛阳理工学院毕业设计(论文)
Response.Redirect(\"../Manager/Manager1.aspx\"); } else {
this.TextBox1.Text = \"\"; this.TextBox2.Text = \"\";
this.Label2.Text = \"用户名不存在或密码错误,请确认再登录!\";
} } } 3.发帖页面
protected void Page_Load(object sender, EventArgs e) {
this.BindComboBox(); }
protected void Button1_Click(object sender, EventArgs e) { if
(!string.IsNullOrEmpty(TextBox1.Text.ToString().Trim())
&& !string.IsNullOrEmpty(this.TextBox2.Text.ToString().Trim()))
{
string sql = \"insert into bbs_Card(帖子名称,版块编号,帖子内容,发帖时间,发帖人) values(@name,@id,@content,@time,@person)\";
String
sqlconnstr
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr); SqlCommand sqlcommand = new SqlCommand(sql, sqlconn); sqlcommand.Parameters.AddWithValue(\"@name\TextBox1.Text.ToString().Trim());
sqlcommand.Parameters.AddWithValue(\"@id\
43
洛阳理工学院毕业设计(论文)
DropDownList1.SelectedItem.Value);
sqlcommand.Parameters.AddWithValue(\"@content\TextBox2.Text.ToString().Trim());
sqlcommand.Parameters.AddWithValue(\"@time\DateTime.Now.ToString());
sqlcommand.Parameters.AddWithValue(\"@person\Session[\"username\"].ToString());
sqlconn.Open();
sqlcommand.ExecuteNonQuery(); sqlconn.Close();
Response.Write(\"\");
//Response.Redirect(Request.Url.ToString()); } else {
this.Label1.Text = \"帖子名称或内容不能为空!\"; } }
private void BindComboBox() { string
str
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
SqlConnection sqlConnection = new SqlConnection(str);
SqlDataAdapter sqlda = new SqlDataAdapter(\"select 版块ID,版块名称 from bbs_Module\
DataSet ds = new DataSet(); sqlda.Fill(ds, \"Module\");
for (int i = 0; i < ds.Tables[\"Module\"].Rows.Count; i++) {
44
洛阳理工学院毕业设计(论文)
this.DropDownList1.Items.Add(ds.Tables[\"Module\"].Rows[i][\"版块名称\"].ToString().Trim());
}
for (int i = 0; i < ds.Tables[\"Module\"].Rows.Count; i++) {
this.DropDownList1.Items[i].Value ds.Tables[\"Module\"].Rows[i][\"版块ID\"].ToString().Trim();
} }
4.修改个人信息页面
if (!Page.IsPostBack) {
this.bind(); } }
private void bind() { string
str
= =
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
string sql = \"SELECT * FROM bbs_User WHERE 用户名='\" + Session[\"username\"].ToString() + \"'\";
DataSet ds = new DataSet();
using (SqlConnection conn = new SqlConnection(str)) {
SqlDataAdapter sda = new SqlDataAdapter(sql, conn); sda.Fill(ds, \"user\"); }
this.Label1.Text \"].ToString().Trim();
45
= ds.Tables[\"user\"].Rows[0][\"用户名
洛阳理工学院毕业设计(论文)
this.txtName.Text \"].ToString().Trim();
= ds.Tables[\"user\"].Rows[0][\"真实姓名
this.DropDownList1.SelectedItem.Value = ds.Tables[\"user\"].Rows[0][\"性别\"].ToString().Trim();
this.txtbirth.Text \"].ToString().Trim();
this.txtphone.Text \"].ToString().Trim();
this.txtemail.Text
ds.Tables[\"user\"].Rows[0][\"Email\"].ToString().Trim();
this.txtaddress.Text \"].ToString().Trim();
}
protected void Button4_Click(object sender, EventArgs e) { string
str
=
=
ds.Tables[\"user\"].Rows[0][\"
地
址=
=
ds.Tables[\"user\"].Rows[0][\"
电
话
=
ds.Tables[\"user\"].Rows[0][\"出
生
日
期
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
SqlConnection conn = new SqlConnection(str); conn.Open();
SqlCommand comd = conn.CreateCommand();
comd.CommandText = \"update bbs_User set 性别=@sex,出生日期=@birth,电话=@phone,Email=@email,地址=@address where 用户名='\" + this.Label1.Text.ToString() + \"'\";
comd.Parameters.AddWithValue(\"@sex\ comd.Parameters.AddWithValue(\"@birth\ comd.Parameters.AddWithValue(\"@phone\ comd.Parameters.AddWithValue(\"@email\ comd.Parameters.AddWithValue(\"@address\ comd.ExecuteNonQuery();
46
洛阳理工学院毕业设计(论文)
conn.Close(); }
5.浏览根贴页面
protected void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) ListBind();
if(Session[\"username\"]==null) {
//this.LinkButton1.Visible = false; this.LinkButton2.Visible = false; } }
void ListBind() {
string forumID = Request.QueryString[\"forumID\"]; string
sqlConnect
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
DataSet ds = new DataSet();
using (SqlConnection sqlconn = new SqlConnection(sqlConnect)) {
SqlDataAdapter sqld = new SqlDataAdapter(\"select * from bbs_Card where 版块编号='\" + forumID + \"'\
sqld.Fill(ds, \"card\"); }
DataView dataView = new DataView(ds.Tables[\"card\"]); dataView.Sort = \"精华\";
this.DataList1.DataSource = dataView; this.DataList1.DataBind();
47
洛阳理工学院毕业设计(论文)
}
protected void btnSearch_Click(object sender, EventArgs e) {
string forumID = Request.QueryString[\"forumID\"]; string
sqlConnect
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
DataSet ds = new DataSet();
using (SqlConnection sqlconn = new SqlConnection(sqlConnect)) {
SqlDataAdapter sqld = new SqlDataAdapter(\"select * from bbs_Card where 版块编号='\" + forumID + \"'\
sqld.Fill(ds, \"card\"); }
DataView dataView = new DataView(ds.Tables[\"card\"]); if (this.DropDownList1.SelectedItem.Value.Equals(\"按发帖人\")) {
dataView.RowFilter
=
\"发
帖
人
like
'%\"
+
this.TextBox1.Text.ToString().Trim() + \"%'\";
}
else if (this.DropDownList1.SelectedItem.Value.Equals(\"按文章标题\")) {
dataView.RowFilter
=
\"帖子名称
like
'%\"
+
this.TextBox1.Text.ToString().Trim() + \"%'\";
}
this.DataList1.DataSource = dataView; this.DataList1.DataBind(); }
6.个人中心页面
protected void Page_Load(object sender, EventArgs e) {
48
洛阳理工学院毕业设计(论文)
this.BindComboBox(); }
protected void LinkButton1_Click(object sender, EventArgs e) { string
sqlconnstr
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr); string name = Session[\"username\"].ToString(); //提交行修改 try {
sqlconn.Open();
SqlCommand Comm = new SqlCommand(); Comm.Connection = sqlconn;
Comm.CommandText = \"update bbs_User set 申请版主=@申请版主,申请版块ID=@申请版块ID where 用户名=@用户名\";
Comm.Parameters.AddWithValue(\"@用户名\ Comm.Parameters.AddWithValue(\"@申请版主\ Comm.Parameters.AddWithValue(\"@Convert.ToInt32(this.DropDownList1.SelectedItem.Value));
Comm.ExecuteNonQuery(); sqlconn.Close(); sqlconn = null; Comm = null; }
catch (Exception ex) {
Response.Write(\"数据库更新出错\" + ex.ToString()); }
49
申请版块ID\
洛阳理工学院毕业设计(论文)
}
private void BindComboBox() { string
str
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
SqlConnection sqlConnection = new SqlConnection(str);
SqlDataAdapter sqlda = new SqlDataAdapter(\"select 版块ID,版块名称 from bbs_Module\
DataSet ds = new DataSet(); sqlda.Fill(ds, \"Module\");
for (int i = 0; i < ds.Tables[\"Module\"].Rows.Count; i++) {
this.DropDownList1.Items.Add(ds.Tables[\"Module\"].Rows[i][\"版块名称\"].ToString().Trim());
}
for (int i = 0; i < ds.Tables[\"Module\"].Rows.Count; i++) {
this.DropDownList1.Items[i].Value ds.Tables[\"Module\"].Rows[i][\"版块ID\"].ToString().Trim();
} }
8.浏览个人发帖页面
protected void Page_Load(object sender, EventArgs e) {
if(!Page.IsPostBack) {
this.bind(); }
50
=
洛阳理工学院毕业设计(论文)
}
private void bind() { string
sqlConnect
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
DataSet ds = new DataSet();
using (SqlConnection sqlconn = new SqlConnection(sqlConnect)) {
SqlDataAdapter sqld = new SqlDataAdapter(\"select * from bbs_Card where 发帖人='\"+Session[\"username\"].ToString()+\"'\
sqld.Fill(ds, \"card\"); }
this.DataList1.DataSource = ds.Tables[\"card\"].DefaultView; this.DataList1.DataBind(); } 9.注册页面
protected void Button1_Click(object sender, EventArgs e) {
if (TextName.Text == string.Empty) {
Response.Write(\"\");
} else { String
strConn
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
String strsql = \"select * from bbs_User where 用户名 ='\" + TextName.Text + \"'\";
DataTable dt = new DataTable();
51
洛阳理工学院毕业设计(论文)
SqlConnection Conn = new SqlConnection(strConn); Conn.Open();
SqlDataAdapter Cmd = new SqlDataAdapter(strsql, Conn); Cmd.Fill(dt); Conn.Close(); if (dt.Rows.Count > 0) {
Response.Write(\"\");
} else {
Response.Write(\"\");
} } }
protected void Button4_Click(object sender, EventArgs e) { if
(!string.IsNullOrEmpty(this.TextName.Text.ToString().Trim())
&& !string.IsNullOrEmpty(this.txtPwd1.Text.ToString().Trim()))
{
string strsql = \"insert into bbs_User(用户名,用户密码,真实姓名,性别,出生日期,电话,Email,地址,版块ID,权限,申请版主,申请版块ID) values (@no ,@pwd,@name,@sex,@birth,@phone,@email,@address,@ID,@host,@applyhost,@applyID)\";
string
sqlconnstr
=
ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;
SqlConnection sqlconn = new SqlConnection(sqlconnstr); SqlCommand sqlcommand = new SqlCommand(strsql, sqlconn);
52
洛阳理工学院毕业设计(论文)
sqlcommand.Parameters.AddWithValue(\"@no\ sqlcommand.Parameters.AddWithValue(\"@pwd\ sqlcommand.Parameters.AddWithValue(\"@name\ sqlcommand.Parameters.AddWithValue(\"@sex\DropDownList1.Text);
sqlcommand.Parameters.AddWithValue(\"@birth\ sqlcommand.Parameters.AddWithValue(\"@phone\ sqlcommand.Parameters.AddWithValue(\"@email\ sqlcommand.Parameters.AddWithValue(\"@addressxtaddress.Text);
sqlcommand.Parameters.AddWithValue(\"@ID\ sqlcommand.Parameters.AddWithValue(\"@host\ sqlcommand.Parameters.AddWithValue(\"@applyhost\ sqlcommand.Parameters.AddWithValue(\"@applyID\ sqlconn.Open();
sqlcommand.ExecuteNonQuery(); sqlconn.Close();
Response.Write(\"\");
} else {
this.Label2.Text = \"用户名或密码不为空!\"; } }
protected void Button5_Click(object sender, EventArgs e) {
Response.Redirect(\"../index.aspx\"); }
53
洛阳理工学院毕业设计(论文)
外文资料翻译
ASP.NET OVERVIEW
ASP.NET is a unified Web development model that includes the services necessary for you to build enterprise-class Web applications with a minimum of coding. ASP.NET is part of the .NET Framework, and when coding ASP.NET applications you have access to classes in the .NET Framework. You can code your applications in any language compatible with the common language runtime (CLR), including Microsoft Visual Basic, C#, JScript .NET, and J#. These languages enable you to develop ASP.NET applications that benefit from the common language runtime, type safety, inheritance, and so on.
ASP.NET includes:
A page and controls framework The ASP.NET compiler Security infrastructure State-management facilities Application configuration
Health monitoring and performance features Debugging support
An XML Web services framework
Extensible hosting environment and application life cycle management An extensible designer environment
The ASP.NET page and controls framework is a programming framework that runs on a Web server to dynamically produce and render ASP.NET Web pages. ASP.NET Web pages can be requested from any browser or client device, and ASP.NET renders markup (such as HTML) to the requesting browser. As a rule, you can use the same page for multiple browsers, because ASP.NET renders the appropriate markup for the browser making the request. However, you can design your ASP.NET Web page to target a specific browser, such as Microsoft Internet Explorer 6, and take advantage of the features of that browser. ASP.NET supports mobile controls for Web-enabled
54
洛阳理工学院毕业设计(论文)
devices such as cellular phones, handheld computers, and personal digital assistants (PDAs).
ASP.NET Web pages are completely object-oriented. Within ASP.NET Web pages you can work with HTML elements using properties, methods, and events. The ASP.NET page framework removes the implementation details of the separation of client and server inherent in Web-based applications by presenting a unified model for responding to client events in code that runs at the server. The framework also automatically maintains the state of a page and the controls on that page during the page processing life cycle.
The ASP.NET page and controls framework also enables you to encapsulate common UI functionality in easy-to-use, reusable controls. Controls are written once, can be used in many pages, and are integrated into the ASP.NET Web page that they are placed in during rendering.
The ASP.NET page and controls framework also provides features to control the overall look and feel of your Web site via themes and skins. You can define themes and skins and then apply them at a page level or at a control level.
In addition to themes, you can define master pages that you use to create a consistent layout for the pages in your application. A single master page defines the layout and standard behavior that you want for all the pages (or a group of pages) in your application. You can then create individual content pages that contain the page-specific content you want to display. When users request the content pages, they merge with the master page to produce output that combines the layout of the master page with the content from the content page.
All ASP.NET code is compiled, which enables strong typing, performance optimizations, and early binding, among other benefits. Once the code has been compiled, the common language runtime further compiles ASP.NET code to native code, providing improved performance.
ASP.NET includes a compiler that will compile all your application components including pages and controls into an assembly that the ASP.NET hosting environment can then use to service user requests.
55
洛阳理工学院毕业设计(论文)
In addition to the security features of .NET, ASP.NET provides an advanced security infrastructure for authenticating and authorizing user access as well as performing other security-related tasks. You can authenticate users using Windows authentication supplied by IIS, or you can manage authentication using your own user database using ASP.NET forms authentication and ASP.NET membership. Additionally, you can manage the authorization to the capabilities and information of your Web application using Windows groups or your own custom role database using ASP.NET roles. You can easily remove, add to, or replace these schemes depending upon the needs of your application.
ASP.NET always runs with a particular Windows identity so you can secure your application using Windows capabilities such as NTFS Access Control Lists (ACLs), database permissions, and so on. For more information on the identity of ASP.NET,
ASP.NET provides intrinsic state management functionality that enables you to store information between page requests, such as customer information or the contents of a shopping cart. You can save and manage application-specific, session-specific, page-specific, user-specific, and developer-defined information. This information can be independent of any controls on the page.
ASP.NET offers distributed state facilities, which enable you to manage state information across multiple instances of the same application on one computer or on several computers.
ASP.NET applications use a configuration system that enables you to define configuration settings for your Web server, for a Web site, or for individual applications. You can make configuration settings at the time your ASP.NET applications are deployed and can add or revise configuration settings at any time with minimal impact on operational Web applications and servers. ASP.NET configuration settings are stored in XML-based files. Because these XML files are ASCII text files, it is simple to make configuration changes to your Web applications. You can extend the configuration scheme to suit your requirements.
ASP.NET includes features that enable you to monitor health and performance of your ASP.NET application. ASP.NET health monitoring enables reporting of key
56
洛阳理工学院毕业设计(论文)
events that provide information about the health of an application and about error conditions. These events show a combination of diagnostics and monitoring characteristics and offer a high degree of flexibility in terms of what is logged and how it is logged.
ASP.NET supports two groups of performance counters accessible to your applications:
The ASP.NET system performance counter group The ASP.NET application performance counter group
ASP.NET takes advantage of the run-time debugging infrastructure to provide cross-language and cross-computer debugging support. You can debug both managed and unmanaged objects, as well as all languages supported by the common language runtime and script languages.
In addition, the ASP.NET page framework provides a trace mode that enables you to insert instrumentation messages into your ASP.NET Web pages.
ASP.NET supports XML Web services. An XML Web service is a component containing business functionality that enables applications to exchange information across firewalls using standards like HTTP and XML messaging. XML Web services are not tied to a particular component technology or object-calling convention. As a result, programs written in any language, using any component model, and running on any operating system can access XML Web services.
ASP.NET includes an extensible hosting environment that controls the life cycle of an application from when a user first accesses a resource (such as a page) in the application to the point at which the application is shut down. While ASP.NET relies on a Web server (IIS) as an application host, ASP.NET provides much of the hosting functionality itself. The architecture of ASP.NET enables you to respond to application events and create custom HTTP handlers and HTTP modules.
ASP.NET includes enhanced support for creating designers for Web server controls for use with a visual design tool such as Visual Studio. Designers enable you to build a design-time user interface for a control, so that developers can configure your control's properties and content in the visual design tool.
57
洛阳理工学院毕业设计(论文)
Introduction to the C# Language and the .NET Framework C# is an elegant and type-safe object-oriented language that enables developers to build a wide range of secure and robust applications that run on the .NET Framework. You can use C# to create traditional Windows client applications, XML Web services, distributed components, client-server applications, database applications, and much, much more. Microsoft Visual C# 2005 provides an advanced code editor, convenient user interface designers, integrated debugger, and many other tools to facilitate rapid application development based on version 2.0 of the C# language and the .NET Framework.
Note The Visual C# documentation assumes that you have an understanding of basic programming concepts. If you are a complete beginner, you might want to explore Visual C# Express Edition, which is available on the Web. You can also take advantage of any of several excellent books and Web resources on C# to learn practical programming skills.
C# syntax is highly expressive, yet with less than 90 keywords, it is also simple and easy to learn. The curly-brace syntax of C# will be instantly recognizable to anyone familiar with C, C++ or Java. Developers who know any of these languages are typically able to begin working productively in C# within a very short time. C# syntax simplifies many of the complexities of C++ while providing powerful features such as nullable value types, enumerations, delegates, anonymous methods and direct memory access, which are not found in Java. C# also supports generic methods and types, which provide increased type safety and performance, and iterators, which enable implementers of collection classes to define custom iteration behaviors that are simple to use by client code.
As an object-oriented language, C# supports the concepts of encapsulation, inheritance and polymorphism. All variables and methods, including the Main method, the application's entry point, are encapsulated within class definitions. A class may inherit directly from one parent class, but it may implement any number of interfaces.
58
洛阳理工学院毕业设计(论文)
Methods that override virtual methods in a parent class require the override keyword as a way to avoid accidental redefinition. In C#, a struct is like a lightweight class; it is a stack-allocated type that can implement interfaces but does not support inheritance.
In addition to these basic object-oriented principles, C# facilitates the development of software components through several innovative language constructs, including:
Encapsulated method signatures called delegates, which enable type-safe event notifications.
Properties, which serve as accessors for private member variables. Attributes, which provide declarative metadata about types at run time. Inline XML documentation comments.
If you need to interact with other Windows software such as COM objects or native Win32 DLLs, you can do this in C# through a process called \"Interop.\" Interop enables C# programs to do just about anything that a native C++ application can do. C# even supports pointers and the concept of \"unsafe\" code for those cases in which direct memory access is absolutely critical.
The C# build process is simple compared to C and C++ and more flexible than in Java. There are no separate header files, and no requirement that methods and types be declared in a particular order. A C# source file may define any number of classes, structs, interfaces, and events.
C# programs run on the .NET Framework, an integral component of Windows that includes a virtual execution system called the common language runtime (CLR) and a unified set of class libraries. The CLR is Microsoft's commercial implementation of the common language infrastructure (CLI), an international standard that is the basis for creating execution and development environments in which languages and libraries work together seamlessly.
Source code written in C# is compiled into an intermediate language (IL) that conforms to the CLI specification. The IL code, along with resources such as bitmaps and strings, is stored on disk in an executable file called an assembly, typically with an extension of .exe or .dll. An assembly contains a manifest that provides information on the assembly's types, version, culture, and security requirements.
59
洛阳理工学院毕业设计(论文)
When the C# program is executed, the assembly is loaded into the CLR, which might take various actions based on the information in the manifest. Then, if the security requirements are met, the CLR performs just in time (JIT) compilation to convert the IL code into native machine instructions. The CLR also provides other services related to automatic garbage collection, exception handling, and resource management. Code that is executed by the CLR is sometimes referred to as \"managed code,\" in contrast to \"unmanaged code\" which is compiled into native machine language that targets a specific system. The following diagram illustrates the compile-time and run time relationships of C# source code files, the base class libraries, assemblies, and the CLR.
Language interoperability is a key feature of the .NET Framework. Because the IL code produced by the C# compiler conforms to the Common Type Specification (CTS), IL code generated from C# can interact with code that was generated from the .NET versions of Visual Basic, Visual C++, Visual J#, or any of more than 20 other CTS-compliant languages. A single assembly may contain multiple modules written in different .NET languages, and the types can reference each other just as if they were
60
洛阳理工学院毕业设计(论文)
written in the same language.
In addition to the run time services, the .NET Framework also includes an extensive library of over 4000 classes organized into namespaces that provide a wide variety of useful functionality for everything from file input and output to string manipulation to XML parsing, to Windows Forms controls. The typical C# application uses the .NET Framework class library extensively to handle common \"plumbing\" chores.
61
洛阳理工学院毕业设计(论文)
ASP.NET 概述
ASP.NET 是一个统一的 Web 开发模型,它包括您使用尽可能少的代码生成企业级 Web 应用程序所必需的各种服务。ASP.NET 作为 .NET Framework 的一部分提供。当您编写 ASP.NET 应用程序的代码时,可以访问 .NET Framework 中的类。您可以使用与公共语言运行库 (CLR) 兼容的任何语言来编写应用程序的代码,这些语言包括 Microsoft Visual Basic、C#、JScript .NET 和 J#。使用这些语言,可以开发利用公共语言运行库、类型安全、继承等方面的优点的 ASP.NET 应用程序。
ASP.NET 包括: 页和控件框架 ASP.NET 编译器 安全基础结构 状态管理功能 应用程序配置
运行状况监视和性能功能 调试支持
XML Web services 框架
可扩展的宿主环境和应用程序生命周期管理 可扩展的设计器环境
ASP.NET 页和控件框架是一种编程框架,它在 Web 服务器上运行,可以动态地生成和呈现 ASP.NET 网页。可以从任何浏览器或客户端设备请求 ASP.NET 网页,ASP.NET 会向请求浏览器呈现标记(例如 HTML)。通常,您可以对多个浏览器使用相同的页,因为 ASP.NET 会为发出请求的浏览器呈现适当的标记。但是,您可以针对诸如 Microsoft Internet Explorer 6 的特定浏览器设计 ASP.NET 网页,并利用该浏览器的功能。ASP.NET 支持基于 Web 的设备(如移动电话、手持型计算机和个人数字助理 (PDA))的移动控件。
ASP.NET 网页是完全面向对象的。在 ASP.NET 网页中,可以使用属性、方法和事件来处理 HTML 元素。ASP.NET 页框架为响应在服务器上运行的代码中的客户端事件提供统一的模型,从而使您不必考虑基于 Web 的应用程序中固有的客户端和服务器隔离的实现细节。该框架还会在页处理生命周期中自动维护页及
62
洛阳理工学院毕业设计(论文)
该页上控件的状态。
使用 ASP.NET 页和控件框架还可以将常用的 UI 功能封装成易于使用且可重用的控件。控件只需编写一次,即可用于许多页并集成到 ASP.NET 网页中。这些控件在呈现期间放入 ASP.NET 网页中。
ASP.NET 页和控件框架还提供各种功能,以便可以通过主题和外观来控制网站的整体外观和感觉。可以先定义主题和外观,然后在页面级或控件级应用这些主题和外观。
除了主题外,还可以定义母版页,以使应用程序中的页具有一致的布局。一个母版页可以定义您希望应用程序中的所有页(或一组页)所具有的布局和标准行为。然后可以创建包含要显示的页特定内容的各个内容页。当用户请求内容页时,这些内容页与母版页合并,产生将母版页的布局与内容页中的内容组合在一起的输出。
所有 ASP.NET 代码都经过了编译,可提供强类型、性能优化和早期绑定以及其他优点。代码一经编译,公共语言运行库会进一步将 ASP.NET 编译为本机代码,从而提供增强的性能。
ASP.NET 包括一个编译器,该编译器将包括页和控件在内的所有应用程序组件编译成一个程序集,之后 ASP.NET 宿主环境可以使用该程序集来处理用户请求。
除了 .NET 的安全功能外,ASP.NET 还提供了高级的安全基础结构,以便对用户进行身份验证和授权,并执行其他与安全相关的功能。您可以使用由 IIS 提供的 Windows 身份验证对用户进行身份验证,也可以通过您自己的用户数据库使用 ASP.NET Forms 身份验证和 ASP.NET 成员资格来管理身份验证。此外,可以使用 Windows 组或您自己的自定义角色数据库(使用 ASP.NET 角色)来管理 Web 应用程序的功能和信息方面的授权。您可以根据应用程序的需要方便地移除、添加或替换这些方案。
ASP.NET 始终使用特定的 Windows 标识运行,因此,您可以通过使用 Windows 功能(例如 NTFS 访问控制列表 (ACL)、数据库权限等等)来保护应用程序的安全。
ASP.NET 提供了内部状态管理功能,它使您能够存储页请求期间的信息,例如客户信息或购物车的内容。您可以保存和管理应用程序特定、会话特定、页特
63
洛阳理工学院毕业设计(论文)
定、用户特定和开发人员定义的信息。此信息可以独立于页上的任何控件。
ASP.NET 提供了分布式状态功能,使您能够管理一台计算机或数台计算机上同一应用程序的多个实例的状态信息。
通过 ASP.NET 应用程序使用的配置系统,可以定义 Web 服务器、网站或单个应用程序的配置设置。您可以在部署 ASP.NET 应用程序时定义配置设置,并且可以随时添加或修订配置设置,且对运行的 Web 应用程序和服务器具有最小的影响。ASP.NET 配置设置存储在基于 XML 的文件中。由于这些 XML 文件是 ASCII 文本文件,因此对 Web 应用程序进行配置更改比较简单。您可以扩展配置方案,使其符合自己的要求。
ASP.NET 包括可监视 ASP.NET 应用程序的运行状况和性能的功能。使用 ASP.NET 运行状况监视可以报告关键事件,这些关键事件提供有关应用程序的运行状况和错误情况的信息。这些事件显示诊断和监视特征的组合,并在记录哪些事件以及如何记录事件等方面提供了高度的灵活性。
ASP.NET 支持两组可供应用程序访问的性能计数器: ASP.NET 系统性能计数器组 ASP.NET 应用程序性能计数器组
ASP.NET 利用运行库调试基础结构来提供跨语言和跨计算机调试支持。可以调试托管和非托管对象,以及公共语言运行库和脚本语言支持的所有语言。
此外,ASP.NET 页框架提供使您可以将检测消息插入 ASP.NET 网页的跟踪模式。
ASP.NET 支持 XML Web services。XML Web services 是包含业务功能的组件,利用该业务功能,应用程序可以使用 HTTP 和 XML 消息等标准跨越防火墙交换信息。XML Web services 不用依靠特定的组件技术或对象调用约定。因此,用任何语言编写、使用任何组件模型并在任何操作系统上运行的程序,都可以访问 XML Web services。
ASP.NET 包括一个可扩展的宿主环境,该环境控制应用程序的生命周期,即从用户首次访问此应用程序中的资源(例如页)到应用程序关闭这一期间。虽然 ASP.NET 依赖作为应用程序宿主的 Web 服务器 (IIS),但 ASP.NET 自身也提供了许多宿主功能。通过 ASP.NET 的基础结构,您可以响应应用程序事件并创建自定义 HTTP 处理程序和 HTTP 模块。
64
洛阳理工学院毕业设计(论文)
ASP.NET 中提供了对创建 Web 服务器控件设计器(用于可视化设计工具,例如 Visual Studio)的增强支持。使用设计器可以为控件生成设计时用户界面,这样开发人员可以在可视化设计工具中配置控件的属性和内容。
C# 是一种简洁、类型安全的面向对象的语言,开发人员可以使用它来构建在 .NET Framework 上运行的各种安全、可靠的应用程序。使用 C#,您可以创建传统的 Windows 客户端应用程序、XML Web services、分布式组件、客户端 - 服务器应用程序、数据库应用程序以及很多其他类型的程序。Microsoft Visual C# 2005 提供高级代码编辑器、方便的用户界面设计器、集成调试器和许多其他工具,以在 C# 语言版本 2.0 和 .NET Framework 的基础上加快应用程序的开发。
C# 语法表现力强,只有不到 90 个关键字,而且简单易学。C# 的大括号语法使任何熟悉 C、C++ 或 Java 的人都可以立即上手。了解上述任何一种语言的开发人员通常在很短的时间内就可以开始使用 C# 高效地工作。C# 语法简化了 C++ 的诸多复杂性,同时提供了很多强大的功能,例如可为空的值类型、枚举、委托、匿名方法和直接内存访问,这些都是 Java 所不具备的。C# 还支持泛型方法和类型,从而提供了更出色的类型安全和性能。C# 还提供了迭代器,允许集合类的实现者定义自定义的迭代行为,简化了客户端代码对它的使用。
作为一种面向对象的语言,C# 支持封装、继承和多态性概念。所有的变量和方法,包括 Main 方法(应用程序的入口点),都封装在类定义中。类可能直接从一个父类继承,但它可以实现任意数量的接口。重写父类中的虚方法的各种方法要求 override 关键字作为一种避免意外重定义的方式。在 C# 中,结构类似于一个轻量类;它是一种堆栈分配的类型,可以实现接口,但不支持继承。
除了这些基本的面向对象的原理,C# 还通过几种创新的语言结构加快了软件组件的开发,其中包括:
封装的方法签名(称为委托),它实现了类型安全的事件通知。 属性 (Property),充当私有成员变量的访问器。
属性 (Attribute),提供关于运行时类型的声明性元数据。 内联 XML 文档注释。
在 C# 中,如果需要与其他 Windows 软件(如 COM 对象或本机 Win32 DLL)交互,可以通过一个称为“Interop”的过程来实现。互操作使 C# 程序能够完成本机 C++ 应用程序可以完成的几乎任何任务。在直接内存访问必不可少的情况
65
洛阳理工学院毕业设计(论文)
下,C# 甚至支持指针和“不安全”代码的概念。
C# 的生成过程比 C 和 C++ 简单,比 Java 更为灵活。没有单独的头文件,也不要求按照特定顺序声明方法和类型。C# 源文件可以定义任意数量的类、结构、接口和事件。
C# 程序在 .NET Framework 上运行,它是 Windows 的一个必要组件,包括一个称为公共语言运行时 (CLR) 的虚拟执行系统和一组统一的类库。CLR 是 Microsoft 的公共语言基础结构 (CLI) 的一个商业实现。CLI 是一种国际标准,是用于创建语言和库在其中无缝协同工作的执行和开发环境的基础。
用 C# 编写的源代码被编译为一种符合 CLI 规范的中间语言 (IL)。IL 代码与资源(如位图和字符串)一起作为一种称为程序集的可执行文件存储在磁盘上,通常具有的扩展名为 .exe 或 .dll。程序集包含清单,它提供关于程序集的类型、版本、区域性和安全要求等信息。
执行 C# 程序时,程序集将加载到 CLR 中,这可能会根据清单中的信息执行不同的操作。然后,如果符合安全要求,CLR 执行实时 (JIT) 编译以将 IL 代码转换为本机机器指令。CLR 还提供与自动垃圾回收、异常处理和资源管理有关的其他服务。由 CLR 执行的代码有时称为“托管代码”,它与编译为面向特定系统的本机机器语言的“非托管代码”相对应。下图演示了 C# 源代码文件、基类库、程序集和 CLR 的编译时与运行时的关系。
66
洛阳理工学院毕业设计(论文)
语言互操作性是 .NET Framework 的一个关键功能。因为由 C# 编译器生成的 IL 代码符合公共类型规范 (CTS),因此从 C# 生成的 IL 代码可以与从 Visual Basic、Visual C++、Visual J# 的 .NET 版本或者其他 20 多种符合 CTS 的语言中的任何一种生成的代码进行交互。单一程序集可能包含用不同 .NET 语言编写的多个模块,并且类型可以相互引用,就像它们是用同一种语言编写的。
除了运行时服务,.NET Framework 还包含一个由 4000 多个类组成的内容详尽的库,这些类被组织为命名空间,为从文件输入和输出到字符串操作、到 XML 分析、到 Windows 窗体控件的所有内容提供多种有用的功能。典型的 C# 应用程序使用 .NET Framework 类库广泛地处理常见的“日常”任务。
67
因篇幅问题不能全部显示,请点此查看更多更全内容