C#大作业——学生信息管理系统

这篇具有很好参考价值的文章主要介绍了C#大作业——学生信息管理系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

gitee项目地址(觉得有用的道友star一下,谢谢)


一、数据库操作

建立数据库结构

1:新建一个数据库

1:打开 数据库管理软件 navicat/SQLoya
2:创建连接
3:选择连接右键新建数据库
4:展开数据库
5:右键新建表

2:表中数据

唯一的ID:对这个表的标识 类似身份证 唯一。
id:一般我们都会让它作为主键(非空、自增)

3:填充表中数据

新建表的时候: 每个字段都有一个类型
我们填充数据的时候:要根据类型填充数据
int:整数 如:1、2、3、…
varchar:字符串(必须指定长度) 如:‘呆呆’、‘西门吹雪’、…

表结构展示
C#大作业——学生信息管理系统


对数据的基本操作(添加 修改 删除 查询)

现在表中添加数据,然后我们展示列表并查询

1:新增

语法INSEST INTO + 表名 (字段名1,字段名2,字段3...) VALUES(列表1,列表2,...)
返回值:受影响的行(执行增删改的时候,都会返回受影响的数据)

新增一个学生 由于sid自增 我们每次添加数据不需要添加主键;因为sid 会自动添加。

INSERT INTO student (sname, sage) VALUES("周芷若", 19)

新增多条数据

INSERT INTO student (sname, sage) VALUES('周一', 18),('周二', 19),('周三', 20)

2:修改

语法UPDATE + 表名 set 列名 = '新的数据' where 条件

把id为1的人名字 改成张三

update student set sname='张三' where sid=1

把周一的名字 改成 周五

update student set sname='周日' where sname='周一'

3:删除

语法:DELETE from 表名 + WHERE 条件

删除学号为1的学生

DELETE FROM student WHERE sid = 1

在真正的开发中,删除并不是物理删除 而是逻辑删除(即用一个变量表示是否被删除)


4:查询 单表、多表的查询

语法SELECT <要查询的字段 sage/sid/全部(*)> from + 表名 where 条件

查询所有的学生信息(表中所有列)

SELECT * FROM student

查询学生年龄 和 姓名

SELECT sname, sage FROM student

条件查询 查询出来年龄是18 的人的名称

SELECT sname FROM student WHERE sage=18

多个条件 查询年龄是18 而且 姓名是周二的人的所有信息

SELECT * FROM student WHERE sage=18 AND sname='周二'

模糊查询 查询所有名字里带周

SELECT * FROM student WHERE sname LIKE '%周%'

为什么需要创建关联表?

当我们执行班级操作时,如果我们把班级放在学生表中可能会操作不了。
比如:三个2020班级的学生,查询到数据重复,再比如新增2025班级,但是这个时候还没有学生在2025班级,无法操作学生表怎么办。这个时候我们可以考虑:使用关联表,新建一个班级表。
C#大作业——学生信息管理系统


C# WinForm和数据库结合操作

获取数据框的值
// 根据组件的属性name获取 输入框(TextBox)里面的数据
// this:当前窗口使用 name:属性名 Text:文本
string sname = this.sname.Text;
string sage = this.sage.Text;
新增数据(连接数据库+执行SQL语句)
		private void button1_Click(object sender, EventArgs e)
        {
            // 根据组件的属性name获取 输入框(TextBox)里面的数据
            // this:当前窗口使用 name:属性名 Text:文本
            string sname = this.sname.Text;
            string sage = this.sage.Text;

            // 连接数据库的操作 
            // 1: 声明一个数据源 目的:找到我的收据库
            /* 
             * server:服务 localhost/127.0.0.1(本地) 
             * port:端口号 MySQL数据库的端口号就是3306 所以契合 
             * database:数据库 声明我要用哪个数据库 
             * uid:数据库用户名 
             * pwd:数据库的密码 
             */ 
            string url = "server=127.0.0.1; port=3306;database=csharp;uid=root;pwd=root"; 
            // 2:创建 链接 
            // 注意 : 我们链接数据库的时候需要引用 mysql.data.dll
            MySqlConnection con = new MySqlConnection(url); 
            // 3: 打开数据库
            con.Open();
            // MessageBox.Show("打开数据库");
            //4: 声明一个sql 
            // 既然 数据库已经打开了 我是不是可以对数据库进行一些操作
            // 注意:SQL字符串需要用引号括着
            string sql = string.Format("INSERT INTO student (sname,sage) VALUES('{0}', {1})", sname, sage); 
            // 5:创建一个操作 sql的对象(MySqlCommand)
            MySqlCommand com = new MySqlCommand(sql, con); 
            // 6: 执行结束之后 返回一个结果 整数 int 
            // ExecuteNonQuery: 执行增删改的 新增 修改 删除
            int i= com.ExecuteNonQuery(); 
            if (i > 0) {
                //类似于js中的console.log()提示框
                MessageBox.Show("新增成功");
            } else {
                MessageBox.Show("失败"); 
            }
        }

