学生成绩管理系统

项目一:学生成绩管理系统(控制台程序)

使用Python语言开发一个学生成绩管理系统。系统可以帮助教师快速对学生的成绩信息进行基本的增添、删除、修改、查找等管理操作,并实时地将学生的成绩信息保存到磁盘文件;系统还可以实现一定的排序显示功能。

1.功能需求分析

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

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

(2)学生成绩添加:

(3)学生成绩修改:

(4)学生成绩删除:

(5)学生成绩查询:

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

(7)系统退出:

2. 系统设计

2.1 系统功能结构

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

图1 系统功能结构图

2.2 系统业务流图

根据学生管理系统的需求分析和功能结构图,设计如下系统业务流图,如图2所示。

图2 系统业务流图

3. 详细设计

3.1 系统菜单功能的设计实现

(1)功能描述

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

(2) 业务流程

根据学生管理系统的主函数要实现的功能和实现技术,设计如下系统业务流图,如图3所示。

图3-1 主函数功能业务流图

(3) 相关函数功能定义

系统主中界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时,通过输入数字进行功能选择。菜单中的数字与功能定义如表1所示。

编号

功能

0

break():退出

1

manage_menu()函数:学生成绩管理

2

show_menu()函数:排序及显示

实现代码:

 实现效果:

功能1和2的子函数如图所示。

3.2 登录与注册功能模块

3.2.1系统的登录设计实现

功能描述:

用户可以登录程序,然后进行下一步操作

业务流程:

输入2即可进行登录步骤

相关函数功能定义:

def User_Login():

    with open(user_file) as f:

        dic = {}

        for item in f.readlines():

            item = item.replace("\n", "")

            li = item.split(",")

            dic[li[0]]=li[1]

    f.close()

    #print("用户加载成功!")

    return dic

具体实现代码

def login():

    user=input("登录用户:")

    passwd=input("登录密码:")

    users= User_Login()

    users.get(user,"0")

    k=users.get(user,"0")    

    if k==passwd:

print("登录成功")

        input("按任意键继续!")

        mash_menu()

    else:

        if k=="0":

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

        else:

            print("密码错误!",end=",")

        input("按任意键继续!")

    Return ok

实现效果图

3.2.2系统的注册设计实现

功能描述

用户可以注册程序,然后进行下一步操作

业务流程

输入1即可进行注册步骤

相关函数功能定义

def User_Login():

    with open(user_file) as f:

        dic = {}

        for item in f.readlines():

            item = item.replace("\n", "")

            li = item.split(",")

            dic[li[0]]=li[1]

    f.close()

    #print("用户加载成功!")

    return dic

具体实现代码

def regist():

    user=input("注册用户:")

    pswd=input("注册密码:")

    users= User_Login()

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

        user_write(user,pswd)

        print("注册成功!",end=",")

    else:

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

    input("按任意键返回")

实现效果图

3.3 成绩管理功能模块

3.3.1 添加学生信息设计实现

功能描述

添加学生信息

业务流程

登录后输入选择学生成绩管理再选1

相关函数功能定义

def stuinform_add(studs):

    file=open(stud_file,"a")

    if file.tell()==0:

        li=["学号", "姓名", "英语", "Python", "C语言", "总分","\n"]

        li_str=",".join(li)

        file.write(li_str)

    for item in studs:

        item_str=",".join(item)+"\n"

        file.write(item_str)

    file.close()

    return

具体实现代码

def add():

    count=0

    ctrl=True

    studs = []

    while ctrl:

        a = os.system("cls")

        id=input("请输入学号:")

        name=input("请输入姓名:")

        try:

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

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

            c= input("请输入C语言成绩:")

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

        except:

            print("成绩录入无效,重新输入信息")

            continue

        a = os.system("cls")

        count+=1

        print("------------------------------输入的是第【{}】条记录内容--------------------------".format(count))

        print("{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}".format("学号","姓名", "英语","Python","C语言","总分"))

        print("{:^12}{:^12}{:^11}{:^11}{:^11}{:^11}".format(id,name,english,python,c,total))

        print("--------------------------------------------------------------------------------")

        inputOK = input("确认输入?(y/n)")

        if inputOK == "y":

            studs.append([id,name,english,python,c,total])

        else:

            count -= 1

        inputCtrl = input("是否继续添加?(y/n)")

        if inputCtrl == "y":

            ctrl = True

        else:

            ctrl = False

    studs_write(studs)

    print("删除成功")

    Return ok

