2015年4月23日 星期四

[2015][Quiz]MidExam_40073049H

Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

        private void btnClear_Click(object sender, EventArgs e)
        {
            txtDisplay.Clear();
        }

        private void btnWork_Click(object sender, EventArgs e)
        {
            MyDateTime date = new MyDateTime(Convert.ToInt16(txtYear.Text), Convert.ToInt16(cboxMonth.Text), Convert.ToInt16(cboxDay.Text));
            //date.Year = Convert.ToInt16(txtYear.Text);
            //date.Month = Convert.ToInt16(cboxMonth.Text);
            //date.Day = Convert.ToInt16(cboxDay.Text);
            if (rbtnIsLeap.Checked)
            {
                if (date.IsLeap())
                {
                    txtDisplay.Text = date.Year.ToString() + "年是閏年";
                    return;
                }
                txtDisplay.Text = date.Year.ToString() + "年是平年";
            }
            else if (rbtnIsValid.Checked)
            {
                if (date.IsValid())
                {
                    txtDisplay.Text = date.Print() + "合法";
                    return;
                }
                txtDisplay.Text = date.Print() + "不合法";
            }
            else if (rbtnWeekDay.Checked)
            {
                txtDisplay.Text = date.Print();
                txtDisplay.Text += date.Weekday();
            }
            else if (rbtnCalender.Checked)
            {
                txtDisplay.Text = "Sun\tMon\tTue\tWed\tThr\tFri\tSat\n";
                date.Day = 1;
                for (int i = 1; i < date.DaysOfMonth() + date.WeekdayNum(); i++)
                {
                    txtDisplay.Text += (i - date.WeekdayNum()).ToString() + "\t";
                    if (i % 7 == 0)
                    {
                        txtDisplay.Text += "\n\t";
                    }
                }
            }
        }
    }
}
CodeFile1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace MidExam_2
{
    class MyDateTime
    {
        //field
        private static int _year;
        private static int _month;
        private static int _day;

        public bool IsLeap()
        {
            if ((Year % 4 == 0 && Year % 100 != 0) || Year % 400 == 0)
            {
                return true;
            }
            return false;
        }
        public int DaysOfMonth()
        {
            switch (Month)
            {
                case 02:
                    if (IsLeap())
                    {
                        return 29;
                    }
                    else
                    {
                        return 28;
                    }
                case 01:
                case 03:
                case 05:
                case 07:
                case 08:
                case 10:
                case 12:
                    return 31;
                case 04:
                case 06:
                case 09:
                case 11:
                    return 30;
                default:
                    return 0;
            }
        }
        public bool IsValid()
        {
            switch (Month)
            {
                case 02:
                    if (IsLeap())
                    {
                        if (Day > 29)
                        {
                            return false;
                        }
                        return true;
                    }
                    if (Day > 28)
                    {
                        return false;
                    }
                    return true;
                case 04:
                case 06:
                case 09:
                case 11:
                    if (Day > 30)
                    {
                        return false;
                    }
                    return true;
                case 01:
                case 03:
                case 05:
                case 07:
                case 08:
                case 10:
                case 12:
                    return true;
                default:
                    return false;
            }
        }
        public string Weekday()
        {
            int Y = Year;
            int m = ((Month+9)%12)+1;
            int w;
            if (m == 11 || m == 12)
            {
                Y--;
            }
            w = (Day + Convert.ToInt16(Math.Floor(2.6 * Convert.ToDouble(m) - 0.2)) + Y % 100 + (Y % 100) / 4 + Y / 400 - 2 * (Y / 100)) % 7;
            switch (w)
            {
                case 0:
                    return "是星期日";
                case 1:
                    return "是星期一";
                case 2:
                    return "是星期二";
                case 3:
                    return "是星期三";
                case 4:
                    return "是星期四";
                case 5:
                    return "是星期五";
                case 6:
                    return "是星期六";
                default:
                    return "Error!";
            }
        }
        public int WeekdayNum()
        {
            int Y = Year;
            int m = ((Month + 9) % 12) + 1;
            int w;
            if (m == 11 || m == 12)
            {
                Y--;
            }
            w = (Day + Convert.ToInt16(Math.Floor(2.6 * Convert.ToDouble(m) - 0.2)) + Y % 100 + (Y % 100) / 4 + Y / 400 - 2 * (Y / 100)) % 7;
            return w;
        }
        public string Print()
        {
            return Year.ToString() + '/' + Month.ToString() + '/' + Day.ToString();
        }
        //attribute
        public int Year
        {
            get { return _year; }
            set
            {
                _year = value;
            }
        }
        public int Month
        {
            get { return _month; }
            set
            {
                _month = value;
            }
        }
        public int Day
        {
            get { return _day; }
            set
            {
                _day = value;
            }
        }
        //建構式
        public MyDateTime(int year, int month, int day)
        {
            Year = year;
            Month = month;
            Day = day;
        }
    }
}

1 則留言:

  1. CodeFile1.cs內的IsValid()可以配合DaysOfMonth()去判斷天數是否在某個月份的範圍內

    回覆刪除