当前位置: 首页 > news >正文

C#,《小白学程序》第三课:类class,类的数组及类数组的排序

类class把数值与功能巧妙的进行了结合,是编程技术的主要进步。

下面的程序你可以确立 分数 与 姓名 之间关系,并排序。

1 文本格式


/// <summary>
/// 同学信息类
/// </summary>
public class Classmate
{
    /// <summary>
    /// 学号
    /// </summary>
    public int Id;
    /// <summary>
    /// 姓名
    /// </summary>
    public string Name;
    /// <summary>
    /// 性别
    /// </summary>
    public string Gender;
    /// <summary>
    /// 成绩
    /// </summary>
    public float Score;

    /// <summary>
    /// 创建一个同学信息
    /// </summary>
    /// <param name="id"></param>
    /// <param name="name"></param>
    /// <param name="gender"></param>
    /// <param name="score"></param>
    public Classmate(int id, string name, string gender, float score)
    {
        Id = id;
        Name = name;
        Gender = gender;
        Score = score;
    }

    /// <summary>
    /// 同学信息类,除了存储信息,还可以做点什么!
    /// </summary>
    /// <returns></returns>
    public string Dao()
    {
        return Name + " 到!";
    }
}

/// <summary>
/// 记录同学信息的一个数组
/// 第三课是放在 Button3_Click内的第五课需要用到这个数据,
/// 挪到了这里(走廊),公用!
/// </summary>
Classmate[] mates = {
       new Classmate( 1, "失败后", "男", 149 ),
       new Classmate( 5, "基础", "男",96 ),
       new Classmate( 6, "苏轼加", "男",107),
       new Classmate( 3, "叙述", "男",110),
       new Classmate( 8, "回避", "女",119 ),
       new Classmate( 2, "加盐", "女",123 ),
       new Classmate( 4, "安静", "女",156 ),
       new Classmate( 7, "比铭记", "男",142 ),
};

/// <summary>
/// 《小白学程序》第三课:类、类数组与排序
/// 前面简单的数组,存在一个明显的问题:
/// 排序之后,不知道成绩对应哪个同学?
/// 本节课,新学习一个概念 类class,
/// 类可以存储更多的信息;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
    int n = 8;

    // #1 输出 同学信息:学号,姓名,成绩
    StringBuilder sb = new StringBuilder();
    sb.AppendLine("未排序之前的成绩:<br>");
    for (int i = 0; i < n; i++)
    {
        // 未使用类(class)之前的原来的学法
        //sb.AppendLine(i + ": " + score[i - 1] + "<br>");
        sb.AppendLine(mates[i].Id + " " + mates[i].Name + ": " + mates[i].Score + "<br>");
    }
    sb.AppendLine("<br>");

    // #2 排序
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            // 比较类成员的成绩(属性)
            if (mates[i].Score > mates[j].Score)
            {
                // 类成员的交换
                Classmate stemp = mates[i];
                mates[i] = mates[j];
                mates[j] = stemp;
            }
        }
    }

    sb.AppendLine("从小到大排序之后的成绩:<br>");
    // #3 表格输出
    // 前面的数据输出比较简单;这里学习用 表格输出;
    // style td 控制表格的内空隙(padding)大小
    sb.AppendLine("<style>td { padding:10px; } </style>");
    // table 表格;width 宽度;border 表格线
    sb.AppendLine("<table width='420' border=1>");
    for (int i = 0; i < n; i++)
    {
        //sb.AppendLine(i + ": " + score[i - 1] + "<br>");
        sb.AppendLine("<tr><td>" + mates[i].Id + "</td><td>" + mates[i].Name + "</td><td>" + mates[i].Score + "</td><td>" + mates[i].Dao() + "</td></tr>");
    }
    sb.AppendLine("</table>");

    webBrowser1.DocumentText = sb.ToString();
}
 

2 代码格式