实现效果图

3.3.2 删除学生信息设计实现

功能描述:删除学生信息

业务流程:登录后输入选择学生成绩管理再选3

相关函数功能定义

def  User_Login():

    with open(stud_file) as f:

        studs = []

        for item in f.readlines():

            item = item.replace("\n", "")

            li = item.split(",")

            studs.append(li)

    f.close()

    #print("学生加载成功!")

    return studs

具体实现代码

def Delet_grades():#删除成绩

    ctrl=True

    while ctrl:

        a=os.system("cls")

        show_id()

        del_id=input("请输入要删除的学生学号(放弃直接按Enter键):")

        if del_id=="":

            return

        studs =  User_Login()

        flag=0

        for item in studs:

            if item[0]==del_id:

                delOK=input("确认删除该记录(y/n):")

                if delOK=="n":

                    break

                else:

                    flag=1

                    studs.remove(item)

                    del_write(studs)

                    show_id()

                    break

        if flag==0:

            input("无该学号,按任意键继续")

        inputCtrl=input("是否继续删除(y/n)")

        if inputCtrl=="y":

            ctrl=True

        else:

            ctrl=False

    input("按任意键返回")

    return

实现效果图

3.2.3 修改学生信息设计实现

(1)功能描述:修改学生信息

(2)业务流程:登录后输入选择学生成绩管理再选2

(3)相关函数功能定义

def  User_Login():

    with open(stud_file) as f:

        studs = []

        for item in f.readlines():

            item = item.replace("\n", "")

            li = item.split(",")

            studs.append(li)

    f.close()

    #print("学生加载成功!")

    return studs

(4)具体实现代码

def update():

    show_id()

    ctrl=True

    studs= User_Login()

    while ctrl:

        a = os.system("cls")

        flag=0

        ls=[]

        upid=input("查询人的学号为")

        upkemu=input("修改的科目(英语 Python C语言)")

        upgarde=input("修改的成绩")

        for item in studs[1:]:

            if upid == item[0]:

                flag=1

                if upkemu == item[1:]:

                    print("修改科目为{}",upkemu)

                    ls.replace("item[i]","upgrade")

                    break

            else:

                print("输入错误,重新输入!")

                continue

        if flag==0:

            print("不存在这名学生!")

        else:

            a = os.system("cls")

            print("------------------------------修改结果--------------------------")

            print("{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}".format("学号","姓名", "英语","Python","C语言","总分"))

            print("{:^12}{:^12}{:^11}{:^11}{:^11}{:^11}".format(item[0],item[1],item[2],item[3],item[4],item[5]))

            print("--------------------------------------------------------------------------------")

        inputOK = input("继续修改吗?(y/n)")

        if inputOK == "y":

            ctrl=True

        else:

            ctrl = False

    print("按任意键返回")

    Return

(5)实现效果图

3.2.4 查询学生信息设计实现

(1)功能描述:查询学生信息

(2)业务流程:登录后输入选择学生成绩管理再选4

(3)相关函数功能定义

def  User_Login():

    with open(stud_file) as f:

        studs = []

        for item in f.readlines():

            item = item.replace("\n", "")

            li = item.split(",")

            studs.append(li)

    f.close()

    #print("学生加载成功!")

    return studs

(4)具体实现代码

def search():

    ctrl=True

    studs =  User_Login()

    while ctrl:

        a=os.system("cls")

        print("1.学号查找   2.姓名查找")

        n=eval(input("请输入数字(1 or 2):"))

        flag=0

        ls=[]

        if n==1:

            seacid=input("查询人的学号为")

            for item in studs[1:]:

                if seacid==item[0]:

                    flag=1

                    ls.append(item)

                    break

        elif n==2:

            seacname=input("查询人的姓名为")

            for item in studs[1:]:

                if seacname==item[1]:

                    flag=1

                    ls.append(item)

                    break

        else:

            input("输入错误  请重新输入数字(1或2)")

            continue

        if flag==0:

            print("不存在这名学生!")

        else:

            a=os.system("cls")

            print("查找结果")

            print("{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}".format("学号","姓名","英语","python","c语言","总分"))

            for item in studs:

                print("{:^12}{:^12}{:^11}{:^11}{:^11}{:^11}".format(item[0],item[1],item[2],item[3],item[4],item[5]))

            inctrl=input("是否继续(y/n):")

            if inctrl=="y":

                    ctrl= True

            else:

                    ctrl=False

    input("按任意键返回")

    return

