当前位置: 首页 > news >正文

开发书籍阅读进度管理程序,录入书籍名称,页数,记录每日阅读页数,自动计算剩余阅读时间,支持阅读提醒,帮用户养成阅读习惯,高效读完书籍。

1. 实际应用场景与痛点

场景

很多人在学习或自我提升时,会购买或借阅大量书籍,但往往因为缺乏系统管理,导致:

- 不知道自己读到了哪里

- 无法预估完成时间

- 容易中断阅读计划

- 没有提醒机制,容易忘记坚持

痛点

1. 进度不透明:没有直观的进度条或剩余页数统计。

2. 时间不可控:无法根据每日阅读量预测完成时间。

3. 缺乏提醒:容易因忙碌而中断阅读。

4. 数据分散:阅读记录可能记在纸上或不同 App 中,难以统一分析。

2. 核心逻辑讲解

1. 书籍信息录入

- 书名、总页数、每日目标页数(可选)

2. 每日阅读记录

- 输入当天阅读的页数,更新已读页数

3. 剩余页数 & 预计完成时间

- 剩余页数 = 总页数 - 已读页数

- 预计天数 = 剩余页数 / 每日目标页数

4. 阅读提醒

- 每天固定时间检查是否完成当日目标

5. 数据持久化

- 使用 JSON 文件存储书籍列表和阅读记录

6. 交互方式

- 命令行界面(CLI)实现增删改查

3. 项目结构

book_reading_tracker/

├── main.py # 主程序入口

├── book_manager.py # 书籍管理核心逻辑

├── reminder.py # 阅读提醒模块

├── data/ # 数据存储目录

│ └── books.json # 书籍数据

├── README.md # 项目说明

└── USAGE.md # 使用说明

4. 核心代码

"book_manager.py"

import json

import os

from datetime import datetime

DATA_FILE = "data/books.json"

class BookManager:

def __init__(self):

os.makedirs("data", exist_ok=True)

self.books = self.load_books()

def load_books(self):

if os.path.exists(DATA_FILE):

with open(DATA_FILE, "r", encoding="utf-8") as f:

return json.load(f)

return []

def save_books(self):

with open(DATA_FILE, "w", encoding="utf-8") as f:

json.dump(self.books, f, ensure_ascii=False, indent=4)

def add_book(self, title, total_pages, daily_goal=10):

book = {

"title": title,

"total_pages": total_pages,

"read_pages": 0,

"daily_goal": daily_goal,

"history": [] # {date: YYYY-MM-DD, pages: X}

}

self.books.append(book)

self.save_books()

def record_reading(self, index, pages):

if 0 <= index < len(self.books):

book = self.books[index]

book["read_pages"] += pages

today = datetime.now().strftime("%Y-%m-%d")

book["history"].append({"date": today, "pages": pages})

self.save_books()

return True

return False

def get_progress(self, index):

if 0 <= index < len(self.books):

book = self.books[index]

remaining = book["total_pages"] - book["read_pages"]

days_left = remaining / book["daily_goal"] if book["daily_goal"] > 0 else float('inf')

return {

"title": book["title"],

"read": book["read_pages"],

"total": book["total_pages"],

"remaining": remaining,

"days_left": round(days_left, 1)

}

return None

def list_books(self):

return [b["title"] for b in self.books]

"reminder.py"

import schedule

import time

from book_manager import BookManager

def check_reminder():

bm = BookManager()

for i, book in enumerate(bm.books):

progress = bm.get_progress(i)

if progress and progress["remaining"] > 0:

print(f"📖 提醒: 《{progress['title']}》还剩 {progress['remaining']} 页,预计 {progress['days_left']} 天完成。")

def start_reminder(hour=20, minute=0):

schedule.every().day.at(f"{hour:02d}:{minute:02d}").do(check_reminder)

print("⏰ 阅读提醒已启动...")

while True:

schedule.run_pending()

time.sleep(60)

"main.py"

from book_manager import BookManager

from reminder import start_reminder

import threading

def menu():

bm = BookManager()

while True:

print("\n=== 书籍阅读进度管理器 ===")

print("1. 添加书籍")

print("2. 记录今日阅读")

print("3. 查看进度")

print("4. 列出所有书籍")

print("5. 启动阅读提醒")

print("0. 退出")

choice = input("请选择操作: ").strip()

if choice == "1":

title = input("书名: ")

total = int(input("总页数: "))

goal = int(input("每日目标页数 (默认10): ") or "10")

bm.add_book(title, total, goal)

print("✅ 添加成功")

elif choice == "2":

titles = bm.list_books()

for idx, t in enumerate(titles):

print(f"{idx}. {t}")

idx = int(input("选择书籍编号: "))

pages = int(input("今日阅读页数: "))

if bm.record_reading(idx, pages):

print("✅ 记录成功")

else:

print("❌ 编号错误")

elif choice == "3":

titles = bm.list_books()

for idx, t in enumerate(titles):

print(f"{idx}. {t}")

idx = int(input("选择书籍编号: "))

prog = bm.get_progress(idx)

if prog:

print(f"\n《{prog['title']}》")

print(f"已读: {prog['read']}/{prog['total']}")

print(f"剩余: {prog['remaining']} 页")

