---
# System prepended metadata

title: CH2 Visual C#與.NET

---

# CH1 Visual Studio快整入門
## 20240126作業
![image](https://hackmd.io/_uploads/HJD0Htmn6.png)
## 心得感想
為了更好的了解C#,老師讓我們做幾個最基礎的練習題,內容包括C#的寫法、簡介等,我最後也順利了解了C#的基礎語法及使用方式,透過這樣簡單的練習方式,讓我對C#有了基礎的認識,也成為我未來學習C#重要的基石.
# CH2 Visual C#與.NET
## 1.以.NET 8.0產生主控台程式
程式設計:
![image](https://hackmd.io/_uploads/Skb5NOg36.png)
執行畫面:
![image](https://hackmd.io/_uploads/SyLjVue2a.png)
## 2.傳統的主控台程式
程式設計:
![image](https://hackmd.io/_uploads/H10tSuxnT.png)
執行畫面:
![image](https://hackmd.io/_uploads/ry_sSOl26.png)
## 3.資料做輸入和輸出的處理
程式設計:
![image](https://hackmd.io/_uploads/BJoeUtx36.png)
執行畫面:
![image](https://hackmd.io/_uploads/SyhE8te3T.png)
## 4.格式化輸出
程式設計:
![image](https://hackmd.io/_uploads/S1LKuKlhp.png)
執行畫面:
![image](https://hackmd.io/_uploads/HJAi_Kgna.png)
## 5.視窗應用程式
 程式設計:![image](https://hackmd.io/_uploads/HktnSat36.png)
![image](https://hackmd.io/_uploads/S1U6rpKnT.png)
 執行畫面:![image](https://hackmd.io/_uploads/HkbJUaY3T.png)
![image](https://hackmd.io/_uploads/HkjyI6Fh6.png)
### 20240219 心得感想
這次的課堂中,老師教導我們練習視窗應用程式,讓我們可以在點其中一個按鈕時,大螢幕可以輸出我們想讓它因此輸出的文字,這樣的程式相當實用,可以簡單方便的輸出自己想要看到的,也讓我明白了原來很多網頁就是用類似的手法設計的.
# ch3資料型別與變數
## 隨堂練習
### 1.數值格式化練習
程式設計:
![image](https://hackmd.io/_uploads/r1Tix2t26.png)
執行畫面:
![image](https://hackmd.io/_uploads/ry70e3K2a.png)
### 2.貸款試算練習 
程式設計:
![image](https://hackmd.io/_uploads/ryHgNV3aa.png)

![image](https://hackmd.io/_uploads/SygZN42Ta.png)
執行畫面:
初始畫面:![image](https://hackmd.io/_uploads/SkCV4E26p.png)
計算畫面:![image](https://hackmd.io/_uploads/HkM_E4266.png)
錯誤畫面:![image](https://hackmd.io/_uploads/B1MqVEh6T.png)
清除畫面:![image](https://hackmd.io/_uploads/B15jE4nT6.png)
### 20240226心得
在這一章節中,老師教導我們如何把第二章學到的程式複雜化,並讓他更實用.這次的練習讓我學到非長多酐用的程式語法,例如:如何切換執行程式中的圖片、如何寫出清出所有數值的程式等,各個都相當好用,讓我受益良多.
# CH4 基本輸出入介面設計
## 隨堂練習
### login 
程式碼:
```
private void button_Click(object sender, EventArgs e)
{
    try
    {
        int money = int.Parse(textBox2.Text);
        label3.Text = $"提款金額：{money:n}元";
    }
    catch
    {
        MessageBox.Show("請輸入整數", "注意", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
}

private void textBox1_TextChanged_1(object sender, EventArgs e)
{
    
}

```
執行結果:
![image](https://hackmd.io/_uploads/ByauVrpy0.png)
### 四則運算
程式碼:
```
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ScrollBar;
using System.Drawing;
using System.Net;

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int a = int.Parse(textBox1.Text);
            int b = int.Parse(textBox2.Text);
            int ans = a + b;
            MessageBox.Show("結果是" + ans, "兩數相加", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int a = int.Parse(textBox1.Text);
            int b = int.Parse(textBox2.Text);
            int ans = a - b;
            MessageBox.Show("結果是" + ans, "兩數相減", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            int a = int.Parse(textBox1.Text);
            int b = int.Parse(textBox2.Text);
            int ans = a * b;
            MessageBox.Show("結果是" + ans, "兩數相乘", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            int a = int.Parse(textBox1.Text);
            int b = int.Parse(textBox2.Text);
            int ans = a / b;
            MessageBox.Show("結果是" + ans, "兩數相除", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        
        }

        
    }
}
```
執行畫面:
![image](https://hackmd.io/_uploads/BkdvYHT1C.png)
### 成績計算:
```
namespace 19 康軒勻
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            float[] score = new float[]
            {
                float.Parse(textBox1.Text),
                float.Parse(textBox2.Text),
                float.Parse(textBox3.Text),
                float.Parse(textBox4.Text),
                float.Parse(textBox5.Text)
            };

            float sum = 0, max = 0;

            for (int i = 0; i < score.Length; i++)
            {
                sum += score[i];
                if (score[i] > max)
                {
                    max = score[i];
                }
            }

            float avg = sum / 5;
            label6.Text = $"總分={sum}\n平均={avg:f4}\n最高分={max}";
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

    
    }
}

```
執行畫面:
![image](https://hackmd.io/_uploads/S1RMsrTJR.png)
# CH5 身份證字號產生器/檢查器
程式碼:
```
deDom.Compiler;
using System.Data.SqlTypes;

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        string idChar = "abcdefghjklmnpqrstuvxywzio";
        string[] idCry ={"台北市","台中市","基隆市","台南市","高雄市","新北市","宜蘭縣","桃園縣",
                     "新竹縣","苗栗國","台中市","南投縣","彰化縣","雲林縣","嘉義縣","台南市","高雄市",
                     "屏東縣","花蓮國","台東縣","澎湖縣","陽明山","金門縣","連江縣","嘉義市","新竹市"};
        Random rand = new Random();
        public Form1()
        {
            InitializeComponent();
        }

        private void produce_Click(object sender, EventArgs e)
        {
            string id;
            int temp;
            int chack_number = 0;
            temp = rand.Next(26);
            chack_number += ((10 + temp) / 10);
            chack_number += ((10 + temp) % 10) * 9;
            id = idChar.Substring(temp, 1).ToUpper();
            temp = rand.Next(1, 3);
            id += (Convert.ToString(temp));
            chack_number += temp * 8;
            for (int i = 0; i < 7; i++)
            {
                temp = rand.Next(10);
                id += Convert.ToString(temp);
                chack_number += (7 - i) * temp;
            }
            id += Convert.ToString((10 - (chack_number % 10)) % 10);
            idinput.Text = id;
        }

        private void check_Click(object sender, EventArgs e)
        {
            string id = idinput.Text;
            string temp_string;
            int temp;
            int chack_number = 0;
            string _output;
            if (id.Trim().Length == 10)
            {
                temp_string = id.Substring(0, 1).ToLower();
                if (idChar.Contains(temp_string))
                {
                    temp = idChar.IndexOf(temp_string);
                    chack_number += (temp + 10) / 10;
                    chack_number += ((temp + 10) % 10) * 9;
                    if (temp == -1)
                    {
                        output.Text = "縣市字母錯誤";
                        return;
                    }
                    _output = idCry[temp];
                }
                else
                {
                    output.Text = "縣市字母錯誤";
                    return;
                }

                (temp) = Convert.ToInt16(id.Substring(1, 1).ToLower());
                if (temp == 2)
                    _output += ", 女性";
                else if (temp == 1)
                    _output += ", 男性";
                else
                {
                    output.Text = "性別碼錯誤";
                    return;
                }
                chack_number += temp * 8;

                for (int i = 2; i < 9; i++)
                {
                    chack_number += Convert.ToInt16(id.Substring(i, 1)) * (9 - i);
                }
                if ((10-(chack_number % 10))%10 == Convert.ToInt16(id.Substring(9, 1)))
                {
                    _output = "正確, " + _output;
                }
                else
                {
                    output.Text = "檢查號碼錯誤";
                    return;
                }
                _output = Convert.ToString(chack_number) + ", " + _output;
                output.Text = _output;
            }
            else
            {
                output.Text = "身分證長度錯誤";
                return;
            }
        }
    }
}
```
執行畫面:
![image](https://hackmd.io/_uploads/r1duNOHRp.png)
# 20240318 自我練習
## 一 數字三角形
程式碼:`// See https://aka.ms/new-console-template for more information
using System;

class Program
{
    static void Main(string[] args)
    {
        Console.Write("資訊一乙 19 康軒勻");
        int N = int.Parse(Console.ReadLine());

        if (N % 2 == 1) // 奇數
        {;
            for (int i = N; i >= 1; i--)
            {
                for (int j = i; j >= 1; j--)
                {
                    Console.Write(j);
                }
                Console.WriteLine();
            }
        }
        else // 偶數
        {
            for (int i = 1; i <= N; i++)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write(j);
                }
                Console.WriteLine();
            }
        }
    }
}`
執行畫面:
![image](https://hackmd.io/_uploads/SkWPUvr0T.png)

![image](https://hackmd.io/_uploads/rkii8Dr06.png)
## 二 5進制轉換
程式碼: `// See https://aka.ms/new-console-template for more information
using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("資訊一乙 19 康軒勻");
        int decimalNumber = int.Parse(Console.ReadLine());

        string quinaryNumber = ConvertToQuinary(decimalNumber);
        Console.WriteLine($"{quinaryNumber}");
    }

    static string ConvertToQuinary(int decimalNumber)
    {
        if (decimalNumber == 0)
        {
            return "0";
        }

        string result = "";
        while (decimalNumber > 0)
        {
            int remainder = decimalNumber % 5;
            result = remainder.ToString() + result;
            decimalNumber /= 5;
        }

        return result;
    }
}

`
執行畫面:
![image](https://hackmd.io/_uploads/S1wCW_HRa.png)
## 三 計算字元出現頻率
程式碼:
```
// See https://aka.ms/new-console-template for more information
using System;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        Console.Write("資訊一乙 19 康軒勻");
        string input = Console.ReadLine();

        SortedDictionary<char, int> charFrequency = new SortedDictionary<char, int>();

        for (char c = '0'; c <= '9'; c++)
        {
            charFrequency[c] = 0;
        }
        for (char c = 'A'; c <= 'Z'; c++)
        {
            charFrequency[c] = 0;
        }
        for (char c = 'a'; c <= 'z'; c++)
        {
            charFrequency[c] = 0;
        }

        // 計算字元頻率
        foreach (char c in input)
        {
            if (charFrequency.ContainsKey(c))
            {
                charFrequency[c]++;
            }
        }
        foreach (KeyValuePair<char, int> pair in charFrequency)
        {
            if (pair.Value > 0)
            {
                Console.WriteLine($"'{pair.Key}': {pair.Value}");
            }
        }
    }
}




```
執行畫面:
![image](https://hackmd.io/_uploads/SyfyPwBCT.png)
## 四 累加
程式碼:
```
// See https://aka.ms/new-console-template for more information
using System;

class Program
{
    static void Main(string[] args)
    {
        Console.Write("資訊一乙 19 康軒勻");
        int N = int.Parse(Console.ReadLine());

        int sum = 0;

        for (int i = 1; i <= N; i++)
        {
            sum += i;
        }

        Console.WriteLine($"{sum}");
    }
}

```
執行畫面:
![image](https://hackmd.io/_uploads/Bk1QPDr0p.png)

## 五 考慮如下圖的演算法，並將數列印出
程式碼:
```
// See https://aka.ms/new-console-template for more information
using System;

class Program
{

    static void Main(string[] args)
    {
        Console.WriteLine("資訊一乙 19 康軒勻");
        int n = int.Parse(Console.ReadLine());

        while (true)
        {
            Console.WriteLine(n);

            if (n == 1)
                break;

            if (n % 2 == 1)
                n = 3 * n + 1;
            else
                n = n / 2;
        }
    }
}


```
執行畫面:
![image](https://hackmd.io/_uploads/r1F6qDH0p.png)
# 20240318 加分題
## 一.質數判斷
程式碼:
```
// See https://aka.ms/new-console-template for more information
using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("資訊一乙 19 康軒勻");
        int number = int.Parse(Console.ReadLine());

        if (IsPrime(number))
        {
            Console.WriteLine($"{number} 是質數。");
        }
        else
        {
            Console.WriteLine($"{number} 不是質數。");
        }
    }

    static bool IsPrime(int number)
    {
        if (number <= 1)
        {
            return false;
        }

        if (number == 2)
        {
            return true;
        }

        if (number % 2 == 0)
        {
            return false;
        }

        for (int i = 3; i <= Math.Sqrt(number); i += 2)
        {
            if (number % i == 0)
            {
                return false;
            }
        }

        return true;
    }
}
```
執行畫面:
![image](https://hackmd.io/_uploads/rJZHavSRp.png)
## 二 BMI程式
程式碼:`using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("資訊一乙 19 康軒勻");
        Console.WriteLine("身高：");
        double height = double.Parse(Console.ReadLine()) / 100;

        Console.WriteLine("體重：");
        double weight = double.Parse(Console.ReadLine());

        double bmi = CalculateBMI(height, weight);

        Console.WriteLine($"BMI值為：{bmi:F2}");

        string obesityDefinition = GetObesityDefinition(bmi);
        Console.WriteLine($"{obesityDefinition}");
    }

    static double CalculateBMI(double height, double weight)
    {
        return weight / (height * height);
    }

    static string GetObesityDefinition(double bmi)
    {
        if (bmi < 18.5)
        {
            return "體重過輕";
        }
        else if (bmi < 24)
        {
            return "正常範圍";
        }
        else if (bmi < 27)
        {
            return "過重";
        }
        else if (bmi < 30)
        {
            return "輕度肥胖";
        }
        else if (bmi < 35)
        {
            return "中度肥胖";
        }
        else
        {
            return "重度肥胖";
        }
    }
}`
執行畫面:
![image](https://hackmd.io/_uploads/Sy0DkuHCp.png)
## 三 猜數字遊戲
程式碼:`// See https://aka.ms/new-console-template for more information
using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("資訊一乙 19 康軒勻");
        Random random = new Random();
        int targetNumber = random.Next(1, 101); 
        int guessCount = 0;

        Console.WriteLine("猜猜看我心中所想的數字是多少（1到100之間），輸入0退出遊戲：");

        while (true)
        {
            int guess = int.Parse(Console.ReadLine());
            guessCount++;

            if (guess == 0)
            {
                Console.WriteLine("遊戲已退出。");
                break;
            }
            else if (guess < targetNumber)
            {
                Console.WriteLine("太小了，再大一點！");
            }
            else if (guess > targetNumber)
            {
                Console.WriteLine("太大了，再小一點！");
            }
            else
            {
                Console.WriteLine($"恭喜你猜中了！答案是 {targetNumber}，共猜了 {guessCount} 次。");
                break;
            }
        }
    }
}


`
執行畫面:
![image](https://hackmd.io/_uploads/H1ufW_BCa.png)
## 延伸練習- ID Generator
程式碼:
```
using Microsoft.VisualBasic;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Rebar;

namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        string idChar = "abcdefghjklmnpqrstuvxywzio";
        string[] idCry ={"台北市","台中市","基隆市","台南市","高雄市","新北市","宜蘭縣","桃園縣",
               "新竹縣","苗栗縣","台中市","南投縣","彰化縣","雲林縣","嘉義縣","台南市","高雄市",
               "屏東縣","花蓮縣","台東縣","澎湖縣","陽明山","金門縣","連江縣","嘉義市","新竹市"};
        string msg, idBorn;
        int num, idPos, sex;
        Random rand = new Random();
        public Form1()
        {
            InitializeComponent();
        }

        private void go_Click(object sender, EventArgs e)
        {
            output.Text = "";
            if (amount.Text.Length == 0)
            {
                amount.Text = "1";
            }
            for (int j = 0; j < Convert.ToInt16(amount.Text); j++)
            {
                string id;
                int temp;
                int chack_number = 0;
                temp = city_chose.CheckedIndices[0] - 1 == -1 ? rand.Next(26) : city_chose.CheckedIndices[0] - 1;
                chack_number += ((10 + temp) / 10);
                chack_number += ((10 + temp) % 10) * 9;
                id = idChar.Substring(temp, 1).ToUpper();
                if (Boy.Checked)
                    temp = 1;
                else if (Girl.Checked)
                    temp = 2;
                else
                    temp = rand.Next(1, 3);
                id += (Convert.ToString(temp));
                chack_number += temp * 8;
                for (int i = 0; i < 7; i++)
                {
                    temp = rand.Next(10);
                    id += Convert.ToString(temp);
                    chack_number += (7 - i) * temp;
                }
                id += Convert.ToString((10 - (chack_number % 10)) % 10);
                output.Text += id + '\n';
            }
        output.Text = output.Text.Replace("\n", Environment.NewLine);
        }

        private void amount_TextChanged(object sender, EventArgs e)
        {
            for (int i = amount.Text.Length - 1; i >= 0; i--)
            {
                if (amount.Text[i] > 57 || amount.Text[i] < 48)
                {
                    amount.Text = amount.Text.Remove(i, 1);
                    amount.Select(amount.Text.Length, 0);
                }
            }
        }

        private void city_chose_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (city_chose.CheckedItems.Count > 1)
            {
                for (int i = 0; i < city_chose.Items.Count; i++)
                {
                    if (i != city_chose.SelectedIndex)
                    {
                        city_chose.SetItemChecked(city_chose.CheckedIndices[i], false);
                    }
                }
            }
        }

        private void save_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Filter = "txt|*.txt";
            saveFileDialog1.FileName = msg;
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                StreamWriter sr = new StreamWriter(saveFileDialog1.FileName);
                sr.Write(output.Text);
                sr.Close();
            }
        }
    }
}
```
執行畫面:
![image](https://hackmd.io/_uploads/ryIoZq-lC.png)
### 20240401心得(100字)
在這次的課程中,我們主要在學習如何製作ID Generator的程式碼,我認為這並非一個簡單的作業,雖然老師已給我們程式碼,但還是有許多小錯誤,例如:沒宣告到等,好在最後有經過同學的幫助,才順利解決這項麻煩的作業.
# CH5 陣列和字串
## 自我練習
###  IndexOf (Char, Int32, Int32)
程式碼:
```
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 WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string[] stu = new string[] { "趙一", "林二", "張三", "李四", "王五" };
            int[] score = new int[] { 95, 100, 100, 92, 100 };
            string msg = "一百分學生:";
            int index = Array.IndexOf(score, 100);
            while (index >= 0) 
            {
                msg += stu[index] + ",";
                index = Array.IndexOf(score, 100, index + 1);
            };
            MessageBox.Show(msg);

        }
    }
}

```
執行畫面:
![image](https://hackmd.io/_uploads/SyO-jbbxR.png)
### 評分紀錄
程式碼:
```
namespace WinFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        int n = 0;
        string[] tea = new string[] { "東哥", "拉拉", "迪西", "小波", "努努" };
        int[] score = new int[5];
        private void button1_Click(object sender, EventArgs e)
        {
            int temp;
            if (int.TryParse(textBox1.Text, out temp))
            {
                if (temp >= 0 && temp <= 100)
                {
                    score[n] = temp;
                    label2.Text = "";
                    for (int i = 0; i <= n; i++)
                        label2.Text += $"{tea[i]}老師給分:{score[i]}\n";
                    n++;
                    if (n == 5)
                    {
                        double sum = 0;
                        for (int i = 0; i < score.Length; i++)
                        {
                            sum += score[i];
                        }
                        label2.Text += "=================\n";
                        label2.Text += $"平均分數:{(sum / 5)}\n";
                    }
                    else
                    {
                        label1.Text = $"{tea[n]}老師給分:";
                        textBox1.Text = "";
                        textBox1.Focus();
                    }
                }
                else
                {
                    MessageBox.Show("數值不合理!");
                    textBox1.Text = "";
                    textBox1.Focus();
                }
            }
            else
            {
                MessageBox.Show("請輸入整數!");
                textBox1.Focus();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            label1.Text = tea[n] + "老師給分:";
            label2.Text = "";
        }
    }
}

```
執行畫面:![image](https://hackmd.io/_uploads/B13KDsZ4C.png)
###  歌曲排行榜
程式碼:
```
namespace WinFormsApp3
{
    public partial class Form1 : Form
    {
        string[] song = new string[] { "不為誰而作的歌", "餘波盪漾", "後來的我們", "不該", "年輪說", "滿座", "關鍵詞", "天真有邪", "獨善其身", "一次幸福的機會" };
        string[] singer = new string[] { "林俊傑", "田馥甄", "五月天", "周杰倫", "楊丞琳", "李榮浩", "林俊傑", "林宥嘉", "田馥甄", "蕭敬騰" };
        int[] no = new int[10];
        public Form1()
        {
            InitializeComponent();
        }
        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < no.Length; i++)
            {
                no[i] = i + 1;
            }
            button1_Click_1(sender, e);
        }
        private void button1_Click_1(object sender, EventArgs e)
        {

            int[] no2 = new int[no.Length];
            no.CopyTo(no2, 0);
            Array.Sort(no, song);
            Array.Sort(no2, singer);
            string msg = "排名\t歌手\t歌曲" + Environment.NewLine;
            for (int i = 0; i < song.Length; i++)
            {
                msg += $"{no[i]}\t{singer[i]}\t{song[i]}" + Environment.NewLine;
            }
            textBox1.Text = msg;
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            string[] song2 = new string[song.Length];
            song.CopyTo(song2, 0);
            Array.Sort(song, singer);
            Array.Sort(song2, no);
            string msg = "排名\t歌手\t歌曲" + Environment.NewLine;
            for (int i = 0; i < song.Length; i++)
            {
                msg += $"{no[i]}\t{singer[i]}\t{song[i]}" + Environment.NewLine;
            }
            textBox1.Text = msg;
        }

        private void button3_Click_1(object sender, EventArgs e)
        {
            {
                string search = textBox2.Text;
                string msg = $"找不到{search}";
                List<int> indices = new List<int>();
                int index = Array.IndexOf(singer, search);
                if (index >= 0)
                {
                    msg = "排名\t歌手\t歌曲" + Environment.NewLine;
                    while (index >= 0)
                    {
                        msg += $"{no[index]}\t{singer[index]}\t{song[index]}";
                        msg += Environment.NewLine;
                        index = Array.IndexOf(singer, search, index + 1);
                    }
                }
                textBox1.Text = msg;
            }
        }
    }
}
```
執行畫面:
![image](https://hackmd.io/_uploads/rkrI703Z0.png)
![image](https://hackmd.io/_uploads/rJuPm03ZC.png)
![image](https://hackmd.io/_uploads/BJlY7C3-A.png)
![image](https://hackmd.io/_uploads/SJ9qmC2bC.png)

### 20240408 心得
在經過半個學期學習C#後,我們已經有寫這項程式的介面設計的的基本能力,其實大致邏輯就跟上學期的C++類似,不同的是,介面設計有許多細節需要調整,光是物件就有許多內容需要了解,然而,有物件寫出來的內容就是比沒物間寫出來的有成就感許多.
### 20240429 心得
這次要做的幾個程式碼中,我覺得歌手查詢最難最複雜,他的物件並不難拉,是最基本那幾個,但是程式內容又繁瑣又常,尤其是歌曲找不到那邊,需要思考一下才知道為什麼是這樣,結論,程式最重要的還是邏輯思考與數學推理等.
