大家好,我是一名刚进入大学的python新秀,初次来到博客,希望通过博客想大家分享一下自己的学习成果,并记录自己的在大数据方向的经历,希望在这里可以向各位大佬学到更多的知识,以下是我用python写的学生成绩管理系统的一个小程序,希望大家喜欢,欢迎大家提出意见,谢谢!
所用知识
1.python模块的引用
2.自定义函数
3.循环及循环嵌套
4.列表的增删改
代码展示
在讲解之前,先看看结果吧!
def show_menu():
print("")
print("*" * 50)
print("请按下以下数字进行操作:")
print("")
print("1.录入")
print("2.显示")
print("3.搜索")
print("4.删除")
print("0.退出")
print("*" * 50)
打印表头:输入对应的数字会有对应的操作
-1.录入学生姓名及成绩
-2.展示全部学生的姓名及成绩
-3.查找学生的成绩
-4.删除学生姓名及成绩
-0.退出系统
录入学生姓名及成绩
开始打印表头(为了美观),进入循环提示输入学生姓名并判断姓名是否符合要求,提示如果要退出就请按q退出,再提示输入学生成绩并判断是否在0-100之间,然后将输入的学生姓名及成绩以字典的形式加入到列表中,输入完成后,又循环到刚开始的输入成绩,直到输入退出条件即可退出。
def enter_grade():
"""录入成绩"""
print("-" * 50)
print("录入成绩")
while True:
# 提示输入学生姓名
name_str = input("请输入学生姓名,输入q即可退出:")
if name_str == "q":
break
if len(name_str) > 4:
print("输入有误,请重新输入")
continue
# ---------------------姓名处理结束------------------------------
# 提示输入学生成绩
while True:
grade_str = input("请输入学生成绩:")
if 0 <= int(grade_str) <= 100:
grade_list.append({name_str: grade_str})
print("输入%s的成绩成功" % name_str)
break
else:
print("请重写输入成绩范围为0-100")
# ---------------------成绩录入结束--------------------
显示成绩单
同样的在开始打印表头,首先判断刚刚加入的列表里有无数据,若无数据,提示用户没有任何记录,若有数据,则打印姓名成绩的表格,再遍历打印列表,由于前面讲到,列表里是以字典形式存在的,所以打印出来是整合好的学生信息,所以还需要在循环遍历打印字典,当然要注意对齐,所以需要格式化输出。我这里使用的是format的方法输出结果的。
def show_all():
"""显示成绩单"""
print("*" * 50)
print("显示成绩单")
if len(grade_list) == 0:
print("当前没有任何的成绩记录")
return
if len(grade_list) != 0:
print("")
print("*" * 50)
print('{:^10}{:^10}'.format("姓名", "成绩"))
# 遍历学生列表依次输出顺序信息
for stu in grade_list:
for key, value in stu.items():
print('{:^10}{:^10}'.format(key, value))
搜索名字
一样的,首先打印表头,提示输入要搜索的姓名,然后跟打印成绩单一样的方法,遍历学生列表,再循环嵌套搜索输入的学生姓名,在打印,如果列表了没有要查找的学生成绩,则提示用户没有找到。
ef search():
"""搜索名字"""
print("-" * 50)
print("搜索名字")
find_name = input("请输入学生的姓名:")
# 遍历学生列表并找到该学生
for stu in grade_list:
if find_name in stu:
print('{:^10}{:^10}'.format("姓名", "成绩"))
print('{:^10}{:^10}'.format(find_name, stu[find_name]))
break
else:
print("抱歉没有找到%s的成绩" % find_name)
删除某学生的成绩
一样的步骤,打印表头,提示输入学生姓名,再循环遍历学生列表,然后循环嵌套找到输入的学生姓名,再用用列表删除的方法删除,列表删除元素有很多种方法,我这里用的remove的方法,删除完成后是提示用户删除成功,如果列表里没有该学生,则提示用户没有找到该学生。
def delete():
"""删除某学生成绩"""
a = True
print("-" * 50)
find_name = input("请输入学生姓名:")
# 遍历学生列表并找到该学生
for stu in grade_list:
if find_name in stu:
grade_list.remove(stu)
print("删除%s成功" % find_name)
a = False
break
if a:
print("抱歉没有找到%s" % find_name)
之前的函数是我在另外一个文件里命名的模块,我后面会引用这个模块
模块的引用
首先导入刚刚写的模块,在循环内提示用户输入要操作的选项,对应的数字会引用对应的函数,当然还需要判断用户是否输入正确,最后还要加上循环退出条件,不然会是死循环。
import grade_tools
while True:
grade_tools.show_menu()
action_str = input("请选择希望执行的操作:")
print("您选择的操作是%s" % action_str)
if action_str in ["1", "2", "3", "4", "5", "0"]:
if action_str == "1":
grade_tools.enter_grade()
# 录入成绩
elif action_str == "2":
grade_tools.show_all()
# 显示全部成绩
elif action_str == "3":
grade_tools.search()
# 查询成绩
elif action_str == "4":
grade_tools.delete()
# 删除
elif action_str == "0":
print("您已成功退出")
break
else:
print("您输入的不正确,请重新选择")
到这里我的代码就已经结束了,但我学习还没有结束,今后我会不定期更新我的学习成果,同时欢迎各位大佬指点指点,毕竟我还是萌新。