千家信息网

C#怎么开发Winform实现学生管理系统

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"C#怎么开发Winform实现学生管理系统",在日常操作中,相信很多人在C#怎么开发Winform实现学生管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2026年11月02日C#怎么开发Winform实现学生管理系统

这篇文章主要介绍"C#怎么开发Winform实现学生管理系统",在日常操作中,相信很多人在C#怎么开发Winform实现学生管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C#怎么开发Winform实现学生管理系统"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、案例功能的实现

数据:

--专业create table ProfessionInfo(        ProfessionID int primary key identity(1,1), --专业编号        professionName varchar(50) not null unique --专业名称)--学生create table StudentInfo(        StuID varchar(20) primary key,  --学生学号        StuName varchar(50) not null,            --学生姓名        StuAge int not null check(StuAge > 0 and StuAge < 130), --学生年龄        StuSex char(2) not null check(StuSex in('男','女')),  --学生性别        StuHobby nvarchar(100), --爱好        ProfessionID int not null references ProfessionInfo(ProfessionID), --所属专业编号)--添加专业信息insert into ProfessionInfo(professionName) values('电子竞技')insert into ProfessionInfo(professionName) values('软件开发')insert into ProfessionInfo(professionName) values('医疗护理')--插入学生信息insert into StudentInfo(StuID,StuName,StuAge,StuSex,StuHobby,ProfessionID)values('001','刘备',18,'男','',1)insert into StudentInfo(StuID,StuName,StuAge,StuSex,StuHobby,ProfessionID)values('002','关羽',20,'男','',2)insert into StudentInfo(StuID,StuName,StuAge,StuSex,StuHobby,ProfessionID)values('003','张飞',19,'男','',2)insert into StudentInfo(StuID,StuName,StuAge,StuSex,StuHobby,ProfessionID)values('004','孙尚香',17,'女','',3)

业务需求:

(1)专业下拉框绑定专业表数据,网格控件绑定学生数据,并且点击"搜索"按钮可以多条件组合查询。

(2)选中某一行,右键可以弹出"删除"菜单,点击"删除"菜单可以删除学生数据。

(3)点击"新增"按钮,弹出新增窗体,在此窗体中完成学生的新增操作。

(4)选中某一行,点击"编辑"按钮,弹出编辑窗体,在此窗体中完成数据的修改。

备注:其中性别的单选框,以及爱好的多选框分别用两个Pannel容器包含。

实现代码:

(1)查询窗体绑定专业信息、绑定学生信息以及搜索功能代码:

#region 绑定专业信息到下拉框private void BindProfession(){    DataTable dt = new DataTable();    DBHelper.PrepareSql("select * from ProfessionInfo");    dt = DBHelper.ExecQuery();    DataRow dr = dt.NewRow();    dr["ProfessionID"] = 0;    dr["professionName"] = "--请选择--";    dt.Rows.InsertAt(dr, 0);    this.cmbPro.DataSource = dt;    this.cmbPro.DisplayMember = "professionName";    this.cmbPro.ValueMember = "ProfessionID";}#endregion#region 绑定学生数据private void BindData(){    string sql = "select * from StudentInfo inner join ProfessionInfo on StudentInfo.ProfessionID=ProfessionInfo.ProfessionID  where 1 = 1 ";    if(!this.cmbPro.SelectedValue.ToString().Equals("0"))        sql += " and StudentInfo.ProfessionID = " + this.cmbPro.SelectedValue.ToString();    if(!this.txtName.Text.Equals(""))        sql += " and StuName like '%" + this.txtName.Text + "%'";    this.dataGridView1.AutoGenerateColumns = false;    DBHelper.PrepareSql(sql);    this.dataGridView1.DataSource = DBHelper.ExecQuery();}#endregionprivate void Form1_Load(object sender, EventArgs e){    BindProfession();    BindData();}private void btSearch_Click(object sender, EventArgs e){        BindData();}