工具类——DBhelp封装
		private static String connStr = "server=localhost;database=csharp;uid=root;pwd=root;charset=utf8;sslmode=none";
        
        //声明链接
        public static MySqlConnection GetConn()
        {
            MySqlConnection conn = new MySqlConnection(connStr);//
            if (conn.State == ConnectionState.Closed) conn.Open();//判断是否关闭 打开链接
            return conn;//返回链接
        }
        public static void CloseAll(MySqlConnection conn)
        {
            if (conn == null) return;
            if (conn.State == ConnectionState.Open || conn.State == ConnectionState.Connecting)
                //判断
                conn.Close();//关闭链接
        }
        public static int ExecuteNonQuery(string sql) // 增删改 封装 返回受影响的行
        {
            MySqlConnection conn = null;
            int result; //提前设置一个返回值
            try
            {
                conn = GetConn();//获取链接
                MySqlCommand cmd = new MySqlCommand(sql, conn);
                result = cmd.ExecuteNonQuery();//执行sql 并返回受影响的行的个数
            }
            finally
            {
                CloseAll(conn);
            }
            return result;
        }
        public static MySqlDataReader executeQuery(string sql) //查询
        {
            MySqlDataReader res = null;
            MySqlConnection conn = null;
            try
            {
                MySqlConnection conn1 = GetConn();
                MySqlCommand cmd = new MySqlCommand(sql, conn1);
                res = cmd.ExecuteReader();
            }
            finally
            {
                CloseAll(conn);
            }
            return res;
        }

优化新增数据(通过工具类)
		private void button1_Click(object sender, EventArgs e)
        {
            string sname = this.sname.Text;
            string sage = this.sage.Text;
            string sql = string.Format("INSERT INTO student (sname,sage) VALUES('{0}', {1})", sname, sage);
            int i = DBhelp.ExecuteNonQuery(sql);
            if (i > 0) {
                MessageBox.Show("新增成功");
            } else {
                MessageBox.Show("失败"); 
            }
        }

二、多表操作

1:为什么执行多表操作

如图所示:我进行班级操作的时候,此时是没办法操作,周一、周三两人退学,那么2020这个班级就不复存在了。无法操作班级2020。
C#大作业——学生信息管理系统

2:解决方案(创建关联表,操作多表数据)

C#大作业——学生信息管理系统

3:操作数据

C#大作业——学生信息管理系统

多表操作一般情况下只使用查询操作
多表操作:as(起别名) 此时有问题 没有班级的学生(即gid为NULL)难道 不配被查询嘛?
SELECT * FROM student AS a, grade AS b WHERE a.gid = b.gid
高级多表查询:INNER JOIN 内连接 LEFT JOIN 左连接(以左表为主表查询 如果右表没有与之匹配的数据就用null来代替)
SELECT * FROM student a LEFT JOIN grade b ON a.gid = b.gid


