Python学生成绩管理系统

1.功能需求分析

根据项目要求,学生系统成绩管理系统应该具备以下几个功能:

(1)系统的登录与注册:

(2)学生成绩添加:

(3)学生成绩修改:

(4)学生成绩删除:

(5)学生成绩查询:

(6)学生成绩排序及显示:

(7)系统退出:

2. 系统设计

2.1 系统功能结构

系统主要功能分为三大模块,分别为:系统的登录与注册模块、学生成绩管理模块和学生成绩排序及显示模块。其中学生成绩管理模块功能包括学生学绩的录入、删除、修改和查询;学生成绩排序显示模块功能包括按学号排序、按总分排序、按各科目成绩排序显示。

3. 详细设计

3.1 登录与注册功能模块

3.1.1系统的登录 

1.功能描述

实现用户的登录,系统的登录功能是通过函数login()的运行实现。

2.具体实现代码

# 登入功能实现

def login():

    user = input(“登录用户:”)

    passwd = input(“登录密码:”)

    users = load_user()

    users.get(user, “0”)

    k = users.get(user, “0”)

    if k == passwd:

        mash_menu()

    else:

        if k == “0”:

            print(“用户不存在!”, end=”,”)

        else:

            print(“密码错误!”, end=”,”)

        input(“按任意键继续!”)

3.实现效果图

3.1.2系统的注册

1.功能描述

实现用户的注册,系统的登录功能是通过函数regist()的运行实现。

2.具体实现代码

# 注册功能实现

def regist():

    user = input(“注册用户:”)

    pswd = input(“注册密码:”)

    users = load_user()

    if users.get(user, 0) == 0:

        user_write(user, pswd)

        print(“注册成功!”, end=”,”)

    else:

        print(“用户已存在!”, end=”,”)

    input(“按任意键继续”)

3.实现效果图

3.2 成绩管理功能模块

3.2.1主函数功能设计实现

1.功能描述

系统的操作主界面是通过主函数main()的运行实现,在主函数中,通过循环调用函数menu()生成功能菜单,以及使用if控制各功能子函数的调用,从而实现系统各功能模块。

2.实现代码

# 主菜单     

def main_menu():

    ctrl = True

    while ctrl:

        a = os.system(“cls”)

        print(”’

                  ┌───学生成绩管理系统───┐

                           ====主功能菜单===

                              1.注册

                              2.登录

                              3.退出

                           =================

                        说明:使用数字选择功能

                  └──────────────┘

              ”’)

        op = eval(input(“请输入数字[1-3]:”))

        if op == 1:

            regist()

        elif op == 2:

            login()

        elif op == 3:

            print(“系统退出!”)

            ctrl = False

        else:

            print(“输入错误”, end=”,”)

            input(“按任意键继续!”)

3. 实现效果

进入主函数即可进入系统主界面如图所示。

3.2.2 添加学生信息设计实现

1.功能描述

添加学生信息,添加学生信息的功能是通过函数add()的运行实现。

2.具体实现代码

# 添加学生信息