/// <summary>
/// 同学信息类
/// </summary>
public class Classmate
{/// <summary>/// 学号/// </summary>public int Id;/// <summary>/// 姓名/// </summary>public string Name;/// <summary>/// 性别/// </summary>public string Gender;/// <summary>/// 成绩/// </summary>public float Score;/// <summary>/// 创建一个同学信息/// </summary>/// <param name="id"></param>/// <param name="name"></param>/// <param name="gender"></param>/// <param name="score"></param>public Classmate(int id, string name, string gender, float score){Id = id;Name = name;Gender = gender;Score = score;}/// <summary>/// 同学信息类,除了存储信息,还可以做点什么!/// </summary>/// <returns></returns>public string Dao(){return Name + " 到!";}
}/// <summary>
/// 记录同学信息的一个数组
/// 第三课是放在 Button3_Click内的第五课需要用到这个数据,
/// 挪到了这里(走廊),公用!
/// </summary>
Classmate[] mates = {new Classmate( 1, "失败后", "男", 149 ),new Classmate( 5, "基础", "男",96 ),new Classmate( 6, "苏轼加", "男",107),new Classmate( 3, "叙述", "男",110),new Classmate( 8, "回避", "女",119 ),new Classmate( 2, "加盐", "女",123 ),new Classmate( 4, "安静", "女",156 ),new Classmate( 7, "比铭记", "男",142 ),
};/// <summary>
/// 《小白学程序》第三课:类、类数组与排序
/// 前面简单的数组,存在一个明显的问题:
/// 排序之后,不知道成绩对应哪个同学?
/// 本节课,新学习一个概念 类class,
/// 类可以存储更多的信息;
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{int n = 8;// #1 输出 同学信息:学号,姓名,成绩StringBuilder sb = new StringBuilder();sb.AppendLine("未排序之前的成绩:<br>");for (int i = 0; i < n; i++){// 未使用类(class)之前的原来的学法//sb.AppendLine(i + ": " + score[i - 1] + "<br>");sb.AppendLine(mates[i].Id + " " + mates[i].Name + ": " + mates[i].Score + "<br>");}sb.AppendLine("<br>");// #2 排序for (int i = 0; i < n - 1; i++){for (int j = i + 1; j < n; j++){// 比较类成员的成绩(属性)if (mates[i].Score > mates[j].Score){// 类成员的交换Classmate stemp = mates[i];mates[i] = mates[j];mates[j] = stemp;}}}sb.AppendLine("从小到大排序之后的成绩:<br>");// #3 表格输出// 前面的数据输出比较简单;这里学习用 表格输出;// style td 控制表格的内空隙(padding)大小sb.AppendLine("<style>td { padding:10px; } </style>");// table 表格;width 宽度;border 表格线sb.AppendLine("<table width='420' border=1>");for (int i = 0; i < n; i++){//sb.AppendLine(i + ": " + score[i - 1] + "<br>");sb.AppendLine("<tr><td>" + mates[i].Id + "</td><td>" + mates[i].Name + "</td><td>" + mates[i].Score + "</td><td>" + mates[i].Dao() + "</td></tr>");}sb.AppendLine("</table>");webBrowser1.DocumentText = sb.ToString();
}

3 计算结果

相关文章:

C#,《小白学程序》第三课:类class,类的数组及类数组的排序

类class把数值与功能巧妙的进行了结合&#xff0c;是编程技术的主要进步。 下面的程序你可以确立 分数 与 姓名 之间关系&#xff0c;并排序。 1 文本格式 /// <summary> /// 同学信息类 /// </summary> public class Classmate { /// <summary> /…...

建筑结构健康监测系统和传统人工监测的区别

在繁华的城市里&#xff0c;建筑结构作为城市生命线的重要一环&#xff0c;其安全与稳定对城市的运转和居民的生活至关重要。为了更好地守护建筑结构的健康&#xff0c;WITBEE万宾自主研发建筑结构健康监测系统让建筑安全&#xff0c;在上一个台阶。 WITBEE万宾建筑结构健康监测…...

二 使用GPIO的复用功能 利用USART 实现printf()

参考这篇&#xff1a; STM32串口通信详解 1. 关于USART USART ( universal synchronous / asynchronous receiver /transmitter) 是一种串行通讯协议 , 允许设备通过串行端口进行数据传输&#xff0c; USART 能够以同步或者异步的方式进行工作&#xff0c;在实际的运用中&…...

C#中的警告CS0120、CS0176、CS0183、CS0618、CS0649、CS8600、CS8601、CS8602、CS8604、CS8625及处理

目录 一、CS0120 二、CS0176 1.解决前 2.解决后 3.解决办法 三、CS0183 四、CS0618 五、CS8600 六、CS8602 七、CS8622 1. 解决前&#xff1a; 2. 解决后&#xff1a; 3.解决方法&#xff1a; 八、CS8604和CS8625 九、CS0649 十、CS8601 一、CS0120 严重性 代…...

js中声明变量的关键字(const,let,var)

const 特点&#xff1a; const不允许在同一作用域重复声明&#xff0c;块级作用域暂时性死区&#xff0c;在声明之前&#xff0c;该变量是不可用的const声明的是一个只读变量&#xff0c;声明之后不能改变其值&#xff0c;一旦声明必须初始化但是const定义的对象属性是可以修…...

Android13 launcher循环切页

