实训报告课程名称《程序设计》学生所在系部计算机系专业班级软件集成学生姓名和禄翔学号 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,它记录会员当前选择的书籍的ISBNSession["ISBN"]="";//初始化选择的书名,它记录会员当前选择的书籍的书名Session["bookName"]=""; //初始化注册会员的账号Session["ZCZH"]=""; //初始化注册会员的姓名Session["ZCXM"]=""; //初始化注册会员的性别Session["ZCXB"]="男"; //初始化注册会员的密码Session["ZCMM"]=""; //初始化注册会员的确认密码Session["ZCQRMM"]=""; //初始化注册会员的密码问题Session["ZCMMWT"]=""; //初始化注册会员的密码答案Session["ZCMMDA"]=""; //初始化注册会员的通信地址Session["ZCTXDZ"]=""; //初始化注册会员的邮政编码Session["ZCYZBM"]=""; //初始化注册会员的联系电话Session["ZCLXDH"]=""; //初始化注册会员的EmailSession["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 memberInfovalues('"+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键/值来保存在页面之间交换的数据。