2020-10-03

    科技2022-07-11  102

    基于ADO.NET的用户登陆与注册系统

    1. 创建数据表users 

    1.1 users表的设计 

    1.2 SQL代码 

    2. 用户登陆功能 

    2.1 登陆界面设计 

    2.2 修改控件ID和属性 

    2.3 登陆按钮功能实现 

    2.4 注册按钮功能实现 

    2.5 忘记密码按钮功能实现 

    3. 用户注册功能 

    3.1 注册界面设计 

    3.2 修改控件属性 

    3.3注册功能的实现 

    3.4返回按钮功能的实现 

    4. 找回密码功能 

    4.1 找回密码界面设计 

    4.2 修改控件属性 

    4.3 页面加载事件 

    4.4 重置密码功能实现 

    4.5 返回按钮功能实现 

    5. 用户登陆 

    5.1 管理员登录 

    5.1.1 管理员界面设计 

    5.1.2 配置数据源 

    5.2 普通用户登陆 

    6. 补充和完善 

    7. 系统下载地址 

     摘要:基于ASP.NET的WEB应用程序项目,使用程序语言C#,利用ADO.NET访问数据库,实现一个简易的用户登陆注册系统。主要实现的功能有用户登陆、用户注册、找回密码,软件版本采用的vs2010加Sql Sever2014。

    关键字:ASP.NET;ADO.NET;WEB;vs2010;数据库

    1. 创建数据表users

    1.1 users表的设计

    users表的表结构设计如图1-1-1,users表中的数据填充如图1-1-2。

     

     

     图1-1-1

    图1-1-2

    1.2 SQL代码 

    CREATE TABLE users ( username NCHAR(10) PRIMARY KEY NOT NULL, userpwd NCHAR(10) NOT NULL, level NCHAR(10) NOT NULL, question NCHAR(20) NOT NULL, answer NCHAR(20) NOT NULL ) INSERT INTO users VALUES('花花','123456','admin','国家','中国'); INSERT INTO users VALUES('贝贝','654321','user','省份','广东'); INSERT INTO users VALUES('宝宝','456789','user','城市','广州');

    2. 用户登陆功能

    2.1 登陆界面设计

    新建一个Web窗体命名为login.aspx,打开login.aspx文件,切换至设计视图,插入表(4行2列),从工具栏中拉入2个TextBox控件和3个Button控件到界面上。页面布局如图2-1-1。

     

    图2-1-1

    2.2 修改控件属性

    登陆界面源代码如下:

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> .style1 { width: 279px; } .style2 { color: #0066FF; height: 24px; } .style3 { text-align:left; } </style> </head> <body> <form id="form1" runat="server"> <table class="style1"> <tr> <td class="style2" colspan="2" style="text-align: center"> 用户登陆</td> </tr> <tr> <td class="style3"> 用户名</td> <td> <asp:TextBox ID="txt_username" runat="server"></asp:TextBox> </td> </tr> <tr> <td class="style3"> 密码</td> <td> <asp:TextBox ID="txt_pwd" runat="server" TextMode="Password"></asp:TextBox> </td> </tr> <tr> <td colspan="2"> <asp:Button ID="btn_login" runat="server" Text="登陆" onclick="btn_login_Click" />   <asp:Button ID="btn_register" runat="server" Text="注册" onclick="btn_register_Click" />   <asp:Button ID="btn_forget" runat="server" Text="忘记密码" onclick="btn_forget_Click" /> </td> </tr> </table> </form> </body> </html>

    2.3 登陆按钮功能实现

    双击登陆按钮,创建Click事件,编写功能代码如下:

    protected void btn_login_Click(object sender, EventArgs e) { string strName = txt_username.Text; Session["username"] = strName; SqlConnection con = new SqlConnection(); con.ConnectionString = "server=.\\sqlexpress;database=SYSTEM01;integrated security=true"; SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandText = "select * from users where username='" +txt_username.Text + "' and userpwd='" + txt_pwd.Text + "'"; SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); ds.Clear(); con.Open(); da.Fill(ds, "users"); con.Close(); if (ds.Tables["users"].Rows.Count == 0) { Response.Write("<script>alert('用户名或密码错!')</script>"); return; } DataRow dr = ds.Tables["users"].Rows[0]; if (dr[2].ToString().Trim() == "admin") Response.Write("<script>alert('你是管理员,欢迎');window.location.href='admin.aspx'</script>"); else Response.Write("<script>alert('你是普通用户,欢迎');window.location.href='users.aspx'</script>"); }

    2.4 注册按钮功能实现

    双击注册按钮,创建Click事件,编写功能代码如下:

    protected void btn_register_Click(object sender, EventArgs e) { Response.Redirect("register.aspx"); }

    2.5 忘记密码按钮功能实现

    双击忘记密码按钮,创建Click事件,编写功能代码如下:

    protected void btn_forget_Click(object sender, EventArgs e) { if (txt_username.Text == "") { Response.Write("<script>alert('请输入用户名')</script>"); return; } Response.Redirect("forget.aspx?username=" + txt_username.Text); }

    3.用户注册功能

    3.1 注册界面设计

    新建一个Web窗体,命名为register.aspx。切换至设计视图,插入表(7行两列,拉入3个TextBox控件、2个DropDownList控件和2个Button控件到界面上,界面布局如图3-1-1。

    图3-1-1

    3.2 修改控件属性

    用户注册源代码如下:

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> .style1 { width: 500px; } </style> </head> <body> <form id="form1" runat="server"> <div> <table class="style1"> <tr> <td colspan="2" style="text-align: center; color: #3366FF"> 用户注册</td> </tr> <tr> <td> 用户名</td> <td> <asp:TextBox ID="r_username" runat="server"></asp:TextBox> </td> </tr> <tr> <td> 密码</td> <td> <asp:TextBox ID="r_pwd" runat="server" TextMode="Password" ></asp:TextBox> </td> </tr> <tr> <td> 身份</td> <td> <asp:DropDownList ID="DDL_id" runat="server"> <asp:ListItem Value="admin">管理员</asp:ListItem> <asp:ListItem Value="user">普通用户</asp:ListItem> </asp:DropDownList> </td> </tr> <tr> <td> 密保问题</td> <td> <asp:DropDownList ID="DDL_question" runat="server"> <asp:ListItem Value="国家">国家?</asp:ListItem> <asp:ListItem Value="省份">省份?</asp:ListItem> <asp:ListItem Value="城市">城市?</asp:ListItem> </asp:DropDownList> </td> </tr> <tr> <td> 密保答案</td> <td> <asp:TextBox ID="txt_answer" runat="server"></asp:TextBox> </td> </tr> <tr> <td colspan="2"> <asp:Button ID="btn_register" runat="server" Text="注册" onclick="btn_register_Click" />   <asp:Button ID="btn_return" runat="server" Text="返回" /> </td> </tr> </table> </div> </form> </body> </html>

    3.3 注册功能的实现

    双击注册按钮,创建Click事件,编写功能代码如下:

    protected void btn_register_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(); con.ConnectionString = "server=.\\sqlexpress;database=SYSTEM01;integrated security=true"; SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandText = "insert into users(username,userpwd,level,question,answer) values (@username,@userpwd,@level,@question,@answer)"; cmd.Parameters.Add("@username", SqlDbType.NChar, 10); cmd.Parameters.Add("@userpwd", SqlDbType.NChar, 10); cmd.Parameters.Add("@level", SqlDbType.NChar, 10); cmd.Parameters.Add("@question", SqlDbType.NChar, 20); cmd.Parameters.Add("@answer", SqlDbType.NChar, 20); cmd.Parameters["@username"].Value =r_username.Text; cmd.Parameters["@userpwd"].Value = r_pwd.Text; cmd.Parameters["@level"].Value = DDL_id.SelectedValue; cmd.Parameters["@question"].Value = DDL_question.SelectedValue; cmd.Parameters["@answer"].Value = txt_answer.Text; con.Open(); if (cmd.ExecuteNonQuery() > 0) Response.Write("数据新增成功"); //Response.Redirect("admin.aspx"); else Response.Write("数据新增失败"); con.Close(); }

     3.4 返回按钮功能的实现

    protected void btn_return_Click(object sender, EventArgs e) { Response.Redirect("login.aspx"); }

    4. 找回密码功能

    4.1 找回密码界面设计

    找回密码界面布局如图4-1-1。

    图4-1-1

    4.2 修改控件属性

    找回密码界面源代码如下:

    <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> .style1 { width: 500px; } .style2 { text-align: center; color: #9933FF; } .style3 { height: 27px; } </style> </head> <body> <form id="form1" runat="server"> <div> <table class="style1"> <tr> <td class="style2" colspan="2"> 找回密码</td> </tr> <tr> <td> 用户名</td> <td> <asp:Label ID="L_username" runat="server" Text="Label"></asp:Label> </td> </tr> <tr> <td> 密保问题</td> <td> <asp:Label ID="L_question" runat="server" Text="Label"></asp:Label> </td> </tr> <tr> <td class="style3"> 密保答案</td> <td class="style3"> <asp:TextBox ID="T_answer" runat="server"></asp:TextBox> </td> </tr> <tr> <td colspan="2"> <asp:Button ID="b_reset" runat="server" Text="重置密码" onclick="b_reset_Click" />    <asp:Button ID="b_return" runat="server" Text="返回" onclick="b_return_Click" /> </td> </tr> </table> </div> </form> </body> </html>

    4.3 页面加载事件

    protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString["username"] == null) Response.Redirect("login.aspx"); } L_username.Text = Request.QueryString["username"]; SqlConnection con = new SqlConnection(); con.ConnectionString = "server=.\\sqlexpress;database=SYSTEM01;integrated security=true"; SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandText = "select * from users where username='" + L_username.Text + "'"; SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); con.Open(); da.Fill(ds, "users"); con.Close(); if (ds.Tables["users"].Rows.Count == 0) { Response.Write("<script>alert('用户名不存在')</script>"); return; } DataRow dr = ds.Tables["USERS"].Rows[0]; L_question.Text = dr[3].ToString().Trim(); }

    4.4 重置密码功能实现

    protected void b_reset_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(); con.ConnectionString = "server=.\\sqlexpress;database=SYSTEM01;integrated security=true"; SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandText = "select * from users where username='" + L_username.Text + "'"; SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = cmd; DataSet ds = new DataSet(); con.Open(); da.Fill(ds, "users"); con.Close(); DataTable dt = new DataTable(); dt = ds.Tables["users"]; DataRow dr = dt.Rows[0]; if (T_answer.Text == dr[4].ToString().Trim()) { SqlCommandBuilder scb = new SqlCommandBuilder(da); Random r = new Random(); string newpwd = r.Next(100000, 999999).ToString(); Response.Write("<script>alert('你的新密码是:" + newpwd + ",请牢记并及时更改!')</script>"); dr["userpwd"] = newpwd; da.Update(dt); } else Response.Write("<script>alert('你的提示问题答案不正确')</script>"); }

    4.5 返回按钮功能实现

    protected void b_return_Click(object sender, EventArgs e) { Server.Transfer("login.aspx"); }

    5.用户登陆

    5.1 管理员登录

    5.1.1 管理员界面设计

    新建一个“admin.aspx”的Web窗体,切换至设计视图,从工具栏的数据组中拉入一个GridView控件,如图5-1-1。

    图5-1-1

    5.1.2 配置数据源

    在智能菜单中的有一个配置数据源的下拉框,选择“新建数据源”,弹出以下,参考图5-1-2至5-1-7操作步骤。

    图5-1-2

    图5-1-3

    图5-1-4

    图5-1-5

    图5-1-6

    图5-1-7

    5.2 普通用户登陆

    在“users.aspx.cs”代码的页面加载部分编写如下代码:

    protected void Page_Load(object sender, EventArgs e) { if (Session["username"] == null) { Response.Redirect("login.aspx"); } Response.Write("欢迎"+Session["username"]+"登陆傻瓜系统!"); }

    6. 补充和完善

    从工具栏的html组中分别给“admin.aspx”和“users.aspx”拉入1个按钮控件,源代码中新增修改的代码如下:

    <script language="javascript" type="text/javascript"> // <![CDATA[ function Button1_onclick() { window.location.href = "login.aspx"; } // ]]> </script> <p> <input id="Button1" type="button" value="返回" onclick="return Button1_onclick()" /> </p>

    7.系统下载地址

    https://download.csdn.net/download/qq_40795187/12910519

    Processed: 0.024, SQL: 8