カレンダー表示(int 年, int 月)//2 { Console.WriteLine("{0}月のカレンダー", 月); Console.WriteLine("日 月 火 水 木 金 土"); // 1月1日がどこから(火曜日)始まることを意味してる // その月が何曜日から始まるのかは、 // CalendarData.月情報テーブル[ 月 - 1 ].開始曜日に入っている 曜日 開始曜日 = カレンダー情報.月情報テーブル[月 - 1].開始曜日; 曜日読み飛ばし(開始曜日); // 曜日の位置まで空白を詰める // 1日から始めて、月末までの日を表示する // 月末はCalendarData.月情報テーブル[ 月 - 1 ].月末に入っている 本日の情報 本日 = new 本日の情報(年, 月, 1, 開始曜日); int 月末 = カレンダー情報.月情報テーブル[月 - 1].月末; for (int ループ数 = 0; ループ数 < 月末; ループ数++) { // [書式指定文字列] // 数字の出力幅は2桁分取り、スペース1つを出力する Console.Write("{0:D2} ", 本日.日); if (本日.曜日 == 曜日.土) { Console.WriteLine(""); // 改行を入れる } 一日進める(本日, 月末); } Console.WriteLine("\n"); }
public 本日の情報(int 年, int 月, int 日, 曜日 曜日) { this.年 = 年; this.月 = 月; this.日 = 日; this.曜日 = 曜日; }
曜日読み飛ばし(曜日 開始曜日) { uint スキップ数 = 曜日からスキップ数を算出(開始曜日); for (uint ステップ = 0; ステップ < スキップ数; ステップ++) { Console.Write(" "); } }
} // search_event_list() static uint 曜日からスキップ数を算出(曜日 開始曜日) { switch (開始曜日) { case 曜日.日: return(0); case 曜日.月: return(1); case 曜日.火: return(2); case 曜日.水: return(3); case 曜日.木: return(4); case 曜日.金: return(5); case 曜日.土: return(6); default: System.Diagnostics.Debug.Assert(false); return(0xdeadbeaf); } }
static 曜日 次の曜日に進める(曜日 現在の曜日) { switch (現在の曜日) { case 曜日.日: return(曜日.月); case 曜日.月: return(曜日.火); case 曜日.火: return(曜日.水); case 曜日.水: return(曜日.木); case 曜日.木: return(曜日.金); case 曜日.金: return(曜日.土); case 曜日.土: return(曜日.日); default: Debug.Assert(false); return(曜日.週末); } } // 次の曜日に進める()
イベント表示(int 年, int 月) { Console.WriteLine("{0:D2}月のイベント日\n", 月); Console.WriteLine("---------------------------"); // 1月1日がどこから(火曜日)始まることを意味してる // その月が何曜日から始まるのかは、 // CalendarData.月情報テーブル[ 月 - 1 ].開始曜日メンバに入っている 曜日 開始曜日 = カレンダー情報.月情報テーブル[月 - 1].開始曜日; 本日の情報 本日 = new 本日の情報(年, 月, 1, 開始曜日); int 月末 = カレンダー情報.月情報テーブル[月 - 1].月末; while (本日.日 < 月末) { var イベント = イベントリスト検索(本日); if (イベント != null) { Console.WriteLine("{0:D2}/{1:D2}は{2}です", 本日.月, 本日.日, イベント.イベント名); } 一日進める(本日, 月末); } Console.WriteLine(); }
public 曜日 開始曜日; // 開始曜日 public 月情報(int 月末, 曜日 開始曜日) { this.月末 = 月末; this.開始曜日 = 開始曜日; }