Winform项目之学生成绩管理系统设计与实现(三)

2023-11-11

1.班级管理

private ClassService classService = new ClassService();
        public ListClassForm()
        {
            InitializeComponent();
            this.dgvListClass.Rows[0].Selected = false; //取消选中
        }

        //查询所有班级
        private void btnListCass_Click(object sender, EventArgs e)
        {
            List<StuClass> list = classService.GetClassList();//所有班级信息  没有学生人数
            this.dgvListClass.AutoGenerateColumns = false;
            this.dgvListClass.DataSource = list;
        }


        //双击显示班级人数
        private void dgvListClass_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            string classId = this.dgvListClass.CurrentRow.Cells["ClassId"].Value.ToString();
            int num = classService.GetClassNum(Convert.ToInt32(classId));
            MessageBox.Show("当前班级人数为:" + num + "人", "信息提示");
        }

        //新建班级
        private void btnAddClass_Click(object sender, EventArgs e)
        {
            AddClassForm addClassForm = new AddClassForm();
            DialogResult result = addClassForm.ShowDialog();
            if (result == DialogResult.OK)
            {
                btnListCass_Click(null, null);
            }

        }

        //修改班级名称
        private void btnEditClass_Click(object sender, EventArgs e)
        {
            //判断用户是否选中
            if (this.dgvListClass.RowCount == 0 || this.dgvListClass.CurrentRow == null)
            {
                MessageBox.Show("没有要修改的信息!", "信息提示");
                return;
            }
            if (this.dgvListClass.CurrentRow.Cells["ClassId"].Value == null)
            {
                MessageBox.Show("没有要修改的信息!", "信息提示");
                return;
            }


            //获取要修改的ClassId
            string classId = this.dgvListClass.CurrentRow.Cells["ClassId"].Value.ToString();
            StuClass stuClass = classService.QueryStuClassById(classId);
            //显示待修改学生的信息----打开编辑窗口
            EditClassForm editClassForm = new EditClassForm(stuClass);
            DialogResult result = editClassForm.ShowDialog();
            if (result == DialogResult.OK)
            {
                btnListCass_Click(null, null);
            }



        }


        //删除班级信息
        //如果已经由学生存在该班级     不能删除
        private void btnDelClass_Click(object sender, EventArgs e)
        {
            //判断用户是否选中
            if (this.dgvListClass.RowCount == 0 || this.dgvListClass.CurrentRow == null)
            {
                MessageBox.Show("没有要修改的信息!", "信息提示");
                return;
            }
            if (this.dgvListClass.CurrentRow.Cells["ClassId"].Value == null)
            {
                MessageBox.Show("没有要删除的信息!", "信息提示");
                return;
            }

            //删除确认
            DialogResult result = MessageBox.Show("确认要删除吗?", "信息提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (result == DialogResult.Cancel)
            {
                return;
            }
            //获取要删除的classId
            string classId = this.dgvListClass.CurrentRow.Cells["ClassId"].Value.ToString();
            //根据班级Id删除
            try
            {
                if (classService.DeleteClassById(classId) == 1)
                {
                    MessageBox.Show("删除成功!", "信息提示");
                    btnListCass_Click(null, null);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "删除信息");
            }
        }

        private void ListClassForm_Load(object sender, EventArgs e)
        {

        }

        private void dgvListClass_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }

查询班级:

   /// <summary>
        /// 查询所有班级信息
        /// </summary>
        /// <returns></returns>
        public List<StuClass> GetClassList()
        {
            List<StuClass> list = new List<StuClass>();
            string sql = "select ClassId,ClassName from  Class";
            SqlDataReader dataReader = SQLHelper.GetReader(sql);

            while (dataReader.Read())
            {
                StuClass stuClass = new StuClass();
                stuClass.ClassId = Convert.ToInt32(dataReader["ClassId"]);
                stuClass.ClassName = dataReader["ClassName"].ToString();
                list.Add(stuClass);
            }
            dataReader.Close();
            return list;
        }

新建班级:

 //添加班级
        public int AddClass(StuClass stuClass)
        {
            string sql = "insert into Class  (ClassName)   values('{0}')";
            sql = string.Format(sql, stuClass.ClassName);
            try
            {
                return SQLHelper.Update(sql);
            }
            catch (Exception ex)
            {
                throw new Exception("添加班级信息出错!" + ex.Message); ;
            }
        }

