热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#网上书店登录界面实现——正则表达式(软工笔记)

C#网上书店登录界面实现——正则表达式一、实现环境二、界面要求三、具体实现1、界面布局2、运行效果3、登录实现代码:4、注册实现代码四、遇到的问题及待解决的问题一、实


C#网上书店登录界面实现——正则表达式

  • 一、实现环境
  • 二、界面要求
  • 三、具体实现
    • 1、界面布局
    • 2、运行效果
    • 3、登录实现代码:
    • 4、注册实现代码
  • 四、遇到的问题及待解决的问题




一、实现环境

C#、window10、vs2019
数据库SQL Server (SQLEXPRESS)


二、界面要求

1 、连接本地数据库
2 、用户名:用户名可以是数字、下划线(不能开头)、字母、汉字。
3 、密码:密码不能小于8或大于16,密码必须包含数字和字母。
4 、用到的命名空间:

using System.Data.SqlClient;
using System.Text.RegularExpressions;

5 、用户名正则代码如下:

^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$

6、 密码正则代码如下:

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$

三、具体实现


1、界面布局

在这里插入图片描述
密码文本框password属性改为 *
在这里插入图片描述
checkbox代码实现部分如下:

private void checkBox1_CheckedChanged(object sender, EventArgs e){if (checkBox1.Checked){textBox2.PasswordChar = '\0';}else{textBox2.PasswordChar = '*';}}

在这里插入图片描述


2、运行效果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3、登录实现代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace bookstore_login
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private SqlConnection conn = null;private SqlCommand cmd = null;private SqlDataReader reader = null;private string connstring = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=loginDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";private void button2_Click(object sender, EventArgs e){try{conn = new SqlConnection(connstring);conn.Open();cmd = conn.CreateCommand();cmd.CommandText = "SELECT login_table.* FROM login_table where(name=@name) and (password=@password)";cmd.Parameters.AddWithValue("@name", textBox1.Text.Trim());cmd.Parameters.AddWithValue("@password", textBox2.Text.Trim());reader = cmd.ExecuteReader();if (reader.Read()){MessageBox.Show("登陆成功", "登陆成功", MessageBoxButtons.OK, MessageBoxIcon.Information);}else{MessageBox.Show("用户名、密码不正确", "登陆失败", MessageBoxButtons.OK, MessageBoxIcon.Error);}}catch (Exception ex){MessageBox.Show(ex.Message, "open error", MessageBoxButtons.OK);}finally{if (reader != null){reader.Close();}if (conn.State == ConnectionState.Open){conn.Close();}}}private void checkBox1_CheckedChanged(object sender, EventArgs e){if (checkBox1.Checked){textBox2.PasswordChar = '\0';}else{textBox2.PasswordChar = '*';}}private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){Form_注册 reg = new Form_注册();reg.ShowDialog();}}
}