print(f"预计还需: {prog['days_left']} 天")

else:

print("❌ 编号错误")

elif choice == "4":

titles = bm.list_books()

for t in titles:

print(f"- {t}")

elif choice == "5":

hour = int(input("提醒小时 (0-23, 默认20): ") or "20")

minute = int(input("提醒分钟 (0-59, 默认0): ") or "0")

t = threading.Thread(target=start_reminder, args=(hour, minute), daemon=True)

t.start()

print("⏰ 提醒线程已启动,主程序可继续操作。")

elif choice == "0":

break

else:

print("无效选择")

if __name__ == "__main__":

menu()

5. README.md

# 📚 书籍阅读进度管理器

一个用 Python 编写的 CLI 工具,帮助你记录阅读进度、预测完成时间,并通过提醒养成阅读习惯。

## 功能

- 添加书籍(书名、总页数、每日目标)

- 记录每日阅读页数

- 自动计算剩余页数和预计完成时间

- 阅读提醒(定时检查)

- 数据持久化(JSON)

## 安装

bash

git clone "https://github.com/yourname/book_reading_tracker.git" (https://github.com/yourname/book_reading_tracker.git)

cd book_reading_tracker

pip install schedule

## 运行

bash

python main.py

6. USAGE.md

# 使用说明

1. 首次运行选择 `1` 添加书籍。

2. 每天阅读后选择 `2` 记录页数。

3. 选择 `3` 查看进度。

4. 选择 `5` 设置每日提醒时间。

5. 数据保存在 `data/books.json`,可手动备份。

7. 核心知识点卡片

知识点 说明

JSON 数据持久化 使用

"json.dump" 和

"json.load" 实现简单数据存储

模块化设计 将功能拆分为

"book_manager" 和

"reminder" 模块

命令行交互 通过

"input" 和

"print" 实现 CLI

定时任务 使用

"schedule" 库实现每日提醒

多线程 用

"threading" 让提醒在后台运行

进度计算 剩余页数 / 每日目标 = 预计天数

8. 总结

这个程序解决了阅读进度不透明、时间不可控、缺乏提醒三大痛点,通过简单的 CLI 和 JSON 存储,让用户轻松管理多本书的阅读计划。

它适合作为个人效率工具,也可以扩展为 Web 或移动端应用。

核心思想是数据驱动 + 自动化提醒,帮助用户养成持续阅读的习惯。

如果你需要,还可以把这个项目打包成可执行文件(

".exe")或者做成带图形界面的版本(Tkinter/PyQt)。

利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!

http://www.jsqmd.com/news/332052/

相关文章:

  • 【通信】AM和FM通信系统中的干扰分析与缓解【含Matlab源码 15039期】
  • 2026年烘干窑/氧化锌窑/锂电处理窑密封推荐:河北硕晟环保科技多场景解决方案
  • 扶贫实习支教管理系统的设计与实现 开题报告
  • 2026风电功率预测新突破:从数据到特征,如何化解“同风不同功”行业痛点
  • Linux多线程网络服务器开发实战:参数传递与内存安全
  • 开题报告 基于JAVA的超市商品管理与配送系统
  • 具有非常高数值孔径的反射显微镜系统
  • 深入理解TCP状态转换:从三次握手到四次挥手的完整实战
  • 用于革命性成像的高数值孔径显微镜
  • AI编程的演进与核心:从大模型到智能体
  • 2026年睡眠健康管理服务推荐:秒睡学院提供睡眠疗愈课程、训练营及定制化睡眠中心方案
  • 开题报告--高校实验教学质量评估系统的设计与实现
  • 2026年除湿机厂家推荐:浙江科橙电气有限公司,移动/商用/工业/家用除湿机全场景覆盖
  • 药房管理系统设计与开发 开题报告
  • 【5G通信】5G毫米波UDN中带有位置感知波束成形的链路级模型干涉评估【含Matlab源码 15044期】
  • 采幽园农家乐信息系统分析与设计 开题报告
  • 2026年石墨制品厂家推荐:海门市万隆电碳制品厂,高纯/高密度/耐高温石墨制品全系供应
  • 新闻发布与评论管理系统的设计与实现 开题报告
  • 2026年PSA制氧机/制氮机/吸附式干燥机推荐:杭州纽卓科技集团气体分离设备全解析
  • 2026年注册公司服务推荐:广东海豚企业管理有限公司,一站式工商财税服务优选
  • 舞蹈工作室会员管理系统设计与实现 开题报告
  • 不可思议!AI教材编写工具,低查重快速生成专业教材!
  • 2026年性能稳定的新型墙体建材厂家最新实力排行
  • 2026年正规的结婚羽绒被/高档羽绒被用户好评厂家排行
  • 2026年质量好的钢丝磷化液/磷化液品牌厂家排行榜
  • 2026年口碑好的扫地机/扫地机产品行业内知名厂家排行榜
  • 2026年比较好的铁路施工安全防护系统/铁路施工远程管理系统技术实力榜
  • 2026年评价高的收银机AI称/收银机电子屏销售厂家
  • 低查重AI写教材攻略,借助AI教材生成工具实现高效创作!
  • 在AI技术能够快速实现想法的时代,挖掘新需求成了重中之重——某知名速读字体框架需求探索