修改班级:

   //修改班级名称
        public int updateClass(StuClass stuClass)
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("update Class  set ClassName='{0}' where  ClassId={1}");
            //进行赋值
            string sql = string.Format(stringBuilder.ToString(), stuClass.ClassName, stuClass.ClassId);
            try
            {
                return Convert.ToInt32(SQLHelper.Update(sql));
            }
            catch (SqlException ex)
            {

                throw new Exception("数据更新失败!:" + ex.Message);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

删除班级:

因为该班级已经有学生关联了,所以不可以随意删除。


        //删除班级信息
        public int DeleteClassById(string classId)
        {
            string sql = "delete from Class where ClassId=" + classId;
            try
            {
                return SQLHelper.Update(sql);
            }
            catch (SqlException ex)
            {

                if (ex.Number == 547)
                {
                    throw new Exception("当前班级学生人数大于0人,不能删除!");
                }
                else
                {
                    throw new Exception("删除信息错误:" + ex.Message);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("删除班级信息错误!" + ex.Message);
            }
        }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winform项目之学生成绩管理系统设计与实现(三) 的相关文章

随机推荐

  • vue elementui menu导航菜单根据路由变化选中对应项

    bug出现的两种情况 1 刷新页面 导航菜单选中项恢复成默认设置 2 点击页面里的链接跳转到其它页面 但是导航菜单不会自动选中当前项 解决方法 1 设置router为true default active为 router path 如下图标
  • python语法--标识符(2)

    1 标识符 1 1定义 标识符即用户编程时自定义的名字 可以用来给变量 常量 函数等命名 以建立起名称与使用之间的关系 1 2命名规则 a 必须为字母数字下划线 且数字不能打头 b 严格区分大小写 c 不能使用关键字 但可以包含关键字 1
  • Tensorflow2.0 GPU版本安装(CUDA10.0 + cuDNN7.5 + Tensorflow2.0 Alpha)

    本人小白一名 总结了一些自己的操作经验 仅供参考 前段时间Tensorflow 2 0 Alpha版本发布 作为刚入门深度学习的小白之前没有学过 Tensorflow1 x 系列 只学过一些keras 也懒得再学习 Tensorflow1
  • SQLserver存储过程加密、解密

    SQLserver存储过程加密 解密 作者 邱名涛 撰写时间 2019 年 6 月 22 日 关键技术 数据库存储过程加密 解密 加密存储过程 判断表是否存在 如果存在就删除 if object id N dbo Test N U is n
  • SMALE 实验室投稿期刊选择

    摘要 本文档仅供 SMALE 实验室同学参考 这里的分区均按中科院标准 分区仅由当前的影响因子确定 而 CCF 分类则说明了长期的声誉 有些期刊是 CCF B 类 但落到三 四区 其实是不合理的 申请自然科学基金之类 小同行主要还是依据 C
  • java 等额本息计算方式

    投资理财 等额本息计算方式 以下按照10000元 以年利率15 5 投资期限为6个月 以等额本息方式偿还来计算 等额本息计算 public class PrincipalAndInterestEquals public static voi
  • echarts 地图类型热力图

    地图主要用于地理区域数据的可视化 配合 visualMap 组件用于展示不同区域的人口分布密度等数据 visualMap 是视觉映射组件 用于进行 视觉编码 也就是将数据映射到视觉元素 视觉通道 echarts 官网案例 https ech
  • Java项目样式规范checkstyle.xml

    具体项的具体说明请参考 https www cnblogs com ziyuyuyu p 9870717 html 梳理此次完整checkstyle xml说明 以备以后再此基础上删减
  • 网页抓取工具

    Teleport Ultra Teleport Ultra所能做的 不仅仅是 离线浏览某个网页 让你离线快速浏览某个网页的内容当然是它的一项重要功能 它可以从Internet的任何地方抓回你想要的任何文件 它可以在你指定的时间自动登录到你指
  • 开源麒麟Linux系统openKylin-1.0 内核是debian 安装openssh-server及配置root远程登陆

    原因 服务器安装完开源麒麟Linux系统openKylin 1 0后 换使用时的键鼠很烦 目标 Debian安装openssh server 原系统安装Xshell 并配置实现root远程登录 记录下并供大家参考 检查 apt search
  • 【传感器课程设计——DHT11温湿度数据上传阿里云】课程设计论文大纲

    1 摘要 摘要可以分为中文和英文两部分 2 概述 2 1 课程设计背景 2 2 国内外研究现状 2 3 报告组织形式 3 系统设计 3 1 设计目标 3 2 设计方案 3 3 设计方案分析 3 4 程序结构 4 硬件设计 4 1 ESP82
  • Authing 入选《2022年度中国高科技高成长企业》榜单

    近日 Authing 入选 2022 年度中国高科技高成长企业系列榜单 云原生高成长企业榜 该榜单由 第一新声 联合 天眼查 发起的 数字中国 系列之 2022 年度中国高科技高成长企业系列榜单发布 该榜单旨在发现和挖掘被资本市场关注 同时
  • 同方服务器系统安装,同方云服务器安装使用手册

    同方云服务器安装使用手册 内容精选 换一换 如果您已经创建了一台Linux云服务器 并根据业务需要进行了自定义配置 如安装软件 部署应用环境等 您可以为更新后的云服务器创建系统盘镜像 使用该镜像创建新的云服务器 会包含您已配置的自定义项 省
  • mysql常见函数使用

    时间操作 时间单位 unit MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR SECOND MICROSECOND MINUTE MICROSECOND MINUTE S
  • 获得焦点除去class和失去焦点获得class

    html li class top relative tt huge 餐厅员工数 li
  • win7打不开chm

    1 打开chm2 win7提示安全问题3 chm无法显示内容4 关闭chm5 右键点击chm 点击 解除锁定 ok 没有 解除锁定 晕 请往下6 右键点击chm 点击 压缩到 rar 压缩chm7 双击生成的压缩文件 rar8 在rar中双
  • Windows NodeJS 二进制文件安装

    第一步下载node下载 Node js 中文网 本人系统Win10 X64 如图 将下载的zip包解压到你自定义的目录 尽量不要有空格或中文 你懂的 作者选择了d盘下自定义目录D datastorage下 解压后的文件目录如图所示 在此目录
  • 微信小程序中使用websocket

    实现多账号登录踢出效果 效果图 一 创建websocket监听方法 websocket js export const ws connect function id wx connectSocket 创建一个 WebSocket 连接 ur
  • 【探索AI潜能,连结现代通讯】相隔万里,我们与AI一同赏月。

    1 写在前面 近年来 AI得到了迅猛的发展 尤其是大模型的出现受到了广泛的关注和讨论 ChatGPT 文心一言等纷纷登场 可谓是百家争鸣 而AI大模型所延申出的子项目如AI绘画 AI写作等 在各自的领域展示出了惊人的潜力 最圆的月亮在中秋
  • Winform项目之学生成绩管理系统设计与实现(三)

    1 班级管理 private ClassService classService new ClassService public ListClassForm InitializeComponent this dgvListClass Row