zoukankan      html  css  js  c++  java
  • 我爱你,与你无关——登录系统的逻辑与结构

    源代码:13033480群共享

    如果我说,“编程,与编程无关”,你一定觉得不可思议;那,你又如何理解网上那句非常流行的名言,“我爱你,与你无关”?

    讲一个真实的故事吧,我原来在企业的时候,单位有个专职翻译,他曾把一个有2万词汇量的词典交给我,让我随便问。我问了,他真的一个都没记错。

    后来,总工把一个设备说明材料交给我,让我翻译,我一个晚上,9点—12点,3个小时,很轻松地翻好,交给了总工。(为此,总工欣赏了我好几年,直到我调走。)

    后来,我又知道,在我之前,这个翻译,已经翻了一个月了,没翻出来......

    难道,翻译,与翻译无关????

    我英语,自然烂得很,这个,不是谦虚;而这套设置,我差不多已经玩烂了,这个也不是谦虚!

    这是让我翻这个使用说明,我用了三个小时,如果让我自己写一个使用说明,我一个小时都不需要!

    这个故事告诉我,玩烂一个东西,再写这个东西,比什么都重要。

    现在,让我们玩玩这个登录系统吧......

    一、登录系统的使用逻辑

    运行一下这个登录程序,其实逻辑是这样的:

    1、在文本框如分别输入用户名和密码;

    2、点击“注册”按钮,如果:

    (1)用户名、密码正确,就跳转到了Default.aspx;

    (2)用户名或密码不正确,就弹出一个消息框,提示用户名或密码错误。

    二、登录系统的实现逻辑

    熟悉了登录系统的使用逻辑,也就有了它的实现逻辑:

    在点击“登录”按钮时,

    1、获取用户名和密码对应文本框中输入的值txtUserName.Text和txtPassword.Text;

    2、查询数据库NetShop中表Users中用户名为txtUserName.Text,密码为txtPassword.Text的项,获得一个SqlDataReader;

    3、判断这个SqlDataReader是否为空,如果:

    (1)SqlDataReader不为空,就跳转到Default.aspx;

    (2)SqlDataReader为空,就弹出消息框,提示“用户名或密码错误!”。

    很多语言都有登录系统,这些登录的逻辑,都是这个逻辑。也就是说,你按照这个逻辑编程,而与使用什么语言编,一点关系都没有,不是吗??

    有人已经看出来了,这个逻辑,其实就是“算法”,谭浩强早就指出“算法才是编程的灵魂”!

    (其实,我更喜欢把这种所谓的算法,叫做“解决问题的步骤”)

    下面我们看看,ASP.NET使用C#是怎么实现这个逻辑的:

    1. protected void btnLogin_Click(object sender, EventArgs e)  
    2. {  
    3.     bool blIsAuthenticated = false;  
    4.   
    5.     string strConnection = ConfigurationManager.ConnectionStrings["NetShopConnString"].ConnectionString.ToString();  
    6.   
    7.     SqlCommand cmd = new SqlCommand();  
    8.     using (SqlConnection conn = new SqlConnection(strConnection))  
    9.     {  
    10.         conn.Open();  
    11.   
    12.         cmd.Connection = conn;  
    13.         cmd.CommandType = CommandType.Text;  
    14.         cmd.CommandText = "SELECT UserName FROM Users WHERE UserName='" + txtUserName.Text + "' AND Password='" + txtPassword.Text + "'";  
    15.   
    16.         SqlDataReader rdr = cmd.ExecuteReader();  
    17.         if (rdr.Read())  
    18.         {  
    19.             blIsAuthenticated = true;  
    20.         }  
    21.         rdr.Close();  
    22.     }  
    23.   
    24.     if (blIsAuthenticated == true)  
    25.     {  
    26.         Session["UserName"] = txtUserName.Text;  
    27.         Response.Redirect("Default.aspx");  
    28.     }  
    29.     else  
    30.     {  
    31.         Response.Write("<script>alert('用户名或密码错误!')</script>");  
    32.     }  
    33. }  


    这个代码里,我使用了using()结构;使用了比较成熟的登录系统特有的一个变量blIsAuthenticated来判断是否登录成功;使用了类ConfigurationManager从Web.config中读取连接字符串。如果,我直接使用前面讲的最基本的数据库连接代码,你会看到,那将会是直接使用计算机语言来翻译我前面的实现逻辑了。

    这个登录系统的结构,在这里,就略一下吧......

    写诗的人常会说,“功夫在诗外”,相信这句话吧,编程,功夫在编程之外......

    版权所有©2012,西园电脑工作室.欢迎转载,转载请注明出处.更多文章请参阅博客http://blog.csdn.com/yousuosi

  • 相关阅读:
    uva 147 Dollars
    hdu 2069 Coin Change(完全背包)
    hdu 1708 Fibonacci String
    hdu 1568 Fibonacci
    hdu 1316 How Many Fibs?
    poj 1958 Strange Towers of Hanoi
    poj 3601Tower of Hanoi
    poj 3572 Hanoi Tower
    poj 1920 Towers of Hanoi
    筛选法——素数打表
  • 原文地址:https://www.cnblogs.com/java20130723/p/3211633.html
Copyright © 2011-2022 走看看