launcher 常规切页&#xff1a;https://blog.csdn.net/a396604593/article/details/125305234 循环切页 我们知道&#xff0c;launcher切页是在packages\apps\Launcher3\src\com\android\launcher3\PagedView.java的onTouchEvent中实现的。 1、滑动限制 public boolean onT…...

Java学习路线第一篇:Java基础(2)

这篇则分享Java学习路线第一part&#xff1a;Java基础&#xff08;2&#xff09; 从看到这篇内容开始&#xff0c;你就是被选定的天命骚年&#xff0c;将承担起学完Java基础的使命&#xff0c;本使命为单向契约&#xff0c;你可选择YES或者选择YES。 具体路线安排&#xff1a…...

网络工程师精华篇,50种网络故障及解决方法大集合

上午好&#xff0c;我的网工朋友。 做网络工程师&#xff0c;自然离不开网络&#xff0c;而日常工作中能搞多少大项目&#xff1f;最常见的其实还是网络故障的处理了。 怎么最高效地排查网络故障&#xff1f;怎么简单几招通网&#xff1f; 今天就从基础的入手&#xff0c;分…...

Unity播放网络视频

using System.Collections; using System.Collections.Generic; using UnityEngine; using Mx.UI; using Mx.Utils; using UnityEngine.UI; using UnityEngine.Video; /// <summary> 视频UI面板 </summary> public class VideoUIForm : BaseUIForm { private …...

SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测

SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测 目录 SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GWO-CNN-LSTM-selfAttention灰狼算法优化卷积长短…...

线性分类器--图像表示

整个模型 图像表示 二进制图像 灰度图像 彩色图像 大多数分类算法都要求输入向量&#xff01; rbg的图像矩阵转列向量 大小为 32X32 的话&#xff0c;图像矩阵转列向量是多少维&#xff1f; 32x32x3 3072 维列向量...

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构)

车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,…...

如何在Ubuntu的Linux系统中安装MySQL5.7数据库

前往MySQL数据库官网链接地址下载5.7数据库。 MySQL :: Download MySQL Community Server (Archived Versions)使用ssh的可视化工具将下载的mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz文件上传到Linux服务器&#xff0c;并解压文件 tar -zxvf mysql-5.7.40-linux-glibc2.12-x…...

基于Hadoop的区块链海量数据存储的设计与实现

点我完整下载&#xff1a;基于Hadoop的区块链海量数据存储的设计与实现.docx 基于Hadoop的区块链海量数据存储的设计与实现 Design and Implementation of Mass Data Storage for Blockchain based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 引言 4 1.1 研究背景 4 1.2 研…...

运行时错误/缺陷到底是什么缺陷

运行时错误(Run-time Error)是一种跟程序运行状态相关的缺陷。这类缺陷不能通过直接禁用相关特性来屏蔽&#xff0c;而是需要通过分析变量的数值状态来发现可能的异常。简单来说&#xff0c;这些缺陷通常只有当程序执行起来以后&#xff0c;才能逐渐暴露出的缺陷&#xff0c;一…...

应用Web3.0的5种方法提升你的点击量

Web3.0早已成为互联网的全新方向标&#xff0c;为用户带来全新的手机上网感受。它也变成吸引住点击量疯涨的秘密武器。我们将要详细介绍Web3.0的五种使用方法&#xff0c;帮助你更好的了解并应用Web3.0技术性&#xff0c;以提升你的点击量。 1.可靠的身份认证Web3.0技术性提供了…...

计算机服务器中了mallox勒索病毒如何处理,mallox勒索病毒解密文件恢复

科技技术的发展推动了企业的生产运营&#xff0c;网络技术的不断应用&#xff0c;极大地方便了企业日常生产生活&#xff0c;但网络毕竟是一把双刃剑&#xff0c;网络安全威胁一直存在&#xff0c;近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机…...

408—电子笔记分享

一、笔记下载 链接&#xff1a;https://pan.baidu.com/s/1bFz8IX6EkFMWTfY9ozvVpg?pwddeng 提取码&#xff1a;deng b站视频&#xff1a;408-计算机网络-笔记分享_哔哩哔哩_bilibili 包含了408四门科目&#xff08;数据结构、操作系统、计算机组成原理、计算机网络&#xff09…...

【每日一题】子数组的最小值之和

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;贡献法单调栈 写在最后 Tag 【贡献法】【单调栈】【数组】【2023-11-27】 题目来源 907. 子数组的最小值之和 题目解读 计算整数数组的连续子数组中最小值的和。 解题思路 本题朴素的解决思想是求出所有的连续子数组…...

【docker】docker总结

