课程设计报告书
课程名称      .NET框架程序设计             
设计题目      网上购物车                     
专业班级                 
                               
                                     
指导教师                                 

 
1设计时间    1
2设计目的    1
3设计任务    1
4设计内容    1
4.1 用户控件和主控页的设计    1
4.1.1 创建用户控件    1
4.1.2 主控页的设计    3
4.2 内容页的设计    5
4.2.1 主页的设计    5
4.2.2 商品网页的设计    6
4.2.3 购物车网页的设计    9
4.2.4 结账网页的设计    12
4.2.5 订单网页的设计    16
4.3 系统测试    17
4.3.1 用户控件图    17
4.3.2 主控页图    17
4.3.3 主页的运行图    18
4.3.4 商品网页的运行图    19
4.3.5 购物车网页的运行图    19
4.3.6 结账网页的运行图    20
4.3.7 订单网页的运行图    20
5 总结与展望    21
参考文献    22

1设计时间
2设计目的
此次的框架课程设计是对所学网页设计课程的一个阶段性的锻炼,是提高我们对所学知识综合应用能力的一种方式,是集中实践性环节之一。要求我们对理论课中所学习到的知识综合运用,实现有一定规模的框架的开发和应用。框架课程设计是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践环节对我们来说是必不可少的一个重要环节。我们可以通过本次课程设计更好的练习并掌握所学知识,在实际的应用中掌握所学知识,让我们能过更好的理解课堂所学知识,并将它融入到所能涉及到的日常生活中,从而更好地掌握它,更好的在以后的工作中熟练运用。
3设计任务
完成对网上购物车系统设计,并写出规范的设计文档。本系统是一个网上食品商店的小型网站,几个核心问题包括:主页面的设计;商品的分类显示;选购和调整购物车;集中结算;存储订单;查看订单。将此些功能完好的结合在一起。
4 设计内容
4.1 用户控件和主控页的设计
4.1.1 创建用户控件
用户控件源代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<div style="text-align: center">
    <table style="width: 20cm; height: 3cm">
        <tr>
            <td align="center" rowspan="3" style="width: 7cm; height: 3cm">
                <asp:Image ID="Image1" runat="server" ImageUrl="~/image/r1.jpg" /></td>
            <td style="width: 13cm; height: 1cm">
              <marquee> 欢迎来到网络食品店</marquee></td>
        </tr>
        <tr>
            <td align="center" style="width: 13cm; height: 1cm">
                <asp:Label ID="Label1" runat="server" Text="美食在线"></asp:Label>
                   
                <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/主页.aspx">主页</asp:HyperLink>
                   
                <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="~/购物车.aspx">购物车</asp:HyperLink>
                   
                <asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl="~/结账.aspx">结账</asp:HyperLink>
                   
                <asp:HyperLink ID="HyperLink4" runat="server" NavigateUrl="~/订单.aspx">订单</asp:HyperLink>
                   
                <asp:Button ID="Button1" runat="server" Text="查询" />
                <asp:TextBox ID="TextBox1" runat="server" Width="49px"></asp:TextBox></td>
        </tr>
        <tr>
            <td align="center" style="width: 13cm; height: 1cm">
                <asp:Label ID="Label2" runat="server"></asp:Label></td>
        </tr>
    </table>
</div>
用户控件后台文件:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class WebUserControl : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DateTime d = DateTime.Now;
        Label2.Text = d.ToLongDateString() + d.ToLongTimeString();
    }
}
4.1.2 主控页的设计
主控页源代码:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<%@ Register Src="WebUserControl.ascx" TagName="WebUserControl" TagPrefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
         <br />
        <div style="text-align: center">
            <table style="width: 20cm; height: 15cm; background-image: url(image/h.jpg);">
                <tr>
                    <td colspan="2" style="width: 20cm; height: 3cm">
                         <uc1:WebUserControl ID="WebUserControl1" runat="server"  />
                    </td>
                </tr>
                <tr>
                    <td style="width: 10cm; height: 10cm">
                        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="CategoryID"
                            DataSourceID="SqlDataSource1">
                            <Columns>
                                <asp:HyperLinkField DataNavigateUrlFields="CategoryID" DataNavigateUrlFormatString="商品.aspx?CategoryID={0}"
                                    HeaderText="选择" Text="商品" />
                                <asp:BoundField DataField="CategoryID" HeaderText="类型ID" InsertVisible="False" ReadOnly="True"
                                    SortExpression="CategoryID" />
                                <asp:BoundField DataField="CategoryName" HeaderText="类型名" SortExpression="CategoryName" />
                            </Columns>
                        </asp:GridView>
                        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
                            SelectCommand="SELECT [CategoryName], [CategoryID] FROM [Categories]"></asp:SqlDataSource>
                         
                    </td>
                    <td style="width: 10cm; height: 10cm">
        <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        </asp:contentplaceholder>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" style="width: 20cm; height: 2cm">Copyright©2012网络食品在线
                    </td>
                </tr>
            </table>
        </div>
    </div>
    </form>
