项目37:简易个人健身记录器 — 《跟着小王学Python·新手》
《跟着小王学Python》 是一套精心设计的Python学习教程,适合各个层次的学习者。本教程从基础语法入手,逐步深入到高级应用,以实例驱动的方式,帮助学习者逐步掌握Python的核心概念。通过开发游戏、构建Web应用、编写网络爬虫、制作桌面软件等多样化项目,学习者可以深入理解并实践Python知识。每周更新1至2篇内容,旨在助力学习者成长为全栈工程师。
全栈实战项目访问:http://javapub.net.cn/
作为课程作业或者毕设参考也是不错的选择
文章目录
- 项目37:简易个人健身记录器 --- 《跟着小王学Python·新手》
- 目标
- 功能
- 设计
- 数据结构设计
- 界面设计
- 流程设计
- 实现步骤
- 代码实现
- 测试
- 注意事项
- 小结
目标
本项目旨在为健身爱好者提供一个简易的个人健身记录器,帮助他们记录每次锻炼的详细数据,包括锻炼日期、锻炼时长、锻炼类型等。通过这个项目,新手可以学习到Python基础语法、文件操作以及简单的数据处理。
功能
- 记录功能:用户可以输入锻炼的日期、时长和类型,程序将这些信息保存到文件中。
- 查看功能:用户可以查看所有记录的锻炼数据。
- 修改功能:用户可以修改已记录的锻炼数据。
- 删除功能:用户可以删除不再需要的锻炼记录。
设计
数据结构设计
我们使用一个列表来存储所有的锻炼记录,每个记录是一个字典,包含以下键值对:
date
:锻炼日期duration
:锻炼时长(分钟)type
:锻炼类型(如跑步、游泳等)
界面设计
程序将通过命令行界面与用户交互,用户可以通过输入指令来执行不同的操作。
流程设计
- 初始化:程序启动时,检查是否存在记录文件,如果不存在则创建一个空文件。
- 主菜单:显示操作选项,包括记录、查看、修改和删除锻炼数据。
- 执行操作:根据用户选择执行相应的功能。
- 保存数据:每次操作后,更新记录文件以保存最新的数据。
实现步骤
- 创建记录文件:如果文件不存在,则创建一个空文件。
- 定义记录数据结构:使用列表和字典来组织数据。
- 实现主菜单:提供用户操作的选项。
- 实现记录功能:允许用户输入锻炼信息并保存。
- 实现查看功能:显示所有锻炼记录。
- 实现修改功能:允许用户修改特定记录。
- 实现删除功能:允许用户删除特定记录。
- 保存和读取文件:在每次操作后更新文件。
代码实现
import json
# 文件名
FILE_NAME = "fitness_records.json"
# 初始化记录文件
def init_file():
try:
with open(FILE_NAME, "r") as file:
records = json.load(file)
except (FileNotFoundError, json.JSONDecodeError):
records = []
return records
# 保存记录到文件
def save_records(records):
with open(FILE_NAME, "w") as file:
json.dump(records, file, indent=4, ensure_ascii=False)
# 添加记录
def add_record(records):
record = {
"date": input("请输入锻炼日期(如2023-12-25):"),
"duration": int(input("请输入锻炼时长(分钟):")),
"type": input("请输入锻炼类型(如跑步、游泳):")
}
records.append(record)
save_records(records)
print("记录添加成功!")
# 显示所有记录
def show_records(records):
if not records:
print("还没有记录。")
else:
for record in records:
print(f"日期:{record['date']}, 时长:{record['duration']}分钟, 类型:{record['type']}")
# 修改记录
def modify_record(records):
index = int(input("请输入要修改的记录编号:")) - 1
if 0 <= index < len(records):
record = records[index]
record["date"] = input("新的日期(如2023-12-25):")
record["duration"] = int(input("新的锻炼时长(分钟):"))
record["type"] = input("新的锻炼类型(如跑步、游泳):")
save_records(records)
print("记录修改成功!")
else:
print("编号错误!")
# 删除记录
def delete_record(records):
index = int(input("请输入要删除的记录编号:")) - 1
if 0 <= index < len(records):
del records[index]
save_records(records)
print("记录删除成功!")
else:
print("编号错误!")
# 主程序
def main():
records = init_file()
while True:
print("\n1. 添加记录\n2. 显示所有记录\n3. 修改记录\n4. 删除记录\n5. 退出")
choice = input("请选择操作:")
if choice == "1":
add_record(records)
elif choice == "2":
show_records(records)
elif choice == "3":
modify_record(records)
elif choice == "4":
delete_record(records)
elif choice == "5":
break
else:
print("无效的选择,请重新输入!")
if __name__ == "__main__":
main()
测试
- 添加记录:输入不同的锻炼数据,检查文件是否正确更新。
- 查看记录:检查是否能正确显示所有记录。
- 修改记录:修改某条记录,检查文件是否正确更新。
- 删除记录:删除某条记录,检查文件是否正确更新。
注意事项
- 确保输入的日期格式正确,否则程序可能会报错。
- 输入的锻炼时长应该是整数。
- 在修改和删除记录时,确保输入的编号正确,否则程序会报错。
小结
通过本项目,新手可以学习到Python的基本语法、文件操作以及如何通过命令行界面与用户交互。此外,本项目也提供了一个实用的工具,帮助用户记录和管理他们的健身数据。希望JavaPub博主的粉丝们能够喜欢这个项目,并从中学到知识。更多Python学习资源,可以访问JavaPub官网。
《跟着小王学Python·新手》
《跟着小王学Python》 是一套精心设计的Python学习教程,适合各个层次的学习者。本教程从基础语法入手,逐步深入到高级应用,以实例驱动的方式,帮助学习者逐步掌握Python的核心概念。通过开发游戏、构建Web应用、编写网络爬虫、制作桌面软件等多样化项目,学习者可以深入理解并实践Python知识。每周更新1至2篇内容,旨在助力学习者成长为全栈工程师。
全栈实战项目访问:http://javapub.net.cn/