加密日记本系统

一个支持加密的个人日记管理系统,使用C++开发。

功能特点

核心功能

  • ✅ 日记的创建与保存
  • ✅ 日记内容加密存储
  • ✅ 密码保护
  • ✅ 加密日记的读取与显示
  • ✅ HTML导出功能(可通过浏览器打印为PDF)

技术特性

  • 基于异或算法的简单加密实现
  • 面向对象的模块化设计
  • 文件I/O操作
  • 异常处理机制

使用方法

写日记

  1. 运行程序,选择 ‘y’ 写日记
  2. 输入日记文件名(如:mydiary.txt)
  3. 设置加密密码
  4. 依次输入:
    • 日记标题
    • 日期
    • 内容
  5. 系统自动加密保存

读日记

  1. 运行程序,选择 ‘n’ 然后 ‘y’ 读日记
  2. 输入要读取的日记文件名
  3. 输入对应的密码
  4. 系统自动解密并显示内容

项目结构

diary_app/
├── include/
│ ├── DiaryEntry.h # 日记条目基类
│ ├── EncryptedDiaryEntry.h # 加密日记类
│ └── HTMLExporter.h # HTML导出功能
├── src/
│ ├── DiaryEntry.cpp
│ ├── EncryptedDiaryEntry.cpp
│ ├── HTMLExporter.cpp
│ └── main.cpp
├── CMakeLists.txt
└── README.md

构建方法

mkdir build
cd build
cmake ..
cmake –build .

注意事项

  1. 密码安全

    • 请妥善保管您的密码
    • 密码丢失将无法恢复日记内容
    • 当前使用简单异或加密,实际应用建议使用更安全的加密算法
  2. 文件管理

    • 日记文件默认保存在程序运行目录
    • 建议定期备份重要的日记文件

扩展方向

  • 支持更安全的加密算法(如AES)
  • 添加日记搜索功能
  • 实现日记分类管理
  • 添加图片附件支持
  • 集成云存储功能
  • 添加用户界面
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "../include/EncryptedDiaryEntry.h"
//#include "../include/HTMLExporter.h"
#include <iostream>
#include <vector>
#include <stdexcept>

int main() {
try {
std::cout << "欢迎使用日记加密系统!\n";
std::cout << "要写日记吗?(y/n)";
char choice;
std::cin >> choice;
if (choice == 'y') {
std::cout << "请输入日记文件名:";
std::string filename;
std::getline(std::cin, filename);
std::cout << "请输入密码:";
std::string password;
std::getline(std::cin, password);

// 创建加密日记条目
std::cout << "请输入日记标题:";
std::string title;
std::getline(std::cin, title);
std::cout << "请输入日记日期:";
std::string date;
std::getline(std::cin, date);
std::cout << "请输入日记内容:";
std::string content;
std::getline(std::cin, content);
EncryptedDiaryEntry entry1(title, content, date,
filename, password);

// 保存加密日记
entry1.save();
std::cout << "已保存加密日记。\n\n";

// 显示日记内容(解密后)
std::cout << "解密日记内容:\n";
entry1.display();
}
else {
std::cout << "要看日记吗?(y/n)";
char choice;
std::cin >> choice;
if (choice == 'y') {
std::cout << "请输入日记文件名:";
std::string filename;
std::getline(std::cin, filename);
std::cout << "请输入密码:";
std::string password;
std::getline(std::cin, password);
EncryptedDiaryEntry entry1(filename, password);
entry1.display();
}
}

// 导出到HTML
/* std::cout << "\n导出日记到HTML...\n";
HTMLExporter::exportToHTML(entry1, "diary_export.html");
std::cout << "HTML导出完成!请使用浏览器打开diary_export.html查看,可以通过浏览器的打印功能将其保存为PDF。\n";*/

} catch (const std::exception& ex) {
std::cerr << "错误: " << ex.what() << std::endl;
return 1;
}
return 0;
}