(2)删除菜单代码:

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e){    //添加是否确定删除的对话框    DialogResult result = MessageBox.Show("确定要删除数据吗,删除之后无法恢复!", "提示框",        MessageBoxButtons.OKCancel, MessageBoxIcon.Question);    if (result == DialogResult.Cancel)        return;    string stuid = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();    string sql = "delete from StudentInfo where StuID = @StuID";    DBHelper.PrepareSql(sql);    DBHelper.SetParameter("StuID", stuid);    int rowCount = DBHelper.ExecNonQuery();    if (rowCount == 1)        MessageBox.Show("删除成功!");    else        MessageBox.Show("删除失败!");    BindData();}

(3)添加学生信息窗体代码:

#region 绑定专业信息到下拉框private void BindProfession(){    DataTable dt = new DataTable();    DBHelper.PrepareSql("select * from ProfessionInfo");    dt = DBHelper.ExecQuery();    DataRow dr = dt.NewRow();    dr["ProfessionID"] = 0;    dr["professionName"] = "--请选择--";    dt.Rows.InsertAt(dr, 0);    this.cmbPro.DataSource = dt;    this.cmbPro.DisplayMember = "professionName";    this.cmbPro.ValueMember = "ProfessionID";}#endregionprivate void FrmAdd_Load(object sender, EventArgs e){    BindProfession();}private void btAdd_Click(object sender, EventArgs e){    string sql = "insert into StudentInfo(StuID,StuName,StuAge,StuSex,StuHobby,ProfessionID) values(@StuID,@StuName,@StuAge,@StuSex,@StuHobby,@ProfessionID)";    DBHelper.PrepareSql(sql);    DBHelper.SetParameter("StuID", this.txtId.Text);    DBHelper.SetParameter("StuName",this.txtName.Text);    DBHelper.SetParameter("StuAge",this.txtAge.Text);    //性别处理    string sex = "";    if (this.rbBoy.Checked == true) sex = this.rbBoy.Text;    if (this.rbGirl.Checked == true) sex = this.rbGirl.Text;    DBHelper.SetParameter("StuSex", sex);    //爱好处理    string hobby = "";    foreach (CheckBox ck in this.panel2.Controls)    {        if (ck.Checked == true)        {            if (!hobby.Equals(""))                hobby += ",";            hobby += ck.Text;        }    }    DBHelper.SetParameter("StuHobby", hobby);    DBHelper.SetParameter("ProfessionID",this.cmbPro.SelectedValue.ToString());    int rowCount = DBHelper.ExecNonQuery();    if (rowCount == 1)    {        MessageBox.Show("新增成功!");        this.Close();    }    else    {        MessageBox.Show("新增失败!");    }}

(4)编辑学生信息窗体代码:

public string StuID { get; set; } //学生编号#region 绑定专业信息到下拉框private void BindProfession(){    DataTable dt = new DataTable();    DBHelper.PrepareSql("select * from ProfessionInfo");    dt = DBHelper.ExecQuery();    DataRow dr = dt.NewRow();    dr["ProfessionID"] = 0;    dr["professionName"] = "--请选择--";    dt.Rows.InsertAt(dr, 0);    this.cmbPro.DataSource = dt;    this.cmbPro.DisplayMember = "professionName";    this.cmbPro.ValueMember = "ProfessionID";}#endregionprivate void BindDetail(){    string sql = "select * from StudentInfo where StuID = " + this.StuID;    DBHelper.PrepareSql(sql);    DataTable dt = new DataTable();    dt = DBHelper.ExecQuery();    this.txtId.Text = dt.Rows[0]["StuID"].ToString();    this.txtName.Text = dt.Rows[0]["StuName"].ToString();    this.txtAge.Text = dt.Rows[0]["StuAge"].ToString();    this.cmbPro.SelectedValue = dt.Rows[0]["ProfessionID"].ToString();    //性别处理    if (dt.Rows[0]["StuSex"].ToString().Equals("男"))        this.rbBoy.Checked = true;    else        this.rbGirl.Checked = true;    //爱好处理    string[] arrHobby = dt.Rows[0]["StuHobby"].ToString().Split(',');    foreach (string hobby in arrHobby)    {        foreach (CheckBox ck in this.panel2.Controls)        {            if (ck.Text.Equals(hobby))                ck.Checked = true;        }    }}private void FrmEdit_Load(object sender, EventArgs e){    BindProfession();    BindDetail();}private void btUpdate_Click(object sender, EventArgs e){    string sql = "update StudentInfo set StuName=@StuName,StuAge=@StuAge,StuSex=@StuSex,StuHobby=@StuHobby,ProfessionID=@ProfessionID where StuID=@StuID";    DBHelper.PrepareSql(sql);    DBHelper.SetParameter("StuName", this.txtName.Text);    DBHelper.SetParameter("StuAge", this.txtAge.Text);    //性别处理    string sex = "";    if (this.rbBoy.Checked == true) sex = this.rbBoy.Text;    if (this.rbGirl.Checked == true) sex = this.rbGirl.Text;    DBHelper.SetParameter("StuSex", sex);    //爱好处理    string hobby = "";    foreach (CheckBox ck in this.panel2.Controls)    {        if (ck.Checked == true)        {            if (!hobby.Equals(""))                hobby += ",";            hobby += ck.Text;        }    }    DBHelper.SetParameter("StuHobby", hobby);    DBHelper.SetParameter("ProfessionID", this.cmbPro.SelectedValue.ToString());    DBHelper.SetParameter("StuID", this.StuID);    int rowCount = DBHelper.ExecNonQuery();    if (rowCount == 1)    {        MessageBox.Show("修改成功!");        this.Close();    }    else    {        MessageBox.Show("修改失败!");    }}

(5)查询窗体中"新增"和"编辑"按钮代码:

private void btAdd_Click(object sender, EventArgs e){    FrmAdd frm = new FrmAdd();    //frm.Owner = this;    frm.Show();}private void btEdit_Click(object sender, EventArgs e){    string stuid = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();    FrmEdit frm = new FrmEdit();    frm.StuID = stuid;    frm.Show();}

二、补充:连接字符串配置

将数据库连接字符串直接写在C#代码中,如果连接字符串需要发生改变,必须在C#代码中修改,并且重新进行编译的操作,给软件实施带来了麻烦。

解决此问题,可以将数据库连接字符串存放在配置文件中。

(1)在项目中找到App.config文件,如果没有此文件可以添加一个应用程序配置文件,在此配置文件的configuration节点内部添加如下配置:

        

(2)给项目添加引用"System.Configuration",并且将C#中连接字符串的赋值修改如下:

public static string connStr = ConfigurationManager.ConnectionStrings["DefaultConn"].ConnectionString;

到此,关于"C#怎么开发Winform实现学生管理系统"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

学生 专业 信息 数据 代码 窗体 C# 处理 开发 字符 字符串 文件 配置 管理系统 系统 管理 性别 按钮 下拉 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 华服互联网科技怎么样 北京互联网科技有限公司 喔噻互联网科技 大白互联网科技 深圳卡尔迅互联网科技有限公司怎么样 衡水科技产业互联网平台 哈尔滨秒房互联网科技有限公司 山东吉时兔互联网科技有限公司 云创客互联网科技公司 互联网科技圈年度人物 上海科技产业互联网平台 互联网科技年终奖 半导体行业属于互联网高科技类吗 萌小萌互联网科技河南有限公司 全球科技与互联网公司市值变化 互联网科技企业商标注意事项 陕西九四连强互联网科技有限公司 安徽九吞吴互联网科技有限公司 北京瑞云互联网科技有限公司 高科技和互联网的现代国家 互联网中国科技 深圳互联网科技公司 互联网 科技创业 致骋互联网科技 广州宏创互联网科技 北京互联网络科技有限公司 远拓互联网科技 科技互联网创业计划书 受益于互联网科技的高速发展 工业互联网展湾科技股份有限公司
0