基于visual studio .NET和sql server 的三层架构 购物网站的实现 代码解读(三)管理员权限(会员管理功能)

这个功能直接在源里面写了。附上代码

1.代码总览

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="user.aspx.cs" Inherits="admin_user" %>
<%@ Import Namespace="BQ.Entity" %>
<%@ Import Namespace="BQ.BLL" %>
<%@ Import Namespace="BQ" %>

<!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>BQ购物网</title>
    <link href="css/yf.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <table width="80%" border="1" align="center" cellpadding="0" cellspacing="0" bgcolor="#DEDEDE" bordercolor="#FFFFFF">
            <tr align="center" style="height:30px; color:White;"><td bgcolor="#dbe7a1">编号</td><td bgcolor="#dbe7a1">账户</td><td bgcolor="#dbe7a1">姓名</td><td bgcolor="#dbe7a1">性别</td><td bgcolor="#dbe7a1">手机</td><td bgcolor="#dbe7a1">状态</td><td bgcolor="#dbe7a1">日期</td><td bgcolor="#dbe7a1">操作</td></tr>
            <%
                
                string id = Request.QueryString["id"];
                if (id != null)
                {
                    if (BQ.BLL.shopping.Getusershopping(int.Parse(id)))
                    {
                        JsHelper.AlertAndRedirect("无法删除!用户正在使用系统!", "user.aspx");
                    }
                    else
                    {
                        BQ.BLL.user.del(int.Parse(id));
                        JsHelper.AlertAndRedirect("删除完成!", "user.aspx");
                    }
                }
                
                List<BQ.Entity.user> user = BQ.BLL.user.List();
                for (int i = 0; i < user.Count; i++)
                {
                    string activation = "";
                    if (user[i].State == 0)
                    {
                        activation = "禁用";
                    }
                    else if (user[i].State == 1)
                    {
                        activation = "正常";
                    }
                    string sex = "";
                    if (user[i].Sex == 2)
                    {
                        sex = "女";
                    }
                    else if (user[i].Sex == 1)
                    {
                        sex = "男";
                    }                    
                 %>
                 <tr style="height:34px"><td align="center"><%=i+1%></td><td align="center"> <%=user[i].Username%></td><td align="center"><%=user[i].Name%></td><td align="center"><%=sex%></td><td align="center"><%=user[i].Mobile%></td><td align="center"><%=activation%></td><td align="center"><%=user[i].Adddate%></td><td align="center"><a href="/admin/user_edit.aspx?id=<%=user[i].Id %>">编辑</a> | <a href="user.aspx?id=<%=user[i].Id %>">删除</a></td></tr>
                 <%} %>
    </table>
    </div>
    </form>
</body>
</html>

2.下半部分,泛型

        从下往上解读,先看这部分代码

 List<BQ.Entity.user> user = BQ.BLL.user.List();//List<BQ.Entity.user>//这是一个泛型,具有一个或者多个类型变量的类,尖括号里面可以理解成这个泛型的数据类型,好比说BQ.Entity.user里面第一个数是int型,第二个数是字符型,第三个数是浮点型,那么这个泛型里面也是这样的。
//用法为List<数据类型> 泛型名 
//这串代码的意思理解为 将BQ.BLL.user.List中的数据填入user泛型中

 for (int i = 0; i < user.Count; i++)
 {    //遍历user,将数据库中的帐号编号(id)状态、性别等信息依次填入user
        //注意这里的id,有妙用
     string activation = "";
     if (user[i].State == 0)
     {
         activation = "禁用";
     }
     else if (user[i].State == 1)
     {
         activation = "正常";
     }
     string sex = "";
     if (user[i].Sex == 2)
     {
         sex = "女";
     }
     else if (user[i].Sex == 1)
     {
         sex = "男";
     }                    
  %>
  <tr style="height:34px"><td align="center"><%=i+1%></td><td align="center"> <%=user[i].Username%></td><td align="center"><%=user[i].Name%></td><td align="center"><%=sex%></td><td align="center"><%=user[i].Mobile%></td><td align="center"><%=activation%></td><td align="center"><%=user[i].Adddate%></td><td align="center"><a href="/admin/user_edit.aspx?id=<%=user[i].Id %>">编辑</a> | <a href="user.aspx?id=<%=user[i].Id %>">删除</a></td></tr>
  <%} %>

BQ.MsSqlHelper.MsSqlHelper.QueryBQ.BLL.user.List()如下

   public static List<Entity.user> List()
   {
       return DAC.user.List();
   }

DAC.user.List与BQ.MsSqlHelper.MsSqlHelper.Query如下

public static List<Entity.user> List()
{
    string strsql = "select * from t_user order by id desc";
    DataTable dt = BQ.MsSqlHelper.MsSqlHelper.Query(strsql).Tables[0];
    return Dttolist(dt);
}
 /// <summary>
 /// 执行查询语句,返回DataSet
 /// </summary>
 /// <param name="SQLString">查询语句</param>
 /// <returns>DataSet</returns>
 public static DataSet Query(string SQLString)
 {
     using (SqlConnection connection = new SqlConnection(connectionString))//连接数据库
     {
         DataSet ds = new DataSet();
        //这是个在内存里临时存放数据的东西
         try
         {
             connection.Open();//打开数据库连接
             SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
              //SqlDataAdapter有俩参数,分别是查询语句和连接字符串,这个东西能用来获取数据
             command.Fill(ds, "ds");
                //把刚刚查到的东西“command”塞进ds里面
         }
         catch (SqlException ex)
         {
             throw new Exception(ex.Message);
            //抛出错误
         }
         return ds;
     }
 }

