一、代码仓库地址

 https://github.com/SE17/Order-food-on-the-Internet

二、Quick Start(简易快速使用指南)

1.注册功能

 

 

2.登录功能

 

 

3.浏览商品

 
 

 

3.1查看商品详情

 

 

3.2搜索商品

 
 

 

4.个人订单

 

 

5.我的收藏

 

 

三、代码实现:阐述是如何实现产品的,文字内容用于辅助阅读源代码(比如代码目录结构),可以粘一些核心代码,不要大段大段代码地贴。

 

.net代码目录

数据库代码目录

   

 

举例说明:商品浏览模块

.net代码视图层

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="goodlist.aspx.cs" Inherits="OnlineOrder.goodlist" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>无标题页</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

    <center>

        <asp:HyperLink ID="HyperLink7" runat="server" NavigateUrl="Index.aspx">首页</asp:HyperLink>      

        <asp:HyperLink ID="HyperLink1" runat="server">注册</asp:HyperLink>

        <asp:HyperLink ID="HyperLink2" runat="server">登录</asp:HyperLink>

    </center>    

    </div>

    <div>

    <center >

        <asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox>   

        <asp:Button ID="Button1" runat="server" Text="搜索" onclick="Button1_Click" />

    </center>      

    </div>

    <div>

     <center>    

         <asp:Label ID="Label3" runat="server" Text="排序"></asp:Label>

         <asp:DropDownList ID="DropDownList1" runat="server" onselectedindexchanged="DropDownList1_SelectedIndexChanged">

             <asp:ListItem Value="pro_price" Selected="True">价格</asp:ListItem>

             <asp:ListItem Value="pro_amount">商品库存数</asp:ListItem>

         </asp:DropDownList>

       

         <asp:DropDownList ID="DropDownList2" runat="server"

             onselectedindexchanged="DropDownList2_SelectedIndexChanged">

             <asp:ListItem Value="ASC" Selected="True">升序</asp:ListItem>

             <asp:ListItem Value="DESC">降序</asp:ListItem>

         </asp:DropDownList>

       

     </center>  

    </div>

    <div>

    <center>      

       <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White"

            BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px"

            CellPadding="4" AllowPaging="True" EmptyDataText="暂无记录" >

            <FooterStyle BackColor="#99CCCC" ForeColor="#003399" />

            <Columns>

               

                <asp:TemplateField HeaderText="商品名称" SortExpression="商品名称">

                    <ItemTemplate>

                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("商品名称") %>'></asp:Label>

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:ImageField AlternateText="123" DataImageUrlField = "商品图片" >

                                       

                 </asp:ImageField>

                <asp:TemplateField HeaderText="商品价格" SortExpression="商品价格">

                    <ItemTemplate>

                        <asp:Label ID="Label2" runat="server" Text='<%# Bind("商品价格") %>' ></asp:Label>

                    </ItemTemplate>

                </asp:TemplateField>

               

                <asp:HyperLinkField DataNavigateUrlFields="pro_id" Text="查看详情"

                  HeaderText="查看详情" DataNavigateUrlFormatString="GoodDetail.aspx?pro_id={0}" />

           </Columns>

            <RowStyle BackColor="White" ForeColor="#003399" />

            <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />

            <PagerStyle BackColor="#C0C0FF" ForeColor="#003399" HorizontalAlign="Left" />

            <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />

        </asp:GridView>      

    </center>

       

    </div>

    </form>

    <p>

          

    </p>

</body>

</html>

.net代码控制层(调用数据库接口)

using System;

using System.Collections;

using System.Configuration;

using System.Data;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.HtmlControls;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Xml.Linq;

using System.Data.SqlClient;

 

namespace OnlineOrder

{

    public partial class goodlist : System.Web.UI.Page

    {

        SqlConnection con;

        String ConnectionString = "Data Source=localhost;Persist Security Info=True;User ID=sa;Password=root; Initial Catalog=OnlineOrderVegetable;";

        SqlCommand com;

        SqlDataAdapter da;

        DataTable table;

        protected void Page_Load(object sender, EventArgs e)

        {

            if (Session["webuser_id"] != null)

            {

                HyperLink1.Text = Session["account"].ToString();

                HyperLink1.NavigateUrl = "UserInfo.aspx";

                HyperLink2.Text = "购物车";

                HyperLink2.NavigateUrl = "Cart.aspx";

            }

            //搜索框搜索

            if (Request.QueryString["key"] != null)

            {

                String key = Request.QueryString["key"];

          

                produceSearch(key);                          

            

            }

             //类别搜索

            else

            {

                produceSelect();

 

            }      

        }

        //关键字模糊查询

        protected void produceSearch(string key)

        {

            String sql = "proc_ProduceNameSelect";

            con = new SqlConnection(ConnectionString);

            //打开连接

            con.Open();

            //生成SqlCommand对象

            com = new SqlCommand(sql, con);

            //选择执行命令,存储过程

            com.CommandType = CommandType.StoredProcedure;

            //添加参数

            com.Parameters.AddWithValue("@key", key);

            //执行存储过程

            com.ExecuteNonQuery();

            //生成Adapter对象

            da = new SqlDataAdapter();

            //生成table

            table = new DataTable();

            //Adapter对象获取数据

            da.SelectCommand = com;

            //Adapter对象填充数据

            da.Fill(table);

            //释放对象

            con.Close();

            //数据绑定

            GridView1.DataSource = table;

            GridView1.DataBind();

        }

