注册登录系统的基本逻辑与结构——ASP.NET(C#)源代码

 源代码:13033480群共享

一、登录界面的逻辑结构

1、基本的数据库连接代码:

    protected void btnConfirm_Click(object sender, EventArgs e)

    {

        bool blIsAuthenticated = false;

 

        string strConnection = ConfigurationManager.ConnectionStrings["SuperMarketDBConnectionString"].ConnectionString.ToString();

 

        SqlConnection conn = new SqlConnection();

        conn.ConnectionString = strConnection;

 

        SqlCommand cmd = new SqlCommand();

        cmd.Connection = conn;

        cmd.CommandType = CommandType.Text;

        cmd.CommandText = "SELECT hy_Username FROM T_Vip WHERE hy_Username='" + txtUserName.Text +"' AND hy_Password='" + txtPassword.Text+"'";

 

 

        conn.Open();

 

        SqlDataReader rdr = cmd.ExecuteReader();

        if (rdr.Read())

        {

            blIsAuthenticated = true;

        }

        rdr.Close();

        conn.Close();

 

 

        if (blIsAuthenticated == true)

        {

            Response.Redirect("Welcome.aspx");

        }

        else

        {

            Response.Write("<script>alert('用户名或密码错误!')</script>");

        }

}

这个代码中使用了一个布尔变量blIsAuthenticated,来判断数据库操作的成功与否,而没有在数据库操作过程中添加过多的逻辑结构,在数据库操作结束后,再根据这个变量,进行你想要的逻辑操作。

2try…catch…finally结构

    protected void btnConfirm_Click(object sender, EventArgs e)

    {

        bool blIsAuthenticated = false;

 

        string strConnection = ConfigurationManager.ConnectionStrings["SuperMarketDBConnectionString"].ConnectionString.ToString();

 

        SqlCommand cmd = new SqlCommand();

        SqlConnection conn = new SqlConnection(strConnection);

        try

        {

            conn.Open();

 

            cmd.Connection = conn;

            cmd.CommandType = CommandType.Text;

            cmd.CommandText = "SELECT hy_Username FROM T_Vip WHERE hy_Username='" + txtUserName.Text +"' AND hy_Password='" + txtPassword.Text +"'";

 

            SqlDataReader rdr = cmd.ExecuteReader();

            if (rdr.Read())

            {

                blIsAuthenticated = true;

            }

            rdr.Close();

        }

        finally

        {

            conn.Close();

        }

 

        if (blIsAuthenticated == true)

        {

            Session["UserName"] = txtUserName.Text;

            Response.Redirect("Welcome.aspx");

        }

        else

        {

            Response.Write("<script>alert('用户名或密码错误!')</script>");

        }

}

为了说明下面的using()结构,代码中没有用使用catch关键字,注册中有采用。这个结构的主要目的,是确保SqlConnection在使用后能及时Close(),并Dispose()

3using()结构

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

    {

        protected void Page_Load(object sender, EventArgs e)

        {

 

        }

        protected void btnConfirm_Click(object sender, EventArgs e)

        {

            bool blIsAuthenticated =false;

 

            string strConnection =ConfigurationManager.ConnectionStrings["SuperMarketDBConnectionString"].ConnectionString.ToString();

 

            SqlCommand cmd = new SqlCommand();

            using (SqlConnection conn =newSqlConnection(strConnection))

            {

                conn.Open();

 

                cmd.Connection = conn;

                cmd.CommandType = CommandType.Text;

                cmd.CommandText = "SELECT hy_Username FROM T_Vip WHERE hy_Username='" + txtUserName.Text +"' AND hy_Password='" + txtPassword.Text +"'";

 

                SqlDataReader rdr = cmd.ExecuteReader();

                if (rdr.Read())

                {

                    blIsAuthenticated = true;

                }

                rdr.Close();

            }

 

            if (blIsAuthenticated ==true)

            {

                Session["UserName"] = txtUserName.Text;

                Response.Redirect("Welcome.aspx");

            }

            else

            {

                Response.Write("<script>alert('用户名或密码错误!')</script>");

            }

        }

    }

简单地理解,using()结构,就是catch…finally结构的另一种形式而已。

二、登录界面的逻辑结构

        protected void btnRegist_Click(object sender, EventArgs e)

        {

            if (Page.IsValid)

            {

                string strConnection =ConfigurationManager.ConnectionStrings["SuperMarketDBConnectionString"].ConnectionString;

                string cmdText = "insert into t_Vip(hy_Username,hy_Password,hy_Name,hy_Sex,hy_Age,hy_Mobliephone,hy_Email,hy_QQ) values(@hy_Username,@hy_Password,@hy_Name,@hy_Sex,@hy_Age,@hy_Mobliephone,@hy_Email,@hy_QQ)";

 

                string username = txtUserName.Text;

                string password = txtPassword.Text;

                string truename = txtTrueName.Text;

                string sex = radlSex.SelectedValue;

                int age = Convert.ToInt16(txtAge.Text);

                string phone = txtPhone.Text;

                string email = txtEmail.Text;

                string qq = txtQQ.Text;

 

                SqlParameter[] parms ={

                new SqlParameter("@hy_Username", SqlDbType.VarChar, 20),

                new SqlParameter("@hy_Password", SqlDbType.VarChar, 20),

                new SqlParameter("@hy_Name", SqlDbType.VarChar, 20),

                new SqlParameter("@hy_Sex", SqlDbType.VarChar, 2),

                new SqlParameter("@hy_Age", SqlDbType.Int),

                new SqlParameter("@hy_Mobliephone", SqlDbType.VarChar,20),

                new SqlParameter("@hy_Email", SqlDbType.VarChar, 50),

                new SqlParameter("@hy_QQ", SqlDbType.VarChar, 20)};

 

                parms[0].Value = username;

                parms[1].Value = password;

                parms[2].Value = truename;

                parms[3].Value = sex;

                parms[4].Value = age;

                parms[5].Value = phone;

                parms[6].Value = email;

                parms[7].Value = qq;

 

 

                SqlCommand cmd = new SqlCommand();

                SqlConnection conn =newSqlConnection(strConnection);

                try

                {

                    if (conn.State !=ConnectionState.Open)

                        conn.Open();

 

                    cmd.Connection = conn;

                    cmd.CommandType = CommandType.Text;

                    cmd.CommandText = cmdText;

 

                    foreach (SqlParameter parmin parms)

                        cmd.Parameters.Add(parm);

 

                    cmd.ExecuteNonQuery();

                }

                catch

                {

                    Response.Redirect("ErrorMessage.aspx");

                }

                finally

                {

                    conn.Close();

                }

 

                Response.Redirect("Login.aspx");

            }

        }

}

登录界面的逻辑结构,主要多了一个SqlCommand对象要使用的SqlParmeter参数,这个变量,采用数组比较好,便于以后把数据库操作部分放在函数中,放在类中时的参数传递。

三、界面设计

1、配色方案:

190-80-87

221-144-150

243-213-215

 

 

 

#BE5057

#DD9096

#F3D5D7

                  

2、格式设计

主要遵循了这个几个原则:

1)对于象登录、注册这样局部的布局采用表格+CSS结构,事实上ASP.NET的很多Web控件,都采用的表格。

2)共性的样子,如配色方案的颜色都放在了CSS样式表中,个性的样式,及个别CSS不能设置的样式如表格的行高,使用了表格的属性。

3)按照Stephen Walther(《ASP.NET2.0揭秘》一书的作者)的说法,舍弃了皮肤文件设置样式的方法,而采用了cssClass,把控件的样式也放在了CSS中。

原文地址:https://www.cnblogs.com/java20130723/p/3211645.html