C++【OO基础】1.1用C++实现日历功能
时间: 2024-05-12 15:12:48 浏览: 249
以下是一个简单的 C++ 程序,用于实现日历功能。程序可以根据用户输入的年份和月份,输出该月份的日历。
```cpp
#include<iostream>
using namespace std;
class Calendar {
private:
int year;
int month;
int day;
int daysInMonth();
int dayOfWeek(int y, int m, int d);
public:
Calendar(int y, int m, int d) {
year = y;
month = m;
day = d;
}
void printCalendar();
};
int Calendar::daysInMonth() {
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 29;
} else {
return 28;
}
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else {
return 31;
}
}
int Calendar::dayOfWeek(int y, int m, int d) {
if (m == 1 || m == 2) {
m += 12;
y--;
}
int c = y / 100;
y = y % 100;
int w = (y + y / 4 + c / 4 - 2 * c + 13 * (m + 1) / 5 + d - 1) % 7;
return (w + 7) % 7;
}
void Calendar::printCalendar() {
// 打印标题
cout << "==========================" << endl;
cout << " " << year << "年" << month << "月" << endl;
cout << "==========================" << endl;
cout << " 日 一 二 三 四 五 六" << endl;
// 计算该月份的天数和第一天是星期几
int days = daysInMonth();
int firstDayOfWeek = dayOfWeek(year, month, 1);
// 打印日历表格
for (int i = 0; i < firstDayOfWeek; i++) {
cout << " ";
}
for (int i = 1; i <= days; i++) {
printf("%3d", i);
if ((firstDayOfWeek + i - 1) % 7 == 6) {
cout << endl;
}
}
if ((firstDayOfWeek + days - 1) % 7 != 6) {
cout << endl;
}
}
int main() {
int year, month, day;
cout << "请输入年份:";
cin >> year;
cout << "请输入月份:";
cin >> month;
day = 1; // 默认从第一天开始
Calendar calendar(year, month, day);
calendar.printCalendar();
return 0;
}
```
运行程序后,用户需要输入年份和月份,程序会输出该月份的日历。例如,输入 2022 年 1 月,程序会输出下面的日历:
```
==========================
2022年1月
==========================
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
```
该程序使用了一个 `Calendar` 类来实现日历功能。在这个类中,有两个私有函数 `daysInMonth` 和 `dayOfWeek`,分别用于计算指定月份的天数和该月份第一天是星期几。`printCalendar` 函数用于打印日历表格,首先打印标题,然后计算该月份的天数和第一天是星期几,最后打印日历表格。
这个程序只是一个简单的实现,可以根据需要进行修改和优化。
阅读全文