4. 某校運動會報名管理程式

List<string[]> data = new List<string[]>(); // 班級 學號 姓名 性別 報名項目
List<string> person = new List<string>(new[] { "100公尺", "400公尺接力", "800公尺", "跳高" });

while (true)
{
    Console.Write(
        @"請選擇操作項目 :
        <1>批次輸入 : 
        <2>選手查詢 : 
        <3>刪除 : 
        <4>逐筆輸入 : 
        <5>顯示所有資料 : 
請選擇 : ");
    switch (Console.ReadLine())
    {
        case "1":
            Console.WriteLine("批次輸入,");
            Console.WriteLine("請輸入 班級、學號、姓名、性別及報名項目: ");
            string s;
            while ((s = Console.ReadLine()) != "")
                data.Add(s.Split(' '));
            break;
        case "2":
            while (true)
            {
                Console.WriteLine("選手查詢,");
                Console.Write("請輸入 班級、學號、姓名 : ");
                var k = Console.ReadLine().Split(' ');
                foreach (var item in data)
                {
                    if (item[0] == k[0] && item[1] == k[1] && item[2] == k[2])
                    {
                        Console.WriteLine(string.Join(" ", item));
                    }
                }
                Console.Write("繼續 : 請按1,結束 : 請按0 : ");
                if (Console.ReadLine() == "0") break;
            }
            break;
        case "3":
            Console.WriteLine("刪除資料,");
            while (true)
            {
                Console.Write("請輸入 班級、學號、姓名及報名項目 : ");
                var j = Console.ReadLine().Split(' ');
                foreach (var item in data)
                {
                    if (item[0] == j[0] && item[1] == j[1] && item[2] == j[2] && item[4] == j[3])
                    {
                        Console.WriteLine("被刪除的選手資料 : " + string.Join(" ", item));
                        data.Remove(item);
                        break;
                    }
                }

                Console.Write("繼續 : 請按1,結束 : 請按0 : ");
                if (Console.ReadLine() == "0") break;
            }
            break;
        case "4":
            Console.WriteLine("逐筆輸入,");
            while (true)
            {

                Console.Write("請輸入 班級、學號、姓名及性別 : ");
                string[] k = Console.ReadLine().Split(' ');
                Console.WriteLine(@"報名項目 :
 a : 大隊接力
 b : 一顆球的距離
 c : 天旋地轉
 d : 滾大球袋鼠跳
 e : 牽手同心
 f : 100公尺
 g : 400公尺接力
 h : 800公尺
 i : 跳高
請選擇 : ");
                var r = new string[] {
            "大隊接力","一顆球的距離","天旋地轉","滾大球袋鼠跳","牽手同心","100公尺","400公尺接力","800公尺","跳高"}[Console.ReadLine()[0] - 'a'];
                Console.WriteLine($"輸入班級 : {k[0]}、學號 : {k[1]}、姓名 : {k[2]}、性別 : {k[3]}、報名項目 : {r}");
                var ad = new string[5];
                Array.Copy(k, ad, 4);
                ad[4] = r;
                bool no = false;
                if (r != "大隊接力")
                {
                    int personal = 0;
                    int team = 0;
                    foreach (var d in data)
                    {
                        if (!(d[0] == ad[0] && d[1] == ad[1] && d[2] == ad[2] && d[3] == ad[3]))
                        {
                            continue;
                        }
                        if (d[4] == "大隊接力") continue;
                        if (person.Contains(d[4])) personal++;
                        else team++;
                    }

                    var isPersonal = person.Contains(r);
                    if (isPersonal && team > 0)
                    {
                        Console.WriteLine("已報個人賽,不能再報名團體賽!");
                        no = true;
                    }
                    else
                    if (!isPersonal && personal > 0)
                    {
                        Console.WriteLine("已報團體賽,不能再報名個人賽!");
                        no = true;
                    }
                    else

 if (personal > 2)
                    {
                        Console.WriteLine("已報名兩組個人賽,不能再報名!");
                        no = true;
                    }
                    else if (team > 2)
                    {

                        Console.WriteLine("已報名兩組團體賽,不能再報名!");
                    }

                }
                if (!no) data.Add(ad);

                Console.Write("繼續 : 請按1,結束 : 請按0 : ");
                if (Console.ReadLine() == "0") break;
            }
            break;
        case "5":
            Console.WriteLine("顯示所有資料,");
            Console.WriteLine("班級\t學號\t姓名\t性別\t報名項目");
            foreach (var item in data)
            {
                Console.WriteLine(string.Join("\t", item));
            }
            break;
    }
}

Last updated