4、注册实现代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Text.RegularExpressions;namespace bookstore_login
{public partial class Form_注册 : Form{public Form_注册(){InitializeComponent();}private static int agree &#61; 0;private SqlConnection conn &#61; null;private SqlCommand cmd &#61; null;private SqlDataReader reader &#61; null;private string connstring &#61; &#64;"Data Source&#61;(localdb)\MSSQLLocalDB;Initial Catalog&#61;loginDB;Integrated Security&#61;True;Connect Timeout&#61;30;Encrypt&#61;False;TrustServerCertificate&#61;False;ApplicationIntent&#61;ReadWrite;MultiSubnetFailover&#61;False";private int checkname(){Regex re &#61; new Regex("^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]&#43;$");Regex re_ &#61; new Regex("^(?!_)");int flag &#61; 1;if ( textBox2.Text.Length < 6){MessageBox.Show("用户名不能小于6");flag &#43;&#61; 1;}else if (textBox2.Text.Length > 12){MessageBox.Show("用户名不能大于12");flag &#43;&#61; 1;}else if (!re_.IsMatch(textBox2.Text.ToString())){MessageBox.Show("用户名下划线不能放在开头");flag &#43;&#61; 1;}else if (!re.IsMatch(textBox2.Text.ToString())){MessageBox.Show("含有非法字符");flag &#43;&#61; 1;}return flag;}private int checkpd(){Regex re &#61; new Regex("^(?![0-9]&#43;$)(?![a-zA-Z]&#43;$)[0-9A-Za-z]{8,16}$");int flag &#61; 1;if (textBox3.Text.Length<8){MessageBox.Show("密码不能小于8");flag &#43;&#61; 1;}else if (textBox3.Text.Length>16){MessageBox.Show("密码不能大于16");flag &#43;&#61; 1;}else if (!re.IsMatch(textBox3.Text.ToString())){MessageBox.Show("密码必须是字母数字的结合");flag &#43;&#61; 1;}return flag;}private void button1_Click(object sender, EventArgs e){if (checkname()&#61;&#61;1&&checkpd()&#61;&#61;1){if (agree &#61;&#61; 1){try{conn &#61; new SqlConnection(connstring);conn.Open();cmd &#61; conn.CreateCommand();cmd.CommandText &#61; "INSERT INTO login_table (name, password) VALUES (&#64;name, &#64;password)";cmd.Parameters.AddWithValue("&#64;name", textBox2.Text.Trim());cmd.Parameters.AddWithValue("&#64;password", textBox3.Text.Trim());if (String.IsNullOrEmpty(textBox2.Text)){MessageBox.Show("用户名不能为空&#xff01;");return;}if (String.IsNullOrEmpty(textBox3.Text)){MessageBox.Show("密码不能为空&#xff01;");return;}int n &#61; cmd.ExecuteNonQuery();if (n > 0){MessageBox.Show("成功注册,请登录", "insert ok", MessageBoxButtons.OK, MessageBoxIcon.Information);}else{MessageBox.Show("注册失败", "insert error", MessageBoxButtons.OK, MessageBoxIcon.Error);}}catch (Exception ex){MessageBox.Show(ex.Message, "open error", MessageBoxButtons.OK);}finally{if (conn.State &#61;&#61; ConnectionState.Open){conn.Close();}}this.Close();}else{MessageBox.Show("请勾选用户协议和隐私声明");}} }private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){this.Close();}private void checkBox1_CheckedChanged(object sender, EventArgs e){agree &#61; 1;}}
}

四、遇到的问题及待解决的问题

1、建议使用.Net Framwork框架&#xff0c;如果使用.NET Core框架&#xff0c;导入using System.Data.SqlClient&#xff0c;使用时会报错&#xff0c;需要手动添加System.Data.SqlClient&#xff0c;具体操作见https://blog.csdn.net/sjtuxx_lee/article/details/94338908主要操作内容如下
在这里插入图片描述

控制台输入命令如下&#xff1a;

PM> Install-Package System.Data.Common
PM> Install-Package System.Data.SqlClient

2、界面添加图片时&#xff0c;一定要添加到backgroundimage属性&#xff0c;然后再把backgroundimagelayout改为stretch&#xff0c;不要添加到image属性&#xff0c;这样才能完整的显示图片内容。
3、SQL Server(SQLEXPRESS)&#xff0c;注册&#xff08;插入数据&#xff09;时&#xff0c;用户名使用汉字时&#xff0c;存入数据库后&#xff0c;汉字会出现乱码&#xff0c;没有找到数据库如何设置编码&#xff0c;还是避免使用汉字吧&#xff0c;希望会的大佬可以评论教一下。
4、未实现功能&#xff1a;本想在用户名和密码文本框内加入隐藏提示内容&#xff0c;像下图一样&#xff0c;在这里插入图片描述
通过焦点事件控制提示事件&#xff0c;由于时间、技术原因未能实现该功能&#xff0c;有大佬知道的话可以发个链接。


推荐阅读
  • 20100423:Fixes:更新批处理,以兼容WIN7。第一次系统地玩QT,于是诞生了此预备式:【QT版本4.6.0&#x ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 优化局域网SSH连接延迟问题的解决方案
    本文介绍了解决局域网内SSH连接到服务器时出现长时间等待问题的方法。通过调整配置和优化网络设置,可以显著缩短SSH连接的时间。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 本文介绍如何在PostgreSQL数据库中正确插入和处理JSON数据类型,确保数据完整性和避免常见错误。 ... [详细]
  • 解析SQL查询结果的排序问题及其解决方案
    本文探讨了为什么某些SQL查询返回的数据集未能按预期顺序排列,并提供了详细的解决方案,帮助开发者理解并解决这一常见问题。 ... [详细]
  • 本文探讨了在 OpenStack 环境中使用虚拟机部署 Ceph 集群后,外部服务器通过浮动 IP 无法访问该集群的问题,并提供了详细的解决方案。 ... [详细]
author-avatar
121飒飒
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有