2020-10-30


问题:哪个系部管理员登录便跳到哪个系部的管理页面,普通用户登录便跳到普通用户的页面?

  • 注:1 思路和3 代码分析只针对基础差的,有一定的知识积累的可以直接看2 代码

1 思路

1.1 建表与拉下拉框(可不看)

  • 使用两张表
  • 1张存放学生的注册信息(起名为xueshengbiao),1张存放老师的账号(起名为teacher),老师的账号不能自己注册,只能管理员从后台数据库中手动添加.
  • 前端放两个下拉框控件(DropDownList),一个下拉框给ip为DropDownList1,然后编辑项(ListLtem),两个项,分别给value值和text值,一个的value、text值分别为:xuesheng 、学生;另一个的value、text分别:teacher 、系部(这个下拉框的作用是:为了区分登录者的身份,明白到底是学生登录还是系部的教师登录).
  • 一个下拉框控件,id为DropDownList2,4个编辑项,项的value、text分别为:1(xinxi 信息系)、2(jingcha 警察系)、3(falv 法律系)、4(sijian 司法鉴定系)(这个下拉框的作用:区分是登录者是属于哪个系部的).

1.2 教师和学生登录区分

  • 在后台事件中首先我获取下拉框ip为DropDownList2的value值,看用户选择的是学生还是系部(如下图1-2-1),如果选择的是学生的话我便会获得的value值为xuesheng,选择的是系部的话,我获得value值就为teacher.我这时写了一个if判断,如果value值为xuesheng,我就从xueshengbiao表中判断用户输入的账号和密码是否与表存在的账号密码一致;如果value值为teacher的话,我就从表名为teacher的表中判断用户输入的账号和密码是否和表存在的账号密码一致.
    1-2-1图
    1-2-1图
  • 为了更好的解释如何区分系部管理员,这里我把获得value值为xuesheng的if断定取名为第一层if;获得value值为teacher的判断取名为第一层else

  • 过渡句
  • 以上是区分第一层区分,区分了普通用户和系部管理了;第二层区分是区分每个系的管理员的登录,实现不同系的人员登录,便跳到不同系的页面上.下面讲述如何实现这个区别的详细思路.

1.3不同系的教师登录的区分

  • 在数据库的teacher表(用来存放系部管理员的账号)设定的是三个项:账号,密码,系部;
  • 假如我获取了ip为DropDownList1的value值为teatcher,也就是我选择的是系部,进入到if判断条件里面,这时我用查询语句,查询教师表中三个项分别和用户输入的值对比,如果存在的话,我写的语句会让我拿到一个值1,不存在的话我会拿到一个值0
  • 这时我又定一个判断语句,如果值为0
  • 便有个弹框告诉用户密码或账号输入错误或系部的选择错误;
  • 如果值为1
  • 就会进入到if里面,在里面的我做了一个字符串拼接,拼接之前我们要知道:教师在登录页面选择的管理系肯定是自己的管理系(不然的话获得的值就是0了),知道了这个我是这样拼接的;
  • 首先我先获取id为DropDownList1 的value值,然后加上页面的后缀名(.aspx),用一个参数abc接受,这样我的abc就是一个地址了,最后我起各个系的系名和他们的id为DropDownList1的value值一样便可。

2 代码

2.1 前端代码

<`asp:DropDownList` ID="DropDownList1" runat="server">
	<asp:ListItem Value="xinxi" Text="信息系"></asp:ListItem>
	<asp:ListItem Value="jingcha" Text="警察系"></asp:ListItem>
	<asp:ListItem Value="falv" Text="法律系"></asp:ListItem>
	<asp:ListItem Value="sijian" Text="司法鉴定系"></asp:ListItem>
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server">
	<asp:ListItem Value="xuesheng" Text="学生"></asp:ListItem>
	 <asp:ListItem Value="teacher" Text="系部"></asp:ListItem>
</asp:DropDownList>
标注
<asp:DropDownList ><!--下拉框和里面的项-->
	<asp:ListItem ></asp:ListItem>
</asp:DropDownList>
  • 下拉框和里面的项

