【C#】选课程序增加、删除统计学时

文章目录

  • 【例6-2】编写选课程序。利用利用列表框和组合框增加和删除相关课程,并统计学时数
      • 1. 表6-2 属性设置
      • 2. 设计窗体及页面
      • 3. 代码实现
      • 4. 运行效果


【例6-2】编写选课程序。利用利用列表框和组合框增加和删除相关课程,并统计学时数

分析:
(1)组合框comboBox1 的选项在窗体载入事件Form1_Load中用Items.Add方法添加。
(2)加入按钮把listBox1 选中项利用Items,Add方法添加到listBox1的列表中。
(3)删除按钮把listBox1选中项利用Items,Remove删除。
(4)程序中使用类Course来定义课程,包含课程名和学时数域。

以下是一个 Windows Forms 应用程序的界面设计属性设置表。

1. 表6-2 属性设置

控件名称属性名称属性值控件名称属性名称属性值
Form1Text选课程序button2Text删除
label1Text请选择课程button2TextAlignMiddleRight
comboBox1DropDownStyleDropDownListbutton2Imagedel.jpg
button1Text加入button2ImageAlignMiddleLeft
button1TextAlignMiddleRightlistBox1NamelistBox1
button1Imageadd.jpglabel2Text总课时:
textBox1ReadOnlyTrue

表格中的 “Forml” 应该是 “Form1” 的笔误。此外,Image 属性的文件类型是 image/jpeg,但在这个表格中并没有特别指出,只是提到了文件名。

这个表格描述了一个简单的选课程序界面,其中包含一个下拉列表(comboBox1),两个按钮(button1button2),一个列表框(listBox1),两个标签(label1label2),以及一个文本框(textBox1)。每个控件都有特定的属性设置,以定义它们在界面上的外观和行为。例如,button1 有一个添加课程的图片(add.jpg),而 button2 有一个删除课程的图片(del.jpg)。textBox1 被设置为只读,用于显示总课时。

2. 设计窗体及页面

在这里插入图片描述

3. 代码实现

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 Pages_127__例6_2_选课程序
{
    public partial class Form1 : Form
    {
        private int totalHours = 0; // 用于存储已选课程的总学分

        // 构造函数,初始化窗体
        public Form1()
        {
            InitializeComponent(); // 初始化窗体上的控件
        }

        // 当窗体加载时,初始化课程数据并添加到ComboBox控件中
        private void Form1_Load(object sender, EventArgs e)
        {
            // 初始化课程数组
            Course[] courses = new Course[7] {
                new Course("大学英语", 50),
                new Course("高等数学", 55),
                new Course("数理统计", 35),
                new Course("大学物理", 60),
                new Course("电子电工", 25),
                new Course("计算机应用基础", 65),
                new Course("C语言程序设计", 80)
            };

            // 将课程添加到 ComboBox
            foreach (Course course in courses)
            {
                comboBox1.Items.Add(course); // 将每个课程对象添加到ComboBox的Items集合中
            }
        }

        // Course类定义,用于表示课程信息
        public class Course
        {
            public string Name; // 课程名称
            public int Hours;   // 课程学分

            // 构造函数,用于创建Course对象
            public Course(string name, int hours)
            {
                Name = name;
                Hours = hours;
            }

            // 重写ToString方法,用于返回课程名称和学分的字符串表示
            public override string ToString()
            {
                return Name + " (" + Hours + " 学分)";
            }
        }

        // 当ComboBox的选中项发生变化时,更新TextBox显示的学分
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            // 获取选中的课程
            if (comboBox1.SelectedItem is Course selectedCourse)
            {
                // 更新 textBox1 的文本为选中课程的学分
                textBox1.Text = selectedCourse.Hours.ToString();
            }
        }

        // 当点击添加按钮时,将选中的课程添加到ListBox中,并更新总学分
        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.SelectedItem is Course selectedCourse)
            {
                if (!listBox1.Items.Contains(selectedCourse))
                {
                    listBox1.Items.Add(selectedCourse); // 将选中的课程添加到ListBox中
                    totalHours += selectedCourse.Hours;   // 更新总学分
                    textBox1.Text = totalHours.ToString(); // 更新TextBox显示的总学分
                }
            }
        }

        // 当点击删除按钮时,从ListBox中移除选中的课程,并更新总学分
        private void button2_Click(object sender, EventArgs e)
        {
            if (listBox1.SelectedItem is Course selectedCourse && listBox1.SelectedIndex != -1)
            {
                listBox1.Items.Remove(selectedCourse); // 从ListBox中移除选中的课程
                totalHours -= selectedCourse.Hours;    // 更新总学分
                textBox1.Text = totalHours.ToString();   // 更新TextBox显示的总学分
            }
        }
    }
}

