这个代码实现了一个基本的学工管理系统,包括教师和学生的登录、管理学生信息、打分以及查看信息等功能。
1. 引言
本系统旨在实现一个简易的学工管理平台,主要面向教师和学生两类用户。教师可以通过系统添加学生信息、为学生打分,而学生则可以查看个人信息和总成绩。系统通过文本文件存储学生和教师的账户信息以及成绩数据,基于命令行交互界面,简单易用。
在本篇博客中,我们将详细介绍该学工管理系统的设计和实现过程。系统的功能模块主要包括教师登录、学生登录、学生信息管理、成绩录入和查看等功能。通过这篇博客,读者不仅可以了解如何使用Python进行文件管理和用户交互设计,还能掌握一些常见的Python编程技巧,如如何使用getpass模块隐藏密码输入、如何处理文件读取异常等。
2. 系统功能概述
2.1 系统功能概述
系统主要分为两个角色:教师和学生,分别拥有不同的操作权限和功能。
2.2 教师端功能
教师端功能主要包括学生信息管理和成绩管理,具体功能如下:
- 教师登录:
- 教师首先需要输入用户名和密码,通过身份验证后才能访问教师端功能。
- 登录验证是通过比对存储在文件中的教师账户信息完成的,确保系统安全性。
- 添加学生:
- 教师可以通过系统添加新学生的基本信息,包括学生的学号、姓名和密码。
- 学生信息会被存储在
student_info.txt文件中,账户信息则保存在student_accounts.txt文件中。
- 给学生打分:
- 教师可以为学生输入成绩。系统会首先检查该学生是否已经有了成绩记录。
- 如果学生已有成绩,系统会显示原成绩,并询问是否更新;如果没有成绩,教师可以直接为学生录入新的成绩。
- 成绩数据会被保存到
student_scores.txt文件中,确保每个学生的成绩能够持久化存储。
2.3 学生端功能
学生端功能主要集中在个人信息查看和成绩查询,具体功能如下:
- 学生登录:
- 学生通过输入学号和密码登录,系统会验证输入的学号和密码是否匹配存储的账户信息,确保登录的安全性。
- 查看个人信息:
- 学生登录后,可以查看自己的基本信息(如学号、姓名)。这些信息存储在
student_info.txt文件中。
- 学生登录后,可以查看自己的基本信息(如学号、姓名)。这些信息存储在
- 查看总成绩:
- 学生还可以查询自己的总成绩。系统会读取
student_scores.txt文件,显示该学生的成绩记录。
- 学生还可以查询自己的总成绩。系统会读取
2.4 其他功能
- 输入密码时隐藏:
- 无论是教师还是学生登录时,密码输入均使用
getpass.getpass()函数实现,确保输入的密码不会在终端显示,增加系统的安全性。
- 无论是教师还是学生登录时,密码输入均使用
- 文件存储与异常处理:
- 所有学生和教师的信息、成绩数据都存储在文本文件中。系统会定期检查文件是否存在,并进行适当的错误处理,比如文件不存在或文件编码错误等。
2.5 系统界面与用户交互
- 命令行界面:
- 本系统通过命令行与用户进行交互。教师和学生通过简单的数字选择来进入各自的操作界面。
- 系统的界面会定期清屏,并根据用户的选择进行相应的操作,操作结束后返回主界面或退出系统。
3. 系统界面与用户交互
3.1 选择用户登录页面
登录页面是系统的入口,用户首先需要通过登录界面验证身份才能进入系统。系统支持教师和学生两种角色登录,登录时需要输入用户名和密码。登录验证成功后,用户将进入相应的操作页面。
代码实现:
def main():
while True:
clear_screen() # 清空屏幕
print("欢迎使用学工管理系统")
print("1. 教师登录")
print("2. 学生登录")
print("3. 退出系统")
choice = input("请输入你的选择 (1/2/3): ")
if choice == '1':
teacher_login()
elif choice == '2':
student_login()
elif choice == '3':
print("退出系统...")
break
else:
print("无效选择,请重新输入!")
input("按任意键返回...")
- 功能描述:
- 系统首先显示欢迎信息和三个选择项:教师登录、学生登录、退出系统。
- 用户输入1、2或3进行选择。如果输入无效,系统会提示重新输入。
3.2 教师登录页面
教师登录页面是系统的一个重要模块。教师需要输入用户名和密码进行身份验证。验证成功后,系统将跳转到教师的操作页面。
代码实现:
def teacher_login():
clear_screen()
print("教师登录界面")
username = input("请输入教师用户名: ")
password = getpass.getpass("请输入教师密码: ")
if validate_account('teacher_accounts.txt', username, password):
print(f"教师 {username} 登录成功!")
teacher_options(username)
else:
print("教师用户名或密码错误!")
input("按任意键返回主界面...")
- 功能描述:
- 教师登录界面会提示教师输入用户名和密码。
- 密码输入时使用
getpass.getpass()函数隐藏密码。 - 输入的用户名和密码将与保存在
teacher_accounts.txt文件中的数据进行比对,若匹配成功,登录成功并跳转到教师操作界面;若验证失败,提示错误并返回登录界面。
3.2 学生登录页面
学生登录界面与教师登录类似,学生需要输入学号和密码进行身份验证。验证通过后,学生将进入学生操作界面。
代码实现:
def student_login():
clear_screen()
print("学生登录界面")
student_id = input("请输入学号: ")
password = getpass.getpass("请输入学生密码: ")
if validate_account('student_accounts.txt', student_id, password):
print(f"学生 {student_id} 登录成功!")
student_options(student_id)
else:
print("学号或密码错误!")
input("按任意键返回主界面...")
- 功能描述:
- 学生登录界面会提示学生输入学号和密码。
- 密码输入时同样使用
getpass.getpass()函数进行隐藏。 - 输入的学号和密码将与保存在
student_accounts.txt文件中的数据进行比对,若匹配成功,登录成功并跳转到学生操作界面;若验证失败,提示错误并返回登录界面。
3.4 教师操作选择页面
登录成功后,教师将看到一个操作选择页面。在这里,教师可以选择添加学生、给学生打分或返回主界面。
代码实现:
def teacher_options(teacher_username):
while True:
clear_screen()
print(f"欢迎 {teacher_username} 教师,选择操作:")
print("1. 添加学生")
print("2. 给学生打分")
print("3. 返回主界面")
choice = input("请输入你的选择 (1/2/3): ")
if choice == '1':
add_student()
elif choice == '2':
grade_student()
elif choice == '3':
break
else:
print("无效选择,请重新输入!")
input("按任意键返回...")
- 功能描述:
- 显示教师操作选择界面,提供三项操作:添加学生、给学生打分和返回主界面。
- 用户输入选择(1、2或3),系统根据选择调用相应的函数。如果输入无效,系统会提示重新输入。
3.5 学生操作选择页面
登录成功后,学生将看到一个操作选择页面。学生可以选择查看个人信息、查看成绩或返回主界面。
代码实现:
def student_options(student_id):
while True:
clear_screen()
print(f"欢迎学生 {student_id},选择操作:")
print("1. 查看个人信息")
print("2. 查看总成绩")
print("3. 返回主界面")
choice = input("请输入你的选择 (1/2/3): ")
if choice == '1':
view_student_info(student_id)
elif choice == '2':
view_student_scores(student_id)
elif choice == '3':
break
else:
print("无效选择,请重新输入!")
input("按任意键返回...")
- 功能描述:
- 显示学生操作选择界面,提供三项操作:查看个人信息、查看成绩和返回主界面。
- 学生输入选择(1、2或3),系统根据选择调用相应的函数。如果输入无效,系统会提示重新输入。
3.6 清屏函数
为了提高用户体验,在每个操作界面或登录界面之后清空屏幕,使得界面更加清晰、整洁,系统使用了一个clear_screen()函数来清屏。
代码实现:
import os
def clear_screen():
"""清屏函数,适应Windows和Unix系统"""
os.system('cls' if os.name == 'nt' else 'clear')
- 功能描述:
clear_screen()函数用于清空屏幕。在Windows系统中,使用cls命令清空屏幕;在Unix系统(如Linux或Mac)中,使用clear命令清空屏幕。- 该函数在每次进入新界面时都会被调用,确保界面不会混乱。
4. 项目结构与文件设计
在本系统中,所有的数据(如账户信息、学生信息和成绩)都通过文本文件存储。
4.1 项目目录结构
├── teacher_accounts.txt # 存储教师账户信息(用户名、密码)
├── student_accounts.txt # 存储学生账户信息(学号、密码)
├── student_info.txt # 存储学生个人信息(学号、姓名)
├── student_scores.txt # 存储学生成绩信息(学号、成绩)
└── main.py # 学工管理系统主程序
4.2 文件设计与功能说明
每个文件的作用和存储内容如下:
-
teacher_accounts.txt
该文件存储所有教师的账户信息。每一行包含一个教师的用户名和密码,字段之间用空格隔开。教师通过这个文件进行登录验证。示例内容:
teacher1 password123 teacher2 pass456 -
student_accounts.txt
该文件存储所有学生的账户信息。每一行包含一个学生的学号和密码,字段之间用空格隔开。学生通过这个文件进行登录验证。示例内容:
1001 studentpass1 1002 studentpass2 -
student_info.txt
该文件存储所有学生的个人信息,包括学号和姓名。每一行包含一个学生的学号和姓名,字段之间用空格隔开。教师可以通过这个文件添加新的学生信息,学生可以通过系统查看自己的个人信息。示例内容:
1001 张三 1002 李四 -
student_scores.txt
该文件存储学生的成绩信息。每一行包含一个学生的学号和成绩,字段之间用空格隔开。教师可以通过系统为学生打分,更新成绩时会直接修改该文件。学生通过系统查看自己的总成绩。示例内容:
2021001 88 2021002 92
5. 登录系统设计
5.1 功能需求
登录系统主要有以下几个功能需求:
-
用户身份验证:
- 教师和学生各自拥有独立的账户,教师和学生通过输入用户名和密码进行登录。
- 系统会验证输入的用户名和密码是否匹配存储在相应文件中的账户信息。
- 如果登录信息正确,系统会根据用户角色提供不同的功能界面。
- 如果登录信息错误,系统会提示用户并允许重新输入。
-
密码安全性:
- 密码输入时会被隐藏为星号(
*),以保护用户隐私。
- 密码输入时会被隐藏为星号(
-
登录失败处理:
- 如果用户输入错误的用户名或密码,系统会给出提示,并要求用户重新尝试登录。
- 若连续多次登录失败,系统可以考虑增加限制(如锁定账户或暂停登录尝试),但在当前系统中,我只处理了基本的错误提示。
5.2 工作流程
登录系统的基本工作流程如下:
-
主界面选择:用户在登录界面看到三个选项:
-
- 教师登录
-
- 学生登录
-
- 退出系统
-
-
教师登录:
- 用户选择“1”进入教师登录界面。
- 系统提示教师输入用户名和密码。
- 系统验证用户名和密码是否匹配
teacher_accounts.txt中的记录。 - 如果验证通过,教师成功登录,进入教师功能界面;否则,显示登录失败信息,并返回主界面。
-
学生登录:
- 用户选择“2”进入学生登录界面。
- 系统提示学生输入学号和密码。
- 系统验证学号和密码是否匹配
student_accounts.txt中的记录。 - 如果验证通过,学生成功登录,进入学生功能界面;否则,显示登录失败信息,并返回主界面。
-
退出系统:
- 用户选择“3”退出系统,程序结束。
6. 教师管理功能实现
教师管理功能实现
在学工管理系统中,教师管理功能是核心模块之一,主要用于管理学生信息和为学生打分。教师通过登录系统后,可以执行以下操作:
- 添加学生信息:教师可以将新的学生信息(如学号、姓名、密码)添加到系统中。
- 为学生打分:教师可以为已存在的学生添加或更新成绩。
- 查询学生成绩:虽然查询成绩功能主要由学生执行,但教师也可以在后台查看学生成绩。
接下来,将详细介绍教师管理功能的实现,包括各个子功能的设计与实现细节。
6.1 添加学生信息
教师登录成功后,可以选择“添加学生”功能。系统会提示教师输入学生的学号、姓名和密码,然后将这些信息存储到相应的文件中。学生账户信息存储在student_accounts.txt文件中,而学生的个人信息(如姓名)存储在student_info.txt文件中。
功能实现步骤:
- 获取教师输入的学生学号、姓名和密码。
- 将学生的学号和密码存储到
student_accounts.txt文件中。 - 将学生的学号和姓名存储到
student_info.txt文件中。 - 显示操作成功的提示信息。
def add_student():
clear_screen()
print("添加学生信息")
student_id = input("请输入学生学号: ")
name = input("请输入学生姓名: ")
password = input("请输入学生密码: ")
# 将学生信息添加到 student_accounts.txt
with open('student_accounts.txt', 'a') as file:
file.writelines(f"{student_id} {password}\n")
# 将学生信息添加到 student_info.txt
with open('student_info.txt', 'a') as file:
file.writelines(f"{student_id} {name}\n")
print(f"学生 {name} ({student_id}) 添加成功!")
input("按任意键返回教师界面...")
- 输入检查:在实际开发中,可以增加对输入信息的有效性检查,例如确保学号不重复、密码符合一定的复杂度要求等。
6.2 为学生打分
教师登录后,可以选择“给学生打分”功能。系统会提示教师输入学生学号,并检查该学生是否已经存在。如果学生存在,系统会进一步检查该学生是否已有成绩。若学生已有成绩,教师可以选择是否更新成绩;若没有成绩,教师可以直接为学生打分。
功能实现步骤:
- 获取教师输入的学生学号。
- 检查学生是否存在。
- 如果学生存在,检查该学生是否已有成绩。
- 如果有成绩,提示教师是否更新成绩;如果没有成绩,允许教师输入新成绩。
- 更新或添加成绩到
student_scores.txt文件。
def grade_student():
clear_screen()
print("给学生打分")
student_id = input("请输入学生学号: ")
# 检查学生是否存在
if not check_student_exists(student_id):
print(f"学生 {student_id} 不存在!")
input("按任意键返回教师界面...")
return
# 检查学生是否已有分数
old_score = get_existing_score(student_id)
if old_score is not None:
print(f"学生 {student_id} 的旧成绩为: {old_score}")
update = input("是否需要更新成绩? (y/n): ").strip().lower()
if update == 'n':
print("未更新成绩。")
input("按任意键返回教师界面...")
return
else:
# 更新成绩
new_score = input("请输入新的成绩: ")
update_score_in_file(student_id, new_score)
print(f"学生 {student_id} 的成绩已更新为: {new_score}")
input("按任意键返回教师界面...")
return
else:
# 如果没有成绩,直接输入新成绩并添加到文件
new_score = input("请输入学生的成绩: ")
add_score_to_file(student_id, new_score)
print(f"学生 {student_id} 的成绩已添加为: {new_score}")
input("按任意键返回教师界面...")
- 检查学生是否存在:首先,系统会通过
check_student_exists()函数检查该学生是否已经存在于student_info.txt中。
def check_student_exists(student_id):
"""检查学生是否存在于学生信息文件中"""
try:
with open('student_info.txt', 'r') as file:
for line in file:
stored_id, name = line.strip().split()
if student_id == stored_id:
return True # 找到该学生
return False # 没有找到该学生
except FileNotFoundError:
print("学生信息文件未找到!")
return False
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
return False
- 获取学生成绩:通过
get_existing_score()函数,系统会检查该学生是否已有成绩,并返回成绩(如果存在)。如果没有成绩,返回None。
def get_existing_score(student_id):
"""检查学生是否已有分数"""
try:
with open('student_scores.txt', 'r') as file:
for line in file:
stored_id, score = line.strip().split()
if student_id == stored_id:
return score
return None # 如果没有找到该学生的成绩,则返回None
except FileNotFoundError:
print("成绩文件未找到!")
return None
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
return None
- 更新成绩:如果学生已有成绩,教师可以选择是否更新成绩。通过
update_score_in_file()函数,系统会更新student_scores.txt文件中的成绩。
def update_score_in_file(student_id, new_score):
"""更新文件中已有成绩"""
try:
# 读取文件内容
with open('student_scores.txt', 'r') as file:
lines = file.readlines()
# 更新学生成绩
with open('student_scores.txt', 'w') as file:
for line in lines:
stored_id, score = line.strip().split()
if student_id == stored_id:
file.writelines(f"{student_id} {new_score}\n") # 更新成绩
else:
file.writelines(line) # 保持其他行不变
except FileNotFoundError:
print("成绩文件未找到!")
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
- 添加成绩:如果学生没有成绩,教师可以直接为学生添加成绩,通过
add_score_to_file()函数,将成绩写入student_scores.txt文件。
def add_score_to_file(student_id, score):
"""将新成绩添加到文件"""
try:
with open('student_scores.txt', 'a') as file:
file.writelines(f"{student_id} {score}\n")
except FileNotFoundError:
print("成绩文件未找到!")
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
7. 学生功能实现
学生功能实现
在学工管理系统中,学生功能是另一个关键模块,主要提供给学生查看个人信息和成绩的功能。学生通过登录后,能够执行以下操作:
- 查看个人信息:学生可以查看自己的基本信息,如学号和姓名。
- 查看总成绩:学生可以查看自己当前的成绩。
下面将详细介绍学生功能的实现,涵盖功能模块的设计与实现细节。
7.1 查看个人信息
学生登录成功后,可以选择“查看个人信息”功能,系统会根据学生的学号从student_info.txt文件中查找并显示学生的姓名和学号。
功能实现步骤:
- 获取学生输入的学号。
- 从
student_info.txt文件中查找该学生的基本信息(学号、姓名)。 - 如果找到了学生信息,则显示给学生;如果未找到,提示学生信息不存在。
def view_student_info(student_id):
clear_screen()
try:
with open('student_info.txt', 'r', encoding='gbk') as file:
for line in file:
stored_id, name = line.strip().split()
if student_id == stored_id:
print(f"学生 {student_id} 的信息:姓名: {name}")
break
else:
print("未找到该学生的信息!")
except FileNotFoundError:
print("学生信息文件未找到!")
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
input("按任意键返回学生界面...")
- 文件读取:该功能会打开
student_info.txt文件,并逐行读取。每一行包含一个学生的学号和姓名,格式为:学号 姓名。如果找到了与输入学号匹配的学生,便会显示其姓名,否则提示学生未找到。
7.2 查看总成绩
学生还可以选择“查看总成绩”功能,系统将从student_scores.txt文件中查找该学生的成绩。如果学生存在成绩记录,系统会显示该成绩;如果学生没有成绩记录,则提示成绩未找到。
功能实现步骤:
- 获取学生输入的学号。
- 从
student_scores.txt文件中查找该学生的成绩。 - 如果找到了成绩,则显示给学生;如果未找到,提示成绩不存在。
def view_student_scores(student_id):
clear_screen()
try:
with open('student_scores.txt', 'r') as file:
for line in file:
stored_id, score = line.strip().split()
if student_id == stored_id:
print(f"学生 {student_id} 的总成绩: {score}")
break
else:
print("未找到该学生的成绩!")
except FileNotFoundError:
print("成绩文件未找到!")
input("按任意键返回学生界面...")
- 文件读取:该功能会打开
student_scores.txt文件,逐行读取每个学生的成绩记录,格式为:学号 成绩。如果找到了与输入学号匹配的成绩,便会显示该成绩;如果找不到,则提示成绩未找到。
8. 系统测试
8.1 主界面
界面

错误输入

8.2 教师操作
8.2.1 登录
登录成功

登录失败

8.2.2 添加学生

8.2.3 给学生打分
学生不存在

没有打分记录

更新学生分数

8.3 学生
8.3.1 登录
登录成功

登录失败

8.3.2 查看个人信息

8.3.3 查看总成绩
存在成绩

不存在成绩

9. 附录:完整代码
import os
import getpass
def clear_screen():
# 清屏函数,适应Windows和Unix系统
os.system('cls' if os.name == 'nt' else 'clear')
def main():
while True:
clear_screen() # 清空屏幕
print("欢迎使用学工管理系统")
print("1. 教师登录")
print("2. 学生登录")
print("3. 退出系统")
choice = input("请输入你的选择 (1/2/3): ")
if choice == '1':
teacher_login()
elif choice == '2':
student_login()
elif choice == '3':
print("退出系统...")
break
else:
print("无效选择,请重新输入!")
input("按任意键返回...")
def teacher_login():
clear_screen()
print("教师登录界面")
username = input("请输入教师用户名: ")
password = getpass.getpass("请输入教师密码: ")
if validate_account('teacher_accounts.txt', username, password):
print(f"教师 {username} 登录成功!")
teacher_options(username)
else:
print("教师用户名或密码错误!")
input("按任意键返回主界面...")
def student_login():
clear_screen()
print("学生登录界面")
student_id = input("请输入学号: ")
password = getpass.getpass("请输入学生密码: ")
if validate_account('student_accounts.txt', student_id, password):
print(f"学生 {student_id} 登录成功!")
student_options(student_id)
else:
print("学号或密码错误!")
input("按任意键返回主界面...")
def validate_account(file_name, username, password):
try:
with open(file_name, 'r') as file:
for line in file:
stored_username, stored_password = line.strip().split()
if username == stored_username and password == stored_password:
return True
return False except FileNotFoundError:
print(f"文件 {file_name} 未找到!")
return False
def teacher_options(teacher_username):
while True:
clear_screen()
print(f"欢迎 {teacher_username} 教师,选择操作:")
print("1. 添加学生")
print("2. 给学生打分")
print("3. 返回主界面")
choice = input("请输入你的选择 (1/2/3): ")
if choice == '1':
add_student()
elif choice == '2':
grade_student()
elif choice == '3':
break
else:
print("无效选择,请重新输入!")
input("按任意键返回...")
def student_options(student_id):
while True:
clear_screen()
print(f"欢迎学生 {student_id},选择操作:")
print("1. 查看个人信息")
print("2. 查看总成绩")
print("3. 返回主界面")
choice = input("请输入你的选择 (1/2/3): ")
if choice == '1':
view_student_info(student_id)
elif choice == '2':
view_student_scores(student_id)
elif choice == '3':
break
else:
print("无效选择,请重新输入!")
input("按任意键返回...")
def add_student():
clear_screen()
print("添加学生信息")
student_id = input("请输入学生学号: ")
name = input("请输入学生姓名: ")
password = input("请输入学生密码: ")
with open('student_accounts.txt', 'a') as file:
file.writelines(f"{student_id} {password}\n")
with open('student_info.txt', 'a') as file:
file.writelines(f"{student_id} {name}\n")
print(f"学生 {name} ({student_id}) 添加成功!")
input("按任意键返回教师界面...")
def grade_student():
clear_screen()
print("给学生打分")
student_id = input("请输入学生学号: ")
# 检查学生是否存在
if not check_student_exists(student_id):
print(f"学生 {student_id} 不存在!")
input("按任意键返回教师界面...")
return
# 检查学生是否已有分数
old_score = get_existing_score(student_id)
if old_score is not None:
print(f"学生 {student_id} 的旧成绩为: {old_score}")
update = input("是否需要更新成绩? (y/n): ").strip().lower()
if update == 'n':
print("未更新成绩。")
input("按任意键返回教师界面...")
return
else:
# 更新成绩
new_score = input("请输入新的成绩: ")
update_score_in_file(student_id, new_score)
print(f"学生 {student_id} 的成绩已更新为: {new_score}")
input("按任意键返回教师界面...")
return
else:
# 如果没有成绩,直接输入新成绩并添加到文件
new_score = input("请输入学生的成绩: ")
add_score_to_file(student_id, new_score)
print(f"学生 {student_id} 的成绩已添加为: {new_score}")
input("按任意键返回教师界面...")
def check_student_exists(student_id):
"""检查学生是否存在于学生信息文件中"""
try:
with open('student_info.txt', 'r') as file:
for line in file:
stored_id, name = line.strip().split()
if student_id == stored_id:
return True # 找到该学生
return False # 没有找到该学生
except FileNotFoundError:
print("学生信息文件未找到!")
return False
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
return False
def get_existing_score(student_id):
"""检查学生是否已有分数"""
try:
with open('student_scores.txt', 'r') as file:
for line in file:
stored_id, score = line.strip().split()
if student_id == stored_id:
return score
return None # 如果没有找到该学生的成绩,则返回None
except FileNotFoundError:
print("成绩文件未找到!")
return None
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
return None
def update_score_in_file(student_id, new_score):
"""更新文件中已有成绩"""
try:
# 读取文件内容
with open('student_scores.txt', 'r') as file:
lines = file.readlines()
# 更新学生成绩
with open('student_scores.txt', 'w') as file:
for line in lines:
stored_id, score = line.strip().split()
if student_id == stored_id:
file.writelines(f"{student_id} {new_score}\n") # 更新成绩
else:
file.writelines(line) # 保持其他行不变
except FileNotFoundError:
print("成绩文件未找到!")
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
def add_score_to_file(student_id, score):
"""将新成绩添加到文件"""
try:
with open('student_scores.txt', 'a') as file:
file.writelines(f"{student_id} {score}\n")
except FileNotFoundError:
print("成绩文件未找到!")
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
def view_student_info(student_id):
clear_screen()
try:
with open('student_info.txt', 'r', encoding='gbk') as file:
for line in file:
stored_id, name = line.strip().split()
if student_id == stored_id:
print(f"学生 {student_id} 的信息:姓名: {name}")
break
else:
print("未找到该学生的信息!")
except FileNotFoundError:
print("学生信息文件未找到!")
except UnicodeDecodeError:
print("文件编码错误!请确保文件是GBK编码。")
input("按任意键返回学生界面...")
def view_student_scores(student_id):
clear_screen()
try:
with open('student_scores.txt', 'r') as file:
for line in file:
stored_id, score = line.strip().split()
if student_id == stored_id:
print(f"学生 {student_id} 的总成绩: {score}")
break
else:
print("未找到该学生的成绩!")
except FileNotFoundError:
print("成绩文件未找到!")
input("按任意键返回学生界面...")
if __name__ == "__main__":
main()
733



被折叠的 条评论
为什么被折叠?