        //商品类别检索

        protected void produceSelect()

        {

            String sql = "proc_ProduceSelect";

            String protype_id = Request.QueryString["protype_id"];

            con = new SqlConnection(ConnectionString);

            //打开连接

            con.Open();

            //生成SqlCommand对象

            com = new SqlCommand(sql,con);

          

            //选择执行命令,存储过程

            com.CommandType = CommandType.StoredProcedure;

            //添加参数

            com.Parameters.AddWithValue("@protype_id", protype_id);

            //调用数据库接口存储过程proc_ProduceSelect

            com.ExecuteNonQuery();

            //生成Adapter对象

            da = new SqlDataAdapter();

            //生成table

            table = new DataTable();

            //Adapter对象获取数据

            da.SelectCommand = com;

            //Adapter对象填充数据

            da.Fill(table);

            //释放对象

            con.Close();

            //数据绑定

            GridView1.DataSource = table;

            GridView1.DataBind();

        }

 

       //响应用户搜索请求

        protected void Button1_Click(object sender, EventArgs e)

        {

            string key;

            string url;

            key = TextBox1.Text;

            //弹出对话框?

            if (key == null || key == "")

            {

 

            }

            else

            {

                url = "goodlist.aspx?key=" + key;

                Response.Redirect(url);

            }

        }

      

    }

}

Sql 存储过程接口proc_ProduceSelect

--存储过程:proc_ProduceSelect

--功能:分类浏览商品

--输入参数:商品类别编号、排序字段、排序类别

ALTER PROC proc_ProduceSelect

@protype_id char(10)=NULL,

@order_name varchar(10)=NULL,

@order_type varchar(10)='ASC'

AS

BEGIN

         DECLARE @sql varchar(255)

         IF(@order_name IS NULL)

         BEGIN

                   SELECT pro_id ,pro_name 商品名称,protype_name 商品类别,pro_icon 商品图片,pro_price 商品价格,pro_disprice 促销价,pro_amount 商品数量,collect_num 收藏次数

                   FROM produce INNER JOIN protype

                   ON produce.protype_id = protype.protype_id

                   WHERE (@protype_id = produce.protype_id OR @protype_id IS NULL)

         END

         ELSE

         BEGIN

                   SET @sql = 'SELECT pro_id 商品编号,pro_name 商品名称,protype_name 商品类别,pro_icon 商品图片,pro_price 商品价格,pro_amount 商品数量

                   FROM produce INNER JOIN protype '+

                   'ON produce.protype_id = protype.protype_id '+

                   'WHERE ( produce.protype_id '+'LIKE '+@protype_id +' )'

                   +' ORDER BY '+@order_name+' '+@order_type

                   EXEC(@sql)

         END

END

GO

 

四、 软件测试:阐述如何测试所开发的软件。

由于本产品还没有正式发布,无法让测试人员进行黑盒测试。

此处选择让开发人员一边开发一边进行白盒测试:测试存储过程能否正常执行功能。

举例模块:用户下订单模块

 

--①生成用户2的一条订单,返回订单编号给用户

DECLARE @order_id int

EXEC proc_OrdersInsert 2,4,@order_id OUTPUT

PRINT '订单编号:'+CAST(@order_id AS VArchar(4))

GO

(1 行受影响)

订单编号:24

 

--②根据订单编号和订单中的商品系统自动生成订单明细

--若其中某种商品库存不足,则删除该订单。

 

--a.若其中某种商品库存不足,则删除该订单。

EXEC proc_OrdersInfoInsert 20,1,3

GO

--查看该订单20,已被删除。

EXEC proc_OrdersInfoOrderIdSelect 20

GO

没有该订单!

--b. 给24号订单添加1件1号商品,4件2号商品

EXEC proc_OrdersInfoInsert 24,1,1

GO

EXEC proc_OrdersInfoInsert 24,2,4

GO

 

--③生成给用户的订单,订单状态默认为‘待付款’

EXEC proc_OrdersInfoOrderIdSelect 24

GO

 

 

--④用户给24号订单付款,扣除用户余额

--付款前

EXEC proc_WebuserSelect '15985700852'

GO

 

--付款结果,成功之后系统根据用户最近下单情况,自动推荐两种类别的随机产品给用户。

DECLARE @result varchar(20)

EXEC proc_OrderStateUpdatePay 24,2,@result OUTPUT

PRINT @result

GO

(1 行受影响)

付款成功

 

--付款后,用户账号余额情况

EXEC proc_WebuserSelect '15985700852'

GO

 

 

--⑤用户确认收货订单24号

EXEC proc_OrderStateUpdateReceive 24

GO

成功收到24号订单,该订单等待您的评价~

(1 行受影响)

 

--⑥2号用户对刚才收到的24号订单的商品做出评价

--对2号商品的评价

exec proc_OrderStateUpdateComment 2,24,"食材新鲜美味!还会回购的。"

GO

--对1号商品的评价

exec proc_OrderStateUpdateComment 1,24,"味道一般吧。"

GO

 

 

--⑦若用户喜欢哪一件商品,可以对商品进行收藏

--2号用户对2号商品进行了收藏

exec proc_CollectInsert 2,2

成功收藏2号商品!

 

posted on 2017-12-17 15:50  落衣案  阅读(217)  评论(2编辑  收藏  举报