三、登录操作

			// 重置按钮:清空输入框里面的值
            this.textBox1.Text = "";
            this.textBox2.Text = "";
            this.radioButton1.Checked = true;
            this.radioButton2.Checked = false;
			
			// 点击登录
			string password = null;
            if (radioButton1.Checked == true)
            {
                // string.Format格式化字符串
                string sql = string.Format(@"SELECT password FROM student WHERE username='{0}'", textBox1.Text);
                // 执行sql    返回一个结果集
                MySqlDataReader res = DBhelp.executeQuery(sql);
                // 一行一行 往下读
                while (res.Read())
                {
                    password = res["password"].ToString();
                }
                if (password.Equals(textBox2.Text))
                {
                    MessageBox.Show("登录成功");
                } else
                {
                    MessageBox.Show("账号密码错误");
                }
            } else
            {
                string sql = string.Format(@"SELECT password FROM teacher WHERE username='{0}'", textBox1.Text);
                MySqlDataReader res = DBhelp.executeQuery(sql);
                while (res.Read())
                {
                    password = res["password"].ToString();
                }
                if (password.Equals(textBox2.Text))
                {
                    MessageBox.Show("登录成功");
                }
                else
                {
                    MessageBox.Show("账号密码失败");
                }
            }

四:菜单操作

1:显示菜单

C#大作业——学生信息管理系统

					// 创建 学生菜单的实例
                    StudentMenu stu = new StudentMenu();
                    // 这个是展示窗口
                    stu.Show();
                    // 展示窗体之后,把前一个打开的窗体关闭
                    this.Hide();

2:ListView控件的使用

选择编辑行
C#大作业——学生信息管理系统
C#大作业——学生信息管理系统
修改ListView框的属性
C#大作业——学生信息管理系统
C#大作业——学生信息管理系统
C#大作业——学生信息管理系统


五:回显数据

C#大作业——学生信息管理系统
C#大作业——学生信息管理系统

		string gid = null; //班级号
        StuList s = null; //已经打开就不再new了

        private void AddStudent_Load(object sender, EventArgs e)
        {
            string sql = string.Format(@"SELECT * FROM grade");
            MySqlDataReader res = DBhelp.executeQuery(sql);
            while (res.Read())
            {
                string gname = res["gname"].ToString();
                this.comboBox1.Items.Add(gname);
            }
            // 设置下拉框初始值
            comboBox1.Items.Insert(0, "请选择");
            this.comboBox1.SelectedIndex = 0;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string sql = string.Format(@"insert into student (sname, sage, gid, username) values('{0}', {1}, {2}, '{3}')", textBox1.Text, textBox2.Text, gid, textBox4.Text);
            int i = DBhelp.ExecuteNonQuery(sql);
            if (i > 0)
            {
                if (s == null)
                {
                    s = new StuList();
                    s.Show();
                }
                else
                {
                    s.Reload();
                }
                DialogResult dialogResult = MessageBox.Show("新增成功,是否需要继续新增", "新增提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
                if (dialogResult == DialogResult.Yes)
                {
                    this.TopMost = true;
                }
                else if (dialogResult == DialogResult.No)
                {
                    this.Hide();
                }
            } else
            {
                MessageBox.Show("新增失败");
            }
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //获取gid
            string sql1 = string.Format(@"SELECT * FROM grade where gname = '{0}'", comboBox1.Text);
            MySqlDataReader res1 = DBhelp.executeQuery(sql1);
            while (res1.Read())
            {
                gid = res1["gid"].ToString();
            }
        }

六、修改删除数据

C#大作业——学生信息管理系统
双击图中的事件:
C#大作业——学生信息管理系统

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //判断有没有选中数据,选中后回显数据
            if (this.listView1.SelectedItems.Count > 0)
            {
                // 拿到选中数据 索引值从0开始:因为每次选中一行,所有索引值为0
                ListViewItem lis = this.listView1.SelectedItems[0];
                string sid = lis.Tag.ToString();
                string sname = lis.Text;
                // 获取子菜单
                string sage = lis.SubItems[1].Text;
                string gname = lis.SubItems[2].Text;
                string username = lis.SubItems[3].Text;
                //把拿到的数据赋值在修改框中
                textBox1.Text = sname;
                textBox2.Text = sage;
                textBox3.Text = gname;
                textBox4.Text = username;
            }
        }

