2015年3月25日 星期三

[2015][Homework]Team06 - Hw03

main program
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Homework3
{
    class Program
    {
        static void Main(string[] args)
        {
            MyDateTime date = new MyDateTime();
            while(true)
            {
                Console.WriteLine("Input Year");
                date.Year = int.Parse(Console.ReadLine());
                Console.WriteLine("Input Month");
                date.Month = int.Parse(Console.ReadLine());
                Console.WriteLine("Input Day");
                date.Day = int.Parse(Console.ReadLine());
                if(date.isLegal()==false)
                {
                    Console.WriteLine("{0},{1},{2} is not a legal date!", date.Year, date.Month, date.Day);
                    Console.WriteLine("Input Again!");
                    Console.ReadLine();
                    Console.Clear();
                    continue;
                }
                Console.WriteLine("************************************************************");
                switch(date.isLeap())
                {
                    case true:
                        Console.WriteLine("Year {0} is a leap year!",date.Year);
                        break;
                    case false:
                        Console.WriteLine("Year {0} is not a leap year!",date.Year);
                        break;
                }
                Console.WriteLine("Days of year {0} = {1}",date.Year, date.DaysOfYear());
                Console.WriteLine("Days of {0}/{1} = {2}", date.Year, date.Month,date.DaysOfMonth());
                Console.WriteLine("{0}/{1}/{2} is {3}", date.Year, date.Month, date.Day, date.WeekDay());
                Console.WriteLine("************************************************************");
                Console.WriteLine("Again? Y/N");
                char select = Convert.ToChar(Console.ReadLine());
                if(select!=('y') && select!=('Y'))
                {
                    break;
                }
                Console.Clear();
            }
            Console.WriteLine("Program end!");
            Console.ReadLine();
        }
    }
}
MyDateTime
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Homework3
{
    class MyDateTime
    {
        //field
        public int Year;
        public int Month;
        public int Day;
        //Method
        public bool isLeap()
        {
            if (Year % 400 == 0 || (Year % 4 == 0 && Year % 100 != 0))
            {
               return true;
            }
            else
            {
                return false;
            }
        }
        public void Print()
        {
            Console.WriteLine("{0}/{1}/{2}", Year, Month, Day);
        }
        public int DaysOfYear()
        {
            if (isLeap() == true)
            {
                return 366;
            }
            else
            {
                return 365;
            }
        }
        public int DaysOfMonth()
        {
            switch(Month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    return 31;
                case 4:
                case 6:
                case 9:
                case 11:
                    return 30;
                case 2:
                    if(isLeap()==true)
                    {
                        return 29;
                    }
                    else
                    {
                        return 28;
                    }
                default:
                    return 0;
            }
        }
        public bool isLegal()
        {
            switch (Month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    if (Day > 0 && Day <= 31)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                case 4:
                case 6:
                case 9:
                case 11:
                    if (Day > 0 && Day <= 30)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                case 2:
                    if (isLeap() == true)
                    {
                        if (Day > 0 && Day <= 29)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                    else
                    {
                        if (Day > 0 && Day <= 28)
                        {
                            return true;
                        }
                        else
                        {
                            return false;
                        }
                    }
                default:
                    return false;
            }
        }
        public string WeekDay()
        {
            if (Month == 1 || Month == 2)                         //利用基姆拉爾森公式,1.2月當作去年的13.14月
            {
                Year -= 1;
                Month += 12;
            }
            int temp = (Year + Year / 4 + Year / 400 - Year / 100 + 2 * Month + 3 * (Month + 1) / 5 + Day + 1) % 7;
            switch (temp)
            {
                case 0:
                    return "Sunday";
                case 1:
                    return "Monday";
                case 2:
                    return "Tuesday";
                case 3:
                    return "Wednesday";
                case 4:
                    return "Thursday";
                case 5:
                    return "Friday";
                case 6:
                    return "Saturday";
                default:
                    return "false";
            }
        }
    }
}

沒有留言:

張貼留言