Winform学生信息管理系统登陆窗体设计(1)

下面是Winform学生信息管理系统登陆窗体设计的完整攻略。

一、设计思路

设计一个Winform学生信息管理系统登陆窗体需要以下几步:

  1. 新建一个Winform项目,添加登陆窗体。
  2. 设计登陆窗体的布局,包括添加组件,设置组件属性等。
  3. 为登陆窗体的组件添加事件处理程序,比如点击按钮触发登陆操作。
  4. 在事件处理程序中,编写验证登陆信息的代码,并执行相应的操作。

二、实现步骤

1. 新建一个Winform项目,添加登陆窗体

打开Visual Studio,选择“文件”-“新建”-“项目”,选择Visual C#-Windows经典桌面-Winform应用程序。然后在解决方案资源管理器中,右键单击“应用程序”,选择“添加”-“新建项”,在“添加新项”对话框中选择“Windows 窗体”,命名为“LoginForm.cs”。

2. 设计登陆窗体的布局

在设计器中,将LoginForm.cs中的窗体大小设置为300*200。然后在窗体中添加两个Label、两个TextBox和两个Button控件。

其中第一个Label用于显示“用户名”,将其Text属性设置为“用户名”;第二个Label用于显示“密码”,将其Text属性设置为“密码”。

对于两个TextBox,一个用于输入用户名,一个用于输入密码。将其Multiline属性都设置为false,并分别设置为PasswordChar='*',以保证输入的密码被隐藏。

最后添加了两个Button控件,一个用于执行登陆操作,将其Text属性设置为“登录”;另一个用于取消登陆操作,将其Text属性设置为“取消”。

3. 为登陆窗体的控件添加事件处理程序

在设计器中,选中“登录”按钮,进入事件的属性面板,在Click事件下拉菜单中选择“事件处理程序”-“新建”,将窗体中的代码和事件处理联系起来。

在新建的事件处理程序“LoginForm_Load”方法中,添加以下代码:

         txtName.Focus(); //将光标设置在用户名输入框上

在“登录”按钮的“Click”事件处理程序中,添加以下代码:

        private void btnLogin_Click(object sender, EventArgs e)
        {
            //获取用户输入的用户名和密码
            string username = txtName.Text.Trim(); 
            string password = txtPwd.Text.Trim();

            //验证用户名和密码是否为空
            if (string.IsNullOrEmpty(username))
            {
                MessageBox.Show("请填写用户名!");
                txtName.Focus();
                return;
            }
            if (string.IsNullOrEmpty(password))
            {
                MessageBox.Show("请填写密码!");
                txtPwd.Focus();
                return;
            }

            //模拟账号验证
            if (username.Equals("admin") && password.Equals("123456"))
            {
                MessageBox.Show("登录成功!");
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
            else
            {
                MessageBox.Show("用户名或密码错误,请重试!");
                txtPwd.Clear();
                txtPwd.Focus();
            }
        }

这里使用了一个模拟账号验证的方法,在实际应用中需要根据实际情况进行修改。

4. 执行登陆操作

最后,在主窗体中,可以使用以下代码来调用Login窗体实现登陆操作:

        private void btnLogin_Click(object sender, EventArgs e)
        {
            LoginForm loginForm = new LoginForm();

            if (loginForm.ShowDialog() == DialogResult.OK)
            {
                //按照实际情况进行跳转或其他操作
                MessageBox.Show("欢迎进入学生信息管理系统!");
            }
        }

这样,在单击主窗体上的“登录”按钮时,就会弹出登陆窗体,用户输入正确的用户名和密码后,返回一个“OK”的结果给主窗体,以便在登陆成功后进行相应的操作。

三、示例说明

以下是两条Winform学生信息管理系统登陆窗体设计的示例说明:

1. 示例一

在Winform登录窗口中添加“记住密码”和“自动登录”选项,勾选后显示不同的状态信息,实现以下逻辑:

  • “记住密码”被勾选时,下次进入登录窗口,密码栏自动填上上次登录的密码,用户名不变。
  • “自动登录”被勾选时,下次直接进入主窗口,不需要再次输入用户名和密码。
private void chkSavePwd_CheckedChanged(object sender, EventArgs e)
{
    if (chkSavePwd.Checked)
    {
        chkAutoLogin.Enabled = true;
    }
    else
    {
        chkAutoLogin.Enabled = false;
        chkAutoLogin.Checked = false;
    }
}

private void chkAutoLogin_CheckedChanged(object sender, EventArgs e)
{
    if (chkAutoLogin.Checked)
    {
        chkSavePwd.Checked = true;
        MessageBox.Show("自动登录已开启");
    }
    else
    {
        MessageBox.Show("自动登录已关闭");
    }
}

private void LoadLoginInfo()
{
    if (File.Exists("login.txt"))
    {
        using (StreamReader sr = new StreamReader("login.txt"))
        {
            txtName.Text = sr.ReadLine();
            txtPwd.Text = sr.ReadLine();
            chkSavePwd.Checked = Convert.ToBoolean(sr.ReadLine());
            if (chkSavePwd.Checked)
            {
                chkAutoLogin.Enabled = true;
                chkAutoLogin.Checked = Convert.ToBoolean(sr.ReadLine());
            }
        }
    }
}

private void SaveLoginInfo()
{
    using (StreamWriter sw = new StreamWriter("login.txt"))
    {
        sw.WriteLine(txtName.Text.Trim());
        sw.WriteLine(txtPwd.Text.Trim());
        sw.WriteLine(chkSavePwd.Checked);
        if (chkSavePwd.Checked)
        {
            sw.WriteLine(chkAutoLogin.Checked);
        }
    }
}

private void LoginForm_Load(object sender, EventArgs e)
{
    LoadLoginInfo();
}

private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if (chkSavePwd.Checked)
    {
        SaveLoginInfo();
    }
}