</body>
</html>
4.2 内容页的设计
4.2.1 主页的设计
主页源代码:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="主页.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div style="text-align: center">
        <table style="width: 350px; height: 154px">
            <tr>
                <td style="width: 100px">
                      </td>
                <td style="width: 100px">
                </td>
                <td style="width: 100px">
                </td>
            </tr>
            <tr>
                <td style="width: 100px">
                </td>
                <td style="width: 100px">
                      </td>
                <td style="width: 100px">
                </td>
            </tr>
            <tr>
                <td style="width: 100px">
                </td>
                <td style="width: 100px">
                </td>
                <td style="width: 100px">
                    </td>
            </tr>
        </table>
    </div>
</asp:Content>
4.2.2 商品网页的设计
商品页源代码:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="商品.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID"
        DataSourceID="SqlDataSource1" OnRowCommand="GridView1_RowCommand">
        <Columns>
            <asp:ButtonField CommandName="select" HeaderText="选择" Text="选购" />
            <asp:BoundField DataField="ProductID" HeaderText="产品ID" InsertVisible="False" ReadOnly="True"
                SortExpression="ProductID" />
            <asp:BoundField DataField="ProductName" HeaderText="产品名" SortExpression="ProductName" />
            <asp:BoundField DataField="CategoryID" HeaderText="类型ID" SortExpression="CategoryID" />
            <asp:BoundField DataField="QuantityPerUnit" HeaderText="单元数量" SortExpression="QuantityPerUnit" />
            <asp:BoundField DataField="UnitPrice" HeaderText="单价" SortExpression="UnitPrice" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        SelectCommand="SELECT [ProductID], [ProductName], [CategoryID], [QuantityPerUnit], [UnitPrice] FROM [Products] WHERE ([CategoryID] = @CategoryID)">
        <SelectParameters>
            <asp:QueryStringParameter Name="CategoryID" QueryStringField="CategoryID" Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>
     
</asp:Content>
商品页后台文件:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        System.Data.DataTable Cart = new System.Data.DataTable();
        if (e.CommandName == "select")
        {
            if (Session["ShoppingCart"] == null)
            {
                Cart.Columns.Add("商品编号", typeof(int));
                Cart.Columns.Add("商品名称", typeof(string));
                Cart.Columns.Add("单元含量", typeof(string));
                Cart.Columns.Add("单价", typeof(double));
                Session["ShoppingCart"] = Cart;
            }
            Cart = (System.Data.DataTable)Session["ShoppingCart"];
            int index = Convert.ToInt32(e.CommandArgument);
            GridViewRow row = GridView1.Rows[index];
            string bhText = row.Cells[1].Text;
            string mcText = row.Cells[2].Text;
            string dyText = row.Cells[4].Text;
            string djText = row.Cells[5].Text;
            int bh = int.Parse(bhText);
            double dj = double.Parse(djText);
            System.Data.DataRow rr = Cart.NewRow();
            rr["商品编号"] = bh;
            rr["商品名称"] = mcText;
            rr["单元含量"] = dyText;
            rr["单价"] = dj;
            Cart.Rows.Add(rr);
            Session["ShoppingCart"] = Cart;
        }
    }
}
4.2.3 购物车网页的设计
购物车页源代码:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="购物车.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    客户标志:<asp:TextBox ID="TextBox1" runat="server" Width="55px"></asp:TextBox>
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1"
        ErrorMessage="请输入客户标志"></asp:RequiredFieldValidator><br />
    <asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand">
        <Columns>
            <asp:ButtonField CommandName="buy" HeaderText="购买" Text="确认" />
            <asp:TemplateField HeaderText="数量">
                <ItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text="<%# 1 %>" Width="57px"></asp:TextBox>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
