这段代码实现了一个简单的命令行学生信息管理系统。用户可以通过命令来添加、删除、修改、查询和列出学生信息,还可以清屏。以下是代码的主要部分:
print_menu()
: 打印菜单选项。add_student(students)
: 添加学生信息,包括用户名、密码和学号。delete_student(students)
: 删除学生信息,需要输入学号和密码进行确认。modify_student(students)
: 修改学生信息,可以修改用户名、密码和学号,需要输入学号和密码进行确认。query_student(students)
: 查询学生信息,根据关键字查询学生的用户名、学号或 UID。list_students(students)
: 列出所有学生信息,显示每个学生的 UID、用户名和学号。read_file()
: 从文件中读取已有的学生信息。save_file()
: 保存学生信息到文件。- 主程序入口循环通过命令行界面提供菜单选项,用户可以输入数字或命令来选择操作。
注意:
- 代码中使用了一个类
MyClass
来存储版本号,并使用了@property
装饰器来定义属性的获取方法。 - 用户信息以列表
students
存储,每个用户以字典形式表示。 - 学生信息保存在文件
Students.txt
中,使用eval()
函数来读取和写入。 - 用户可以输入
6
清屏,这在双击运行脚本时可以清除终端屏幕。 - 在处理文件操作时,代码进行了错误处理,避免文件不存在或出现异常。
请注意,这个管理系统在真实环境中可能还需要更多的安全性和错误处理措施,以确保用户数据的准确性和安全性。
import os
print("tyh学生管理系统,版本:",end="")
class MyClass:
def __init__(self, value):
self._value = value
@property
def value(self):
return self._value
VER = MyClass(1.0)
print(VER.value)
# 打印菜单
def print_menu():
print("=" * 30)
print("1. 添加学生")
print("2. 删除学生")
print("3. 修改学生信息")
print("4. 查询学生")
print("5. 列出所有学生信息")
print("6. 清屏(仅限双击运行时使用)")
print("0. 退出系统")
print("=" * 30)
# 添加学生
def add_student(students):
username = input("请输入用户名:")
password = input("请输入密码:")
student_id = input("请输入学号:")
uid = len(students) + 1 # 确保uid唯一
for student in students:
if student["username"] == username:
print("用户名已存在,请重新输入")
return
if student["student_id"] == student_id:
print("学号已存在,请重新输入")
return
student = {"username": username, "password": password, "student_id": student_id, "uid": uid}
students.append(student)
with open("Students.txt", "a") as f:
f.write(f"{uid},{username},{password},{student_id}\n")
print("添加成功!")
# 删除学生
def delete_student(students):
student_id = input("请输入学号:")
password = input("请输入密码:")
for student in students:
if student["student_id"] == student_id:
if student["password"] == password:
students.remove(student)
with open("Students.txt", "w") as f:
for s in students:
f.write(f"{s['uid']},{s['username']},{s['password']},{s['student_id']}\n")
print("删除成功!")
return
else:
print("密码错误,请重新输入")
return
print("学号不存在,请重新输入")
# 修改学生信息
def modify_student(students):
student_id = input("请输入学号:")
for student in students:
if student["student_id"] == student_id:
if input("请输入密码:") == student["password"]:
username = input("请输入新的用户名(按回车不修改):")
if username:
for s in students:
if s["username"] == username and s["student_id"] != student_id:
print("用户名已存在,请重新输入")
return
student["username"] = username
password = input("请输入新的密码(按回车不修改):")
if password:
student["password"] = password
student_id = input("请输入新的学号(按回车不修改):")
if student_id:
for s in students:
if s["student_id"] == student_id and s["uid"] != student["uid"]:
print("学号已存在,请重新输入")
return
student["student_id"] = student_id
with open("Students.txt", "w") as f:
for s in students:
f.write(f"{s['uid']},{s['username']},{s['password']},{s['student_id']}\n")
print("修改成功!")
return
else:
print("密码错误!")
return
print("学号不存在,请重新输入")
# 查询学生
def query_student(students):
keyword = input("请输入查询关键字:")
for student in students:
if keyword == student["username"] or keyword == student["student_id"] or keyword == str(student["uid"]):
print(f"用户名:{student['username']}\t学号:{student['student_id']}\tuid:{student['uid']}") #密码:{student['password']}
print("查询完毕!")
# 列出所有学生信息
def list_students(students):
print("所有学生信息如下:")
for student in students:
print("UID: {},\t 用户名: {},\t 学号: {}".format(student["uid"], student["username"], student["student_id"], student["password"]))
# 读取文件中已有学生信息
def read_file():
try:
with open("Students.txt", "r") as f:
students = eval(f.read())
except FileNotFoundError:
save_file()
except:
students=[]
try:
with open("Students.txt", "r") as f:
st = f.read()
print(st)
with open("temp.txt","w") as f:
f.write(st)
print("程序出现错误,已备份文件,现在学生已清空,可联系作者恢复")
except:
print("程序出现严重错误,未备份文件,现在学生已清空,数据不可恢复,如有必要,联系作者")
return students
# 保存已有学生信息
def save_file():
try:
with open("Students.txt", "w") as f:
f.write(str(students))
except:
pass
return None
students = read_file()
while True:
print_menu()
temp=input("请输入命令:")
if temp=="1":
add_student(students)
elif temp=='2':
delete_student(students)
elif temp=='3':
modify_student(students)
elif temp=='4':
query_student(students)
elif temp=='5':
list_students(students)
elif temp=='6':
os.system('cls' if os.name == 'nt' else 'clear')
print("tyh学生管理系统,版本:",end="")
print(VER.value,end="")
elif temp=='0':
save_file()
break
else:
print("无效命令!")
print()
save_file()
评论前必须登录!
注册