基于Python的学生成绩管理信息系统 -v1.0
一、环境工具
1.VSCode
2.Python
二、编写程序
1.编写实现打印菜单栏函数
def menuPrintInfo(self) -> None:
print("\n")
print("+","---"*10,"+")
print("+ 欢迎来到学生成绩管理信息系统 +")
print("+","---"*10,"+")
print("+\t1. 查询学生信息\t\t +")
print("+\t2. 添加学生信息\t\t +")
print("+\t3. 修改学生信息\t\t +")
print("+\t4. 删除学生信息\t\t +")
print("+\t5. 显示所有学生信息\t +")
print("+\t0. 退出\t\t\t +")
print("+","---"*10,"+")
运行结果:
2.菜单栏实现选项功能
- 输入数字实现选项函数
- 设置输入数字是否错误,给定输入机会为3次。
def menuInputChoose(self):
max_attempts = 3 #最大尝试次数
attempts = 0 #当前尝试次数
print("+ 注意: 输入只有3次机会\t +")
print("+","---"*10,"+")
while attempts < max_attempts:
num = input(" 选项数字:")
if num == '1':
print("1")
break
elif num == '2':
print("2")
break
elif num == '3':
print("3")
break
elif num == '4':
print("4")
break
elif num == 5:
print("5")
break
elif num == '0':
print(" 学生成绩管理信息系统退出成功!")
sys.exit (0)
else:
attempts += 1
print(" 错误: 你输入机会剩余", (max_attempts - attempts) ,"次")
if attempts == max_attempts:
print(" 错误: 错误次数已达上限,程序退出!")
sys.exit(0)
运行结果:
3.设置添加学生信息以及成绩
- 学生ID (限制只有8位数,必须是数字)
- 学生姓名
- 语文,数学,英语,物理,历史(不能是小于0以及大于100)
- 利用数组作为学生信息存储,可利用append方法来在数组上添加信息。
# 添加学生信息函数
def addStudentInfo(self):
while True:
id = str(input("学号:"))
if id == "":
break
elif not re.match(r'[0-9]{8}$', id):
print("错误: 学号必须是8位数!")
break
else:
add_id = str(id)
break
while True:
name = str(input("姓名:"))
if name == "":
break
else:
add_name = name
break
while True:
chinese = input("语文成绩:")
if chinese == "":
break
elif not re.match(r'^\d+$', chinese) or int(chinese) < 0 or int(chinese) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
add_chinese = int(chinese)
break
while True:
math = input("数学成绩:")
if math == "":
break
elif not re.match(r'^\d+$', math) or int(math) < 0 or int(math) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
add_math = int(math)
break
while True:
english = input("英语成绩:")
if english == "":
break
elif not re.match(r'^\d+$', english) or int(english) < 0 or int(english) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
add_english = int(english)
break
while True:
physics = input("物理成绩:")
if physics == "":
break
elif not re.match(r'^\d+$', physics) or int(physics) < 0 or int(physics) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
add_physics = int(physics)
break
while True:
history = input("历史成绩:")
if history == "":
break
elif not re.match(r'^\d+$', history) or int(history) < 0 or int(history) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
add_history = int(history)
break
studentinfo = Student(add_id, add_name, add_chinese, add_math, add_english, add_physics, add_history)
self.students.append(studentinfo)
print("信息: 添加成功!")
运行结果:
4.设置查询学生信息
遍历每一条学生信息的数组,当你输入查询工号时,经过循环遍历匹配成功,自动打印学生信息。
# 查询学生信息函数
def findStudentInfo(self):
# 作为显示所有学生信息,目的避免忘记学号与姓名。
self.showAllStudentInfo()
find_id = input("查询学号:")
for student in self.students:
if find_id == student.id:
print("-" * 92)
print("|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|".format("学号", "姓名", "语文", "数学", "英语", "物理", "历史"))
print("-" * 92)
print("|{:^12s}|{:^12s}|{:^12d}|{:^12d}|{:^12d}|{:^12d}|{:^12d}|".format(student.id, student.name, student.chinese, student.math,student.english, student.physics, student.history))
print("-" * 92)
return
print("信息: 未找到匹配的学生信息")
return None
运行结果:
5.设置修改学生信息
修改学生信息的函数和添加学生信息的函数逻辑十分相似,改动的是加了查询工号的条件。
# 修改学生信息
def reviseStudentInfo(self):
self.showAllStudentInfo()
revise_id = input("查询学号:")
for student in self.students:
if revise_id == student.id:
print("当前学生信息为:")
print("-" * 92)
print("|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|".format("学号", "姓名", "语文", "数学", "英语", "物理", "历史"))
print("-" * 92)
print("|{:^12s}|{:^12s}|{:^12d}|{:^12d}|{:^12d}|{:^12d}|{:^12d}|".format(student.id, student.name, student.chinese, student.math,student.english, student.physics, student.history))
print("-" * 92)
print("修改当前学生信息:")
while True:
name = str(input("请输入新的姓名(留空表示不修改):"))
if name == "":
break
else:
student.name = name
break
while True:
chinese = input("请输入新的语文成绩(留空表示不修改):")
if chinese == "":
break
elif not re.match(r'^\d+$', chinese) or int(chinese) < 0 or int(chinese) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
student.chinese = int(chinese)
break
while True:
math = input("请输入新的数学成绩(留空表示不修改):")
if math == "":
break
elif not re.match(r'^\d+$', math) or int(math) < 0 or int(math) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
student.math = int(math)
break
while True:
english = input("请输入新的英语成绩(留空表示不修改):")
if english == "":
break
elif not re.match(r'^\d+$', english) or int(english) < 0 or int(english) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
student.english = int(english)
break
while True:
physics = input("请输入新的物理成绩(留空表示不修改):")
if physics == "":
break
elif not re.match(r'^\d+$', physics) or int(physics) < 0 or int(physics) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
student.physics = int(physics)
break
while True:
history = input("请输入新的历史成绩(留空表示不修改):")
if history == "":
break
elif not re.match(r'^\d+$', history) or int(history) < 0 or int(history) > 100:
print("错误: 成绩必须为0-100之间的整数!")
else:
student.history = int(history)
break
print("成功: 学生信息已更新!")
return
print("信息:未找到匹配的学生信息,无法修改!")
return None
运行结果:
修改后选项5查学生信息结果是
6.删除学生信息
利用数组里的remove()
# 删除学生信息
def deleteStudentInfo(self):
self.showAllStudentInfo()
delete_id = input("删除学号:")
for student in self.students:
if delete_id == student.id:
self.students.remove(student)
print("成功删除学号为{}的学生信息!".format(delete_id))
return
print("信息:未找到匹配的学生信息,无法删除!")
return None
运行结果
删除后查询信息结果为
7.查询所有信息
# 显示所有学生信息
def showAllStudentInfo(self):
print("-" * 92)
print("|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|{:^10s}|".format("学号", "姓名", "语文", "数学", "英语", "物理", "历史"))
print("-" * 92)
for student in self.students:
print("|{:^12s}|{:^12s}|{:^12d}|{:^12d}|{:^12d}|{:^12d}|{:^12d}|".format(student.id, student.name, student.chinese, student.math,student.english, student.physics, student.history))
print("-" * 92)
三、结语
实现了增删查改的学生管理信息系统,基本上是使用面向对象设计程序方法来实现。
日后会添加实现一个学生学号,成绩排序。
有不足地方,望指正!谢谢!
开源代码链接:基于python学生信息系统管理 v1.0