python实现学生成绩录入系统升级版

1、启动Python文件之后,显示下面的主菜单:

bd1b0bdb7b004326a55915f52599b7ed.png

主菜单:输入每个功能后面的数字或字母,按回车后,执行相应的功能。

 

功能1

1输入学生成绩信息(包括:学号、姓名、语文成绩、数学成绩、英语成绩),按回车后,添加该学生的成绩信息;

2添加完后,询问是否继续添加,如果是则继续重复前面的操作,如果不是,则结束。

 

附加:对输入的数据有容错功能,即如果输入有误,则要求重新输入

附加:判断学号是否重复,如果重复,则提示用户无法添加。

 

功能2:使用该功能后,如果有学生成绩,则输出所有学生成绩。

附加:学生成绩按照总分排序

 

功能3
1先输入要修改的学生学号,接着先输出该学生的所有信息(学号、姓名、语文成绩、数学成绩、英语成绩);

2然后输入新的学生成绩(语文成绩、数学成绩、英语成绩)进行修改,如果不输入直接回车,则保持原有数据。

 

功能4:先输入要删除的学生的学号,删除之前询问是否删除,确认之后才删除

 

功能Q:直接结束程序

 

 

功能(附加):增加导出学生成绩信息的功能。先是询问是否保存,如果是则将成绩信息保存文本文件中(要用到笔记中的文件操作)

main

from functions import *


def InitStudentSys():
    while True:
        print("**********欢迎进入学生成绩管理系统**********")
        print("                      菜单                  ")
        print("输入成绩-----------------------------------1")
        print("查询成绩-----------------------------------2")
        print("修改成绩-----------------------------------3")
        print("删除成绩-----------------------------------4")
        print("导出成绩-----------------------------------5")
        print("退出系统-----------------------------------Q")
        index = input("请输入要使用的功能:")
        # 根据功能编号,创建相应的功能类对象,并执行该功能
        function = Functions()
        if index == '1':
            function = InputScore()
        elif index == '2':
            function = LookScore()
        elif index == '3':
            function = ModifyScore()
        elif index == '4':
            function = DeleteScore()
        elif index == '5':
            function = ExportScore()
        elif index == 'Q' or index == 'q':
            function = Quit()
        function.Run()
        # 有个停留效果
        input("\n按Enter键继续.")


InitStudentSys()

 

 model

#model层,存放我们封装的一些类

#学生类
class Student(object):
    #构成函数
    def __init__(self,id,name,chinese,math,english):
        #对象变量
        self.id = id
        self.name = name
        self.chinese = chinese
        self.math = math
        self.english = english
    #增加一个总分变量
        self.score = self.chinese + self.math +self.english

    #内置函数 __str__函数
    def __str__(self):
        infor = f'{self.id}{self.name}{self.chinese}{self.math}{self.english}{self.score}'
        return infor


    #对象方法,暂时不写

functions

#导入model层中的学生类
import sys

from model import Student

# 学生管理系统功能的简单工厂类
class Functions(object):
    #创建存放学生对象的字典
    d_students = {}

    # 执行功能的函数
    def Run(self):
        print('\n功能待定')

# 学生管理系统的功能
# 输入成绩功能类
class InputScore(Functions):
    def Run(self):
       try:
           # 接收用户输入的学生信息
           infor = input('请输入学生信息(学号 姓名 语文成绩 数学成绩 英语成绩:\n')
           # 使用字符串切割函数,来切割学生信息
           StudentInfors = infor.split(' ')
           # 获取学生信息
           id = StudentInfors[0]
           if id in Functions.d_students.keys():
               #如果存在该学号,则提示用户,学号重复了
                print('\n输入的学号已重复')
           else:
               name = StudentInfors[1]
               chinese = StudentInfors[2]
               math = StudentInfors[3]
               english = StudentInfors[4]
               # 创建学生对象
               student = Student(id, name, chinese, math, english)
               # 存储学生对象
               Functions.d_students[id] = student
               # 提示用户
               print('\n添加学生信息成功')
               # 询问是否继续添加学生信息
               result = input('是否继续添加学生信息(y/n)')
               # 判断是否继续输入学生信息
               if result == 'y' or result == 'Y':
                   # 这里我们再来执行Run方法,方法自己调用自己,我们称之为方法的递归
                   self.Run()
                # 如果不继续输入则return结束执行
       except:
           return

# 查询成绩类
class LookScore(Functions):
    def Run(self):
        #先判断是否有输入学生信息
        if len(Functions.d_students) == 0:
            print('\n查无学生信息')
            return
        #如果有学生信息,则来遍历字典输出学生成绩
        else:
            print('\n学号 姓名 语文成绩 数学成绩 英语成绩')
            # for student in Functions.d_student.values()
            #    print(student)



            #获取学生列表
            students = list(Functions.d_students.values())
            #对学生对象列表,进行sort函数从大到小排序
            students.sort(key=self.S, reverse=True)
            #基于排序后的学生对象列表,输出学生信息
            for student in students:
                print(student)
            print('输出完毕')

    #定义一个函数,来告诉列表,应该基于学生对象的总分进行排序
    def S(self,student):
        #返回学生对象的总分,让排序函数基于学生对象的总分进行排序
        return student.score