七、页面之间的传值

C#大作业——学生信息管理系统


C#大作业——学生信息管理系统文章来源地址https://www.toymoban.com/news/detail-484475.html

到了这里,关于C#大作业——学生信息管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python项目开发案例————学生信息管理系统(附源码)

              本文使用Python语言开发了一个学生信息管理系统,该系统可以帮助教师快速录入学生的信息,并且对学生的信息进行基本的增、删、改、查操作;还可以实时地将学生的信息保存到磁盘文件中。         为了顺应互联网时代用户的获取数据需求,学生信息管理系统

    2024年02月11日
    浏览(35)
  • springboot/ssm在线作业管理系统Java大学生作业提交成绩管理系统

    springboot/ssm在线作业管理系统Java大学生作业提交成绩管理系统 开发语言:Java 框架:springboot(可改ssm) + vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0) 数据库工具:Navicat 开发软件:eclipse//idea 依赖管理包:Maven 如需了解更多代码细节或修改代码功能界面

    2024年02月20日
    浏览(36)
  • 【Golang项目实战】用Go写一个学生信息管理系统,真的太酷啦| 保姆级详解,附源码——建议收藏

    博主简介: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标: 写好专栏的每一篇文章 学习了Go的基础语法知识,如何巩固和提升呢?跟着瑶瑶子写一个

    2024年02月02日
    浏览(42)
  • java 学生信息管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

    一、源码特点     java 学生信息管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。 java 学生信息管理系统 二、

    2024年02月09日
    浏览(35)
  • 程序设计基础大作业——学生管理系统

    声明:这是本人所写的程序设计期末大作业实验报告,可供大家学习和参考,也希望能得到一些建议和改正,但如果只为抄袭代码,本人必究! 目录 一、任务描述 二、代码实现 三、运行结果 四、实验体会 写一个命令行交互式C语言程序。该程序需要实现下述菜单功能: 1

    2024年02月10日
    浏览(40)
  • 【python课程作业】python学生成绩管理系统

    功能介绍 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。给舍友做的课程作业。 功能包括:成绩管理、学生管理、课程管理、班级管理、用户管理、日志管理、系统信息模块。 源码地址 https://github.com/geeeeeeeek/python_score 演示地址 http:/

    2024年03月13日
    浏览(49)
  • qt实现信息管理系统(学生信息管理系统)功能更完善

    信息系统代码地址:https://gitee.com/dxl96/StdMsgSystem 本学生信息管理系统同升级改造的幅度较大,涉及到的东西对于初学者来说,可能稍显复杂,可以先移步到 https://blog.csdn.net/IT_CREATE/article/details/82027462 查看简易的系统。 本系统引入日志管理,数据库选择支持sqllite、mysql,自

    2024年02月13日
    浏览(35)
  • 学生基本信息管理系统

    目录 一、选题与前期调查 1.选题 2.前期调查 二、人员分工 三、项目描述 1.项目简介 2.项目技术 3.功能需求分析 4.系统细节 四、系统功能运行结果截图展示 五、关键代码 六、使用git管理代码 七、遇到的困难 1.选题 学生基本信息管理系统(2人)等级:C- 功能要求: 1、添加学生

    2024年01月16日
    浏览(75)
  • 学生宿舍信息管理系统

    任务6 学生宿舍信息管理系统 已知宿舍的信息包括:宿舍楼号,宿舍号,床位号,对应床位号的学生学号,楼长姓名等。设计程序能实现以下功能: (1)宿舍信息录入:可随时增加宿舍信息到数据文件中 (2)宿舍信息浏览:宿舍的信息输出到屏幕 (3)查询:按学号查询学

    2024年02月05日
    浏览(90)
  • 基于微信小程序的班级学生作业管理系统设计与实现

    💗博主介绍:✌全网粉丝10W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者。 👇🏻 精彩专栏 推荐订阅👇🏻 计算机毕业设计精品项目案例-200套 🌟 文末获取源码+数据库+文档 🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编

    2024年01月21日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包