4. 运行效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/912200.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

星期-时间范围选择器 滑动选择时间 最小粒度 vue3

星期-时间范围选择器 功能介绍属性说明事件说明实现代码使用范例根据业务需要,实现了一个可选择时间范围的周视图。用户可以通过鼠标拖动来选择时间段,并且可以通过快速选择组件来快速选择特定的时间范围。 功能介绍 时间范围选择:用户可以通过鼠标拖动来选择时间段。快速选…

Swift从0开始学习 简单值 day1

1.0简单值的初始化: Swift声明值可以使用let 来声明常量,使用 var 来声明变量。let声明是不可修改的且只能赋值一次,var声明是可修改的。两者都不需要显式的指定类型,当你通过一个值来声明变量和常量时,编译器会自动推断其类型。 …

技术领导者的道与术:从领导者到领导力

目录标题 领导者现实看起来是这样技术领导者不应该和个人坐在一起技术领导力仍然是必须的从技术领导到技术领导力小结领导者 你可能想成为或者已经是一位技术领导者,估计你现在心里想成为超级英雄的想法正在爆棚。 你是Java、JavaScript、Angular等技术的专家,公司的项目代…

FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我已有的 GT 高速接口解决方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图输入Sensor之-->芯片解码的HDMI视频数据组包基于GTH高速接口的视频传输架构GTH IP 简介GTH 基本结构GTH 发送和接收处理…

【实战篇P2-5】手把手实现STM32+ESP8266+原子云服务器+手机APP应用——第五节-编写Android手机APP程序实现接入原子云服务器