回到“代码总览”这一部分

 string id = Request.QueryString["id"];//取id,上文有提到把id填充到泛型里
 if (id != null)
 {
     if (BQ.BLL.shopping.Getusershopping(int.Parse(id)))//把取到的id转为int型,传给BQ.BLL.shopping.Getusershopping
     {
         JsHelper.AlertAndRedirect("无法删除!用户正在使用系统!", "user.aspx");
     }
     else
     {
         BQ.BLL.user.del(int.Parse(id));
         JsHelper.AlertAndRedirect("删除完成!", "user.aspx");
     }
 }

3.“无法删除”部分

因为这部分代码用到了三层架构的传递,代码还挺多,就单独列一个标题来细细读

if (BQ.BLL.shopping.Getusershopping(int.Parse(id)))//把取到的id转为int型,传给BQ.BLL.shopping.Getusershopping
     {
         JsHelper.AlertAndRedirect("无法删除!用户正在使用系统!", "user.aspx");
     }

BQ.BLL.shopping.Getusershopping如下

public static bool Getusershopping(int user)
{
    return DAC.shopping.Getusershopping(user);
}

DAC.shopping.Getusershopping如下

public static bool Getusershopping(int user)
{
    bool result = false;
    string strsql = "select * from t_shopping where userid=" + user + " order by id desc";
    //sql语句 查找t_shopping表中userid为刚刚传过来的那些数据
    DataTable dt = BQ.MsSqlHelper.MsSqlHelper.Query(strsql).Tables[0];
    //填到dt表里
    List<Entity.shopping> shopping = Dttolist(dt);//这又整了个泛型,先调用Dttolist方法(下面讲),参数为dt,然后塞到这个shopping泛型里面。
    if (shopping.Count > 0)
    {
        result = true;//如果行数大于0,那就是true
    }
    return result;//返回给result,然后result再传到上一级的Getusershopping,以此类推到前台
}

Dttolist如下

 private static List<BQ.Entity.shopping> Dttolist(DataTable dt)
 {//泛型方法,参数为DataTable型的dt
     List<BQ.Entity.shopping> list = new List<Entity.shopping>();
     for (int i = 0; i < dt.Rows.Count; i++)
     {
         Entity.shopping shopping = new Entity.shopping();
         shopping = BQ.DAC.shopping.Getshopping(int.Parse(dt.Rows[i]["id"].ToString()));
            //这里其实就是把刚才传过来的id再传给Getshopping方法,Getshopping方法根据ID获取商品信息,传回shopping
         list.Add(shopping);
        //然后再调用Add方法,把shopping里面的内容添加进去。
     }
     return list;
 }

到此为止,这部分的判断功能就算完事儿了,就是根据shopping(购物车)中有没有商品来判断的。其实这是个附带的功能,是根据这个用户的购物车,如果是空的,那说明这个账户没被使用,就可以删除。如果是有内容,那就是在被使用,不可删除。下面把上文代码调用到的 Getshopping方法也略讲一下。代码如下

public static Entity.shopping Getshopping(int id)
{
    {
        Entity.shopping shopping = new Entity.shopping();
        string strsql = "select * from t_shopping where id=" + id + "";//查找id为传过来的id的数据巴拉巴拉……
        DataTable dt = MsSqlHelper.MsSqlHelper.Query(strsql).Tables[0];//这是一个提取数据的方式,前面讲过
        if (dt.Rows.Count != 0)
        {    //dt里面有内容就都加到shopping里面
            shopping.Id = int.Parse(dt.Rows[0]["id"].ToString());
            shopping.Userid = BQ.DAC.user.Getuser(int.Parse(dt.Rows[0]["userid"].ToString()));
            shopping.Goods = BQ.DAC.goods.Getgoods(int.Parse(dt.Rows[0]["goods"].ToString()));
            shopping.Num = int.Parse(dt.Rows[0]["num"].ToString());
            shopping.Mall = BQ.DAC.admin.Getadmin(int.Parse(dt.Rows[0]["mall"].ToString()));
            shopping.State = int.Parse(dt.Rows[0]["state"].ToString());
            shopping.Adddate = DateTime.Parse(dt.Rows[0]["Adddate"].ToString());
        }
        return shopping;
    }
}

4.“删除完成”部分

接上文判断,购物车里面没有商品,走到else
else
{
    BQ.BLL.user.del(int.Parse(id));把取到的id转为int型作为参数传给BLL.user.del方法
    JsHelper.AlertAndRedirect("删除完成!", "user.aspx");//弹出窗口,跳转页面
}

BLL.user.del如下

public static bool del(int id)
{
    return DAC.user.del(id);
}

DAC.user.del如下

  public static bool del(int id)
  {
      bool result = false;
      string strsql = "delete t_user where id=" + id + "";
      //sql删除语句,删除t_user中id为“刚传过来的id”的那行数据
      int j = MsSqlHelper.MsSqlHelper.ExecuteSql(strsql);//执行SQL语句,返回影响的记录数
      if (j > 0)
      {
          result = true;
      }
      return result;
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值