【摘要】 在信息技术的高速发展的时代背景下,教学不仅可以在教室中进行,人们还可以通过上网交流或学习。本文主要关注的是网络上的学习交流论坛系统。本次设计在使用Microsoft Windows XP系统的基础上,利用vs2008开发软件,在ASP.NET开发平台上以C#为开发语言并以SQL2005数据库为核心构建进行系统的设计与实现。本文对系统的可行性分析、需求分析、系统功能分析、数据库设计以及系统实现等进行了详细阐述。在具体的设计与实现过程中,分成登录注册,浏览发帖,后台管理等几个模块进行实现,重点描述了几个重要功能模块的实现具体操作。展示了论坛系统在ASP.NET开发平台下的整个开发、设计和实现过程。
【关键词】 ASP.NET;SQL 2005;B/S架构;交流论坛系统。引言传统课本和黑板的课堂式教学方式,已渐渐不能满足如今人们的需求。随着信息技术的高速发展和Internet的逐渐壮大,教学方式发生了很大的变化。更多地,人们不在局限于传统教学方式,开始关注网络教学交流方式。Internet有信息量大、及时、准确,内容丰富的特点,能对信息做出全面的介绍与比较,形式上,也更加方便人们阅读。在短短几年的时间里,网络教学交流方式在无形的推动下便迅速发展了起来。在信息全球化的今天,人们通过网上阅读和交流获得自己需要的信息,此时网络的共享特性发挥了明显的优势。在丰富了人们的生活的同时,它已经成为人们生活中不可或缺的组成部分。此交流论坛系统,是针对计算机系学生的学习交流而设计开发的。本文提出了以数据库为核心,构建文章发布系统。借助于数据库软件,对数据进行统一的管理。系统完全采用存储过程与数据库交互,具有响应时间短,安全性高等优点。通过交流论坛系统,为学生快速方便地交流信息已促进学习提供了的有效途径。1.系统分析1.1系统总体调查 本系统适用于计算机系学生学习交流而开发的交流论坛系统,在着手设计系统之前,首先对现有系统进行总体调查。经调查,目前还未有类似系统。基于教学交流的重要性,开发新的交流论坛系统是必要的。本系统是一个校园教学学习交流系统,它的主要功能是为学校教育提供信息交流和资源共享的计算机网络信息系统。由于Internet的普及和网络技术的发展,互联网已成为人们获取和交流信息的重要场所。并且,现在各大学校的教师和学生对信息的需求越来越高,已不满足仅在课堂教学中获取信息。信息的交流对提高学校的教学质量、提高学生的学习质量等有着至关重要的作用。该交流论坛系统实现了如下功能:
1 .用户和管理员搜索、浏览、评论帖子、下载附件、个人信息管理;2 .版块管理员对文章、评论内容的管理;3. 系统管理员相对于版块管理员增加了版块分栏的管理和版块管理员的管理;本系统易于使用,能够实现论坛的动态管理,使得对文章的管理更加及时,高效。1.2可行性分析在着手实现系统之前均需要进行可行性分析,可行性分析的目的是为了明确所设计的系统有没有实现的可能性以及其实现后能体现出来的价值,以免花费不必要的时间精力造成资源的浪费。网站建设采用的是vs2008的asp.net开发平台,数据库管理软件则是使用的SQL server 2005版。这两种软件现今在市场上应用较为普及,同时已被大量运用在系统开发中,并且在技术上已形成较成熟的体系。因此,开发系统所需要的编程工具支持都比较容易实现。在开发过程中所需要使用到的技术有ASP.NET数据库操作、CSS、JS 等,这些技术的掌握可以通过学习和实践而实现,所以,在技术上也没有太大的问题。同时基于ASP.NET开发平台的网站开发较为迅速,开发的时间预计在两个月左右,所以开发系统的时间是充裕的,可行的。综上所述,可知从工具、技术、时间成本的角度上,该论坛系统的开发是可行的。1.3角色分析交流论坛系统的前台浏览部分:主要用于显示版块的列表,可点击详细阅读版块中的内容;并可通过搜索进行筛选阅读;提供下载服务。前台用户角色,分为登录用户和游客,他们分别具有不同的权限:登录用户可浏览论坛版块区域,有评论权限,有下载权限;而游客所拥有的权限只有浏览文章的权限。文章发布系统的后台管理部分,主要用于对网站进行管理,确保了网站的安全性。后台管理部分是只有管理者才有权限操作的模块,管理者具体又分为系统管理员和版块管理员。系统管理员所拥有的权限:管理分栏信息和管理管理员的信息;而管理员所拥有的权限:管理帖子信息、评论信息。1.4需求分析明确系统的需求分析,对于明晰系统开发的目标和把握系统质量的度量标准有重大意义。可见,需求分析在整个系统开发过程中,起到了至关重要的作用。通过对现有学习交流论坛系统的调查研究,结合目前所需要的文章发布需求,总结出该学习交流系统的主要功能:前台浏览部分:
●用户登录:根据账户和密码,首先确定用户是否是已存在于数据库中。读取用户权限属性判别用户的角色是普通用户、版块管理员还是系统管理员,如果口令正确,则分别跳转不同的页面。即实现了不同的角色具有不同的权限。
●版块列表显示区:版块可分为日常学习、竞赛交流、网站管理等。
●搜索文章功能:可按照关键字对包含相关关键字的标题或文章内容进行查询符合要求的文章。
●文章内容阅读功能:提供详细的文章阅读,包括文章包含的图片或附件。
●用户发表评论功能:只有登录用户,才有权限发表对文章内容的评论。未登录用户无法发表对文章内容的相关评论。
●附件下载功能:如果文章的内容中存在附件信息,则提供下载服务。
●用户个人信息的管理:登录用户,在个人中心中可以完善自己的个人信息,也可以修改自己原有的个人信息。后台管理部分:
●后台登录:读取登录用户的权限属性,判断登录用户是版块管理员还是系统管理员,判断结果后,则根据角色(版块管理员或系统管理员)分别跳转后台不同的管理页面。
●管理员对文章的发布和删除功能:系统最基本的、对文章内容的管理工作。管理员可以对发布的文章进行审核,未通过审核的文章可被删除。但管理员没用对文章内容包括图片附件进行修改的权限。
●管理员对评论的管理功能:管理员对用户发表的评论进行审核,不通过则删除。
●系统管理员对版块信息的管理功能:对文章版块信息进行添加、修改、删除。●系统管理员对管理员信息的管理功能:普通用户可申请成为版块管理员,系统管理员可将申请的普通用户权限提升为版块管理员,也可将版块管理员权限下放到普通用户。总体设计2.1设计目标学习交流论坛系统应该实现对文章信息进行管理的功能。即在此系统下,后台管理员可以即时地发布文章,管理登录用户发布的文章信息。另一方面,有权限的用户能进行搜索文章、浏览文章、评论文章等合法操作。该系统建立在一个综合型数据库的基础上来实现管理,但根据管理者和普通用户对交流论坛系统的不同需求,针对不同角色他们各自拥有的数据操作权限也是不同的,这样才能保证并实现数据库访问的安全性。在一定程度上,此论坛系统是通过对数据库的管理来实现对文章信息的管理。由此,本网站系统是适用于计算机系学生学习交流的论坛系统,主要实现如下目标:
●对文章进行分类;
●显示文章的详细信息;
●下载附件;文章搜索功能;
●提供文章、评论管理。
2.2开发设计思想交流论坛系统是一个拥有一定管理功能的网站,采用的设计方法是模块化程序设计方法,这样便于以后对系统功能模块进行修改、补充和维护。交流论坛系统主要是对文章数据和用户相关评论数据进行管理。普通用户登录论坛系统,发布帖子同时与其他用户进行评论交流。管理员会及时对文章信息进行审核管理,给广大用户提供了一个规范有效的论坛环境。
● 界面设计友好,功能可能不需要太复杂,但是系统的使用最重要是方便,同时尽可能满足用户的相关需求。
● 系统总体实现以下规范:系统代码的书写需要进行规范,以便于日后可以进行相关的维护和扩展。在实现系统前,还需要对数据格式进行统一规范,统一返回的文章相关数据;
2.3系统功能分析本论坛系统采用VS2008和SQL2005作为开发系统的工具同时结合实际需求。本系统主要由以下基本模块构成:它们分别是普通用户的前台模块和管理人员(包括系统管理员和版块管理员)的后台管理的模块。登录认证模块是确保系统安全的需要,它确保登录学习交流系统的用户是合法的授权用户, 同时该模块是系统共有模块。
2.3.1公共模块的功能(
1)验证码模块: 用于随机生成数字和字母混合验证码,保证口令的安全从而确保系统的安全性。若验证码看不清,可点击验证码图片进行刷新验证码模块,重新获取验证码。
(2)登录模块:用于验证登录用户名和密码是否比对正确,自动识别登录者权限并根据登录者身份跳转到相应的论坛主界面浏览文章。如果用户名和密码不正确或不对应,则拒绝登录,但未登录用户可以浏览文章但无权限进行发布和评论。
2.3.2用户模块的功能
(1)个人信息修改模块:用于实现登录用户对自己个人信息的录入数据库工作。登录用户可录入的个人信息包括:性别,姓名,昵称,专业,班级,宿舍,电话。
(2)文章版块显示模块用于显示文章大版块和其包含的子版块基本内容,大板块内容可分为如学习交流区、竞赛交流区、网站管理区等,大板块包含的小板块内容如学习交流区可分为编程开发、无限创意、网站建设和故障交流专区四个小板块。若点击版块名字进行选择版块,则可跳转阅读更多相关文章。
(3)文章搜索模块用于关键字模糊检索文章。输入关键字,在已有文章列表中查找包含关键字的标题或者文章内容中从而找到符合条件的文章并显示文章。
(4)文章评论模块:用于显示点击阅读的文章已有的所有评论,并且,只有已登录用户才可以针对此帖子发表新评论。登录用户只需要写入针对帖子内容的相关评论信息内容,其余内容是系统自动读取的。比如发表时间、昵称、文章编号、评论编号。
(5)下载模块:用于显示已存在于服务器上的登录用户上传的附件信息,并且,只有登录用户才可以下载附件。
2.3.3版块管理员管理模块
(1)对各自负责版块内的已发布的文章进行管理:发布、审核、删除文章。版块管理员可根据后台管理模块的文章管理模块对各自负责版块内的文章进行相应操作。
(2)对已删除的文章管理:管理员可以恢复已删除的文章。
(3)对用户评论的管理:删除未通过审核的评论。管理也可以恢复误删的评论信息。
(4)普通用户信息管理:删除用户信息。管理员只能对有问题的用户进行删除,无法修改用户的个人信息,同时,只能删除权限比自己小的用户信息,无法删除同级的版块管理员或系统管理员的个人信息。
2.3.4系统管理员管理信息模块
(1)版块管理员信息管理模块:系统管理员可以添加申请版块管理员的普通用户为版块管理员,同时也可以将版块管理员的权限下放到普通用户。
(2)对文章的版块分版管理模块:系统管理员可以新增、修改大板块或子版块信息2.4系统功能模块设计根据上述的论坛系统功能分析,可得出论坛系统功能模块图如图2-1所示:图2-1 系统功能模块图2.5数据库设计根据论坛系统需求,可以选择ADO的方式连接数据库,从而设计适合本系统的相应数据库模型。同时需要分析系统运用的数据如何才能合理存放在设计的数据库中,实现数据库数据冗余少、存取效率高,方便运行及维护的同时还可以满足不同类型用户的使用。论坛系统的数据库设计在整个系统设计过程中是一个相当关键步骤。这是因为当一个数据库设计并不合理或者不太优化时,就会很容易造成数据库数据在被处理操作的过程过于复杂,严重的时候甚至会影响到整个系统的界面设计。从而会导致用户在使用的过程中出现不方便的地方。因此,数据库的设计需要严格遵循软件工程所提及的方法和论坛系统设计所制定的计划进行。通过授权的方式进行控制登录用户对数据库的访问,从而确保系统数据库的安全性。系统实现3.1开发工具
3.1.1系统开发技术简介本系统主要采用VS2008的ASP.NET网站开发平台和SQL Server 2005数据库软件进行开发。ASP.NET网站平台提供了一个 可使用的Web 应用程序模型,该模型利用服务器建立一个Web应用程序。ASP.NET网站设计平台封装很多类和用户界面元素,具体包括: HTML 元素,标准控件(如文本框、标签和下拉菜单等),这些标准控件在 Web 服务器上运行的同时以 HTML 的形式传送回一个用户界面(即网页)。这些标准控件在某种程度上相当于一个面向对象的编程模型,大大丰富了Web开发人员对面向对象的编程。ASP.NET网站平台还提供了创建一个完整的Web应用程序所必须需要的各种类型服务,它主要有以下几个重要优点:简洁容易使用;很方便用户进行管理;扩展性强、应用面广;能提供足够的安全性;拥有众多的工具支持;还可以进行自定义选择。3.1.2后台数据库简介建立学习交流论坛系统除了使用ASP.NET技术以外,实现该系统还需要数据库工具Microsoft SQL Server 2005,论坛系统中所有的数据信息都存储在改数据库中,把与数据库访问相同的部分代码抽象出来成为一个底层类,系统完全采用存储过程与数据库交互从而操作数据库中的数据,达到实现所有需要的功能的目的。数据库工具SQL Server 2005是一个关系型数据库管理系统,从它的自身特点来说,SQL Server 2005可以说是目前世界上使用相当普遍的几种大型数据库之一。SQL Server 2005主要通过SqlCommand、SqlConnection、DataSet、SqlDataReader、SqlDataAdapter、DataTable等几个数据访问对象来访问数据。SQL Server2005 同时也是一个相当杰出的数据库平台,不仅能够满足各种不同类型的构建网络数据库的需求,还可用于电子商务系统、大型联机事务处理等。用户可以仅仅通过图形界面和向导工具便可以轻松完成对数据库的操作,这样可以大大减轻了管理人员的工作。SQL Server2005得到广泛的应用正是由于其具有操作简便、功能强大、安全性高等特点。
3.2数据库的实现打开SQL Server 2005,选择SQL Server Management Studio在PC--20120308LDQ\SQLEXPRESS服务器下选择数据库选项,右击选择新建数据库选项,新建数据库并命名为“ComputerWebsite”。在“ComputerWebsite”窗口中创建各个数据表。(1)连接数据库在动态网站运行的过程中,调用对应数据库中储存的数据是十分频繁的而且是不可避免的。而每次进行数据库的操作时,都无法避免的需要连接数据库。相应的是,数据库连接代码就会不可避免地重复出现多次,尤其是当修改数据库时,连接代码就需要进行对应的更改。为了解决这个连接数据库代码问题,同时方便管理数据库连接代码,可将此代码放入“web.config”文件中。数据库的连接代码如下:<connectionStrings><add name="DbconnectionString"connectionString="DataSource=.\sqlexpress;Database=ComputerWebsite;IntegratedSecurity=True;"providerName="System.Data.SqlClient"/></connectionStrings>3.3界面实现 按论坛功能模块设计进行相关的论坛系统界面设计,使用ASP.NET网站平台中的标准控件、HTML元素、JS控件实现界面设计。系统使用的基本技术和算法(1)使用Session对象传递值 Session的中文意思是“会话”,在ASP中代表了客户端与服务器之间的“会话”,Session对象的作用是从用户到达某个特定的Web页面开始,到该用户离开Web站点,或在程序中利用代码中止某个Session对象的结束。引用Session对象可以让一个用户在访问多个页面之间的切换时,也会保留该用户的信息。 特定用户会话所需要的的信息可以使用Session对象存储。这样,当用户在应用程序的Web页面之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web页面时,如果该用户还没会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将中止该会话。另外需要注意的是,Session会话状态仅在支持Cookie的浏览器中保留。 本论坛系统应用了使用Session对象传值的技术。在登录界面后,系统会将姓名等信息保存到Session对象中。在跳转的Web页面中,会将Session对象中保存的数据信息赋值到标签控件中,在标签控制中显示登录用户的论坛使用名。在显示论坛各个版块文章列表和每篇文章对应的回复评论,也使用了Session对象保存相关信息,从而实现不同Web页面之间传值的功能。(2)用户注册时,验证码的使用: 验证码就是将一串随机产生的的数字或符号,生成一幅图片,图片里加上一些干扰元素,由用户肉眼识别其中的验证码信息,然后提交网站验证,验证成功后才能使用某项功能。 当用户在浏览器输入验证码之后,将用户名、密码和验证码等信息提交到服务器,服务器端获取用户的提交之后,判断用户提交的验证码字符与服务器端保存的字符是否相同。如果相同,则通过对用户提交信息的验证,否则将提示没有通过验证的提示信息。 由于随机数字验证码验证作用小,对网站的安全防范比较底。因此本论坛系统使用的是图文验证的方式对用户的注册进行验证。 图文验证包括图片和文字两部分,而随机数字验证只包含数字。图文验证模块的实现代码如下:随机字符生成代码部分如下:public void ProcessRequest (HttpContext context) { int number; char code; //得到随机生成的单个字符 string stringCode = string.Empty;//保存生成的字符串 Random rand = new Random();//表示伪随机数生成器,一种能够产生满足某些随机性统计要求的数字序列的设备。 for (int i = 0; i < 4; i++){ number = rand.Next();//返回非负随机数。 if (number % 2 == 0) code = (char)('0' + (char)(number % 10)); else code = (char)('A' + (char)(number % 26)); stringCode += code;} context.Session["code"] = stringCode; //保存验证码 代码中通过Random对象和for循环语句相结合的方式生成随机字符串。在ASP.NET中,随机函数Random()属于Random类,Random类是一个伪随机数生成器,能够生成满足一定随机性要求的数字序列产生一个随机数。 这里需要说明的一点,随机数的生成是从种子值开始的,如果反复地使用同一个种子,就会产生相同的数字系列,在默认的情况下使用系统时钟来生成种子。 Random类产生随机数用的方法为Next,本论坛系统使用的是Next方法中的Next()构造函数,该函数没有参数,返回一个非负的随机数。背景图片相关代码: //创建一个内存位图 Bitmap image = new Bitmap((int)(Math.Ceiling(stringCode.Length * 12.5)),22); Graphics g = Graphics.FromImage(image); //填充背景色 try{ g.Clear(Color.White); //添加干扰线条 for (int i = 0; i < 4; i++) { int x1 = rand.Next(image.Width); int y1 = rand.Next(image.Height); int x2 = rand.Next(image.Width); int y2 = rand.Next(image.Height); g.DrawLine(new Pen(Brushes.Green), x1, y1, x2, y2);} //新建一个图片字体 Font font = new Font("Arial", 12, FontStyle.Bold); //添加字体到图片中 g.DrawString(stringCode, font, Brushes.Blue, 2, 2); //添加图片前背景干扰 for (int i = 0; i < 100; i++) { int x = rand.Next(image.Width); int y = rand.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(rand.Next()));} //画图片的边框 g.DrawRectangle(new Pen(Brushes.Yellow), 0, 0, image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Png); context.Response.ContentType = "image/png"; context.Response.BinaryWrite(ms.ToArray());} ........................ 背景图片是验证码中不可缺少的元素。验证码中的背景图片通常由背景干扰线和前背景干扰两部分组成。生成背景干扰线和前背景干扰由随机函数Random()和循环语句来实现。 在生成图文验证码的Web窗体中,不需要设计Web窗体的显示界面,只需要在Web窗体的代码窗体中添加生成图文验证码的程序代码就可以。另外,可以将设计完成的图文验证Web窗体进行保存,如果实际的开发工程中需要图文验证的功能,可以将该窗体直接加载到该工程中,帮助系统实现图文验证的功能。 3.5系统测试在完成了论坛系统界面设计和程序编码阶段后,还需要对系统进行全面测试,其目的是为了确保系统能够更稳定的运行。全面测试的内容主要包括程序的代码测试(调试程序代码,完善代码功能,保证代码能够正常运行)和程序的确认测试(主要是对程序的安全性和功能的完善进行检验测试)。
●代码测试:编写测试数据对程序代码进行测试,测试中使用的数据除了正常数据还应该包括异常数据和错误数据,这些类型数据,不仅可以测试程序代码运行功能的是否正确,还可以用于测试程序逻辑上的有没有错误。
●确认测试:采用黑盒测试的方法检测各个模块之间的运行情况,网站页面数据传输方向与程序与数据库之间交互的准确性。主要包括:测试网站页面在进行系统数据的添加、修改、删除、查询操作时,数据库中相应位置的信息是否进行了及时更新,同时进行操作后的界面显示对应信息是否正确。经过大约两个多月的时间,毕业设计基本上接近完成。从确定毕业系统的选题开始,经过指导老师的提示和点拨,我便开始针对选题进行相关的系统需求分析,反复思考如何才能实现相对应的各个功能需求。这段时间,我从基本的数据库设计,查阅相关资料,抓紧时间学习ASP.NET的相关技术,到动手进行系统界面设计,编写各个功能的代码,调试编译各段程序,进行全面的系统测试。在两个多月的系统开发过程,不断循环这几个主要过程,直至将系统开发完毕。系统从最初的雏形到最终成品的完成,已经经历了多次版本修改。在系统设计中,不可避免地有遇到过难题,通过自身认真的思考,以及借助同学老师的帮助和网络资源的支持,问题总是会在一定时间内解决的。特别是在程序调试的时候,这特别需要有足够耐心,如进行调试中的单步调试,只有这样才能准确地找出问题出在那里进而进行思考解决。而在进行整个系统联测的时候,则需要侧重注意整个系统的完整性和连贯性。需要牢牢记住,方便用户使用才是整个系统设计出来的最终目的。两个多月来的实践过程不仅让我拾起了以前已遗忘大半的知识并对其进行了总结,同时这也是对我自身能力进行了考验。虽然系统最终是完成了,但系统还没有达到高水平的要求,它依然存在缺陷和扩展空间。在系统完成的这段过程中,我深刻的明白要相信天道酬勤这句话。同时要求自己精益求精,在不断改进系统的过程中,自身肯定会收获很多,这不仅是知识上的收获,还是能力上的收获。