C#,《小白学程序》第三课:类、类数组与排序

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 代码格式

cs 复制代码
/// <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();
}

你非常幸运读到的是世界上 唯一一本真正的程序教程。

相关推荐
菜的不敢吱声14 分钟前
swift学习第4天
服务器·学习·swift
你怎么知道我是队长3 小时前
C语言---枚举变量
c语言·开发语言
李慕婉学姐3 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
吃茄子的猫3 小时前
quecpython中&的具体含义和使用场景
开发语言·python
云栖梦泽4 小时前
易语言中小微企业Windows桌面端IoT监控与控制
开发语言
想进部的张同学4 小时前
hilinux-3599---设备学习---以及部署yolo
学习·yolo·海思
数据大魔方4 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
HyperAI超神经5 小时前
【vLLM 学习】Rlhf
人工智能·深度学习·学习·机器学习·vllm
李建军5 小时前
界止签章宗地号替换工具
c#
qq_425263325 小时前
.net开发框架和语言
c#