def add():

    a = os.system(“cls”)

    ctrl = True

    student_list = load_student()  # 读入本地学生信息

    while ctrl:

        id = input(“请输入学生学号:”)

        name = input(“请输入学生姓名:”)

        english = input(“请输入英语成绩:”)

        math = input(“请输入数学成绩:”)

        python = input(“请输入Python成绩:”)

        try:

            total = str(int(english) + int(math) + int(python))

        except:

            print(“输入成绩有误,请重新数入!”)

            continue

        student = [id, name, english, math, python, total]

        student_list.append(student)

        answer = input(“是否继续添加信息!?:’y/n'”)

        if answer == ‘y’:

            continue

        else:

            break

    save_stud(student_list)  # 存入学生信息到本地

    print(“学生信息录入成功!”)

# 保存学生信息

def save_stud(lst):

    stu = open(filename, ‘w’)

    for i in lst:

        stu.write(‘,’.join(i) + ‘\n’)

stu.close()

3.实现效果图

3.2.3 删除学生信息设计实现

1.功能描述

 删除学生信息,删除学生信息的功能是通过函数delet()的运行实现。

2.具体实现代码

# 删除学生信息

def delet():

    os.system(‘cls’)

    stud = load_student()

    ctrl = True

    while ctrl:

        ID = input(‘请输入待删除学生学号:’)

        flag = 0

        for i in stud:

            if i[0] == ID:

                flag = 1

                stud.remove(i)

        if flag:

            print(“删除成功!”)

        else:

            print(‘学生信息不存在!’)

        op = input(‘是否继续删除:(y/n)’)

        if op == ‘y’:

            ctrl = True

        else:

            ctrl = False

    save_stud(stud)

    print(‘信息存入成功!’)

    input(‘请按任意键继续’)

3.实现效果图

3.2.4 修改学生信息设计实现

1.功能描述

修改学生信息,修改学生信息的功能是通过函数update()的运行实现。

2.具体实现代码

# 修改学生信息

def update():

    os.system(‘cls’)

    ctrl = True

    flag = False

    stud = load_student()

    while ctrl:

        ID = input(“请输入待修改学生的学号:”)

        for i in stud:

            if i[0] == ID:

                flag = True

                op = int(

                    input(”’修改学生姓名请输入1,修改英语成绩请输入2,修改数学成绩请输入3,修改Python成绩请输入4:”’))

                if op >= 2:

                    i[op] = input(‘请输入修改后的信息:’)

                    i[-1] = str(int(i[2]) + int(i[3]) + int(i[4]))

                else:

                    i[op] = input(‘请输入修改后的信息:’)

                break

        if flag:

            print(‘修改成功!’)

        else:

            print(‘未查询到学生信息!’)

        op = input(‘是否继续修改(y/n)?’)

        if op == ‘y’:

            ctrl = True

        else:

            ctrl = False

    save_stud(stud)

3.实现效果图

 

 

3.2.5 查询学生信息设计实现

1.功能描述

查询学生信息,查询学生信息的功能是通过函数search()的运行实现。

2.具体实现代码

# 查询学生信息

def search():

    os.system(‘cls’)

    stud = load_student()

    op = input(‘输入1按学号搜索,输入2按姓名搜索’)

    op = int(op) – 1

    flag = False

    if op == 0:

        chrt = input(‘输入待搜索学生的学号:’)

    else:

        chrt = input(‘输入待搜索学生的姓名:’)

    for i in stud:

        if i[op] == chrt:

            flag = True

            print(‘{:10}{:10}{:10}{:10}{:10}{:10}’.format(‘学号’, ‘姓名’, ‘英语’, ‘数学’, ‘Python’, ‘总分’))

            print(‘{:12}{:12}{:12}{:12}{:12}{:12}’.format(i[0], i[1], i[2], i[3], i[4], i[-1]))

            break

    if flag:

        print(‘搜索成功!’)

    else:

        print(‘搜索失败!’)

    input(‘请输入任意键继续’)

3.实现效果图

 

 

3.3 排序及显示功能模块

1.功能描述

实现排序及显示功能,学生排序及显示的功能是通过函数show_menu()的运行实现。

 2.具体实现代码

# 显示功能菜单

def show_menu():

    ctrl = True

    while ctrl:

        a = os.system(“cls”)

        print(”’

                  ┌───学生成绩管理系统───┐

                        ====排序与显示功能菜单===

                              1.按学号排序显示

                              2.按总分排序显示

                              3.按科目排序显示                            

                              4.返回上一级

                        ======================

                         说明:使用数字选择功能

                  └──────────────┘

              ”’)

        op = eval(input(“请输入数字[1-4]:”))

        if op == 1:

            show_id()

        elif op == 2:

            show_total()

        elif op == 3:

            show_score()

        elif op == 4:

            ctrl = False

        else:

            print(“输入错误”, end=”,”)

            input(“按任意键继续!”)

3.实现效果图

3.3.1按学号排序显示

1.功能描述

按学号排序,按学号排序的功能是通过函数show_id()的运行实现。

2.具体实现代码

# 按学号从小到大显示学生信息

def show_id():

    os.system(‘cls’)

    stud = load_student()[1:]

    stud.sort(key=lambda x:int(x[0]), reverse=False)

    print(‘————-记录信息{}条———‘.format(len(stud)))

    print(‘{:10}{:10}{:10}{:10}{:10}{:10}’.format(‘学号’, ‘姓名’, ‘英语’, ‘数学’, ‘Python’, ‘总分’))

    for i in stud:

        print(‘{:12}{:12}{:12}{:12}{:12}{:12}’.format(i[0], i[1], i[2], i[3], i[4], i[-1]))

    input(‘按任意键以继续’)

3.实现效果图

3.3.2 按总分排序显示

1.功能描述

按总分排序,按总分排序的功能是通过函数show_total()的运行实现。

2.具体实现代码

# 按总分从大到小显示学生信息

def show_total():

    os.system(‘cls’)

    stud = load_student()[1:]

    stud.sort(key=lambda x: int(x[-1]), reverse=True)

    print(‘————-记录信息{}条———‘.format(len(stud)))

    print(‘{:10}{:10}{:10}{:10}{:10}{:10}’.format(‘学号’, ‘姓名’, ‘英语’, ‘数学’, ‘Python’, ‘总分’))

    for i in stud:

        print(‘{:12}{:12}{:12}{:12}{:12}{:12}’.format(i[0], i[1], i[2], i[3], i[4], i[-1]))

    input(‘按任意键以继续’)

3.实现效果图

3.3.3按各科目成绩排序显示

1.功能描述

按各科目成绩排序,按各科成绩排序的功能是通过函数show_score()的运行实现。

2.具体实现代码

# 按单科分数从大到小显示学生信息

def show_score():

    os.system(‘cls’)

    stud = load_student()[1:]

    op = input(“输入1按英语成绩排序,输入2按数学成绩排序,输入3按Python成绩排序”)

    op = int(op) + 1

    stud.sort(key=lambda x: int(x[op]), reverse=True)

    print(‘————-记录信息{}条———‘.format(len(stud)))

    print(‘{:10}{:10}{:10}{:10}{:10}{:10}’.format(‘学号’, ‘姓名’, ‘英语’, ‘数学’, ‘Python’, ‘总分’))

    for i in stud:

        print(‘{:12}{:12}{:12}{:12}{:12}{:12}’.format(i[0], i[1], i[2], i[3], i[4], i[-1]))

    input(‘按任意键以继续’)

3.实现效果图

4. 总代码如下:

import os

username = “user.txt”
filename = ‘students.csv’


# 读取本地用户账号信息
def load_user():
    with open(username, ‘r’) as f:
        dic = {}
        for item in f.readlines():
            item = item.replace(“\n”, “”)
            li = item.split(“,”)
            dic[li[0]] = li[1]
        f.close()

    return dic


# 读取本地学生的信息
def load_student():
    with open(filename, ‘r’) as f:
        stud = []
        for item in f.readlines():
            item = item.replace(“\n”, “”)
            li = item.split(“,”)
            stud.append(li)
        f.close()
    return stud


# 保存用户信息到本地
def user_write(user, pswd):
    f = open(username, “a”)
    f.write(user + “,” + pswd + ‘\n’)
    f.close()


# 注册功能实现
def regist():
    user = input(“注册用户:”)
    pswd = input(“注册密码:”)
    users = load_user()
    if users.get(user, 0) == 0:
        user_write(user, pswd)
        print(“注册成功!”, end=”,”)
    else:
        print(“用户已存在!”, end=”,”)
    input(“按任意键继续”)


# 登入功能实现
def login():
    user = input(“登录用户:”)
    passwd = input(“登录密码:”)
    users = load_user()
    users.get(user, “0”)
    k = users.get(user, “0”)
    if k == passwd:
        mash_menu()
    else:
        if k == “0”:
            print(“用户不存在!”, end=”,”)
        else:
            print(“密码错误!”, end=”,”)
        input(“按任意键继续!”)


# 添加学生信息
def add():
    a = os.system(“cls”)
    ctrl = True
    student_list = load_student()  # 读入本地学生信息
    while ctrl:
        id = input(“请输入学生学号:”)
        name = input(“请输入学生姓名:”)
        english = input(“请输入英语成绩:”)
        math = input(“请输入数学成绩:”)
        python = input(“请输入Python成绩:”)
        try:
            total = str(int(english) + int(math) + int(python))
        except:
            print(“输入成绩有误,请重新数入!”)
            continue
        student = [id, name, english, math, python, total]
        student_list.append(student)

        answer = input(“是否继续添加信息!?:’y/n'”)
        if answer == ‘y’:
            continue
        else:
            break

    save_stud(student_list)  # 存入学生信息到本地
    print(“学生信息录入成功!”)


# 保存学生信息
def save_stud(lst):
    stu = open(filename, ‘w’)
    for i in lst:
        stu.write(‘,’.join(i) + ‘\n’)
    stu.close()


# 删除学生信息
def delet():
    os.system(‘cls’)
    stud = load_student()
    ctrl = True
    while ctrl:
        ID = input(‘请输入待删除学生学号:’)
        flag = 0
        for i in stud:
            if i[0] == ID:
                flag = 1
                stud.remove(i)
        if flag:
            print(“删除成功!”)
        else:
            print(‘学生信息不存在!’)
        op = input(‘是否继续删除:(y/n)’)
        if op == ‘y’:
            ctrl = True
        else:
            ctrl = False
    save_stud(stud)
    print(‘信息存入成功!’)
    input(‘请按任意键继续’)


# 查询学生信息
def search():
    os.system(‘cls’)
    stud = load_student()
    op = input(‘输入1按学号搜索,输入2按姓名搜索’)
    op = int(op) – 1
    flag = False
    if op == 0:
        chrt = input(‘输入待搜索学生的学号:’)
    else:
        chrt = input(‘输入待搜索学生的姓名:’)
    for i in stud:
        if i[op] == chrt:
            flag = True
            print(‘{:10}{:10}{:10}{:10}{:10}{:10}’.format(‘学号’, ‘姓名’, ‘英语’, ‘数学’, ‘Python’, ‘总分’))
            print(‘{:12}{:12}{:12}{:12}{:12}{:12}’.format(i[0], i[1], i[2], i[3], i[4], i[-1]))
            break
    if flag:
        print(‘搜索成功!’)
    else:
        print(‘搜索失败!’)
    input(‘请输入任意键继续’)


# 修改学生信息
def update():
    os.system(‘cls’)
    ctrl = True
    flag = False
    stud = load_student()
    while ctrl:
        ID = input(“请输入待修改学生的学号:”)
        for i in stud:
            if i[0] == ID:
                flag = True
                op = int(
                    input(”’修改学生姓名请输入1,修改英语成绩请输入2,修改数学成绩请输入3,修改Python成绩请输入4:”’))
                if op >= 2:
                    i[op] = input(‘请输入修改后的信息:’)
                    i[-1] = str(int(i[2]) + int(i[3]) + int(i[4]))
                else:
                    i[op] = input(‘请输入修改后的信息:’)
                break
        if flag:
            print(‘修改成功!’)
        else:
            print(‘未查询到学生信息!’)
        op = input(‘是否继续修改(y/n)?’)
        if op == ‘y’:
            ctrl = True
        else:
            ctrl = False
    save_stud(stud)


# 按学号从小到大显示学生信息
def show_id():
    os.system(‘cls’)
    stud = load_student()[1:]
    stud.sort(key=lambda x:int(x[0]), reverse=False)
    print(‘————-记录信息{}条———‘.format(len(stud)))
    print(‘{:10}{:10}{:10}{:10}{:10}{:10}’.format(‘学号’, ‘姓名’, ‘英语’, ‘数学’, ‘Python’, ‘总分’))
    for i in stud:
        print(‘{:12}{:12}{:12}{:12}{:12}{:12}’.format(i[0], i[1], i[2], i[3], i[4], i[-1]))
    input(‘按任意键以继续’)


# 按总分从大到小显示学生信息
def show_total():
    os.system(‘cls’)
    stud = load_student()[1:]
    stud.sort(key=lambda x: int(x[-1]), reverse=True)
    print(‘————-记录信息{}条———‘.format(len(stud)))
    print(‘{:10}{:10}{:10}{:10}{:10}{:10}’.format(‘学号’, ‘姓名’, ‘英语’, ‘数学’, ‘Python’, ‘总分’))
    for i in stud:
        print(‘{:12}{:12}{:12}{:12}{:12}{:12}’.format(i[0], i[1], i[2], i[3], i[4], i[-1]))
    input(‘按任意键以继续’)


# 按单科分数从大到小显示学生信息
def show_score():
    os.system(‘cls’)
    stud = load_student()[1:]
    op = input(“输入1按英语成绩排序,输入2按数学成绩排序,输入3按Python成绩排序”)
    op = int(op) + 1
    stud.sort(key=lambda x: int(x[op]), reverse=True)
    print(‘————-记录信息{}条———‘.format(len(stud)))
    print(‘{:10}{:10}{:10}{:10}{:10}{:10}’.format(‘学号’, ‘姓名’, ‘英语’, ‘数学’, ‘Python’, ‘总分’))
    for i in stud:
        print(‘{:12}{:12}{:12}{:12}{:12}{:12}’.format(i[0], i[1], i[2], i[3], i[4], i[-1]))
    input(‘按任意键以继续’)


# 显示功能菜单
def show_menu():
    ctrl = True
    while ctrl:
        a = os.system(“cls”)
        print(”’
                  ┌───学生成绩管理系统───┐
                        ====排序与显示功能菜单===
                              1.按学号排序显示
                              2.按总分排序显示
                              3.按科目排序显示                             
                              4.返回上一级
                        ======================

                         说明:使用数字选择功能

                  └──────────────┘
              ”’)
        op = eval(input(“请输入数字[1-4]:”))
        if op == 1:
            show_id()
        elif op == 2:
            show_total()
        elif op == 3:
            show_score()
        elif op == 4:
            ctrl = False
        else:
            print(“输入错误”, end=”,”)
            input(“按任意键继续!”)


# 学生信息管理系统菜单
def manage_menu():
    ctrl = True
    while ctrl:
        a = os.system(“cls”)
        print(”’
                  ┌───学生成绩管理系统───┐
                        ====成绩管理功能菜单===
                              1.学生成绩添加
                              2.学生成绩修改
                              3.学生成绩删除
                              4.学生成绩查询
                              5.返回上一级
                       ======================

                        说明:使用数字选择功能

                  └──────────────┘
              ”’)
        op = eval(input(“请输入数字[1-5]:”))
        if op == 1:
            add()
        elif op == 2:
            update()
        elif op == 3:
            delet()
        elif op == 4:
            search()
        elif op == 5:
            ctrl = False
        else:
            print(“输入错误”, end=”,”)
            input(“按任意键继续!”)


# 功能菜单
def mash_menu():
    ctrl = True
    while ctrl:
        a = os.system(“cls”)
        print(”’
                  ┌───学生成绩管理系统───┐
                           ====功能菜单===
                              1.学生成绩管理
                              2.排序及显示
                              3.返回上一级
                           =================

                        说明:使用数字选择功能

                  └──────────────┘
              ”’)
        op = eval(input(“请输入数字[1-3]:”))
        if op == 1:
            manage_menu()
        elif op == 2:
            show_menu()
        elif op == 3:
            ctrl = False
        else:
            print(“输入错误”, end=”,”)
            input(“按任意键继续!”)

        # 主菜单      


def main_menu():
    ctrl = True
    while ctrl:
        a = os.system(“cls”)
        print(”’
                  ┌───学生成绩管理系统───┐
                           ====主功能菜单===
                              1.注册
                              2.登录
                              3.退出
                           =================

                        说明:使用数字选择功能

                  └──────────────┘
              ”’)
        op = eval(input(“请输入数字[1-3]:”))
        if op == 1:
            regist()
        elif op == 2:
            login()
        elif op == 3:
            print(“系统退出!”)
            ctrl = False
        else:
            print(“输入错误”, end=”,”)
            input(“按任意键继续!”)


main_menu()

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年11月27日
下一篇 2023年11月27日

相关推荐