2.2 后端代码

 protected void denglu_Click(object sender, EventArgs e)
    {
        // 打开数据库
        String str = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|Database.mdf; Integrated Security=True";
        SqlConnection Sqlconn = new SqlConnection(str);
        Sqlconn.Open();

        string bb = DropDownList2.SelectedValue;
        //学生页面
        if (bb == "xuesheng")
        {
            //语句
            String cmd = "select count(*) from xueshengbiao where xuehao = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "'";
            SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);

            int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
            if (aa > 0)
            {
                 
                Session["xuehao"] = xuehao.Text.ToString();
                Sqlconn.Close();

                Response.Redirect("zhuye.aspx");


            }
            else
            {
                Response.Write("<script>alert('学号或密码错误或系部选择错误')</script>");
            }

        }
        //系部页面
        else if(bb == "teacher")
        {
            String cmd = "select count(*) from teacher where id = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+ DropDownList1.SelectedItem.Text.ToString() +"'";
            SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
            
            int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
            if (aa > 0)
            {
                string dd = DropDownList1.SelectedValue;
                string abc = dd + "." + "aspx";
                //System.Console.WriteLine(abc);

                Session["id"] = xuehao.Text.ToString();
                Sqlconn.Close();

                Response.Redirect(abc);


            }
            else
            {
                Response.Write("<script>alert('账号或密码错误或系部选择错误')</script>");
            }
        }

    }
标注
string bb = DropDownList2.SelectedValue;
  • 取ip为DropDownList2的下拉框的value值
String cmd = "select count(*) from xueshengbiao where xuehao = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "'";
SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
  • 查询条件存在aa为1,否则为0
Response.Redirect("");
  • 页面跳转
DropDownList1.SelectedItem.Text.ToString()
  • 获取ip为DropDownList1的下拉框的text值并转为str类型
string abc = dd + "." + "aspx";
  • 字符串拼接
 Response.Write("<script>alert('内容')</script>");
  • 弹框

3 代码分析

3.1前端代码分析

  • 前端的主要是用拉两个下拉框控件(asp:DropDownList),然后每个下拉框给个id,再给里面的每个项加value值和text值,如下:
<asp:DropDownList ID="DropDownList1" runat="server">
	<asp:ListItem Value="xinxi" Text="信息系"></asp:ListItem>
	<asp:ListItem Value="jingcha" Text="警察系"></asp:ListItem>
	<asp:ListItem Value="falv" Text="法律系"></asp:ListItem>
	<asp:ListItem Value="sijian" Text="司法鉴定系"></asp:ListItem>
</asp:DropDownList>
	<asp:DropDownList ID="DropDownList2" runat="server">
	<asp:ListItem Value="xuesheng" Text="学生"></asp:ListItem>
	 <asp:ListItem Value="teacher" Text="系部"></asp:ListItem>
</asp:DropDownList>

3.2 后端代码分析

主要讲解如何区分不同页面

string bb = DropDownList2.SelectedValue;
  • 整体意思为获取ip为DropDownList2控件的项的value值
  • ip为DropDownList2有两个项,value值分别是:“xuesheng”和“teacher”,text值是:“学生”和“系部”,
  • 当用户在登录页面选择的是学生时,参数bb就会获得value值**“xuesheng”**;
  • 当选择的是系部时,bb就的值就是:“teacher”;
3.2.1学生的区分
if (bb == "xuesheng")
{
}
  • if判断语句,意为:如果**bb等于“xuesheng”**便执行{}里面的内容,下面是对里面内容的分析
 String cmd = "select count(*) from xueshengbiao where xuehao = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "'";
   	 SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
   	 int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
  • 这段代码整个意思是:查询数据库中名字为xueshengbiao的表,如果满足该xuehao = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "'";xuehao等于xuehao.Text.ToString() 同时password等于mima.Text.ToString() )语句的话,aa就返回值1,不符合条件的话,aa就返回值0

  • xuehaopassword是名字为xueshengbiao表中的两个项,而 xuehao.Text.ToString()mima.Text.ToString()中的xuehao和mima是登录页面的账号密码的文本框的id值,如下图,而mima.text.tostring的意思是:text是取文本框的内容,tostring是把内容转成str类型)
    在这里插入图片描述

  • select是数据库的查询语句

  • from xueshengbiao from后面是数据库里面的表的名

  • where 后面接的是条件

