프로그램 세상/C#

소년포비 2009. 10. 22. 16:18

using System;
using System.Collections.Generic;
using System.Linq;

public class Weight
{
    public int BanNum { get; set; } // 반
    public int StuNum { get; set; } // 번호
    public int Wei { get; set; } // 몸무게
    public int BanHapWei { get; set; } // 반 합계
    public int BanAvgWei { get; set; } // 반 평균
    public int HapWei { get; set; } // 전제 합계
    public int AvgWei { get; set; } // 전체 평균
    public int Count { get; set; }
    public int BanCount { get; set; } // 반수
    public Weight() // 생성자
    {
        // Empty
    }
}

public class 체중관리
{
    public static void Main(string[] args)
    {
        Console.Title = "체중 관리 프로그램";
        //[1] Input
        List<Weight> lst = new List<Weight>(); // 입력데이터
        Weight we;
        string temp1; // 입력받은 반 저장
        string temp2; // 입력받은 번호 저장
        string temp3; // 입력받은 몸무게 저장
        string btn = "n";
        Console.WriteLine("=====반, 번호, 몸무게를 입력하세요 =====");
        do
        {
            we = new Weight();
            Console.Write("반 : _\b");
            temp1 = Console.ReadLine();
            if (Convert.ToInt32(temp1) >= 1 && Convert.ToInt32(temp1) <=9)
            {
                we.BanNum = Convert.ToInt32(temp1);
            }
            else
            {
                Console.WriteLine("반은 1반에서 9반 사이로 입력하세요.");
                return;
            }
            Console.Write("번호 : _\b");
            temp2 = Console.ReadLine();
            if (Convert.ToInt32(temp2) >= 1 && Convert.ToInt32(temp2) <= 10)
            {
                we.StuNum = Convert.ToInt32(temp2);
            }
            else
            {
                Console.WriteLine("학생번호는 1부터 10 사이로 입력하세요.");
                return;
            }
            Console.Write("몸무게 : ___\b\b\b");
            temp3 = Console.ReadLine();
            if (Convert.ToInt32(temp3) >= 40 && Convert.ToInt32(temp3) <=200)
            {
                we.Wei = Convert.ToInt32(temp3);
            }
            else
            {
                Console.WriteLine("몸무게는 40부터 200 사이로 입력하세요.");
            }

            lst.Add(we);
            Console.Write("입력(y), 출력(n) : ");
            btn = Console.ReadLine().ToLower(); // 소문자로
        } while (btn == "y" && lst.Count <= 9);
        Console.Clear();

        //[3] Output
        IEnumerable<IGrouping<int, Weight>> Query = from p in lst group p by p.BanNum;
        we.BanCount = Query.Count();
        foreach (IGrouping<int, Weight> g in Query)
        {
            Console.WriteLine("\r\n" + g.Key + "반\t번호\t몸무게" );
          

            foreach (Weight k in g)
            {
                Console.WriteLine("{0}\t {1}\t {2}",  k.BanNum, k.StuNum, k.Wei);
            }
            IEnumerable<int> q = from p in lst
                                 where p.BanNum == g.Key
                                 select p.Wei;
            we.BanHapWei = q.Sum();
            we.Count = q.Count();
            we.BanAvgWei = Convert.ToInt32(q.Average());


            we.HapWei += we.BanAvgWei;
            we.AvgWei = we.HapWei / we.BanCount;
            Console.WriteLine(g.Key + "반 평균 :" + we.BanAvgWei);
        }

        Console.WriteLine("전체평균 : " + we.AvgWei);
    }
}