黑龙江大学
实 验 报 告
黑龙江大学教务处
1、设计思想
本次实验旨在使用Asp.Net技术设计开发一个具有用户登录、注册、文章评论、以及购物的网站。
用户登录模块:用户将登录的信息表单填写好后提交给后台程序,通过查询数据库查询验证用户是否合法,如果合法则将用户名保存在Session中否则显示登录失败的信息。
注册模块:用户填写表单,将表单填写后提交后台程序,首先验证用户是否已经存在,如果不存在则向数据库中插入记录并跳转到注册成功的页面,并设置Session中用户名,成为已经登录的状态。否则显示用户已经存在的信息。
文章评论模块:如果用户尚未登录,则不能评论,只要不显示输入框、提交按钮即可;如果用户已经登录,则显示输入框,提交按钮,此时用户可以进行评论。
购物模块:当用户进行访问时,首先应对是否已经登录进行判断,如果用户尚未进行登录则不显示购物车、加入购物车等按钮只能浏览商品,如果已经登录,则显示购物车、加入购物车的按钮等。加入购物车时将商品的信息全保存在Session中。点击结算时,将页面转换到OrderSubmit.aspx即可。
2、控件的使用
用户登录模块:用户登录模块主要运用了标准控件中的TextBox、Button,用于输入用户名,用户密码和提交时的按钮;
验证控件中使用了RequiredFieldValidator,以确保用户登录时必须填写用户名和密码。
注册模块:标准控件中使用了TextBox,用户注册时需要填写的基本信息;Button,注册按钮;
验证控件中使用了RequiredFieldValidator,主要用于验证用户名和用户密码项;CompareValidator验证密码与密码确认是否一致;
RegularExpressionValidator用于验证用户输入的电子邮箱的格式是否正确。
自定义控件CustomValidator验证用户输入的密码复杂度长度是否足够。
文章评论模块:主要使用到了标准的控件中的TextBox,用于用户输入评论内容;Button,用于提交用户输入的评论,Label显示用户的评论内容。AdRotator显示一个广告内容。
购物模块:主要使用了标准控件中的Button,用于提交购物车中所选择的商品,Label显示购物车的所有商品。
3、网页布局设计
为了各个网页的一致布局能够精确的控制,网站采用表格布局的方法。如下为各个网页的布局说明:
首页:Default2.aspx
主要包含用户登录的模块以及其他链接,如下图所示为首页的整体布局。
用户的注册页面:Register.aspx
主要包含用户注册的模块,注册的表单含有用户名、用户密码、密码确认、QQ号、邮箱、地址、个人资料(选填),提交按钮等
简要布局模式如下所示:
Default.aspx页面:主要包含用户的文章展示和用户评论模块
简要布局如下图所示:
Shoping.aspx页面:
主要包含购物的功能模块,页面的布局同样采用table布局,用户未登陆时,没有购物车等信息,因此该页面在用户登录后与未登陆时显示效果不一样,但整体布局相差不大。如下是网页的整体布局:
4、编码及流程图
(1)用户登录时首先应该验证用户是否已经存在,其次还要验证用户密码是否正确,具体的流程图如下所示:
用户登录的关键代码如下所示,所在的文件为Default2.aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["username"] != null)
{
Label1.Text = "欢迎您:" + (String)Session["username"];
}
else if (Session["username"] == null && TextBox1.Text.Length == 0)
{
HttpCookie hcusername = Request.Cookies["username"];
HttpCookie hcuserpassword = Request.Cookies["userpassword"];
if (hcusername != null)
TextBox1.Text = Server.HtmlEncode(hcusername.Value);
if (hcuserpassword != null)
TextBox2.Text = Server.HtmlEncode(hcuserpassword.Value);
CheckBox1.Checked = true;
}
}
private bool check()
{
String name = TextBox1.Text;
String password = TextBox2.Text;
bool ret = false;
if ((name != null && name.Length > 0) && (password != null && password.Length > 0))
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("siwen.mdb"));
OleDbCommand cmd = new OleDbCommand("select * from user1 where name='" + name + "'", conn);
//打开数据库连接
conn.Open();
//建立DataReader对象
OleDbDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
String psw = (String)dr["password"];
if (psw == password)
{
Session["username"] = name;
ret = true;
}
else
{
RequiredFieldValidator2.ErrorMessage = "密码错误!";
RequiredFieldValidator2.IsValid = false;
RequiredFieldValidator2.Visible = true;
}
}
else
{
RequiredFieldValidator1.ErrorMessage = "不存在的用户!";
RequiredFieldValidator1.IsValid = false;
RequiredFieldValidator1.Visible = true;
}
conn.Close();
}
return ret;
}
(2)用户注册时对用户所输入的信息获取后插入数据库中即可。用户注册时对数据库的操作、点击提交按钮后执行的函数代码如下所示,所在的文件为register.aspx.cs:
protected void Button2_Click(object sender, EventArgs e)
{
if (CustomValidator1.IsValid == false) {
CustomValidator1.Visible = true;
return;
}
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("siwen.mdb"));
//建立Command对象
string strSql;
strSql = "insert into user1([name],[password],[qq],[email],[address],[information]) values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "')";
OleDbCommand cmd = new OleDbCommand(strSql, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Session["username"] = TextBox1.Text;
Response.Redirect("RegisterSucess.aspx");
}
(3)用户的文章展示,首先要获取用户所输入的内容,然后追加到Label的末尾即可。流程图如下所示:
以及用户评论功能实现的代码如下所示:
static String ltext="";
static int i=1;
protected void Page_Load(object sender, EventArgs e)
{
if (i != 1) {
Label1.Text = ltext + "</table>";
}
}
protected void Button2_Click(object sender, EventArgs e)
{
String s = TextBox1.Text;
s=s.Replace("\n", "<br>");
if (i == 1)
{
ltext = "<table><tr><td style=\"width:224px;height:30px;border-bottom-style:solid; border-bottom-color:Green; border-bottom-width:1px;\"><span style=\"font-size: 10pt;color: #993300;\">1楼</span>:<br />" + s + "</td></tr>";
}
else
{
ltext += "<tr><td style=\"width:224px;height:30px;border-bottom-style:solid; border-bottom-color:Green; border-bottom-width:1px;\"><span style=\"font-size: 10pt;color: #993300;\">" + i + "楼:</span><br />" + s + "</td></tr>";
}
Label1.Text = ltext+"</table>";
TextBox1.Text = "";
i++;
}
}
(4)购物车的功能:加入购物车的功能为Button4_Click主要的代码如下所示:
protected void Button4_Click(object sender, EventArgs e)
{
Goods book;
if (Session["goods"] == null)
book = new Goods();
else
book = (Goods)Session["goods"];
if (select1.Checked)
{
book.addGoods("1", 1);
select1.Checked = false;
}
if (select2.Checked)
{
book.addGoods("2", 1);
select2.Checked = false;
}
if (select3.Checked)
{
book.addGoods("3", 1);
select3.Checked = false;
}
if (select4.Checked)
{
book.addGoods("4", 1);
select4.Checked = false;
}
if (select5.Checked)
{
book.addGoods("5", 1);
select5.Checked = false;
}
if (select6.Checked)
{
book.addGoods("6", 1);
select6.Checked = false;
}
if (select7.Checked)
{
book.addGoods("7", 1);
select7.Checked = false;
}
if (select8.Checked)
{
book.addGoods("8", 1);
select8.Checked = false;
}
Session["goods"] = book;
init_label2();
}
显示购物车的函数为void init_label2(),其实现的流程图如下所示:
主要的代码如下所示:
protected void init_label2() {
String str = "";
int i;
double total = 0;
if (Session["goods"] == null)
{
str += "<table style=\"width: 277px; height: auto;background-color:#e3d8cf\">";
str += "<tr><td colspan=\"2\">您尚未选购商品</td></tr></table>";
Label2.Text = str;
Label3.Text = "0";
return;
}
Goods book=(Goods)Session["goods"];
str += "<table style=\"width: 277px; height: auto;background-color:#e3d8cf\">";
for (i = 0; i < book.getCount(); i++)
{
str += "<tr><td style=\"color:#4ca547\">" + book.getGoodsName(i) + "</td>";
str += "<td style=\"color:#4ca547\">" + book.getGoodsNum(i) + "</td></tr>";
}
str += "</table>";
Label2.Text = str;
//总价值
for (i = 0; i < book.getCount(); i++)
{
total += (double)book.getGoodsNum(i) * book.getPrice(i);
}
Label3.Text = Convert.ToString(total);
}
5、测试
首页运行效果如下所示:
注册页面的运行效果:
查看数据库文件,可以看到已经插入一条记录:
文章与评论的运行效果如下所示:
商品的展示与购物车运行效果如下所示:
点击某个商品后,商品的详细信息展示如下图所示:
订单提交成功的页面效果如下所示:
通过这学习研究,我懂得了怎样去开发一个网站,以及网站的运行机制。包括用户注册、购物车、通过Asp.net操作数据库等。在对数据库进行操作的时候遇到了很多的问题,例如插入时总是会抛出异常,后来通过查找资料,原来插入的格式有问题,将strSql = "insert into user1(name ,password ,qq , email, address,information)values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "')"; 改成为strSql = "insert into user1([name],[password],[qq],[email],[address],[information]) values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "')";后就能够成功的插入记录了,因此学习要做到一丝不苟,坚持方能成功。
学生实验报告学院:软件与通信工程学院课程名称:大学物理实验专业班级:通信工程111班姓名:学号:学生实验报告一、实验综述1、实验目…
大学生暑假社会实践报告3000字今年这个长长的暑期激起了我要参加社会实践的决心,其实自己很早时便有这种想法了,我想依靠自己的勤劳双…
实验七实验报告表实验名称学号姓名班级实验时间实验报告表71网络中实现通信互联的主要设备和其功能实验报告表72域名解析的IP路由通讯…
河南城建学院网站建设技术实验报告实验名称用户名密码登录切图制作网站专业班级软件工程姓名吴春龙学号084413147实验日期20xx…
20xx13137028陈旻实计科1301ASPNET网站开发实验指导老师柯鹏学院计算机学院学生姓名陈旻实学生学号20xx1313…
实验一1实验要求基本的网页制作2目的掌握HTML与ASPX基础联系制作基本的ASPNET网页使用VS20xx提供的导航控件并结合站…
实验一环境配置与sql操作学号姓名日期1实验目的熟悉VS20xx开发环境复习C和SQL20xx相关操作2实验环境WindowsXP…
燕山大学Net程序设计实验报告学院信息科学与工程学院年级专业09级信息安全1班指导教师崔永强学生学号090104070017学生姓…