一、Docker简介 Docker是开源应用容器引擎&#xff0c;轻量级容器技术。基于Go语言&#xff0c;并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux系统上&#xff0c;也可以实现虚拟化容…...

从模型检测实战看三大逻辑:CTL、PLTL与mu-演算的选型指南

1. 模型检测与逻辑选型基础 第一次接触模型检测时&#xff0c;我被各种逻辑符号绕得头晕眼花。直到在分布式锁服务项目中踩了坑才明白&#xff1a;选错逻辑工具就像用螺丝刀拧螺母&#xff0c;不是不能拧&#xff0c;但效率会低得让人抓狂。模型检测本质上是用数学方法验证系统…...

端侧语音交互革命已启动,2026奇点大会三大语音引擎对比测试,华为/苹果/开源模型实测延迟差达417ms!

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI语音助手 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次将端侧实时语音理解与多模态意图对齐作为核心议题&#xff0c;聚焦于新一代AI语音助手在隐私敏感场景下的零延迟响应能力。来自MIT CSAIL与DeepMind…...

3步掌握大气层系统:从基础部署到高级优化的完整指南

3步掌握大气层系统&#xff1a;从基础部署到高级优化的完整指南 【免费下载链接】Atmosphere-stable 大气层整合包系统稳定版 项目地址: https://gitcode.com/gh_mirrors/at/Atmosphere-stable 大气层系统&#xff08;Atmosphere&#xff09;作为任天堂Switch平台最稳定…...

ZCU104开发板到手第一步:保姆级Pynq镜像烧录与上电启动避坑指南

ZCU104开发板实战&#xff1a;从零构建Pynq系统的全流程精解 第一次拿到ZCU104开发板时&#xff0c;那种兴奋与忐忑交织的感觉至今记忆犹新。作为Xilinx旗下支持Pynq框架的高性能开发平台&#xff0c;这块板子既能运行完整的Linux系统&#xff0c;又能通过Python灵活控制FPGA逻…...

用PyQt5给Matplotlib图表做个‘动态仪表盘’:从静态展示到实时监控数据的完整实现

用PyQt5打造工业级数据仪表盘&#xff1a;Matplotlib动态可视化的高阶实践 在数据分析领域&#xff0c;静态图表已经无法满足现代监控系统的需求。想象一下工厂车间的设备状态看板、金融交易的实时行情展示&#xff0c;或是智慧城市的交通流量监测——这些场景都需要将数据以动…...

光刻机核心技术解析:从光源到光刻胶的精密控制

1. 光刻机&#xff1a;芯片制造的"精密画笔" 想象一下要在头发丝的万分之一宽度上雕刻出复杂的电路图案——这就是光刻机每天在半导体工厂里完成的神奇任务。作为芯片制造的核心设备&#xff0c;光刻机就像一支纳米级的精密画笔&#xff0c;通过光与化学的完美配合&a…...

Rockchip RK3588 - Recovery模式下的updateEngine与rkupdate升级机制深度解析

1. RK3588 Recovery模式概述 对于嵌入式Linux开发者来说&#xff0c;系统升级是个绕不开的话题。Rockchip RK3588芯片提供了两种主流的启动升级方案&#xff1a;Recovery模式和A/B分区模式。这两种方案我都实际部署过&#xff0c;今天重点聊聊Recovery模式这个"老将"…...

如何在Mac上使用CXPatcher提升CrossOver游戏性能:完整教程

如何在Mac上使用CXPatcher提升CrossOver游戏性能&#xff1a;完整教程 【免费下载链接】CXPatcher A patcher to upgrade Crossover dependencies and improve compatibility 项目地址: https://gitcode.com/gh_mirrors/cx/CXPatcher 你是否在Mac上运行Windows游戏时遇到…...

AI入门必备工具——Python与核心框架,新手零门槛上手

首先明确&#xff1a;AI入门首选编程语言是Python&#xff0c;没有之一。为什么&#xff1f;因为Python语法简洁、上手容易&#xff0c;而且拥有丰富的AI相关库和框架&#xff0c;无需重复造轮子&#xff0c;能够快速实现AI模型的搭建和运行。相比C、Java&#xff0c;Python更适…...

告别理论:用Python复现5G NR PRACH/PUSCH功率控制,验证你的协议理解

用Python实战5G NR功率控制&#xff1a;从协议公式到可视化仿真 在5G NR系统中&#xff0c;功率控制算法直接影响着上行链路的覆盖范围和终端功耗。许多开发者虽然熟悉协议文档中的公式&#xff0c;却难以将这些抽象描述转化为可验证的代码实现。本文将带您用Python构建一个完整…...