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日

相关文章

  • C#实现复制数据库 C#将A数据库数据转到B数据库

    介绍 本文将为大家详细讲解如何利用C#语言实现数据库的复制,即将A数据库数据转移到B数据库中。 步骤 1.创建控制台程序 首先,我们需要创建一个控制台应用程序,命名为“CopyDatabase”。 2.引入相关命名空间 在编写代码之前,我们需要引入一些命名空间,包括System.Data.SqlClient和System.Configuration。 usi…

    C# 2023年6月1日
    00
  • C#实现求一组数据众数的方法

    要实现求一组数据的众数,可以采用以下步骤: 步骤一:读入数据 首先要将一组数据读入程序中,可以使用数组、列表等数据结构来存储数据。 示例代码: int[] data = { 2, 3, 2, 4, 5, 2, 1 }; 步骤二:找出出现次数最多的数 通过遍历数组或列表,统计每个数出现的次数,并记录出现次数最多的数。 示例代码: int maxCount = …

    C# 2023年6月7日
    00
  • .Net core Blazor+自定义日志提供器实现实时日志查看器的原理解析

    以下是使用.NET Core Blazor和自定义日志提供程序实现实时日志查看器的原理解析: 1. 什么是Blazor Blazor是一个.NET平台上的开源Web框架,它允许我们使用C#和.NET技术构建现代Web应用程序。Blazor使用WebAssembly技术,可以在浏览器中运行C#代码。 2. 什么是自定义日志提供器 在.NET Core中,我们可…

    C# 2023年5月12日
    00
  • 用powershell开发跨平台动态网页

    powershell 动态 网页 跨平台 asp.net dynamic cross platform powershell 传教士 原创文章。始于 2023-04-03 允许转载,但必须保留名字和出处 —【前言】— 以【vbs,和微软jsript】为核心的asp已经淘汰了。ie11后来都不支持网页内嵌vbs了。asp前后端不分离,jscript非正…

    C# 2023年4月18日
    00
  • C# 线程相关知识总结

    C#线程相关知识总结 在C#语言中,线程是一种轻量级的执行单元,它可以独立执行代码,并与其他线程并发执行。线程可以简化编程过程,提高程序的效率。在本篇文章中,我们将总结C#线程的相关知识。 线程的基本概念 程序和进程的概念 在介绍线程之前,我们需要先了解程序和进程的概念。程序是指可执行文件,是CPU可以直接执行的二进制代码;而进程是指正在运行的程序的一个实例…

    C# 2023年5月15日
    00
  • PC蓝牙通信C#代码实现

    下面将详细讲解“PC蓝牙通信C#代码实现”的完整攻略: 1. 前置知识 在开始进行PC蓝牙通信C#代码实现之前,需要了解以下前置知识: C#编程语言基础知识。 .NET Framework类库中与蓝牙通信相关的命名空间和类,例如System.IO.Ports和System.Threading等。 能够使用C#编写简单的串口通信程序。 掌握蓝牙通信协议和通信方…

    C# 2023年6月6日
    00
  • 盘点C# 9.0中好用的特性

    顶级语句 将类和类里面Main函数省略,只留下核心的逻辑代码就是顶级语句! 1.顶级语句1 await System.Threading.Tasks.Task.Delay(1000); System.Console.WriteLine(“Hi!”); return 0; static class $Program { static async Task&lt…

    C# 2023年4月27日
    00
  • C#连接数据库和更新数据库的方法

    连接数据库: C#中连接数据库需要使用System.Data.dll库中的SqlConnection对象来进行访问,如下所示: using System.Data.SqlClient; //连接数据库 string connStr = @"Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DATAB…

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