# 修改成绩类
class ModifyScore(Functions):
    def Run(self):
        #询问要修改的学生学号
        id = input('\n请输入修改的学生学号')
        #判断是否有该学号
        if id not in Functions.d_students.keys():
            #如果不存在学号的话,那么提示用户
            print('查无此学号')
            return
        #如果存在该学号,先输出该学生的信息
        else:
            print('\n学号 姓名 语文成绩 数学成绩 英语成绩')
            student = Functions.d_students[id]
            print(student)
            #再要求用户输入新的三科成绩
            print('请输入新的三科成绩(语文成绩 数学成绩 英语成绩),如果不修改则直接回车')
            infor = input()
            #判断用户是否输入了新的三科成绩  字符串.strip()  去除字符串后多余空格
            if infor.strip() == '':
                print('\n 停止修改')
                return
            #如果输入不为空,则获得新的三科成绩
            score = infor.strip('')
            student.chinese = score[0]
            student.math = score[1]
            student.english = score[2]
            Functions.d_students[id] = student
            #提示用户
            print('修改成功')



        # 删除成绩类:

# 删除成绩类
class DeleteScore(Functions):
    def Run(self):
        #询问要删除的学生学号
        id = input('\n请输入要删除学生的学号')
        #第一步判断:是否存在该学号
        if id not in Functions.d_students.keys():
            print('查无此人')
            return

        #第二部判断:是否确认删除
        #在删除之前先显示该学生信息来确保没有删错
        print('\n学号 姓名 语文成绩 数学成绩 英语成绩')
        student = Functions.d_students[id]
        print(student)
        #询问用户,是否确认删除
        result = input('\n是否确认删除该学生信息(Y/n)')
        if result == 'Y'or result == 'y':
            Functions.d_students.pop(id)
            print('\n删除成功')
        else:
            print('停止删除。')

# 导入成绩类
class ExportScore(Functions):
    def Run(self):
        #询问是否确认到处成绩
        result = input('\n是否确认导出(Y/n)')
        #判断是否确认导出
        if result == 'Y' or result == 'y':
            # 1.获取要导出的信息
            content = '学号 姓名 语文成绩 数学成绩 英语成绩 总分\n'
            for student in Functions.d_students.values():
                content += str(student)
                content += '\n'
                
            # 2.打开本地文件
            # w模式打开时,路径下如果没有该文件,会新建一个该文件
            open('学生成绩表.txt','w')
            # 3.写入本地文件
            file.write(content)
            # 4.关闭本地文件
            file.close()
        else:
            print('\n停止导出')
            
   
   
    # 退出系统
class Quit(Functions):
    def Run(self):
        print('\n欢迎再次使用学生成绩管理系统')
        #sys.exit() 是强制结束程序的函数
        sys.exit()

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是Python实现学生成绩管理系统的简易: ```python # 定义一个空的学生成绩字典 scores_dict = {} while True: print("欢迎使用学生成绩管理系统!") print("1. 添加学生成绩") print("2. 查看学生成绩") print("3. 修改学生成绩") print("4. 删除学生成绩") print("5. 退出系统") choice = input("请选择功能输入数字即可):") if choice == "1": # 添加学生成绩 name = input("请输入学生姓名:") score = float(input("请输入学生成绩:")) scores_dict[name] = score print("添加学生成绩成功!") elif choice == "2": # 查看学生成绩 if not scores_dict: print("暂无学生成绩信息!") else: print("学生成绩如下:") for name, score in scores_dict.items(): print(name, ":", score) elif choice == "3": # 修改学生成绩 name = input("请输入要修改成绩的学生姓名:") if name not in scores_dict: print("该学生不存在!") else: new_score = float(input("请输入新的成绩:")) scores_dict[name] = new_score print("修改成绩成功!") elif choice == "4": # 删除学生成绩 name = input("请输入要删除成绩的学生姓名:") if name not in scores_dict: print("该学生不存在!") else: scores_dict.pop(name) print("删除成绩成功!") elif choice == "5": # 退出系统 print("感谢使用学生成绩管理系统!") break else: print("输入有误,请重新输入!") ``` 这段代码实现了一个简单的学生成绩管理系统,可以添加、查看、修改和删除学生成绩,并且具有基本的输入校验功能学生成绩保存在一个字典中,以学生姓名为键,成绩为值。在程序运行过程中,会循环显示菜单,根据用户输入的选择执行相应的功能
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值