logo资料库

ASP.NET动态网页设计大作业报告.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
ASP.NET 动态网页设计大作业报告 第 16 组 计算机二班 李明亮 2015011453
ASP.NET 动态网页设计大作业报告 第 16 组 李明亮 学号:2015011453 计算机二班 1、 课题选择:ASP.NET 购物网站设计。 2、 个人完成部分:网站首页,商品详情页,登录,注册界面部分(页面背景橙 黄色部分)。 3、 实现的功能: 网站首页从数据库导入数据,并展示。 网站首页左上角一个 logo,属于 Imagesbutton,右上角两个 button,正 中一个 gridview 控件展示商品信息,并可跳转到商品详情页。右侧是一个个 人账户详细信息。 商品详情页通过网站首页传过的参数展示商品详细信息。 详情页左上角一个 logo,属于 ImageButton,右上角两个 button,左边 是商品缩略图展示,正中是商品详细信息,右侧是猜你喜欢,由于数据库不 健全,所以并没有数据展示。 登录通过与数据库连接验证已有帐号并且保持登录状态。 注册通过对数据库表增加行来实现账号增加并且保持登录。 注册页面用户上传头像部分由于数据库原因未完成。 4、 具体实现方法: a、数据库连接并读写数据: 连接数据库用了两种方法。一种是用现有的控件 SqlDataSource 与数据库 建立连接,但这种方法比较局限,只能对数据库中一个表或者表的某一部 分进行操作。另一种方法是利用对象与数据库建立动态链接。代码如下: string constr = WebConfigurationManager.ConnectionStrings["goodsConnectionStrin g"].ConnectionString; SqlConnection con = new SqlConnection(constr); using (con) { con.Open(); SqlCommand cmd = new SqlCommand("select * from users where name='"+id+"'and password='"+psw+"'", con); SqlDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) flag = true; con.Close(); } 这段代码是用于登陆时从数据库中查询账户信息的一段代码。Constr 是连 接字符串,con 是用于与连接字符串相匹配的数据库连接的对象,cmd 是 执行 sql 语句的对象。就此段代码来讲,cmd 执行的 sql 语句就是 select * from users where name='id'and password='psw'。Reader 是读取执行 cmd 命令之后的数据,hasrows 是判断有无数据的属性,返回值是 true 或 false。
b、 页面之间保持登录: 具体代码: Session["name"] = TextBoxLogin_account.Text; Response.Redirect("index_login.aspx"); String name = Session["name"].ToString(); 在登录页面中,当登陆成功时,设置一个 session 值,保存该账户的登录 信息。当打开需要身份信息的页面时可以直接获得 session 的值,查询到 该账户的登录信息,获得权限查询数据库中的相关数据。 c、数据库数据的改写: con.ConnectionString = constr; con.Open(); SqlCommand cmd = new SqlCommand("insert into users values ('"+id+"','"+psw+"','"+ma+"','"+icon+"','"+levels+"')", con); cmd.ExecuteNonQuery(); cmd.CommandText = "select ID from users where name='" + id+"'"; int identify=0; SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { identify = dr.GetInt32(dr.GetOrdinal("ID")); } con.Close(); con.ConnectionString = constr; con.Open(); cmd.CommandText = "insert into user_detail values ('" + Convert.ToString(identify) + "','" + id + "','0','0','0','"+""+"','"+""+"','"+""+"','"+""+"','"+""+"','"+""+ "','"+""+"','"+""+"','0','"+""+"','0','"+""+"','0','"+""+"','0','" +""+"','0','"+""+"')"; cmd.ExecuteNonQuery(); Session["name"] = id; Response.Redirect("index_login.aspx"); 该段代码前半部分是读取数据,同 a,后半部分是写入注册信息,与前面 不同的是 cmd 的命令语句有所改变(即 sql 语句改变),由 select 语句换 为 insert into,delete,update 语句。执行该类语句并不需要数据,所以直 接调用 cmd 的 ExecuteNonQuery 方法,该类语句即得到执行。 5、 各页面详细构成: (1)、index 页面。
页面主要分为三大部分,最上面包括左上角的 logo 和搜索商品的入口; 中间分为两个部分,左面是商品,右面是用户的详细信息;最下面就是中国 石油大学(北京)的标签。 由于 index 分为登陆前和登陆后,所以 index 页面我设计了两个,区别就 是一个带有登录信息,另一个是以游客身份访问。在两个页面展示详细信息 的时候也是有区别的,未登录的时候头像是默认的头像,对应数据库存储 blank.jpeg,该文件在 Images 文件夹下 UserIcon 内,剩下的两个 button 就是 登录和注册的接口。登陆后的 index 界面在用户详细信息的地方就有具体的 用户头像,两个 button 也变成了退出登录和购物车的入口。 (2)、商品详情页(detail.aspx) 页面主要分为三大部分,最上面包括左上角的 logo 和右上角的两个 button 和一个 HyperLink;中间也分为三个部分,左边是商品的缩略图,中间 是商品的详细信息(Gridview),在这个 gridview 下面还有两个 button,一个 是立即购买,直接连接到支付界面,另一个是加入购物车,直接连接到购物 车界面,右边是猜你喜欢,也是一个 gridview,由于数据库数据不足,所以 这个 gridview 并没有绑定数据源。 同样的,detail 页面也分为未登录和登录后的页面。未登录时右上角的 HyperLink 控件和账户详细信息连接到登陆界面,加入购物车和立即购买也是 连接到登陆界面。登陆后所有控件正常。 (3)、登录界面(login.aspx) 除图片所示外,左上角有一个 logo,右上角有个 button 用于返回首页。 登录的实现: if (TextBoxLogin_account.Text == "") { Label1.Text = "用户名不能为空!"; return;
} if (TextBox1.Text == "") { } string tem = Label1.Text + "密码不能为空!"; Label1.Text = tem; return; string id = TextBoxLogin_account.Text;//得到用户输入的用户名 string psw = TextBox1.Text;//得到用户输入的密码 Boolean flag=false;//默认登录失败 string constr = WebConfigurationManager.ConnectionStrings["goodsConnectionString"].ConnectionString;// 连接字符串 SqlConnection con = new SqlConnection(constr);//利用连接字符串定义连接对象 using (con) { con.Open();//建立连接 SqlCommand cmd = new SqlCommand("select * from users where name='"+id+"'and password='"+psw+"'", con);//从数据库中查询用户名为id,密码为psw 的数据 SqlDataReader reader = cmd.ExecuteReader();//读取数据 if (reader.HasRows)//如果存在数据说明登录成功 flag = true; con.Close(); } if (flag==false) { } Label1.Text = "账号或密码错误!"; return; Session["name"] = TextBoxLogin_account.Text;//确定登录状态 Response.Redirect("index_login.aspx"); 主要思路是通过从数据库中查询用户输入的 id 和密码,如果能够查询到 数据则登录成功,如果查询不到则登录失败。 (4)、注册界面(regist.aspx)
除了图片所示外,左上角还有一个 logo,右上角还有一个返回首页的 button。 注册的实现: if (TextBox_regist.Text != TextBox2_regist.Text) { } Label2.Text = "两次密码不一致!"; return; else { string id = TextBox1_regist.Text; string psw = TextBox2_regist.Text; float ma = 0;//初始金额为0 string icon=@"Images\UserIcons\blank.jpeg";//默认头像为blank.jpeg int levels = 0; Boolean flag = true; string constr =
WebConfigurationManager.ConnectionStrings["goodsConnectionString"].ConnectionString; SqlConnection con = new SqlConnection(constr); using (con) { con.Open();//建立连接 SqlCommand cmd = new SqlCommand("select * from users where name='" + id + "'", con);//查询用户名是否存在 SqlDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) flag = false; con.Close(); } if (flag == false) { } Label2.Text = "该用户名已被注册!"; return; else { con.ConnectionString = constr; con.Open();//建立连接 SqlCommand cmd = new SqlCommand("insert into users values ('"+id+"','"+psw+"','"+ma+"','"+icon+"','"+levels+"')", con);//向数据库用户主要信息表里 添加一行数据 cmd.ExecuteNonQuery();//执行sql语句 cmd.CommandText = "select ID from users where name='" + id+"'"; int identify=0; SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { } identify = dr.GetInt32(dr.GetOrdinal("ID"));//获得数据库生成的id con.Close(); con.ConnectionString = constr; con.Open(); cmd.CommandText = "insert into user_detail values ('" + Convert.ToString(identify) + "','" + id + "','0','0','0','"+""+"','"+""+"','"+""+"','"+""+"','"+""+"','"+""+"','"+""+"','"+""+"', '0','"+""+"','0','"+""+"','0','"+""+"','0','"+""+"','0','"+""+"')";//向数据库中用户详细 信息表中添加一行数据 cmd.ExecuteNonQuery(); Session["name"] = id;//默认登录成功 Response.Redirect("index_login.aspx");
} } 主要思路是从数据库中查询用户名是否已被注册,如果未注册则向数据库用 户主要信息和用户详细信息中各添加一行数据,同时保证两个表中同一行数据的 id 是相同的。 6、 代码数量: 不计控件所占行数,四个页面总代码数为 152。
分享到:
收藏