基于Python的学生成绩管理信息系统 v1.0

基于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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值