《网站相册系统》PPT课件.ppt
《《网站相册系统》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《网站相册系统》PPT课件.ppt(69页珍藏版)》请在三一办公上搜索。
1、第13章 网站相册系统13.1 系统概述,在以信息分享、用户参与为主题的Web2.0时代,越来越多的各种类型的传统网站升级为能够实现用户参Web2.0型的网站。本章通过实现一个简单的网站相册系统,向读者介绍使用Microsoft Visual Studio 2008在ASP.NET 3.5平台下开发Web 2.0应用程序的关键技术。尤其是利用Microsoft Visual Studio 2008提供的功能强大的内置控件,能帮助开发人员更加简便地实现Web 2.0中强调的各种用户参与、用户上传内容的功能。通过本章的学习,读者能够掌握如何用ASP.NET实现对文件系统的各种操作。,13.2 需
2、求 分 析,本例要开发一个简单的相册管理系统,对系统提出的需求是实现网站相册系统的核心功能。系统需要实现下列功能:(1)匿名访客可以浏览网站的全部图片内容。(2)注册用户可以建立不同的相册。(3)注册用户可以上传照片到自己的相册并实现对相册进行管理。(4)网站维护人员如发现有人上传非法内容可以进行删除。这里的删除功能需要实现级联删除。,13.2 需 求 分 析,由需求分析所得结果,可将该系统的功能分为前台和后台两个功能模块,每个模块实现的主要功能如下:前台:存在两种用户角色匿名访客:浏览图片注册用户:登录、密码修改、用户信息管理、创建相册、相册管理、相册查询、上传图片、图片查询 后台:网站管理
3、员:登录、密码修改、用户管理、相册管理、图片管理,13.3 用 例 图,根据前面的需求分析,设计网站相册系统的用例图,如图13-1所示。,13.6 数据库结构,本例数据库设计如图13-3所示。,13.7 开发环境搭建,1、创建网站userPhoto2、创建数据库在网站目录App_Data下创建数据库photoData.mdf在数据库中添加表注册用户表(userinfo)、用户相册表(userPhotoSet)、用户相片表(userPhotos)、管理员表(adminuser)在表中添加字段,13.8 数据访问层的实现,本例的主要代码是使用ASP.NET控件实现的,但是对于访问数据库进行数据的插
4、入、删除和更新等操作,使用ADO.NET类库直接执行SQL语句更为方便。在本系统开发过程中,引入了一个SqlHelper类,用以简化数据库相关操作的编程实现。3、创建SqlHelper类:在网站目录App_Code下创建类SqlHelper.cs。(如果网站中没有App_Code 目录,在网站名称处点击右键,选择添加ASP.NET文件夹,选择App_Code 即可),13.9 前台程序代码,相册系统前台要实现的功能为:访问者可以浏览其他注册用户上传到网站的公开相册和相片信息,注册后可以上传自己的相片到网站上面。前台主要包括下面几个文件。Default.aspx:相册系统首页。userReg.a
5、spx:用户注册页面。userMain.aspx:用户首页,包括用户信息管理和相册管理功能。addPhotSet.aspx:添加相册。modifyPhotosInfo.aspx:修改相册信息。photoAdmin.aspx:相册相片管理及上传。,13.9.1 系统首页实现,1、创建Default.aspx页面页面功能:登录、显示最新创建相册,最新上传相片,显示相册列表(使用DataList控件)在页面上插入一个隐藏线格式的表格,用于页面布局在上一步骤插入的表格中,向左上方单元格插入一个Login控件,从工具箱中拖入3个DataList控件到页面中,在每一个DataList控件上方插入一个Sql
6、DataSource数据源控件,页面布局设置为如图所示,配置第一个SqlDataSource1数据源,保存连接字符串名字为“photoConnectionString”,进入“配置Select语句”界面,因为本例需要实现的查询语句相对复杂,无法使用开发环境提供的简单查询语句生成工具生成,这里选择“指定自定义SQL语句或存储过程”选项,单击“下一步”按钮在“定义自定义语句或存储过程”对话框的“SQL语句”文本框中输入查询语句:“select top 10*from userPhotoSet where photoSetState=0 order by createTime desc”,完成数据源
7、的配置。配置SqlDataSource2数据源,将SQL语句配置为“select top 10*from userPhotos order by photoId desc”,其他步骤选择为与上一个数据源一样的配置。,配置SqlDataSource3数据源,设置数据源为从相册表中读取数据,设置排序规则为按编号降序排列设置3个DataList控件的数据源为前面添加的对应数据源控件,将显示最新创建相册的DataList控件的模板代码设置如下:(),将显示最新上传相片的DataList控件的模板代码设置如下:width=160 height=160 alt=/(),将显示相册列表的DataList控件
8、的模板代码设置如下:相册名称 创建用户 创建时间 相册状态 关键词,绑定表达式 区别:1.eval是只读数据,bind是可更新的 2.当对次表达式操作时候,必须用Eval 如Eval 单向绑定:数据是只读的Bind 双向绑定:数据可以更改,并返回服务器端,服务器可以处理更改后的数据,如存入数据库.,设置登录控件DestinationPageUrl属性为userMain.aspx,重载“Authenticate”事件protected void Login1_Authenticate(object sender,AuthenticateEventArgs e)/获得输入用户名与密码信息 stri
9、ng username=Login1.UserName.Replace(,);string userpass=Login1.Password.Replace(,);/生成程序语句 string sql=select count(*)from userinfo where username=username and userpass=userpass and isLock=0;SqlParameter param=new SqlParameter(username,SqlDbType.Char),new SqlParameter(userpass,SqlDbType.VarChar);param
10、0.Value=username;param1.Value=userpass;/执行查询于语句,得到查询结果 int usercount=(int)(sqlHelp.ExecuteScalar(sqlHelp.ConnectionStringLocalTransaction,CommandType.Text,sql,param);,if(usercount 0)/查询成功保存用户名 e.Authenticated=true;Sessionusername=username;sql=update userinfo set letLoginTime=getdate()where username=
11、username;SqlParameter sqlParams=new SqlParameter new SqlParameter(username,SqlDbType.VarChar);sqlParams0.Value=username;sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction,CommandType.Text,sql,sqlParams);,13.9.2 用户注册页面,2、创建页面“userReg.aspx”页面功能:实现注册,注册成功后应回到Default.aspx页面从标准工具区中拖放一些文本框、复
12、选框和按钮控件,设置好控件位置,完成注册界面的开发将两个密码输入框的文本模式设置为“Password”在前面四个文本框后面分别插入一个RequiredFieldValidator控件,用于验证用户输入,设置各个验证控件的ControlToValidate属性值为对应的文本框控件名。并设置ErrorMessage属性值为“*”在确认密码的必填验证控件后面插入一个比较验证控件,设置比较验证控件的ControlToCompare属性为确认密码文本框ID,然后设置ControlToValidate属性为输入密码文本框ID,设置ErrorMessage属性值为“两次密码输入不一致”,13.9.2 用户注
13、册页面,打开首页,在登录控件下插入一个HyperLink控件,设置NavigateUrl属性为注册页面,Text属性为“注册”.双击“注册”按钮,编写如下代码,完成用户注册功能:,protected void Button1_Click(object sender,EventArgs e)string sql=select count(*)from userinfo where username=username;SqlParameter sqlParams=new SqlParameter new SqlParameter(username,SqlDbType.VarChar);sqlPar
14、ams0.Value=txtUserName.Text;if(int)sqlHelp.ExecuteScalar(sqlHelp.ConnectionStringLocalTransaction,CommandType.Text,sql,sqlParams)0)Response.Write(用户名已经存在!);else sql=insert into userinfo(username,userpass,regTime,letLoginTime,isLock,eMail,isOpen,userPost);sql+=values(username,userpass,regTime,letLogi
15、nTime,isLock,eMail,isOpen,userPost);,sqlParams=new SqlParameter new SqlParameter(username,SqlDbType.VarChar),new SqlParameter(userpass,SqlDbType.VarChar),new SqlParameter(regTime,SqlDbType.DateTime),new SqlParameter(letLoginTime,SqlDbType.DateTime),new SqlParameter(isLock,SqlDbType.Bit),new SqlParam
16、eter(eMail,SqlDbType.VarChar),new SqlParameter(isOpen,SqlDbType.Bit),new SqlParameter(userPost,SqlDbType.VarChar);sqlParams0.Value=txtUserName.Text;sqlParams1.Value=txtUserPass.Text;sqlParams2.Value=System.DateTime.Now;sqlParams3.Value=System.DateTime.Now;sqlParams4.Value=0;sqlParams5.Value=txtEMail
17、.Text;sqlParams6.Value=cbIsOpen.Checked;sqlParams7.Value=txtPost.Text;if(sqlHelp.ExecuteNonQuery(sqlHelp.ConnectionStringLocalTransaction,CommandType.Text,sql,sqlParams)0)Response.Write(注册成功);else Response.Write(数据库操作失败);,13.9.3 用户及相册管理页面,3、创建页面“userMain.aspx”页面功能:修改密码,修改用户信息,显示相册列表在页面插入布局表格。在“修改密码”
18、文字下方插入一个“ChangePassword”控件在修改密码部分下面插入一个表格,用于实现用户信息修改功能在布局表格下方插入一个GridView控件和一个HyperLink控件,为GridView控件创建数据源,在“配置Select语句”界面中,选择从“userPhotoSet”表中读取所有的数据,设置查询条件为用户名等于保存在Session中的用户名在列编辑对话框中,只保留相册名称、创建日期、关键词、相册状态四列数据,修改各列的HeaderText属性为对应的中文文字,,选中GridView控件,在属性面板重载RowDataBound方法,在RowDataBound方法中输入如下代码,将状
19、态显示转换为中文:protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs e)if(e.Row.RowType=DataControlRowType.DataRow)if(e.Row.Cells3.Text=1)e.Row.Cells3.Text=正常;else e.Row.Cells3.Text=锁定;e.Row.Cells4.Enabled=false;e.Row.Cells5.Enabled=false;,在创建GridView控件时,必须先为GridView的每一行创建一个GridViewRow对
20、象,创建每一行时,将引发一个RowCreated事件;当行创建完毕,每一行GridViewRow就要绑定数据源中的数据,当绑定完成后,将引发RowDataBound事件。如果说我们可以利用RowCreated事件来控制每一行绑定的控件,那么我们同样可以利用RowDataBound事件来控制每一行绑定的数据,也就是让数据如何呈现给大家。RowType可以确定GridView中行的类型,RowType是枚举变量DataControlRowType中的一个值。RowType可以取值包括 DataRow、Footer、Header、EmptyDataRow、Pager、Separator。很多时候,我
21、们需要判断当前是否是数据行,通过如下代码来进行判断:if(=DataControlRowType.DataRow),RowDeleting和RowDeleted事件 RowDeleting发生在删除数据之前,RowDeleted发生在删除数据之后。使用RowDeleting事件,可以在真正删除前再次确认是否删除,可以通过设置GridViewDeleteEventArgs.Cancel=True来取消删除;也可以用于判断当前数据库记录数,如果只剩一条记录且数据库不能为空则提示并取消删除操作。使用RowDeleted事件,可以在删除后,通过GridViewDeletedEventArgs的Exce
22、ption属性判断删除过程中是否产生异常,如无异常,则可以显示类似于”1 Records deleted”之类的提示信息。,Example:protected void GridView1_RowDeleting(object sender,GridViewDeleteEventArgs e)/取得当前行号,并取得当前行的GridViewRow对象 int index=e.RowIndex;GridViewRow gvr=GridView1.Rowsindex;/取得当前行第二个单元格中的文字 str1=gvr.Cells1.Text;/进行提示 Message.Text=您将删除一个用户,其
23、姓名为+str1;protected void GridView1_RowDeleted(object sender,GridViewDeletedEventArgs e)/如果没有产生异常,则提示成功删除,否则提示删除失败 if(e.Exception=null)Message.Text+=您成功删除了+str1;else Message.Text+=删除失败,请联系管理员;,Keys集合 Keys集合中一般存放的是数据源中的主键字段的key和value的对应值,如果主键由多个字段组成,那么Keys为每个键字段添加其字段名称和值。,选中“创建相册”连接,设置NavigateUrl属性为“ad
24、dPhotoSet.aspx”在Page_Load方法中加入如下代码,实现用户不登录不能访问本页面功能:if(Sessionusername=null)Response.Redirect(Default.aspx);重载ChangPassword1控件ChangingPassword事件,添加代码,protected void ChangePassword1_ChangingPassword(object sender,LoginCancelEventArgs e)e.Cancel=true;/获得次输入的新旧密码,及登陆时保存的用户名 string oldPassword=ChangePas
25、sword1.CurrentPassword;string newPassword=ChangePassword1.NewPassword;string username=Sessionusername.ToString();/查询数据库,验证旧密码是否正确 string sql=select count(*)from userinfo where username=username and userpass=userpass;SqlParameter param=new SqlParameter(username,SqlDbType.Char),new SqlParameter(userpa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网站相册系统 网站 相册 系统 PPT 课件
链接地址:https://www.31ppt.com/p-5590378.html