互动媒体学习社区系统

上传人:枕*** 文档编号:122049174 上传时间:2022-07-20 格式:DOC 页数:79 大小:5.56MB
返回 下载 相关 举报
互动媒体学习社区系统_第1页
第1页 / 共79页
互动媒体学习社区系统_第2页
第2页 / 共79页
互动媒体学习社区系统_第3页
第3页 / 共79页
点击查看更多>>
资源描述
第六章互动媒体学习社区(ASP.NET 2.0+Access 实现)随着Internet 的普及,网络已成为人们学习、工作、生活不可或缺的一部分。网络学习是信息化社会学习的重要途径之一,而网络学习受到广大学习者的青睐是由于在网络上学习资源丰富、学习时间灵活,还可以通过互动交流方式进行学习。而互动交流是非常有效的网络学习手段,对学习者的创新能力和认知能力的发展,发挥着不可低估的作用。本章通过开发一种媒体学习网站互动媒体学习社区,简介如何运用ASP.NET 2.0 + Access 迅速开发一种互动媒体学习社区。通过学习本章,你将学到::互动媒体学习社区开发的基本过程: 如何分析并设计数据库: 如何设计公共类: 重要功能模块的实现措施: Access 数据库在网站中的应用: 面向对象的开发思想: 分层开发模式: 实现网络播放媒体文献6.1 开发背景在网络上丰富多彩的学习资源中,老式的文档资源和图片资源已不能满足学习者对学习资源的需求,学习者迫切需要通过视觉或听觉直观地对学习资源进行深刻的理解,从而产生了视频学习资料和语音学习资料。互动媒体学习社区通过构建一种虚拟的网络学习社区环境,学习者可以通过这个环境发布视频教程或语音教程进行互相学习交流。6.2 需求分析互动媒体学习社区是为学习者提供的学习和交流的平台,因此互动媒体学习社区应具有基本的视频学习功能、语音学习功能和留言功能。在基本功能之上还可以添加会员注册功能,运用会员功能对访问者的权限进行控制,例如一般顾客不可以发布教程或下载教程而会员顾客则可以。此外互动媒体学习社区还需要具有美观、简洁的人机界面、良好的查询功能、网站的易维护性和易操作性。6.3 系统设计6.3.1 系统目的根据需求分析的描述以及实际考察,现制定网站实现功能如下。 操作简朴以便、界面简洁美观。 注册功能,顾客通过注册成为网站会员。 发布下载教程,对会员提供发布教程和下载教程的功能。 密码找回功能,当会员忘掉密码时可以通过此功能找回。 留言功能,通过留言功能进行互动交流。 查询功能,使顾客通过查询迅速找到需要的教程。 后台管理功能,管理员通过后台进行网站的维护和管理。 系统运营稳定,安全可靠。6.3.2 业务流程图互动媒体学习社区业务流程图如图6.1 所示。6.3.3 系统功能构造根据互动媒体学习社区的特点,可以将其分为前台和后台两个部分设计。前台重要实现发布教程(发布视频或语音教程、查看已发布的语音教程、查看已发布的视频教程)、浏览教程(浏览视频或语音教程、发布留言)、登录功能、查询功能。后台重要实现公示管理(管理公示、发布公示)、教程管理(发布教程、管理视频教程、管理语音教程)、顾客管理等功能。互动媒体学习社区的前台功能构造如图6.2 所示。 互动媒体学习社区的后台功能构造如图6.3 所示。6.3.4 系统预览互动媒体学习社区网由多种页面构成,下面仅列出几种典型页面,其她页面参见光盘中的源程序。首页如图6.4 所示,重要实现显示导航、最新教程、教程排行、公示信息、登录功能和搜索功能。查看教程页面如图6.5 所示,重要实现观看视频教程和发布留言功能。 图6.4 首页(光盘index.aspx)图6.5 查看教程页(光盘seeVideo.aspx)发布教程页面如图6.6 所示,重要实现发布教程、视频教程管理和语音教程管理。后台视频管理页如图6.7 所示,重要实现查看视频具体信息、视频留言管理、删除视频操作。% 注意:由于途径太长,因此省略了部分途径,图6.4、图6.5 和图6.6 省略的途径是“TM06studyCommunity”,图6.7 省略的途径是“TM06studyCommunitymanage”。图6.6 发布教程页(光盘 issuance.aspx)图6.7 后台视频管理页(光盘 manage_video.aspx)6.3.5 构建开发环境1网站开发环境网站开发环境:Microsoft Visual Studio 集成开发环境。网站开发语言:ASP.NET+C#。网站后台数据库:Microsoft Access。开发环境运营平台:Windows XP(SP2)/ Windows (SP4)/ Windows Server (SP1)。% 注意:SP(Service Pack)为Windows 操作系统补丁。2服务器端操作系统:Windows Server (SP1)。Web 服务器:Internet 信息服务(IIS)管理器。数据库服务器:Microsoft Access。浏览器:IE 6.0。网站服务器运营环境:Microsoft .NET Framework SDK v2.0。3客户端浏览器:Internet Explorer 6.0。辨别率:最佳效果1024768 像素。6.3.6 数据库设计本程序采用Access 作为后台数据库,数据库名称为db_study,其中涉及6 个数据表,下面将分别简介。1数据库概要阐明为了使读者对本程序系统后台数据库中的数据表有一种更清晰的结识,在此给出了数据库的构造图,该构造图涉及系统所有的数据表,如图6.8 所示。2数据库E-R 图分析通过对网站进行的需求分析、网站流程设计以及系统功能构造的拟定,规划出系统中使用的数据库实体对象分别为公示信息实体、会员信息实体、留言信息实体、视频教程信息实体(由于视频教程信息实体和语音教程信息实体类似,这里只给出视频教程信息实体)和语言类型实体。实体E-R 图如下所示。公示信息实体E-R 图如图6.9 所示。图6.8 数据库构造图图6.9 公示信息E-R 图会员信息实体E-R 图如图6.10 所示。图6.10 会员信息E-R 图留言信息实体E-R 图如图6.11 所示。视频教程信息实体E-R 图如图6.12 所示。语言类型实体E-R 图如图6.13 所示。3数据表构造设计完数据库实体E-R 图之后,根据实体E-R 图设计数据表构造。下面将5 张数据表的数据构造和用途分别列出(由于视频教程信息表和语音教程信息表类似,在此只给出语音教程信息表)。图6.11 留言信息实体E-R 图图6.12 视频教程信息实体E-R 图图6.13 语言类型实体E-R 图& 阐明:视频教程信息表和语音教程信息表类似,在分析实体E-R 图中只给出了视频教程信息实体E-R 图,而数据表构造中只给出了语音教程信息表。 tb_Bulletin(公示信息表)公示信息表重要存储管理员发布的公示信息,如表6.1 所示。表6.1 公示信息表构造 tb_login(会员信息表)会员信息表重要存储会员注册的信息,如表6.2 所示。 tb_Sound(语音教程信息表)语音教程信息表重要存储会员发布的语音教程信息,如表6.3 所示。表6.3 语音教程信息表构造 tb_Speak(留言信息表)留言信息表重要存储顾客留言的具体信息,如表6.4 所示。表6.4 留言信息表构造 tb_Type(语言类型表)语言类型表重要存储顾客选择的编程语言,如表6.5 所示。表6.5 语言类型表构造6.3.7 文献夹组织构造为了便于读者对本网站的学习,在此笔者将网站文献的组织构造展示出来。前台文献组织构造如图6.14 所示。后台文献组织构造如图6.15 所示。图6.14 前台文献组织构造图图6.15 后台管理文献组织构造图6.4 公共类设计6.4.1 数据库操作类设计数据库操作类用来完毕数据库的连接操作以及数据库的查询、添加、删除和修改操作。将这几种操作编写到一种公共类里,可以减少反复代码的编写,有助于代码的维护。创立数据库操作类的措施为:在Microsoft Visual Studio 菜单栏中选择“网站”/“添加新项” 命令,在弹出的“添加新项”对话框中选择“类”,将其命名为dataOperate.cs,如图6.16 所示。图6.16 添加数据库操作类单击“添加”按钮将弹出一种提示对话框,如图6.17 所示,此对话框询问与否将刚刚创立的类存放在App_Code 文献夹中,单击“是”按钮,完毕数据库操作类的创立。图6.17 提示对话框在解决方案资源管理器里的App_Code 文献夹中可以看到新创立的数据库操作类。双击数据库操作类,进行此类的编写。在此类里可以看到系统自动添加的命名空间、公共类和构造函数。由于此类需要对数据库进行操作,因此需要引用命名空间System.Data.OleDb。代码如下:例程01 代码位置:光盘TM06studyCommunityApp_Code dataOperate.csusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.OleDb;/ / dataOperate 的摘要阐明/ public class dataOperatepublic static DataSet ds;public dataOperate()/ TODO: 在此处添加构造函数逻辑/dataOperate 类中一共定义了6 个措施,下面分别对这几种措施进行解说。 createCon 措施createCon()措施用来连接数据库,此措施返回的类型为OleDbConnection,重要用来构造数据库的连接。代码如下:例程02 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic OleDbConnection createCon()OleDbConnection odbc = new OleDbConnection(Provider=Microsoft.Jet.OLEDB.4.0;Datasource=|DataDirectory|db_study.mdb;); /生成OleDbConnection的一种对象用于连接数据库return odbc; adlData 措施adlData(string sql)措施用来添加或删除数据。此措施返回一种布尔值,用来表达添加或删除数据是否成功,执行成功返回true,否则返回false。调用此措施时应传入一种string 类型的参数,此参数表达所要执行的SQL 语句。代码如下:例程03 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic bool adlData(string sql)OleDbConnection Odbc =createCon(); /调用createCon措施连接数据库Odbc.Open(); /打开数据库连接OleDbCommand com = new OleDbCommand(sql, Odbc); /对Access数据库执行一种SQL语句int i = Convert.ToInt32(com.ExecuteNonQuery(); /返回所影响的行并转换成int类型Odbc.Close();if (i 0)return true;elsereturn false; isData 措施isData(string sql)措施用来查找数据与否存在。此措施返回一种整型值,用来表达与否查找到数据,查找到数据则返回一种不小于0 的值,否则返回0。调用此措施时应传入一种string 类型的参数,此参数表达所要执行的SQL 语句。代码如下:例程04 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic int isData(string sql)OleDbConnection Odbc =createCon(); /调用createCon措施连接数据库Odbc.Open(); /打开数据库连接OleDbCommand com = new OleDbCommand(sql, Odbc); /对Access数据库执行一种SQL语句int i = Convert.ToInt32(com.ExecuteScalar(); /返回眸行首列Odbc.Close();return i; UpdateData 措施updateData(string sql)措施用来更新数据。此措施没有返回值。在调用此措施时应传入一种string类型的参数,此参数表达所要执行的SQL 语句。代码如下:例程05 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic void updateData(string sql)OleDbConnection Odbc =createCon(); /调用createCon措施连接数据库Odbc.Open(); /打开数据库连接OleDbCommand com = new OleDbCommand(sql,Odbc); /对Access数据库执行一种SQL语句com.ExecuteScalar(); /返回眸行首列Odbc.Close(); row 措施row(string sql)措施用来查找并返回一行数据。此措施返回一种OleDbDataReader 对象。在调用此措施时应传入一种string 类型的参数,此参数表达所要执行的SQL 语句。代码如下:例程06 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic OleDbDataReader row(string sql)OleDbConnection Odbc =createCon(); /创立OleDbConnection对象Odbc.Open(); /打开数据库连接OleDbCommand com = new OleDbCommand(sql, Odbc);return com.ExecuteReader(); /返回OleDbDataReader对象 rows 措施rows(string sql, string table)措施用来查找并返回多行数据。此措施返回一种DataTable 对象。在调用此措施时应传入两个string 类型的参数,第一种参数表达要执行的SQL 语句,第二个参数表达表名。代码如下:例程07 代码位置:光盘TM06studyCommunityApp_Code dataOperate.cspublic DataTable rows(string sql, string table)DataSet ds;OleDbConnection Odbc =createCon();Odbc.Open();OleDbDataAdapter oda = new OleDbDataAdapter(sql,Odbc);ds = new DataSet(); /创立数据集oda.Fill(ds,table); /填充数据集Odbc.Close();return ds.Tablestable; /返回数据表6.4.2 业务功能类设计网站业务功能类用来寄存开发中常用的措施,可以减少反复代码的编写,有助于代码的维护。此类中有两个自定义措施,即Encrypting 措施和Decrypting 措施,这两个措施重要用来完毕重要信息的加密和解密。 Encrypting 措施Encrypting(string Source)措施用来对比较重要的信息进行加密操作。此措施返回一种string 类型的值,该值表达已经加密的信息。在调用此措施时应传入一种string 类型的参数,此参数表达需要加密的信息。代码如下:例程08 代码位置:光盘TM06studyCommunityApp_Code Operate.cspublic static string Encrypting(string strSource)/把字符串放到byte数组中byte bytIn = System.Text.Encoding.Default.GetBytes(strSource);/建立加密对象的密钥和偏移量byte iv = 102, 16, 93, 156, 78, 4, 218, 32 ; /定义偏移量byte key = 55, 103, 246, 79, 36, 99, 167, 3 ; /定义密钥/实例DES加密类DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();mobjCryptoService.Key = iv;mobjCryptoService.IV = key;ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();/实例MemoryStream流加密文献System.IO.MemoryStream ms = new System.IO.MemoryStream();CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);cs.Write(bytIn, 0, bytIn.Length);cs.FlushFinalBlock();return System.Convert.ToBase64String(ms.ToArray();% 注意:实现此措施需引用System.Security.Cryptography;命名空间。 Decrypting 措施Decrypting (string Source)措施将已加密的信息进行解密。此措施返回一种string 类型的值,该值表示解密后的信息。在调用此措施时应传入一种string 类型的参数,此参数表达需要解密的信息。代码如下:例程09 代码位置:光盘TM06studyCommunityApp_Code Operate.cspublic static string Decrypting(string Source)try/将解密字符串转换成字节数组byte bytIn = System.Convert.FromBase64String(Source);/给出解密的密钥和偏移量,密钥和偏移量必须与加密时的密钥和偏移量相似byte iv = 102, 16, 93, 156, 78, 4, 218, 32 ; /定义偏移量byte key = 55, 103, 246, 79, 36, 99, 167, 3 ; /定义密钥DESCryptoServiceProvider mobjCryptoService = new DESCryptoServiceProvider();mobjCryptoService.Key = iv;mobjCryptoService.IV = key;/实例流进行解密System.IO.MemoryStream ms = new System.IO.MemoryStream(bytIn, 0, bytIn.Length);ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);StreamReader strd = new StreamReader(cs, Encoding.Default);return strd.ReadToEnd();catch (Exception ex)throw new Exception(在文献解密的时候浮现错误!错误提示: n + ex.Message);% 注意:实现Encrypting 措施和Decrypting 措施需引用System.Security.Cryptography;命名空间、System.IO;命名空间、System.Text;命名空间。6.5 网站首页设计6.5.1 网站首页概述首页设计的好坏直接影响到浏览者及顾客对本网站的印象,页面整体布局要合理,简洁美观,网站首页的运营效果如图6.18 所示。在网站首页中涉及如下几种模块: 网站导航(涉及发布教程、视频课堂、语音课堂、注册、联系我们) 教程搜索(可以根据教程类型和教程语言进行搜索) 网站公示(网站近期的动态) 顾客登录 最新发布教程(涉及最新发布的视频教程和语音教程) 教程排行榜(涉及点击率最高的视频教程和语音教程)图6.18 网站首页6.5.2 网站首页技术分析 网页对话框模式显示信息在首页中公示的具体信息是以网页对话框模式显示的。实现此功能重要通过应用window 对象的showModalDialog 措施来实现。其语法格式如下:variant=object.showModalDialog(sURL,vArguments,sFeatures)sURL:指定URL 文献地址。vArguments:用于向网页对话框传递参数,传递参数的类型不限,对于字符串类型最大为4096 个字符,也可以传递对象。sFeatures:对话框窗口的设立参数,可选项。设立参数如表6.6 所示。表6.6 对话框窗口的设立参数在本程序中运用JavaScript 语言将弹出窗口做成一种措施,以便在页面中使用。代码如下:function openPWD(传入打开窗口的值)window.showModalDialog(需要打开窗口的途径+传入打开窗口的值, ,dialogHeight: 300px; dialogWidth:480px;dialogTop:px; dialogLeft:px; edge: Raised; center: Yes; help: No; resizable: No; status: No;scroll:No); 滚动显示公示信息实现滚动显示公示重要通过marquee 元素来实现。marquee 元素可以滚动文字、图片、表格等。marquee 元素重要有如下几种属性。 Direction 属性:此属性重要设立信息滚动方式。 Onmouseout 属性:当鼠标离开marquee 元素时调用this.start()措施使信息继续滚动。 Onmouseover 属性:当鼠标停留在marquee 元素时调用this.stop()措施使信息停止滚动。 ScrollAmount 属性:设立目前信息的滚动速度。1 为最慢。marquee 元素实现滚动信息的代码如下:6.5.3 网站首页实现过程本模块使用的数据表:tb_Video、tb_Sound。1设计环节(1)在该网站中新建一种Web 窗体,将其命名为index.aspx,用于显示网站的首页。(2)在Web 窗体中添加Tabel 表格,用于页面的布局。(3)在Tabel 表格中添加有关的服务器控件,控件的属性设立及其用途如表6.7 所示。表6.7 首页中各控件名称、属性设立及用途2实现代码在主页Web 窗体的加载事件中调用各个功能绑定到DataList 控件上的措施。实现代码如下:例程10 代码位置:光盘TM06studyCommunity index.aspx.csprotected void Page_Load(object sender, EventArgs e)u if (!IsPostBack)v if (SessionUserName != null) /判断顾客与否登录w PanelEntry.Visible = false; /设立登录窗口为不显示PanelHello.Visible = true; /设立显示欢迎词this.Label1.Text = SessionUserName.ToString();elsePanelHello.Visible = false; /设立不显示欢迎词PanelEntry.Visible = true; /设立显示登录窗口cretVideo(); /自定义措施用来绑定最新视频教程creatSound(); /自定义措施用来绑定语音教程U 代码贴士u IsPostBack 措施:获取一种值,该值批示该页与否正为响应客户端回发而加载,或者它与否正被初次加载和访问。v SessionUserName:用来存储顾客登录名。w Visible 属性:获取或设立一种值,该值批示服务器控件与否呈目前页面上。由于公示、视频排行、语音排行、最新视频和最新语音绑定到GridView 控件上的措施类似,这里重要简介最新视频排行的绑定措施。创立自定义措施,命名为cretVideo,在措施中建立SQL 语句,调用数据库操作中的rows 措施并传入SQL 语句。将返回值绑定到GridView 上。实现代码如下:例程11 代码位置:光盘TM06studyCommunity index.aspx.csprotected void cretVideo()trydataOperate mydo = new dataOperate(); /实例数据库操作类string sql = SELECT top 10 * from tb_Video as a inner join tb_Type asb on a.VideoType=b.TypeID ORDER BY VideoID DESC;u gvNewVideo.DataSource = mydo.rows(sql, tb_Video).DefaultView;v gvNewVideo.DataBind() ();catch (Exception error)Response.Redirect(error.aspx); /跳转到错误页面U 代码贴士u GridView.DataSource 属性:表达数据源的对象,数据绑定控件从该对象中检索其数据。v GridView.DataBind:将数据源绑定到GridView 控件。6.6 顾客注册页设计6.6.1 顾客注册页概述浏览者可以通过顾客注册功能注册成为本网站的会员,顾客注册并登录后,可以发布自己制作或收集的视频教程和语音教程,也可如下载自己喜欢的教程。当顾客在首页单击导航栏中“注册”链接按钮或在登录模块中单击“新顾客注册”链接按钮时,将进入顾客注册的页面。顾客注册页面如图6.19所示。6.6.2 顾客注册页技术分析实现顾客注册信息时应注意如下事项:顾客名不能为空、密码必须填写、两次密码输入必须一致、电子邮件地址格式与否对的、身份证号位数与否对的。这些信息的验证都是通过服务器验证控件来实现的。服务器验证控件及其重要属性设立和用途如表6.8 所示。图6.19 顾客注册页面表6.8 服务器验证控件及其重要属性设立和用途在顾客注册信息中的顾客名需要是唯一的,否则在发布留言时也许会浮现两个或多种同样的顾客名。解决这个问题可以通过一种按钮控件来实现,在按钮的单击事件中通过调用isName 措施,调用数据库操作类中的isData 措施并返回一种整数类型的值,来判断顾客添加的顾客名与否在数据库中存在。如果整数值不小于0,阐明顾客已经存在并给出相应的提示信息;等于0,阐明顾客可以添加此顾客名并给出相应的提示信息。IsName 措施代码如下:例程12 代码位置:光盘TM06studyCommunitylogin.aspx.cspublic int isName()int i;/创立SQL语句用来查询顾客表中与否存在符合登录名条件的记录string sql = select count(*) from tb_login where Name= + this.txtName.Text.Trim() + ;return i = mydo.isData(sql);当顾客添加完合法的注册信息后,需要将注册信息保存到数据库中。在保存时需要考虑顾客注册信息的安全性,如果数据库被非法入侵,数据库中的重要信息,如顾客的密码将会完全暴露。为了防止此问题,可以将注册信息中的密码通过加密再存储到数据库中。为了避免顾客忘掉密码,在注册信息里添加了密码提示问题和密码提示答案,顾客可以通过密码提示问题和答案来找回忘掉的密码,这里的密码提示答案也是比较重要的信息,因此也需要通过加密后存储到数据库中。数据加密一般有两种:双向加密和单向加密。双向加密最常用,它的特点是既能加密又能解密;而单向加密只能对数据进行加密,不能对其解密。由于密码信息还需要找回,因此使用双向加密,双向加密通过调用网站业务功能类中的Encrypting 措施实现。密码提示答案可以使用单向加密,单向加密通过MD5 加密实现。MD5 加密是根据指定的密码和哈希算法生成一种适合于存储在配备文献中的哈希密码。其命名空间为System.Web.Security。密码提示答案加密代码如下:FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPassSolution.Text, MD5);6.6.3 顾客注册页实现过程本模块使用的数据表:tb_login。1设计环节(1)在该网站中新建一种Web 窗体,将其命名为login.aspx,用于实现顾客注册。(2)在Web 窗体中添加Tabel 表格,用于页面的布局。(3)在Tabel 表格中添加有关的服务器控件,控件的属性设立及其用途如表6.9 所示。表6.9 顾客注册页面中各控件名称、属性设立及用途2实现代码实现注册功能通过ibtnLogin 控件的Click 事件来实现,Click 事件中需要先调用isName 措施来判断顾客名与否存在,再通过调用add 措施将顾客添加的注册信息添加到数据库中。实现代码如下:例程13 代码位置:光盘 TM 06studyCommunity login.Aspx.csprotected void btnLogin _Click(object sender, EventArgs e)u if (isName() = 0)if (add()/显示提示信息v Page.RegisterStartupScript(true, alert(成功!);elsePage.RegisterStartupScript(false, alert(失败!);elsePage.RegisterStartupScript(false, alert(顾客名已存在!);U 代码贴士u isName():自定义措施判断顾客与否存在。v Page.RegisterStartupScript:在页响应中发出客户端脚本块。isName 措施的实现重要通过数据库操作类中的isData 措施并传入SQL 语句,此措施返回一种整数类型的值,该值不小于0 表达顾客已经存在不可以注册,等于0 表达顾客名不存在可以注册。实现代码如下:例程14 代码位置:光盘 TM 06studyCommunity login.aspx.cspublic int isName()dataOperate mydo = new dataOperate(); /创立dataOperate对象int i;string sql = select count(*) from tb_login where Name= + this.txtName.Text.Trim() + ;return i = mydo.isData(sql);add 措施调用了数据库操作类中的adlData 措施并传入SQL 语句,此措施返回一种布尔类型的值,数据添加成功该值返回true,否则返回false。实现代码如下:例程15 代码位置:光盘 TM 06studyCommunity login.aspx.csprotected bool add()u dataOperate mydo = new dataOperate();string name = txtName.Text; /获取顾客登录名v string pass =Operate.Encrypting(txtPass.Text); /获取登录密码并将其加密string sex;/获取性别if (RadioButtonMan.Checked)sex = 男;elsesex = 女;string trueName = txtTrueName.Text; /获取真实姓名string idCard = this.txtIDCard.Text; /获取电话string passQuestion = this.txtPassQuestion.Text;w string passSolution = FormsAuthentication.HashPasswordForStoringInConfigFile(this.txtPassSolution.Text,MD5);string email = txtEmail.Text; /获取电子邮件string sql = insert into tb_login(Name,Pass,ZName,Sex,Email,IDCard,PassQuestion,PassSolution) values( +name + , + pass + , + trueName + , + sex + , + email + , + idCard + , + passQuestion + , + passSolution +);return mydo.adlData(sql); U 代码贴士u dataOperate mydo = new dataOperate:创立数据库操作类的对象。v Operate.Encrypting(txtPass.Text):调用业务功能类中.Encrypting 措施将顾客密码进行加密。w FormsAuthentication.HashPasswordForStoringInConfigFile 措施:根据指定的密码和哈希算法生成一种适合于存储在配备文献中的哈希密码。为了以便顾客添加顾客名时查看顾客名与否存在,可以先运用ibtnisName 控件进行判断,如果顾客名不存在可再添加其她的注册信息。在ibtnisName 控件的Click 事件中先判断顾客名与否为空,如果为空,给出相应的提示对话框,不为空则调用自定义isName 措施来判断顾客名与否存在并给出相应提示对话框。实现代码如下:例程16 代码位置:光盘 TM 06studyCommunity login.aspx.csprotected void ibtnisName_Click(object sender, EventArgs e)if (txtName.Text.Trim() != )if (isName() 0) /判断顾客名与否存在RegisterStartupScript(yes, alert(顾客名已经存在!);elseRegisterStartupScript(no, alert(可以注册);elseRegisterStartupScript(yes, alert(顾客名不能为空!);6.7顾客登录设计6.7.1 顾客登录概述顾客注册为本网站的会员后,必须进行登录后才干使用上传或下载教程和管理教程的功能。顾客登录界面的运营效果如图6.20 所示。图6.20 顾客登录6.7.2 顾客登录技术分析当顾客登录成功后进行留言时会将发言人保存为顾客的登录名,如果是一般顾客发言人将保存为游客。这里重要应用了Session 对象,运用Session 对象来保存顾客登录名。当顾客发送教程时或在发布留言时可以将Session 对象保存的顾客名添加到数据库中。Session 对象是HttpSessionState 类的一种实例,其功能是用来存储跨网页程序的变量或者对象,Session 对象只针对单一网页使用,也就是说各个连接的机器均有各自的Session 对象,不同的客户端无法互相存取。Session 对象中断于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定的Session 变量的有效时间时,Session 对象就会消失。使用Session 对象寄存信息的语法如下:Session变量名= 内容;Session 对象常用属性及阐明如表6.10 所示。表6.10 Session 对象常用属性及阐明(1)Contents 属性获取对目前会话状态对象的引用。语法:public HttpSessionState Contents get; 属性值:目前的HttpSessionState。(2)Item 属性获取或设立会话值。该属性可重载。它有如下两种格式: 按数字索引获取或设立会话值。语法:public Object this int index get; set; index:会话值的数字索引。属性值:存储在指定索引中的会话状态值。 按名称获取或设立会话值。语法:public Object this string name get; set; name:会话值的键名。属性值:带指定名称的会话状态值。(3)TimeOut 属性获取并设立在会话状态提供程序终结会话之前各祈求之间所容许的时间(以分钟为单位)。语法:public int Timeout get; set; 属性值:超时期限(以分钟为单位)。在应用程序开发过程中,要更改Session 对象的有效期限,只要设定TimeOut 属性即可。TimeOut属性的默认值是20 分钟。6.7.3 顾客登录实现过程本模块使用的数据表:tb_login。1设计环节(1)在该网站中新建一种Web 顾客控件,将其命名为entry.ascx,用于实现顾客登录。(2)在Web 窗体中添加Tabel 表格,用于页面的布局。(3)在Tabel 表格中添加有关的服务器控件,控件的属性设立及其用途如表6.11 所示。表6.11 登录顾客控件中各控件名称、属性设立及用途2实现代码登录功能的实现需要先判断验证码与否对的,验证码对的才需要使用数据库操作类中的row 措施来判断顾客输入的顾客名和密码与否对的。实现代码如下:例程17 代码位置:光盘 TM 06studyCommunity entry.ascx.csprotected void imgbtnLanding_Click(object sender, EventArgs e)string name = txtName.Text; /将登录名存储到变量中string pass = Operate.Encrypting(txtPass.Text); /将密码加密并存储到变量中string yzm = txtYzm.Text; /将验证码存储到变量中u if (SessionCheckCode.ToString().Equals(yzm) /判断验证码与否对的trystring sql = select count(*) from tb_login where Name= + name + and Pass = + pass + ;int i = mydo.isData(sql); /调用数据库操作类中的isData措施判断顾客与否存在if (i 0)sql = select * from tb_login where Name= + name + ;v OleDbDataReader odr = mydo.row(sql); /返回一条记录odr.Read();if (odrlock.ToString() = 0) /判断顾客与否被锁定SessionUserName = name; /将顾客登录名保存到Session中Response.Redirect(index.aspx);elsePage.RegisterStartupScript(false, alert(此顾客已被锁定!);elseResponse.Write(alert(密码或顾客名错误!);catch (Exception ex)Response.Write(ex.Message.ToString();elsePage.RegisterStartupScript(false, alert(验证码错误!);U 代码贴士u SessionCheckCode:用来存储自动生成的验证码。v OleDbDataReader 对象:从数据源读取数据行的只进流的措施。w Response.Redirect 措施:获取或设立重定向URL。6.8 发布并管理教程6.8.1 发布并管理教程概述网站的会员顾客可以将自己制作的或从其她途径收集到的教程发布到网站上,供其她顾客共享,还可以对自己发布的教程进行管理,以及查看其她顾客的留言。当顾客登录成功后单击“发布教程”按钮,将进入到发布教程页面,如图6.21 所示。6.8.2 发布并管理教程技术分析 使用DropDownList 控件绑定数据库中的数据在发布教程时需要顾客选择语言类型,在设计数据库时已经把语言类型单独放到一种数据表中,可以运用此表中的数据,将其绑定到DropDownList 控件上,这样可以节省开发时间和避免手动添加造成的错误。DropDownList 控件后台代码如下:图6.21 发布教程页面例程18 代码位置:光盘 TM 06studyCommunity lissuance.aspx.csprotected void bindLanguage()string sql = select * from tb_Type ;/调用数据库操作类中的rows措施并将数据源绑定到DropDownList控件上this.ddlLanguage.DataSource = mydo.rows(sql, tb_Type).DefaultView;this.ddlLanguage.DataBind();在前台还需要设立DropDownList 控件的DataTextFiield 属性和DataValueField 属性。DataTextField属性表达DropDownList 控件的显示文本,DataValueField 属性表达DropDownList 控件的值。DropDownList 控件前台代码如下:/asp:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!