private void btnLogin_Click(object sender, EventArgs e)
{
    //获取用户输入的用户名和密码
    string username = txtName.Text.Trim();
    string password = txtPwd.Text.Trim();

    //验证用户名和密码是否为空
    if (string.IsNullOrEmpty(username))
    {
        MessageBox.Show("请填写用户名!");
        txtName.Focus();
        return;
    }
    if (string.IsNullOrEmpty(password))
    {
        MessageBox.Show("请填写密码!");
        txtPwd.Focus();
        return;
    }

    //模拟账号验证
    if (username.Equals("admin") && password.Equals("123456"))
    {
        MessageBox.Show("欢迎进入学生信息管理系统!");
        if (chkAutoLogin.Checked)
        {
            this.DialogResult = DialogResult.OK;
        }
        else
        {
            this.DialogResult = DialogResult.Yes;
        }
        this.Close();
    }
    else
    {
        MessageBox.Show("用户名或密码错误,请重试!");
        txtPwd.Clear();
        txtPwd.Focus();
    }
}

2. 示例二

在Winform登录窗口中实现验证码功能,实现以下逻辑:

  • 启动窗口时,产生一个四位数字验证码,以及对应的验证码图片,显示出来。
  • 输入用户名和密码后,如果验证码错误,提示验证码错误。若验证码正确,执行登陆操作。
private string code;
private void LoginForm_Load(object sender, EventArgs e)
{
    GenerateCode();
}

private void GenerateCode()
{
    Random random = new Random();
    code = string.Empty;
    for (int i = 0; i < 4; i++)
    {
        code += random.Next(10).ToString();
    }
    Bitmap bmp = new Bitmap(panel1.Width, panel1.Height);
    Graphics g = Graphics.FromImage(bmp);
    g.Clear(Color.White);
    for (int i = 0; i < code.Length; i++)
    {
        Font font = new Font("微软雅黑", 26, (FontStyle.Bold | FontStyle.Italic));
        Brush brush = new SolidBrush(Color.FromArgb(
            random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)));
        g.DrawString(code[i].ToString(), font, brush, i * 50 + 10, 5);
    }
    for (int i = 0; i < 50; i++)
    {
        Brush brush = new SolidBrush(Color.FromArgb(
            random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)));
        bmp.SetPixel(random.Next(0, bmp.Width), random.Next(0, bmp.Height), brush.Color);
    }
    panel1.BackgroundImage = bmp;
}

private void btnRefresh_Click(object sender, EventArgs e)
{
    GenerateCode();
}

private void btnLogin_Click(object sender, EventArgs e)
{
    //获取用户输入的用户名、密码和验证码
    string username = txtName.Text.Trim();
    string password = txtPwd.Text.Trim();
    string usercode = txtCode.Text.Trim();

    //验证用户名和密码是否为空
    if (string.IsNullOrEmpty(username))
    {
        MessageBox.Show("请填写用户名!");
        txtName.Focus();
        return;
    }
    if (string.IsNullOrEmpty(password))
    {
        MessageBox.Show("请填写密码!");
        txtPwd.Focus();
        return;
    }
    if (string.IsNullOrEmpty(usercode))
    {
        MessageBox.Show("请填写验证码!");
        txtCode.Focus();
        return;
    }

    //验证验证码
    if (usercode.Equals(code))
    {
        //模拟账号验证
        if (username.Equals("admin") && password.Equals("123456"))
        {
            MessageBox.Show("欢迎进入学生信息管理系统!");
            this.DialogResult = DialogResult.OK;
            this.Close();
        }
        else
        {
            MessageBox.Show("用户名或密码错误,请重试!");
            txtPwd.Clear();
            txtPwd.Focus();
        }
    }
    else
    {
        MessageBox.Show("验证码错误,请重新输入!");
        txtCode.Clear();
        txtCode.Focus();
        GenerateCode();
    }
}

