写一个c++class简易日记薄,要求可以写日记,通过日期查找日记,并解释每一行代码意思
时间: 2024-03-03 09:51:20 浏览: 89
好的,以下是一个使用 C++ class 实现的简易日记薄程序,实现了写日记和查找日记的功能:
```
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 定义日记类
class Diary {
public:
// 构造函数
Diary(string date, string content) {
this->date = date;
this->content = content;
}
// 将日记写入文件
void writeToFile() {
ofstream file("diary.txt", ios::app);
file << date << endl << content << endl;
file.close();
}
// 输出日记内容
void print() {
cout << "Date: " << date << endl;
cout << "Content: " << content << endl;
}
// 获取日期
string getDate() {
return date;
}
private:
string date;
string content;
};
// 根据日期查找日记
void findDiaryByDate(vector<Diary>& diaries, string date) {
for (Diary diary : diaries) {
if (diary.getDate() == date) {
diary.print();
return;
}
}
cout << "No diary found for the date " << date << endl;
}
int main() {
vector<Diary> diaries;
// 从文件中读取所有日记
ifstream file("diary.txt");
string line;
while (getline(file, line)) {
string date = line;
getline(file, line);
string content = line;
diaries.push_back(Diary(date, content));
}
file.close();
// 打印所有日记
for (Diary diary : diaries) {
diary.print();
}
// 写入新的日记
string date, content;
cout << "Enter date (yyyy-mm-dd): ";
getline(cin, date);
cout << "Enter content: ";
getline(cin, content);
Diary diary(date, content);
diary.writeToFile();
diaries.push_back(diary);
// 根据日期查找日记
string searchDate;
cout << "Enter date to search (yyyy-mm-dd): ";
getline(cin, searchDate);
findDiaryByDate(diaries, searchDate);
return 0;
}
```
程序中的主要类和函数如下:
1. 类 Diary:表示一条日记,包括日期和内容两个成员变量,以及构造函数、写入文件函数、输出函数和获取日期函数等成员函数。
2. 函数 findDiaryByDate:根据输入的日期查找对应的日记,遍历日记数组,找到对应日期的日记则输出,否则输出未找到的提示信息。
3. 主函数 main:首先从文件中读取所有日记并输出,然后提示用户输入新的日记内容并写入文件,并将新的日记对象添加到数组中,最后提示用户输入要查找的日期并调用 findDiaryByDate 函数查找并输出对应的日记。
关于类 Diary 中的成员函数,构造函数用于初始化成员变量,写入文件函数使用 ofstream 类型的文件流进行操作,将日期和内容分别写入两行,输出函数用于输出日记的日期和内容,获取日期函数用于获取日期成员变量的值。
阅读全文