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

  • 相关阅读:
    关于学习netty的两个完整服务器客户端范例
    android-betterpickers
    ValueBar
    CircleDisplay
    JellyViewPager
    十天学习PHP之第二天
    android-測试so动态库(九)
    实习题
    android 编程小技巧(持续中)
    Codeforces Round #253 (Div. 2)——Borya and Hanabi
  • 原文地址:https://www.cnblogs.com/java20130723/p/3211633.html
Copyright © 2011-2022 走看看