以上就是Winform学生信息管理系统登陆窗体设计的完整攻略,包括设计思路、实现步骤和示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Winform学生信息管理系统登陆窗体设计(1) - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Asp.Net Core 调用第三方Open API查询物流数据的示例

    下面我为您详细讲解 “Asp.Net Core 调用第三方Open API查询物流数据的示例”的完整攻略。 1. 确认使用的 Open API 接口文档 首先,我们需要确认要使用的 Open API 接口文档,以及该文档所提供的查询物流数据的接口信息,包括请求参数和响应数据格式等。通常情况下,我们需要先向物流公司或第三方物流数据服务提供商申请 API 接口权…

    C# 2023年6月3日
    00
  • asp.net微信开发(自定义会话管理)

    ASP.NET微信开发自定义会话管理攻略 1. 简介 微信公众号开发需要用到微信的会话管理,微信提供了默认的会话功能,但是很多时候,开发者的业务需求与微信默认的会话功能并不完全匹配,这时候就需要自定义会话管理。本攻略就是讲解如何通过ASP.NET开发自定义会话管理。 2. 实现步骤 2.1 SessionState模式 微信的会话管理需要依赖ASP.NET的…

    C# 2023年6月3日
    00
  • C#中使用jieba.NET、WordCloudSharp制作词云图的步骤

    下面我将为您详细讲解 C# 中使用 jieba.NET 和 WordCloudSharp 制作词云图的步骤。 准备环境 首先,您需要准备好以下环境: .NET Framework 4.0 及以上版本; jieba.NET; WordCloudSharp。 安装 jieba.NET jieba.NET 是一个分词工具,可以将文本分解成单词。您可以将其安装到您的…

    C# 2023年5月31日
    00
  • 使用HttpClient增删改查ASP.NET Web API服务

    以下是“使用HttpClient增删改查ASP.NET WebAPI服务”的完整攻略: 什么是HttpClient HttpClient是.NET Framework中的一个类,它提供一组用于发送请求和接收HTTP的方法。我们可以使用它来消费Web API服务。 使用HttpClient增删改查.NET WebAPI服务 以下是使用HttpClient增删改…

    C# 2023年5月12日
    00
  • C#常用字符串加密解密方法封装代码

    非常感谢您对C#常用字符串加密解密方法封装代码的关注。下面为您详细介绍如何实现该功能。 1. 基本概念 在介绍具体的代码实现之前,首先需要了解一些基本概念。 1.1 加密和解密 加密是指将原始的明文数据通过一定的算法转换为密文,以达到防止信息泄露的目的;而解密则是指将密文数据还原回原始的明文数据。 1.2 对称加密和非对称加密 对称加密是指加密和解密使用同一…

    C# 2023年6月7日
    00
  • VS2019使用快捷键将代码对齐的方法

    下面是VS2019使用快捷键将代码对齐的方法的详细讲解: 1. 概述 在编写代码时,我们通常需要把代码对齐,以提高可读性。手动对齐耗时耗力,使用快捷键则可快速完成对齐操作。VS2019提供了一系列快捷键,可以帮助我们快速对齐代码。 2. 快捷键对应功能 下面是常用的几个快捷键及对应的代码对齐功能: Ctrl+K+D 快速格式化代码,实现对齐 Ctrl+K+F…

    C# 2023年6月3日
    00
  • Entity Framework使用DBContext实现增删改查

    以下是关于Entity Framework使用DbContext实现增删改查的完整攻略。 一、什么是Entity Framework Entity Framework 是微软提供的一种ORM(对象关系映射)框架,它将关系型数据库中的数据转换成.NET中的对象,开发者可以通过对象的方式来操作数据库,并且Entity Framework可以自动将对象转化为SQL…

    C# 2023年6月3日
    00
  • ASP.NET中高质量缩略图的生成代码

    生成高质量缩略图是很多网站开发者需要解决的问题之一。在 ASP.NET 中高质量缩略图可以通过使用 System.Drawing 命名空间实现。下面是一份完整的 ASP.NET 中生成高质量缩略图攻略,包括代码示例。 步骤1:添加 System.Drawing 引用 生成高质量缩略图需要使用 System.Drawing 命名空间中的方法和类。需要在项目中添…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部