使用的开发软件是Android studio Android SDK(运行环境 :最低版本 21(Android 5.0) 最高版本 29 (Android 9.0) Gradle 版本 :4.6 根据源码,可自定义修改界面,修改名称,根据需求自定义数据展示界面等,修改app图标及名称等。 目录 Android程序设计 Android…

华为私有接口类型hybrid

华为私有接口类型hybrid Tip&#xff1a;hybrid类型&#xff0c;简称混合型接口。 本次实验模拟2层网络下 vlan10 vlan20 不能互访&#xff0c;vlan10 vlan20 同时可以访问vlan100 sw1配置如下&#xff1a; <Huawei>sy [Huawei]sys sw1 [sw1]vl ba 10 20 100 [sw1]int…

在 .NET 6.0 中创建用于 CRUD 操作的 Web API

快速概述&#xff1a; 在动态的技术世界中&#xff0c;创建强大的 Web API 已成为开发人员不可或缺的关键技能。这些 API 是促进不同应用程序之间顺畅通信的重要链接&#xff0c;可实现无缝数据检索和操作。本文的重点是在 .NET 6 中为 CRUD 操作创建 Web API。 为了实现这一点…

YOLOPv2论文翻译

YOLOPv2: Better, Faster, Stronger for Panoptic Driving Perception 摘要 在过去的十年中&#xff0c;多任务学习方法在解决全景驾驶感知问题方面取得了令人鼓舞的成果&#xff0c;既提供了高精度又具备高效能的性能。在设计用于实时实际自动驾驶系统的网络时&#xff0c;这…

使用GitHub Actions实现CI/CD流程

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用GitHub Actions实现CI/CD流程 GitHub Actions 简介 创建仓库 配置工作流 示例工作流文件 触发和运行工作流 部署应用 最佳实…

【C++练习】使用海伦公式计算三角形面积

编写并调试一个计算三角形面积的程序 要求&#xff1a; 使用海伦公式&#xff08;Herons Formula&#xff09;来计算三角形的面积。程序需要从用户那里输入三角形的三边长&#xff08;实数类型&#xff09;。输出计算得到的三角形面积&#xff0c;结果保留默认精度。提示用户…

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑

【服务器】使用命令行文本编辑器&#xff08;如 vim、nano 或 vi&#xff09;创建文件并编辑 准备&#xff1a;连接至服务器&#xff08;如ssh&#xff09;创建 .ncl 文件方法 1: 使用 vim 创建 .ncl 文件方法 2: 使用 nano 创建 .ncl 文件确认文件已创建运行 .ncl 文件 总结参…

负载均衡式在线oj项目开发文档(个人项目)

项目目标 需要使用的技术栈&#xff1a; 这个项目共分成三个模块第一个模块为公共的模块&#xff0c;用于解决字符串处理&#xff0c;文件操作&#xff0c;网络连接等等的问题。 第二个模块是一个编译运行的模块&#xff0c;这个模块的主要功能就是将用户的代码收集上来之后要…

区块链技术在数字版权管理中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 区块链技术在数字版权管理中的应用 引言 区块链技术概述 …

数据编排与ETL有什么关系?

数据编排作为近期比较有热度的一个话题&#xff0c;讨论度比较高&#xff0c;同时数据编排的出现也暗示着数字化进程的自动化发展。在谈及数据编排时&#xff0c;通常也会谈到ETL&#xff0c;这两个东西有相似点也有不同点。 数据编排和ETL&#xff08;提取、转换、加载&#x…

test 是 JavaScript 中正则表达式对象 (RegExp) 的一种方法,用于测试一个字符串是否匹配某个正则表达式

在你的代码中&#xff0c;test 方法用于验证扫描结果是否符合特定的格式要求。具体来说&#xff0c;/^[A-Za-z\d]{16}$/.test(res.result) 这一行代码用于检查扫描结果 res.result 是否是一个由16个字母或数字组成的字符串。 test 方法的作用 正则表达式匹配&#xff1a; ^ 表…

鸿蒙开发:ArkTS如何读取图片资源

ArkTS在TS的基础上主要扩展了声明式UI能力&#xff0c;简化了构建和更新UI的过程。开发者可以以声明式的方式来描述UI的结构&#xff0c;如使用build方法中的代码块。同时&#xff0c;ArkTS提供了自定义组件、系统组件、属性方法、事件方法等&#xff0c;以构建应用UI界面。今天…

外贸管理利器7选,助力高效办公

推荐7款外贸管理软件&#xff0c;包括ZohoBooks、ZohoCRM、富通天下等&#xff0c;各具特色&#xff0c;满足外贸企业不同需求&#xff0c;提高管理效率&#xff0c;助力企业全球化竞争。、 一、Zoho Books Zoho Books是一款外贸财务管理软件&#xff0c;不仅为用户提供了一个…

Powerfx日期的設定

踏入2024年年尾 &#xff0c;即將開始2025年 &#xff0c; 很多事又到了一個新的開始&#xff0c;我們的Microsoft windows 也一樣&#xff0c;就是要對Windows 10說再見&#xff0c;踏入Windows 11&#xff0c;對大多數用戶來說Windows 11既很接近又很遙遠&#xff1b;這是因為…

单应用系统规划Node(节点)、Menu(菜单) 和 User(用户)之间关系

标题中的内容涉及到了系统设计中的权限管理和功能模块化。 通过设计一个 Node 系统 来实现更灵活、更安全的权限控制。Node 更像是一个概念&#xff0c;但在实际应用中&#xff0c;它可以具象化为数据库中的表结构&#xff0c;进而与 Menu 和 User 权限系统关联起来。 Node 系统…

Node.js——fs模块-文件重命名和移动

1、在Node.js中&#xff0c;我们可以使用 rename 或 renameSync 来移动或重命名文件或文件夹 2、语法&#xff1a; fs.rename(oldPath,newPath,callback) fs.renameSync(oldPath,newPath) 参数说明&#xff1a; oldPath 文件当前的路径 newPath 文件新的路径 callback 操…