当我们学完 Python 的基本语法、函数、文件操作、数据结构之后,最重要的就是"动手把零散技能组合起来"。 一个 命令行版本的学生成绩管理系统 非常适合作为阶段性小项目,它不需要用到任何 GUI 框架,但涵盖了如下关键知识点:
- 文件读写
- 列表与字典操作
- 输入与输出
- 流程控制与异常处理
- 模块化(可选)
- 程序结构设计
这类小项目虽然简单,但非常接近真实业务逻辑,是从"语法"迈向"小型应用"的第一步。
1. 项目功能设计
我们先把项目功能规划清楚,这比写代码更重要:
核心需求
- 添加学生成绩
- 查看所有学生成绩
- 查询指定学生
- 修改学生成绩
- 删除学生信息
- 保存到文件 / 从文件读取
- 退出程序
数据结构设计
我们用字典表示一个学生:
python
{
"id": "2025001",
"name": "张三",
"score": 88
}
全部学生数据使用列表保存:
python
students = []
这个结构清晰、扩展性强,也方便序列化保存。
2. 主菜单设计
命令行程序最重要的就是菜单循环:
python
def show_menu():
print("\n===== 学生成绩管理系统 =====")
print("1. 添加学生成绩")
print("2. 查看所有学生")
print("3. 查询学生")
print("4. 修改学生成绩")
print("5. 删除学生信息")
print("6. 保存数据")
print("7. 读取数据")
print("0. 退出系统")
看起来简单,但这是后续所有操作的"入口"。
3. 功能实现
下面给出完整的核心逻辑,代码结构清晰易懂。
① 添加学生
python
def add_student(students):
sid = input("请输入学号:")
name = input("请输入姓名:")
score = int(input("请输入成绩:"))
students.append({"id": sid, "name": name, "score": score})
print("添加成功!")
② 查看所有学生
python
def show_all(students):
if not students:
print("当前没有学生数据")
return
print("\n--- 所有学生成绩 ---")
for stu in students:
print(f"学号:{stu['id']},姓名:{stu['name']},成绩:{stu['score']}")
③ 按学号查询学生
python
def find_student(students):
sid = input("请输入要查询的学号:")
for stu in students:
if stu["id"] == sid:
print(f"找到 → 姓名:{stu['name']},成绩:{stu['score']}")
return stu
print("未找到该学生")
return None
④ 修改成绩
python
def update_student(students):
stu = find_student(students)
if stu:
new_score = int(input("请输入新成绩:"))
stu["score"] = new_score
print("修改成功!")
⑤ 删除学生
python
def delete_student(students):
stu = find_student(students)
if stu:
students.remove(stu)
print("删除成功!")
4. 数据持久化(文件保存 & 读取)
我们使用简单的 JSON 格式,因为它结构清晰、方便读写。
python
import json
def save_data(students, filename="students.json"):
with open(filename, "w", encoding="utf-8") as f:
json.dump(students, f, ensure_ascii=False, indent=2)
print("数据已保存!")
def load_data(filename="students.json"):
try:
with open(filename, "r", encoding="utf-8") as f:
data = json.load(f)
print("数据读取成功!")
return data
except FileNotFoundError:
print("文件不存在,使用空数据。")
return []
5. 主程序(把所有功能串起来)
python
def main():
students = load_data()
while True:
show_menu()
choice = input("请选择操作:")
if choice == "1":
add_student(students)
elif choice == "2":
show_all(students)
elif choice == "3":
find_student(students)
elif choice == "4":
update_student(students)
elif choice == "5":
delete_student(students)
elif choice == "6":
save_data(students)
elif choice == "7":
students = load_data()
elif choice == "0":
print("退出系统,欢迎下次使用!")
break
else:
print("输入无效,请重新选择!")
运行:
bash
python student_system.py
你的第一个完整小系统就能跑起来了。
6. 项目扩展方向
如果你想继续升级这个项目,我给你一些很好拓展方向:
✔ 增加成绩排序功能
按成绩排序、按姓名排序等。
✔ 增加成绩统计
最高分、最低分、平均分。
✔ 使用 SQLite/MySQL 持久化
从文件升级成真正的数据库。
✔ 使用类封装
将学生、系统封装为类,代码更专业。
✔ 使用 Tkinter / PyQt 做 GUI
瞬间变成桌面应用。
✔ 使用 Flask / FastAPI 提供 REST API
做成一个真正的"学生管理后台"。