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();
}
#endregion

private 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";
}
#endregion
private 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";
}
#endregion
private 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节点内部添加如下配置:

<connectionStrings>
	<add name="DefaultConn" connectionString="server=.;database=DBTEST;uid=sa;pwd=123456;"/>
</connectionStrings>

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

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

到此这篇关于C#开发Winform实现学生管理系统的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

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

    对这块的知识学习早已期待已久,感觉学习的进度还是慢了,最近一直在学习Winform,不得不说一些登陆窗体的设计,这几天算是小有收获,自己也看了许多这方面的知识,知道了要想做学生信息管理系统是一个漫长的过程,但是从今天起就来慢慢地进行学生信息管理系统的构建,此外还用到数据库的知识,打算着自己开始学数据库的知识,今天就来看看学生信息管理系统登录窗口的设计.下面图片的是样例: 这方面的知识还是基于C#语言和.NET Framework平台的.自己所用的还是熟悉的开发环境VS2012,感觉VS2013和

  • C#实现简单学生信息管理系统

    本文实例为大家分享了C#实现简单学生信息管理系统的具体代码,供大家参考,具体内容如下 一.运行环境windows,使用vs编译软件 二.主要功能 登录.添加学生信息.修改学生信息.删除学生信息.查询学生信息 三.实现步骤 1.登陆界面功能实现 老规矩,先贴下主要代码: //构造方法 public Login() { InitializeComponent(); this.label3.Parent = this; this.label1.BackColor = Color.Transparent

  • Winform学生信息管理系统各子窗体剖析(3)

    先来补充一下学生信息管理系统登录窗体,在完成的过程中总是遇到各种各样的问题,对于登录窗体的设计还是存在着一些弊端,那就是需要登录学生信息管理系统时如果输入的数据出错不必一个个删除,就需要在窗体上再添加一个清空写入数据的button控件,将其属性Text改为重置.还有一个与登录窗口设计的属性AcceptButton将其改为确定按钮的唯一名字(也就是button1),因此在按下回车键后我们也能登录到学生信息管理系统主页面相对应的CancelButton将其改为取消按钮的唯一名字(也就是button2

  • Winform学生信息管理系统主页面设计(2)

    在上次的学生登录窗口的设计(Winform学生信息管理系统登陆窗体设计(1))中,需要修改的地方为: 1.登录窗口的最大化和最小化,这个一般的登录窗口不需要,因此我们也不做,单击学生信息管理系统的窗体设计找到属性MaximizeBox和属性(窗口的最大化)和MinimizBox(窗口的最小化)是True,把它们改为False. 2.登录窗口设计的属性AcceptButton将其改为确定按钮的唯一名字(也就是button1),因此在按下回车键后我们也能登录到学生信息管理系统主页面. 3.在登录名称

  • C#利用ASP.NET Core开发学生管理系统详解

    目录 涉及知识点 创建项目 登录模块 1. 创建控制器--LoginController 2. 创建登录视图 3. 创建用户模型 4. 创建数据库操作DataContext 5. 创建数据库和表并构造数据 6. 添加数据库连接配置 7. 添加注入信息 8. 运行测试 随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NET Core也应运而生.本文主要利用ASP.NET Core开发一个学生管理系统为例,简述ASP.NET Core开发的常见知识点,仅供学习分享使用,如有不足之处,

  • 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

  • python学生管理系统开发

    本文实例为大家分享了python学生管理系统开发的具体代码,供大家参考,具体内容如下 学生管理系统(基础版) #定义一个函数,显示可以使用的功能列表给用户 def showInfo(): print("-"*30) print(" 学生管理系统 ") print(" 1.添加学生的信息") print(" 2.删除学生的信息") print(" 3.修改学生的信息") print(" 4.查询学生

  • Android 实例开发一个学生管理系统流程详解

    目录 效果演示 实现功能总览 代码 登录与忘记密码界面 一.添加布局文件 二.添加标题文字 三.绑定适配器 注册界面 一.创建两个Drawable文件 二.将其添加数组内 三.动态变化背景 考勤界面 一.CircleProgressBar代码如下 签到界面 一.倒计时 二.位置签到 成绩查询界面 一.创建StackAdapter 适配器 效果演示 随手做的一个小玩意,还有很多功能没有完善,倘有疏漏,万望海涵. 实现功能总览 实现了登录.注册.忘记密码.成绩查询.考勤情况.课表查看.提交作业.课程

  • python实现学生管理系统开发

    使用python完成超级基础的学生管理系统,供大家参考,具体内容如下 说明: 1.本学生管理系统非常非常简易,只有增,显,查,删,改功能,对于Python新手容易看懂上手. 2.信息的存储只使用了字典和列表. 3.不喜勿喷. 代码: 1.主循环框架 while True: print(info_str) action = input("请输入想要进行的操作:") if action == '0': print("再见.") break elif action ==

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • Java基于MySQL实现学生管理系统

    本文为大家分享了Java基于MySQL实现学生管理系统,供大家参考,具体内容如下 因为实验室要交作业然后就做了一个学生管理系统,贴个代码纪念一下,做的太急界面什么的也比较差. 还有一些小细节没有完善不过还是能实现主要的功能的. Window是主界面 package First; import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Window { pub

  • C语言实现简单学生管理系统

    花了一个月的时间,学习了链表,文件,多文件编程,然后就开始写学生管理系统,比较简单的那种,实现了增,添,改,查,多种排序,输入的时候的限定,成绩分析的功能.遇到的问题很多,也尝试解决了,下面写点写学生管理系统的要注意的地方,希望对别人有帮助. 1.一定要先写好主函数的框架,然后再往上面加东西,这样说有点笼统,我把我的主函数在下面,可以借鉴下哈.我的主函数是一个while(1)的无限循环,里面一个switch选择,利用一个菜单函数,让其返回值当成switch选择的值,然后进入不同的功能主函数,其他

  • python学生管理系统代码实现

    本文实例为大家分享了python学生管理系统的具体代码,供大家参考,具体内容如下 类 class Student: stuID = "" name = "" sex = "M" classID = "NULL" #set ID def setStuID(self,stuID): self.stuID = stuID def setName(self,name): self.name = name def setSex(self

  • python创建学生管理系统

    使用python创建学生管理系统,供大家参考,具体内容如下 创建学生管理系统,可谓是学习编程最基础的一小步. 主要是分为以下几个思路: 接下来直接上源码 #!/usr/bin/python3 # coding=utf-8 # 导入包 import random # 全局变量 # 函数 # 类 # 调用函数或者类 # 装所以数据的列表 class StudentSys(object): def __init__(self): # 实例属性 self.names = [] self.infos =

随机推荐