自学内容网 自学内容网

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


【例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. 运行效果

在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_49345320/article/details/143500314

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!