精华内容
下载资源
问答
  • 简介 自己用C#编写了一个学生信息...创建一个项目 选择windows窗体应用(.Net Framework),点击下一步即可。进入应用之后,右键点击项目->添加->新建项->窗体(Windows窗体)->添加。 新建好后,在属性栏

    简介

    自己用C#编写了一个学生信息管理系统的Windows桌面应用程序,第一次实践,某些地方可能还不够完善,但其中有些函数、方法等的使用可以参考。

    工具

    我用的集成开发环境是Visual Studio 2019,数据库是MySQL,可视化数据库管理工具为MySQL Workbench。

    创建一个项目

    选择windows窗体应用(.Net Framework),点击下一步即可。进入应用之后,右键点击项目名->添加->新建项->窗体(Windows窗体)->添加。

    新建好后,在属性栏中,我们可以修改窗体名,也可以修改窗体的各种属性,比如设置大小、出现位置、背景图片等。


    在工具箱中,我们可以选择各种控件,其中较为常用的由Label、Textbox、Button等,我们将需要的控件拖拽到窗体中,并可为其设置事件(如单击事件,双击事件等)。

    设计窗体

    以登录界面为例,所有不可编辑的文本框都可用Label控件,在其属性中可设置字体、大小、颜色等。需要用户输入的文本框可用Textbox控件,最好在其属性中修改一个具有辨识度的名字,如用于输入用户名的,我的命名为"tbName",这样,在代码中取其中内容的时候较为方便。登录、返回之类的按钮可用Button控件,之后会介绍如何为其添加事件。

    添加事件

    登录界面的主要功能便是登录,要实现登录这个操作,需要为我们的Button控件设置事件,我们可以双击“登录”按钮,也可以在其属性一栏的最上面找到类似闪电的标志打开,如图:

    双击Click后的空白栏,即会进入新的与窗体同名的页面,并自动添加方法(函数),光标位于添加函数内,我们便可在此进行登录的代码的编写,包括连接数据库、读取数据库、比对用户名密码(注意SQL注入的防范)、异常捕捉等。下面是我为这一窗体编写的代码(注意,在引用数据库之前需要在“引用”中引入相关dll文件,否则在using MySql.Data时会报错,详情可百度或与我交流):

    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 MySql.Data;
    using MySql.Data.MySqlClient;
    
    namespace StudentMag
    {
        public partial class Login : Form
        {
            int iCount = 3;
            int flag = 1;
            public Login()
            {
                InitializeComponent();
            }
    
            private void btOk_Click(object sender, EventArgs e)
            {
                //连接数据库
                MySqlConnection connection = new MySqlConnection("Database=student;Data Source=127.0.0.1;User Id = root; Password = li; pooling = false; CharSet = utf8; port = 3306");
               //异常捕捉
                try
                {
                    connection.Open();
                   //定义sql语句,tbName.Text即为取出用户输入在Label控件中的文字
                    String sql = "select password from adacount where name='" + tbName.Text + "'";
                    MySqlCommand command = new MySqlCommand(sql, connection);
                    //读取数据库
                    MySqlDataReader reader = command.ExecuteReader();
                    if(reader.Read())
                    {
                        if(reader.GetString(0)==tbPassword.Text)
                        DialogResult = DialogResult.OK;
                        else
                        {
                            flag = 0;
                        }
                    }
                    else
                    {
                        flag = 0;
                    }
                    if(flag==0)
                    {
                        iCount--;
                        if (iCount > 0)
                            labTip.Text = "用户名或密码输入错误,请重新输入。(" + iCount.ToString() + "次后将自动退出程序)";
                        else
                        {
                            MessageBox.Show("机会已用尽!程序将退出。", "提示", MessageBoxButtons.OK);
                            DialogResult = DialogResult.Cancel;
                        }
                    }
                }
                catch (MySqlException ee)
                {
                    Console.WriteLine(ee.Message);
                }
                finally
                {
                    connection.Close();
                }
    
            }
           //这是输入框内容改变事件,当用户修改输入框内容时,自动清除Label的文字“密码错误”
            private void tbName_TextChanged(object sender, EventArgs e)
            {
                labTip.Text = "";
            }
           //点击取消时触发此事件
            private void btCancel_Click(object sender, EventArgs e)
            {
                if(MessageBox.Show("是否退出系统?", "提示", MessageBoxButtons.YesNo)==DialogResult.Yes)
                DialogResult = DialogResult.Cancel;
            }
    
            private void tbPassword_TextChanged(object sender, EventArgs e)
            {
                labTip.Text = "";
            }
        }
    }
    
    

    学生信息的增删改

    Visual Studio为我们提供了一个管理数据很方便的控件,即DataGirdView,其可以与数据库连接,并实现对数据进行可视化的排序、删除、增加、修改操作。使用方法如下:
    工具箱->数据->DataGirdView,拖拽到窗体之后,在将工具箱->数据->BuildingSource拖拽到DataGirdView中以连接数据源。
    然后,我们需要对窗体添加Load事件,以使其在加载过程中将数据从数据库取出并放入表中显示。
    保存按钮用以更新数据库之后将更新后的内容保存入数据库。

    然后可以在下方加入两个按钮。
    此窗体的全部代码如下:

    using MySql.Data.MySqlClient;
    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;
    
    namespace StudentMag
    {
        public partial class StuBasMag : Form
        {
            MySqlConnection sqlconn;
            MySqlDataAdapter adapter;
            DataSet myds;
            MySqlCommandBuilder cb; //用于自动生成针对单个表更新的SQL语句
            public static string conn = "Database=student;Data Source=127.0.0.1;User Id = root; Password = li; pooling = false; CharSet = utf8; port = 3306";
            public StuBasMag()
            {
                InitializeComponent();
            }
          //对窗体添加Load事件
            private void StuBasMag_Load(object sender, EventArgs e)
            {
                //设置sql语句
                string query = "select * from bsdata";
                sqlconn = new MySqlConnection(conn);
                sqlconn.Open();
               //创建adapter,并实现数据源的链接,填充表格
                adapter = new MySqlDataAdapter(new MySqlCommand(query, sqlconn));
                cb=new MySqlCommandBuilder(adapter);
    
                myds = new DataSet();
    
                adapter.Fill(myds, "bsdata");
                bindingSource1.DataSource = myds.Tables["bsdata"];
                dGVStuBas.DataSource = bindingSource1;
                //设置表头
                dGVStuBas.Columns[0].HeaderText = "编号";
                dGVStuBas.Columns[1].HeaderText = "姓名";
                dGVStuBas.Columns[2].HeaderText = "生日";
                dGVStuBas.Columns[1].HeaderText = "电话";
            }
          //设置保存按钮的事件
            private void btnSave_Click(object sender, EventArgs e)
            {
                try
                {
                    //更新数据库
                    adapter.Update(myds, "bsdata");
                    MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK);
                }
                catch(DataException ee)
                {
                    //提示信息
                    MessageBox.Show( ee.Message, "保存失败", MessageBoxButtons.OK);
                }
            }
    
            private void btnReturn_Click(object sender, EventArgs e)
            {
                sqlconn.Close();
                Close();
            }
    
            private void dGVStuBas_DataError(object sender, DataGridViewDataErrorEventArgs e)
            {
               //提示信息
                MessageBox.Show( e.Exception.Message, "保存失败", MessageBoxButtons.OK);
            }
        }
    }
    
    

    其他

    其余功能可仿照上述步骤实现,诸多细节之处因各种原因未曾提到敬请谅解,如有疑问欢迎留言。

    项目的完整代码链接:

    https://github.com/LiZhonggen001/StudentManageSystem
    完整程序设计的流程图如下:

    MySQL中我建了三个表:

    程序运行的主页为:

    在登录前,会显示“请先登录!”,并且除“用户操作”中的“登录”、“注册”、“退出系统”是可点击的之外,其余功能均不可点击(可利用属性设置达到这样的效果)。
    下面为部分界面的截图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • vb学生成绩管理系统

    2013-06-28 08:55:24
    完成本项工作后,就创建一个全局变量ADOcn,但它是一个特殊变量,其数据类型是数据连接对象(Connection对象)。可以把ADDcn理解成是一个虚拟数据库。或者称为VB程序中逻辑数据库,通过它可以非常方便地访问...
  • 学生管理系统 源代码

    2019-01-07 21:43:37
    (2)在数据库名为SCOREINFO中,创建数据表名为course,表结构如下: (3)当单击【查询】时,直接在窗体的dataGridView2控件中显示数据表所有记录; (4)当选中DataGridView控件中行记录时...
  •  实例175 创建类似OutLook的窗体 228  实例176 带导航菜单的主界面 229  实例177 图形化的导航界面 230 8.2 特殊形状的窗体 232  实例178 创建非矩形窗体 232  实例179 建立字体形状窗体 233  实例180 ...
  • 5个目标文件,演示Address EJB实现,创建一个EJB测试客户端,得到名字上下文,查询jndi,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化上下文,用clientgetHome()函数调用Home接口...
  • 5个目标文件,演示Address EJB实现,创建一个EJB测试客户端,得到名字上下文,查询jndi,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化上下文,用clientgetHome()函数调用Home接口...
  • 实例001 带历史信息的菜单 2 实例002 菜单动态合并 3 实例003 像开始菜单一样漂亮的菜单 4 实例004 任务栏托盘菜单 4 实例005 可以拉伸的菜单界面 5 实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带...
  • 实例001 带历史信息的菜单 2 实例002 菜单动态合并 3 实例003 像开始菜单一样漂亮的菜单 4 实例004 任务栏托盘菜单 4 实例005 可以拉伸的菜单界面 5 实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带...
  • if(DelStu&&First) //链表中存在学生信息,而且要删除信息不空 { if(First==DelStu) //删除第条信息 { if(First->Next==First)//只有条信息 First=NULL; else First=First->Next; } DelStu->Pre->...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
    5个目标文件,演示Address EJB实现,创建一个EJB测试客户端,得到名字上下文,查询jndi,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化上下文,用clientgetHome()函数调用Home接口...
  •  cc实例184 执行一个外部程序直到其结束   cc实例185 调用具有参数可执行程序   6.7 线程同步   cc实例186 利用事件对象实现线程同步   cc实例187 利用互斥对象实现线程同步   cc实例188 利用...
  • 实例175 创建类似OutLook的窗体 实例176 带导航菜单的主界面 实例177 图形化的导航界面 8.2 特殊形状的窗体 实例178 创建非矩形窗体 实例179 建立字体形状窗体 实例180 使控件大小随窗体自动调整 实例181 带...
  • 实例175 创建类似OutLook的窗体 实例176 带导航菜单的主界面 实例177 图形化的导航界面 8.2 特殊形状的窗体 实例178 创建非矩形窗体 实例179 建立字体形状窗体 实例180 使控件大小随窗体自动调整 实例181 带...
  • 实例175 创建类似OutLook的窗体 实例176 带导航菜单的主界面 实例177 图形化的导航界面 8.2 特殊形状的窗体 实例178 创建非矩形窗体 实例179 建立字体形状窗体 实例180 使控件大小随窗体自动调整 实例181 带...
  • C#.net_经典编程例子400

    热门讨论 2013-05-17 09:25:30
    第1章 窗体与界面设计 1 1.1 菜单应用实例 2 实例001 带历史信息的菜单 2 实例002 菜单动态合并 3 实例003 像开始菜单一样漂亮的菜单 4 实例004 任务栏托盘菜单 5 实例005 可以拉伸...
  • 实例175 创建类似OutLook的窗体 228 实例176 带导航菜单的主界面 229 实例177 图形化的导航界面 230 8.2 特殊形状的窗体 232 实例178 创建非矩形窗体 232 实例179 建立字体形状窗体 233 实例180 使控件大小随窗体...
  • 实例273 使用内连接选择一个表与另一个表中行相关所有行 9.14 外连接查询 实例274 LEFT OUTER JOIN查询 实例275 RIGHT OUTER JOIN查询 实例276 使用外连接进行多表联合查询 9.15 利用IN进行查询 实例277 ...
  • 基于ASP.NET在线考试系统设计

    热门讨论 2011-03-14 16:07:15
    单击“新建工程”对话框上“打开”按钮,对话框关闭,Visual Basic会创建一个编程者所选择类型工程。如果单击是“新建工程”对话框上“取消”按钮,则Visual Basic集成环境中不打开任何工程。 关闭了...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
    5个目标文件,演示Address EJB实现,创建一个EJB测试客户端,得到名字上下文,查询jndi,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化上下文,用clientgetHome()函数调用Home接口...
  • 实例014 使当前项目依赖另一个项目 1.3 界面设计器 实例015 安装界面设计器 实例016 设计Windows系统运行对话框界面 实例017 设计计算器程序界面 实例018 设计关于进销存管理系统界面 第2章 Java基础应用...
  • 实例014 使当前项目依赖另一个项目 1.3 界面设计器 实例015 安装界面设计器 实例016 设计Windows系统运行对话框界面 实例017 设计计算器程序界面 实例018 设计关于进销存管理系统界面 第2章 Java基础应用...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
    5个目标文件,演示Address EJB实现,创建一个EJB测试客户端,得到名字上下文,查询jndi,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化上下文,用clientgetHome()函数调用Home接口...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    随着改革开放不断深入和社会文化经济持续发展,ASP.NET课程发展也经历了一个教学理念不断更新、升迁,教学内容日益丰富,教学方法和手段逐渐完善,教学条件和环境更加优化过程。我校ASP.NET课程根据社会发展...
  • java源码包

    2015-12-01 16:29:37
    5个目标文件,演示Address EJB实现,创建一个EJB测试客户端,得到名字上下文,查询jndi,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化上下文,用clientgetHome()函数调用Home接口...
  • 5个目标文件,演示Address EJB实现 ,创建一个EJB测试客户端,得到名字上下文,查询jndi,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化上下文,用clientgetHome()函数调用Home接口...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    5个目标文件,演示Address EJB实现,创建一个EJB测试客户端,得到名字上下文,查询jndi,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化上下文,用clientgetHome()函数调用Home接口...
  • 实例014 使当前项目依赖另一个项目 21 1.3 界面设计器 22 实例015 安装界面设计器 22 实例016 设计Windows系统运行对话框 界面 23 实例017 设计计算器程序界面 26 实例018 设计关于进销存管理系统界面 27 第2章 ...
  • 实例014 使当前项目依赖另一个项目 21 1.3 界面设计器 22 实例015 安装界面设计器 22 实例016 设计Windows系统运行对话框 界面 23 实例017 设计计算器程序界面 26 实例018 设计关于进销存管理系统界面 27 第2章 ...
  • 实例277 创建带历史信息的菜单 实例278 创建分栏式菜单 实例279 创建弹出式菜单 实例280 控件上的弹出式菜单 实例281 创建带图标的菜单 实例282 无标题栏窗体添加菜单 实例283 创建个性化弹出式菜单 9.3 ...

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

创建一个名为学生信息的窗体