感觉写得有点别扭....
万年历...写得不好见谅哈
calendar.cpp:
/**
* File calendar.cpp, 2011.09.15
* define class Calendar
* Copyright by Zhou Junjie, 2011~2012, SE, Digital Media, class2, 10389149
**/
#include "calendar.h"
#include "util.h"
#include "date.h"
#include "dateFormatException.h"
#include <string>
#include <sstream>
#include <iomanip>
#include <memory>
using namespace std;
Calendar* Calendar::calendar = NULL;
Calendar* Calendar::getInstance()
{
if (!calendar)
{
calendar = new Calendar();
return calendar;
}
else
{
return calendar;
}
}
Calendar::~Calendar()
{
if (!calendar)
{
delete calendar;
calendar = NULL;
}
}
string Calendar::getMonthCalendar(int year, int month)
{
int maxMonthDays = 0;
int firstDayWeek = 0;
int dayCount = 0;
try {
maxMonthDays = maxMonthDay(year, month);
firstDayWeek = dayWeek(year, month, 1);
} catch (runtime_error) {
throw;
}
ostringstream oss;
oss << " " <<year << "-" << month << endl;
oss << setw(4) << "日" << setw(4) << "一"
<< setw(4) << "二" << setw(4) << "三"
<< setw(4) << "四" << setw(4) << "五"
<< setw(4) << "六" << "\n";
// print the prefix blank
for (int i = 0; i < firstDayWeek; i++)
{
oss << setw(4) << "";
dayCount++;
}
for (int i = 1; i <= maxMonthDays; i++)
{
oss << setw(4) << i;
dayCount++;
if (dayCount % 7 == 0)
oss << "\n";
}
return oss.str();
}
string Calendar::getYearCalendar(int year)
{
ostringstream oss;
oss << " " <<year << "年日历" << endl << endl;
try
{
for (int month = 1; month <= 12; month++)
{
oss << this->getMonthCalendar(year, month) << endl << endl;