if (aa > 0)
      {
           
          Session["xuehao"] = xuehao.Text.ToString();
          Sqlconn.Close();

          Response.Redirect("zhuye.aspx");


      }
      else
      {
          Response.Write("<script>alert('学号或密码错误或系部选择错误')</script>");
      }
  • 当aa为0时,
  • 执行Response.Write("<script>alert('学号或密码错误或系部选择错误')</script>");这个语句,语句的意思是:有个弹框,弹框内容是–>学号或密码错误或系部选择错误.
  • 当aa是1时,
  • 会执行a>0的语句,主要看这句:Response.Redirect("zhuye.aspx");,意思是:跳转到页面zhuye.aspx
3.2.2 系部页面的区分
  else if(bb == "teacher")
        {
            String cmd = "select count(*) from teacher where id = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+ DropDownList1.SelectedItem.Text.ToString() +"'";
            SqlCommand Sqlcmd = new SqlCommand(cmd, Sqlconn);
            
            int aa = Convert.ToInt16(Sqlcmd.ExecuteScalar());
            if (aa > 0)
            {
                string dd = DropDownList1.SelectedValue;
                string abc = dd + "." + "aspx";
                //System.Console.WriteLine(abc);

                Session["id"] = xuehao.Text.ToString();
                Sqlconn.Close();

                Response.Redirect(abc);


            }
            else
            {
                Response.Write("<script>alert('账号或密码错误或系部选择错误')</script>");
            }
        }

    }
  • bb等于**“teacher”**时就会执行里面的内容
  • 里面有个if判断语句,当a>0就会进入执行里面的语句,当a=0是就会执行else里的Response.Write("<script>alert('账号或密码错误或系部选择错误')</script>");这个语句,这个是个弹框,内容为:账号或密码错误或系部选择错误.
  • a的值为0还是1使是由String cmd = "select count(*) from teacher where id = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+ DropDownList1.SelectedItem.Text.ToString() +"'";这句决定的
  • select 是数据库查询语句
  • from teacher from后面是表名
  • where 后面的id = N" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+ DropDownList1.SelectedItem.Text.ToString() +"'"就是条件,意思为:id等于xuehao.Text.ToString()加password等于mima.Text.ToString()加xibu等于 DropDownList1.SelectedItem.Text.ToString(),这个条件符合的话,a就是1,否则a就是0
  • id,password,xibu是表teacher里面的项,也就是这个项里面的值和户名填的值一样的话,a就为1
  • xuehao.Text.ToString() ,mima.Text.ToString(),DropDownList1.SelectedItem.Text.ToString()这三个分别是:获取ip为xuehao的控件的text(文本)值转为str(tostring就是这个作用);获取ip为mima的控件的text值转str;获取ip为DropDownList1的控件的text值转str;
  • 这三个值分别对应账号,密码,和系部的选择,图片如下图的红色空
  • 三个框对应的ip为xuehao,mima,DropDownList
  • 当a>0时会执行以下的代码
string dd = DropDownList1.SelectedValue;
string abc = dd + "." + "aspx";
//System.Console.WriteLine(abc);

Session["id"] = xuehao.Text.ToString();
Sqlconn.Close();

Response.Redirect(abc);
  • 整体意思是字符串拼接,拼接成要跳转的页面
  • string dd = DropDownList1.SelectedValue;的意思是取ip为DropDownList1的Value值,赋值个bb(也就是说bb就是对应的value值),这个控件有四个Value值,如下图,下图的Value值分别对应的是:xinxi,jingcha,falv,sijian
    在这里插入图片描述- string abc = dd + "." + "aspx";这句话的意思是每个每个value值后加上“.aspx”,用abc来承接新的字符
  • Response.Redirect(abc);这句话就是跳转页面了,注意:页面起名是要和value值对应,这样就能实现不同系的跳转了。
3.2.3 解疑
  • 是不是教师账号对,就能实现去到各个系的页面?
  • 不是的,我们定了条件如下

String cmd = "select count(*) from teacher where id = N'" + xuehao.Text.ToString() + "' and password = N'" + mima.Text.ToString() + "' and xibu = N'"+

  • 也就是说,账号,密码,和系部都对,才能aa等于1,才会进行页面的跳转,可以结合3.3.2的内容了解。
  • 所以一个教师要登录多个页面的话,“teacher”表就要有多条同个账号密码,不同的系部才能实现.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值