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

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

python实现学生成绩录入系统升级版_第1张图片

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

功能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()

你可能感兴趣的:(python,开发语言)