Asp搭建购物商城网站——综合实训报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实训报告
课程名称《程序设计》学生所在系部计算机系
专业班级软件集成
学生姓名和禄翔
学号 30902001909
指导教师武建强
实训地点软件开发实训室
实训成绩
一、实训题目
运用所学、SQL及相关,做一个关于购物的动态网站
二、实训目的
(1)通过做一个购物的动态网站,能够对编程语言、SQL数据库的应用得到巩固和提高。
(2)了解Asp,net支持的语言及其工作原理。
(3)掌握所用类对应的HTML标记和语法,以及网站中各种对象的定义和应用。
(4)了解创建Web窗体的方法。
(5)学会定义数据库连接字符串,前台和数据库连接。
三、实训内容及各个模块的实现
1本网站是一个关于网上买书的网站,所能实现的基本功能有如下:(1)网站会员的注册、登陆,员工的登陆以及实现对用户名和密码的基本检验和找回密码。
(2)商品模块是一个核心模块,用户可以根据商品首页提供的图书列表订购自己想要的书,并且可以对所选的书进行全面的了解,如:该书的目录、书的作者、书的价格、书的简单概述以及其他会员对本书的评价。
(3)购物车是网站的一个重要模块,用户选好书之后点击购买,系统会将书先放到购物车中,在购物车中也可以对不想要的书进行删除,而且购物车具有计算费用的功能。
(4)网站另外一个重要的模块是收银台。
当用户选定所需书籍,点击收银台,弹出窗口充分显示人机友好交互,提醒用户可以先到购物车中核对所选书籍,再次确认则订购成功。
(5)用户订购完成之后,可以在留言板上对书及网站做一些评价,有什么疑问和建议都可以通过留言板和管理员进行沟通,也可以通过链接查看自己的历史定单。
2主要数据库表设计
3实现思路以及部分代码的实现
(1)全局数据设计
protected void Session_Start(Object sender, EventArgs e)
{
//初始化会员登录成功与否信息,当登录成功后,其值改写为"true"
Session["Login"]="false";
//初始化登录类别信息,若会员或员工成功登录后,该值被记为"会员"或"员工",以区分登录者的类别类别
Session["LoginEmplOrMember"]="";
//初始化登录的会员账号,当会员登录成功后,其值改写为会员的账号
Session["memberNo"]="";
//初始化登录的会员姓名,当会员登录成功后,其值改写为会员的姓名
Session["memberName"]="";
//初始化登录的员工编号,当员工登录成功后,其值改写为员工的编号
Session["employeeNo"]="";
//初始化登录的员工姓名,当员工登录成功后,其值改写为员工的姓名
Session["employeeName"]="";
//初始化购物车,购物车是一个DataTable类型,当它被创建后,保存于该Session之中
Session["ShopCart"]=null; //初始化购书数量
Session["GSSL"]=0; //初始化市场金额
Session["SCJE"]=0; //初始化会员金额
Session["HYJE"]=0; //初始化折扣率
Session["discount"]=0;
//初始化留言对象,若针对图书商城留言,该值为"QB商城"若针对某本图书发表评论,该值为图书的ISBN号
Session["leaveWordsObj"]="QB商城";
//初始化选择的书的ISBN,它记录会员当前选择的书籍的ISBN
Session["ISBN"]="";
//初始化选择的书名,它记录会员当前选择的书籍的书名
Session["bookName"]=""; //初始化注册会员的账号
Session["ZCZH"]=""; //初始化注册会员的姓名
Session["ZCXM"]=""; //初始化注册会员的性别
Session["ZCXB"]="男"; //初始化注册会员的密码
Session["ZCMM"]=""; //初始化注册会员的确认密码
Session["ZCQRMM"]=""; //初始化注册会员的密码问题
Session["ZCMMWT"]=""; //初始化注册会员的密码答案
Session["ZCMMDA"]=""; //初始化注册会员的通信地址
Session["ZCTXDZ"]=""; //初始化注册会员的邮政编码
Session["ZCYZBM"]=""; //初始化注册会员的联系电话
Session["ZCLXDH"]=""; //初始化注册会员的Email
Session["ZCEmail"]=""; //初始化注册会员的送货地址
Session["ZCSHDZ"]=""; //初始化注册会员的所在省市
Session["ZCSZSS"]=""; //初始化注册会员的送货方式
Session["ZCSHFS"]="普通平邮";//初始化注册会员的付款方式
Session["ZCFKFS"]="邮局汇款";
}
(2)会员注册模块设计
点击提交事件代码
private void Button2_Click(object sender, System.EventArgs e)
{
string number=Session["ZCZH"].ToString ();
SqlCommand myCommand=sqlConnection1.CreateCommand();
mandText="select * from memberInfo where 账号='"+number+"'";
sqlDataAdapter1.SelectCommand=myCommand;
dataSet11.Clear();
int n=sqlDataAdapter1.Fill (dataSet11,"memberInfo");
if(n!=0)
Label9.Text ="<script>alert('您输入的帐号已被注册,请另选帐号!');</script>";
else
{
Label9.Text ="";
string zh=Session["ZCZH"].ToString();
string xm=Session["ZCXM"].ToString();
string xb=Session["ZCXB"].ToString();
string mm=Session["ZCMM"].ToString ();
string mmwt=Session["ZCMMWT"].ToString ();
string mmda=Session["ZCMMDA"].ToString ();
string txdz=TextBox1.Text ;
string yzbm=TextBox2.Text ;
string lxdh=TextBox3.Text ;
string email=TextBox4.Text ;
string shda=TextBox5.Text ;
string szss=TextBox6.Text ;
string fkfs=DropDownList1.SelectedItem .Text ;
string shfs=DropDownList1.SelectedItem .Text ;
mandText="insert into memberInfo
values('"+zh+"','"+xm+"','"+xb+"','"+txdz+"','"+shda+"','"+yzbm+"','"+lxdh+"','"+email+"','"+szss+"','"+s hfs+"','"+fkfs+"','"+mm+"','"+mmwt+"','"+mmda+"')";
sqlConnection1.Open();
myCommand.ExecuteNonQuery();
sqlConnection1.Close();
Label9.Text="<script>alert('恭喜注册成功!');</script>";
}
}
(3)购物车模块设计
private void Button1_Click(object sender, System.EventArgs e) //重新计算按钮单击事件
{
ArrayList NotDelete=new ArrayList();
ArrayList number=new ArrayList ();
for(int i=0;i< DataGrid1.Items .Count ;i++)
{
CheckBox checkBox=(CheckBox)(DataGrid1.Items[i].FindControl("CheckBox1"));
TextBox textBox=(TextBox)(DataGrid1.Items[i].FindControl("TextBox1"));
if(!checkBox.Checked)
{
if(textBox.Text!="")
{
if((int)(double.Parse (textBox.Text ))>0)
{
NotDelete.Add(i);
number.Add((int)(double.Parse (textBox.Text)));
}
}
}
}
DataTable temp=new DataTable ();
temp.Columns.Add(new DataColumn("ISBN",typeof(string)));
temp.Columns.Add(new DataColumn("书名",typeof(string)));
temp.Columns.Add(new DataColumn("市场价",typeof(double)));
temp.Columns.Add(new DataColumn("会员价",typeof(double)));
temp.Columns.Add(new DataColumn("数量",typeof(int)));
temp.Columns.Add(new DataColumn("金额",typeof(double)));
ShopCart=(DataTable)Session["ShopCart"];
int n ;
for(int i=0;i<NotDelete.Count ;i++)
{
DataRow dr=temp.NewRow ();
n=(int)NotDelete[i];
dr["ISBN"]=ShopCart.Rows [n][0];
dr["书名"]=ShopCart.Rows [n][1];
dr["市场价"]=ShopCart.Rows [n][2];
dr["会员价"]=ShopCart.Rows [n][3];
dr["数量"]=ShopCart.Rows [n][4];
dr["金额"]=ShopCart.Rows [n][5];
temp.Rows .Add(dr);
}
ShopCart=temp;
Session["ShopCart"]=ShopCart;
ShopCartView=new DataView (ShopCart);
DataGrid1.DataSource =ShopCartView;
DataGrid1.DataBind ();
for(int i=0;i<number.Count ;i++)
{
ShopCart.Rows [i]["数量"]=(int)number[i];
ShopCart.Rows [i]["金额"]=((int)ShopCart.Rows [i]["数量"])*((double)ShopCartView[i]["会员价"]);
}
Session["ShpCart"]=ShopCart;
ShopCartView=new DataView (ShopCart);
DataGrid1.DataSource =ShopCartView;
DataGrid1.DataBind ();
this.Button3.Enabled =true;
if(ShopCart.Rows .Count==0)
{
Session["GSSL"]=0;Session["SCJE"]=0;Session["HYJE"]=0;
Label10.Text ="您的购物车已经被清空,请退出购物车";
this.Button4 .Text ="退出购物车";
Label11.Visible =false;
DataGrid1.Visible =false;
Button2.Visible =false;
Button1.Visible =false;
Button3.Visible =false;
}
else
{
int GSSL=0;
double HYJE=0;
for(int i=0;i<ShopCartView.Count ;i++)
{
GSSL+=int.Parse (ShopCartView[i]["数量"].ToString ());
Session["GSSL"]=GSSL;
HYJE+=double.Parse (ShopCartView[i]["金额"].ToString ());
Session["HYJE"]=HYJE;
}
Session["SCJE"]=double.Parse (Session["HYJE"].ToString ())/(double.Parse (Session["discount"].ToString ()));
Label11.Text ="金额:"+Session["HYJE"].ToString ()+"元";
}
}
(4)修改会员信息模块设计
private void Page_Load(object sender, System.EventArgs e)
{
if(Session["Login"].ToString()=="false")
Response.Redirect("Login.aspx");
if(!IsPostBack)
myDataBind();
Button2.Enabled=false;// 在此处放置用户代码以初始化页面
}
四、实训总结及感想
实训总结:
1.由于这个网站由多个页面组成,所以使用多个Session键/值来保存在页面之间交换的数据。
2.登陆页面和最后一个页面的代码定义部分需要添加“using System.IO;”以实现输出文本。
3.在进行数据库结构设计时,要考虑全面,使表严谨精炼。
4.写代码的时候,注意保持良好的编程习惯,有助于后期的修改及优化。
5.在实训过程中尤其是后期的调试和优化,需要我们密切联系实际,激发学习的求知欲,培养我们的
科学精神和创新精神。
实训感想:
转眼间,一个星期的实训就要结束了。
经过了先前一个学期的学习和练习,自己对这门语言产生了浓厚的兴趣。
又经历了一周的实训,在亲身做了一个.net项目之后,更是被它的奇特魅力吸引。
在编写初期,尤其是老师刚刚把项目任务布置下来的时候,突然觉得手足无措,不知道应该先做些什么。
但是在稳定了心神之后,一切就步入正轨。
自从Login页面开始,到最后的留言板。
做完一数林林总总十数个页面。
看着很有成就感。
虽然还没写代码……
拉完框架,开始着手数据库结构设计。
感谢上学期学的SQL。
但这时,问题来了。
自己的思维还没有从书本上的所见即所得模式转变过来,只给一个要求,要用自己的思维去完全重新定义结构,这可真不是一件容易的事情。
最后还是看看书,和同学交流之后才写出雏形,然后经过多次完善,最终能够满足系统要求。
但我觉得还有很多可以改进的地方。
到了写代码阶段,感谢上学期的各种编程课,老师们都说要养成良好的编程习惯,所以我一直按照严格标准缩进代码等等。
力求使自己写的代码规范、简洁、质量高、可读性高。
也正是因为这个原因,在代码编写结束之后的调试工作中,相对于代码写的散乱无章的同学,我的工作量小一些,调试和优化以及改进都进行的比较轻松。
而且在经过几天的编写之后,思维逻辑已经完全转变,符合项目要求,不再像刚开始那样想到哪写哪。
在大大小小调试改进之后,项目在规定的时间之内完成了。
虽然最后有的地方还有很大的改进空间,但由于我个人水平有限,不能在这么短的时间内将其完善,只能勉强达到最初的任务目标。
但我觉得,自己一直在提高,进步就是收获。
我会在今后的学习中更加努力的学习这门语言。
并且多给自己找一些类似这样的机会,提高实践能力。