(5)实现效果图

3.4 排序及显示功能模块

(1)功能描述:排序及显示

(2)业务流程:登录后选2

(3)相关函数功能定义

(4)具体实现代码

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

            input("按任意键继续!")

        elif op==2:

            show_total()

        elif op==3:

            show_score()

        elif op==4:

            ctrl=False

        else:

            print("输入错误",end=",")

            input("按任意键继续!")

(5)实现效果图

3.4.1按学号排序显示

(1)功能描述:按学号排序显示

(2)业务流程:登录后选2再选1

(3)相关函数功能定义

def  User_Login():

    with open(stud_file) as f:

        studs = []

        for item in f.readlines():

            item = item.replace("\n", "")

            li = item.split(",")

            studs.append(li)

    f.close()

    #print("学生加载成功!")

    return studs

(4)具体实现代码

def show_id():

    count=0

    studs = load_studs()[1:]

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

    print("--------------------------------文件共【{}】条记录--------    --------------------".format(len(studs)))

    print("{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}".format("学号", "姓名", "英语", "Python", "C语言", "总分"))

    for item in studs[1:]:

        print("{:^12}{:^12}{:^11}{:^11}{:^11}{:^11}".format(item[0], item[1], item[2], item[3], item[4], item[5]))

        count+=1

        if count%10==0:

            input("按任意键继续!")

    print("--------------------------------------end--------------------------------------")

    #input("按任意键继续!")

    return

(5)实现效果图

3.4.2 按总分排序显示

(1)功能描述:按总分排序显示

(2)业务流程:登录后选2再选2

(3)相关函数功能定义

def  User_Login():

    with open(stud_file) as f:

        studs = []

        for item in f.readlines():

            item = item.replace("\n", "")

            li = item.split(",")

            studs.append(li)

    f.close()

    #print("学生加载成功!")

    return studs

(4)具体实现代码

def show_total():

    count=0

    studs = load_studs()[1:]

    studs.sort(key=lambda x: x[5], reverse=True)

    print("--------------------------------文件共【{}】条记录--------    --------------------".format(len(studs)))

    print("{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}".format("学号", "姓名", "英语", "Python", "C语言", "总分"))

    for item in studs:

        print("{:^12}{:^12}{:^11}{:^11}{:^11}{:^11}".format(item[0], item[1], item[2], item[3], item[4], item[5]))

        count += 1

        if count%10 == 0:

            input("按任意键继续!")

    print("--------------------------------------end--------------------------------------")

    input("按任意键返回!")

    return

(5)实现效果图

3.4.3按各科目成绩排序显示

(1)功能描述:按各科目成绩排序显示

(2)业务流程:登录后选2再选3

(3)相关函数功能定义

def load_studs():

    with open(stud_file) as f:

        studs = []

        for item in f.readlines():

            item = item.replace("\n", "")

            li = item.split(",")

            studs.append(li)

    f.close()

    #print("学生加载成功!")

    return studs

(4)具体实现代码

def show_score():

    count=0

    studs =  User_Login()[1:]

    print("【1】按英语成绩 【2】按Python成绩  【3】按C语言成绩")

    n=eval(input("请输入数字[1-3]:"))

    studs.sort(key=lambda x: x[n+1], reverse=True)

    print("--------------------------------文件共【{}】条记录--------    --------------------".format(len(studs)))

    print("{:^10}{:^10}{:^10}{:^10}{:^10}{:^10}".format("学号", "姓名", "英语", "Python", "C语言", "总分"))

    for item in studs[1:]:

        print("{:^12}{:^12}{:^11}{:^11}{:^11}{:^11}".format(item[0], item[1], item[2], item[3], item[4], item[5]))

        count += 1

        if count%10 == 0:

            input("按任意键继续!")

    print("--------------------------------------end--------------------------------------")

    input("按任意键返回!")

    return

(5)实现效果图

4. 打包成exe文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值