期末大作业开发日志-1
点击即可查看大作业项目要求
项目进展
目前项目已完成,项目地址:Github项目地址
打包文件下载链接:
Windows x86_64
Linux x86_64
Linux aarch64
开发过程
项目构思
观察项目要求:
要求
- 记账本模块
- 记录每日消费:日期(YYYY-MM-DD)、金额、类别
- 按月统计消费:输入月份(YYYY-MM)显示该月所有消费记录及总金额
- 数据保存:将记录保存到finance.txt文件
- 数据显示:表格化输出消费记录(对齐列宽)
- 课程提醒模块
- 添加提醒:包含时间(YYYY-MM-DD HH:MM)、事件内容、优先级(1-3)
- 按日期查询:输入指定日期(YYYY-MM-DD)显示当天所有提醒事项
- 自动排序:按时间顺序自动排序提醒事项
- 数据保存:将记录保存到reminder.txt文件
- 密码管理模块
- 存储密码:记录网站名称、用户名、密码(加密存储)
- 密码查询:支持网站名称大小写不敏感搜索,显示密码明文
- 数据保存:将记录保存到password.txt文件
- 文件操作
- 添加记录时自动将记录存在相应的文件当中(如记账信息存到finance.txt中,课程提醒存到reminder.txt中,密码存在password.txt中)
- 当启动系统时,自动加载所有文件中的记录 PS: 我传了一个我写的系统和测试文件,不一定是最完美的,仅供大家理解以上功能。
除了原有的要求之外,决定添加以下新功能
记账本
- 对消费记录按日期排序
课程提醒
- 加入回收站,过时的事项可以在加入回收站并在回收站中查看
密码管理器
- 加入密码加密凭证,无法通过程序硬编码破解
- 校验用户凭证时,使用
SHA256算法加密凭证,增加撞库难度 - 网站搜索时,支持模糊搜索
文件操作
- 关闭时再次存储文件
- 自动初始化文件
- 添加日志系统
图形化与命令行功能基本一致
考虑到要求,决定先写一个虚基类notebasic,先声明三种不同模块共有的成员和功能
1 | class notebasic { |
然后是三个模块的具体实现,几乎没什么不同,可以以记账本的实现作为蓝本,稍作修改即可得到时间提醒和密码管理器
相较于记账本,提醒多了回收站,所以多了一个向量用于存储过时的记录,并修改display函数和搜索函数,使得当搜索项字符串前添加-前缀时,是在旧记录里搜索
密码管理器则改动更少,只在显示时加入解码器,添加记录时加入编码器,并加入用户验证界面
开发过程中遇到的问题
- 命令行交互时,由于Windows控制台默认使用GBK编码,而程序使用UTF-8编码,导致输出出现乱码,解决办法:针对windows系统,利用
WIN宏设置编码为UTF-8 - 交互上,由于要做多系统兼容,发现不同系统的清屏和隐私输入使用的命令不同,需要利用宏区分系统
最终的效果
总界面

记账本

日程提醒

密码管理器的用户凭证校验

密码管理器

密码管理器的加密存储

下一章,图形化实现
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Azusa_Ke's Blog!