</asp:Content>
购物车页后台文件:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GridView1.DataSource = Session["ShoppingCart"];
            DataBind();
        }
    }
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        System.Data.DataTable Cart = new System.Data.DataTable();
        if (e.CommandName == "buy")
        {
            if (Session["ShoppingCart2"] == null)
            {
                Cart.Columns.Add("商品编号", typeof(int));
                Cart.Columns.Add("商品名称", typeof(string));
                Cart.Columns.Add("单元含量", typeof(string));
                Cart.Columns.Add("单价", typeof(double));
                Cart.Columns.Add("订购数量", typeof(int));
                Cart.Columns.Add("折扣", typeof(double));
                Cart.Columns.Add("合计", typeof(double));
                Session["ShoppingCart2"] = Cart;
            }
            Cart = (System.Data.DataTable)Session["ShoppingCart2"];
            if (TextBox1.Text == "")
            {
                Validate();
            }
            else
            {
                Session["khbz"] = TextBox1.Text;
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow row = GridView1.Rows[index];
                TextBox tt = (System.Web.UI.WebControls.TextBox)row.Cells[1].FindControl("TextBox2");
                string dg1 = tt.Text;
                int dg = int.Parse(dg1);
                if (dg <= 1) dg = 1;
                string bhText = row.Cells[2].Text;
                string mcText = row.Cells[3].Text;
                string dyText = row.Cells[4].Text;
                string djText = row.Cells[5].Text;
                int bh = int.Parse(bhText);
                double dj = double.Parse(djText);
                System.Data.DataRow rr = Cart.NewRow();
                rr["商品编号"] = bh;
                rr["商品名称"] = mcText;
                rr["单元含量"] = dyText;
                rr["单价"] = dj;
                rr["订购数量"] = dg;
                int zk = 1;
                rr["折扣"] = zk;
                double hj = dj * dg * zk;
                rr["合计"] = hj;
                Cart.Rows.Add(rr);
                Session["ShoppingCart2"] = Cart;
            }
        }
    }
}
4.2.4 结账网页的设计
结账页源代码:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="结账.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    客户标志:<asp:TextBox ID="TextBox1" runat="server" Width="43px"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="汇总" /><asp:TextBox
        ID="TextBox2" runat="server" Width="39px"></asp:TextBox>
    <asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="存入订单" /><br />
    <asp:GridView ID="GridView1" runat="server">
        <Columns>
            <asp:TemplateField HeaderText="确认">
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server" Checked="True" />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        SelectCommand="NewCartInsert" SelectCommandType="StoredProcedure" InsertCommand="NewCartInsert2" InsertCommandType="StoredProcedure">
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox1" Name="客户ID" PropertyName="Text" Type="String" />
            <asp:Parameter Name="产品ID" Type="Int32" />
            <asp:Parameter Name="产品名称" Type="String" />
            <asp:Parameter Name="单位数量" Type="String" />
            <asp:Parameter Name="单价网上购物的网站" Type="Decimal" />
            <asp:Parameter Name="订购量" Type="Int32" />
            <asp:Parameter Name="订购时间" Type="DateTime" />
        </SelectParameters>
        <InsertParameters>
            <asp:Parameter Name="客户ID" Type="String" />
            <asp:Parameter Name="订单ID" Type="Int32" />
            <asp:Parameter Name="产品ID" Type="Int32" />
            <asp:Parameter Name="产品名称" Type="String" />
            <asp:Parameter Name="单位数量" Type="String" />
            <asp:Parameter Name="单价" Type="Decimal" />
            <asp:Parameter Name="订购量" Type="Int32" />
            <asp:Parameter Name="订购时间" Type="DateTime" />
        </InsertParameters>
    </asp:SqlDataSource>
    <br />
