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.Threading.Tasks;
using System.Windows.Forms;
namespace midterm2
{
public partial class Form1 : Form
{
MyDateTime date = new MyDateTime();
public Form1()
{
InitializeComponent();
}
private void btnEnter_Click(object sender, EventArgs e)
{
date._year = Convert.ToInt16(txtYear.Text);
date._month = cboMonth.SelectedIndex + 1;
date._day = cboDay.SelectedIndex + 1;
if (rBtnIsLeap.Checked)
{
if (date.IsLeap()==true)
{
txtMessage.Text = date._year.ToString() + "年是閏年";
}
else
{
txtMessage.Text = date._year.ToString() + "年是平年";
}
}
else if (rBtnIsValid.Checked)
{
if (date.IsValid()==true)
{
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "合法";
}
else
{
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "不合法";
}
}
else if (rBtnWeekDay.Checked)
{
switch (date.WeekDay())
{
case 0:
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "是星期天";
return;
case 1:
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "是星期一";
return;
case 2:
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "是星期二";
return;
case 3:
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "是星期三";
return;
case 4:
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "是星期四";
return;
case 5:
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "是星期五";
return;
case 6:
txtMessage.Text = date._year.ToString() + "/" + date._month.ToString() + "/" + date._day.ToString() + "是星期六";
return;
}
}
else if (rBtnCalendar.Checked)
{
date._day = 1;
int start = date.WeekDay();
txtMessage.AppendText("\tSun\tMon\tTue\tWed\tThu\tFri\tSat\n");
for (int i = 0; i < start; i++)
{
txtMessage.AppendText("\t");
}
for (int i=1;i<=date.DaysOfMonth();i++)
{
txtMessage.AppendText("\t" + i.ToString());
if ((start + i) % 7 == 0)
{
txtMessage.AppendText("\n");
}
}
}
else
{
txtMessage.Text="請選擇功能";
}
}
private void btnClear_Click(object sender, EventArgs e)
{
txtMessage.Clear();
}
}
}
MyDateTime.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace midterm2
{
class MyDateTime
{
public int _year;
public int _month;
public int _day;
public bool IsLeap()
{
if (_year%4==0 && _year%100!=0 || _year%400==0)
{
return true;
}
else
{
return false;
}
}
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 28;
}
else
{
return 29;
}
default:
return 0;
}
}
public bool IsValid()
{
if (_day <= DaysOfMonth())
{
return true;
}
else
{
return false;
}
}
public int WeekDay()
{
int tempYear = _year;
int tempMonth = _month;
int centry;
int yearEnd;
int weekDay;
tempMonth = ((_month + 9) % 12) + 1;
if (_month == 1 || _month == 2)
{
tempYear -= 1;
}
centry=tempYear/100;
yearEnd = tempYear % 100;
weekDay = (_day + Convert.ToInt16(Math.Floor(2.6 * tempMonth - 0.2))+yearEnd+(yearEnd/4)+(centry/4)-2*centry)%7;
if (weekDay<0)
{
weekDay += 7;
}
return weekDay;
}
}
}
小細節:私有欄位使用_camelCase,在MyDateTime.cs裡面的"_year, _month, _day"最好也設為private,並配上attribute提供外界存取。(另外,該class可以直接存取自己的private fields,可以不必透過屬性)
回覆刪除