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;
}
}
}
CodeFile1.cs內的IsValid()可以配合DaysOfMonth()去判斷天數是否在某個月份的範圍內
回覆刪除