</asp:Content>
结账页后台文件:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            TextBox1.Text = Session["khbz"].ToString();
            GridView1.DataSource = Session["ShoppingCart2"];
            GridView1.DataBind();
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        double sum = 0.0;
        for (int ii = 0; ii < GridView1.Rows.Count; ii++)
        {
            CheckBox cc = (CheckBox)GridView1.Rows[ii].Cells[0].FindControl("CheckBox1");
            if (cc.Checked)
            {
                sum = sum + (double.Parse(GridView1.Rows[ii].Cells[7].Text));
            }
        }
        TextBox2.Text = sum.ToString();
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        for (int ii = 0; ii < GridView1.Rows.Count; ii++)
        {
            CheckBox cc = (CheckBox)GridView1.Rows[ii].Cells[0].FindControl("CheckBox1");
            if (cc.Checked)
            {
                SqlDataSource1.InsertParameters.Clear();
                SqlDataSource1.InsertParameters.Add("客户ID", Session["khbz"].ToString());
                SqlDataSource1.InsertParameters.Add("产品ID", GridView1.Rows[ii].Cells[1].Text);
                SqlDataSource1.InsertParameters.Add("产品名称", GridView1.Rows[ii].Cells[2].Text);
                SqlDataSource1.InsertParameters.Add("单位数量", GridView1.Rows[ii].Cells[3].Text);
                SqlDataSource1.InsertParameters.Add("单价", GridView1.Rows[ii].Cells[4].Text);
                SqlDataSource1.InsertParameters.Add("订购量", GridView1.Rows[ii].Cells[5].Text);
                SqlDataSource1.InsertParameters.Add("订购时间", DateTime.Now.ToString());
                SqlDataSource1.InsertCommand = "xiaoding1.NewCartInsert2";
                Session["ccsj"] = DateTime.Now.ToString();
                SqlDataSource1.Insert();
            }
        }
    }
}
4.2.5 订单网页的设计
订单页源代码:
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="订单.aspx.cs" Inherits="Default2" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="订单ID"
        DataSourceID="SqlDataSource1">
        <Columns>
            <asp:BoundField DataField="客户ID" HeaderText="客户ID" SortExpression="客户ID" />
            <asp:BoundField DataField="订单ID" HeaderText="订单ID" InsertVisible="False" ReadOnly="True"
                SortExpression="订单ID" />
            <asp:BoundField DataField="产品ID" HeaderText="产品ID" SortExpression="产品ID" />
            <asp:BoundField DataField="产品名称" HeaderText="产品名称" SortExpression="产品名称" />
            <asp:BoundField DataField="单位数量" HeaderText="单位数量" SortExpression="单位数量" />
            <asp:BoundField DataField="单价" HeaderText="单价" SortExpression="单价" />
            <asp:BoundField DataField="订购量" HeaderText="订购量" SortExpression="订购量" />
            <asp:BoundField DataField="订购时间" HeaderText="订购时间" SortExpression="订购时间" />
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
        SelectCommand="SELECT * FROM [dingdan] WHERE (([客户ID] = @客户ID) AND ([订购时间] = @订购时间))">
        <SelectParameters>
            <asp:SessionParameter Name="客户ID" SessionField="khbz" Type="String" />
            <asp:SessionParameter Name="订购时间" SessionField="ccsj" Type="DateTime" />
        </SelectParameters>
    </asp:SqlDataSource>
</asp:Content>
4.3 系统测试
4.3.1 用户控件图
用户控件图如下:
图4-3 用户控件图
4.3.2 主控页图
主控页图如下:
图4-4 创建主控页图
4.3.3 主页的运行图
生成时主页图如下:
图4-5 主页运行图
4.3.4 商品网页的运行图
生成时商品页图如下:
图4-6商品页运行图
4.3.5 购物车网页的运行图
生成时购物车页图如下:
 
图4-7购物车网页运行图
4.3.6 结账网页的运行图
生成时结账页图如下:
图4-8 结账网页运行图
4.3.7 订单网页的运行图
生成时订单页图如下:
图4-9 订单网页运行图
5 总结与展望
通过本次的.NET课程设计报告,使我又系统地复习了一遍本学期所学的内容,令我对购物车网页设计有了更深的了解。在自我设计的过程中,培养了我自主设计的能力,虽然我的设计并不成熟,但使我对网页设计产生了兴趣。我会在课余时间认真总结在此设计中,功能大致实现了,但还是存在些不足,由于能力有限及时间问题,没法实现。虽然书本上的只是大部分是有价值,正确的,但实际上每个人编程的思路和对数据处理的放法思想都是不同的,这就要求我们一定要通过实践才能到解决问题的方案。在整个课程设计的过程中,我深刻的体会到这一点的重要性,也牢记住了这一点,在今后的学习和研究中我也会继续将这种方法延续下去我完成了这次.NET课程设计,不过这只是我学习路上的驿站,通过这次试验我更加深入的了解了各种代码和空间属性的知识点,对怎样做出一份网页设计有了更加全面地认识。这次试验进行了一次很好的综合提炼,使我对网页的开发与应用有了更深入的认识,这对我今后的工作和学习都是宝贵的经验积累。
参考文献
[1] 屈辉立,陈可明,石武信.JSP网站编程教程[M].1, 北京:北京希望电子出版社,2005                         
[2] 白勇.B/S模式构建在线考试系统[J],重庆电力高等专科学校学报,2003,10(4): 100130.
[3] Jiang Guo,Yuehong Liao,Behzad Parviz.A Survey of J2EE Application Performance Management Systems[J],Proceedings of the IEEE International Conference on Web Services (ICWS'04),2004.6(5):1732.
[4] VB数据库管理范例:www.vbnew/down/2j.asp?id=14&cid=23[EB/OL] 
成绩评定
成绩                      教师签字