Python:学习成绩管理系统

目录

(2)输出界面 


前言

对于此系统我所使用的是window11系统,所用python解释器版本:python3.8,建议在pycharm进行

编写.基于对Python基础知识的掌握,对学生成绩管理系统进行全方位刨析,一步一步讲解,希望对

有需要的人有所帮助。

一、需求分析

1、概念设计

        针对学生们对自己成绩的查询便捷性,自主编写了一套简易的班级学习成绩管理系统。其中学生成绩管理系统主要包括录入学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、统计学生总数、显示学生信息,这几项功能。其中录入学生的信息包括学号、姓名、C语言程序设计成绩、Python成绩、Java成绩、绩点;查询学生信息分为按学号和按姓名查找两种;删除学生信息是输入学号进行查找,查找到学生信息之后,对学生信息进行删除;修改学生信息是输入学号后,查询到学生信息之后,对学生信息进行修改;排序学生信息的排序方式可选择升序和降序,可选择按C语言程序设计成绩、Python成绩、Java成绩、绩点进行排序;统计学生总数 就是输出信息管理系统中有几个学生的信息。学生成绩管理系统,说难也难,说简单也简单,对于初学者的我们也算一项不小的挑战了,对于这个系统,它的功能等等很多,所以我们需要有一个大概的思路,来让我们更好的完成它。

2、流程分析

编号功能
0退出系统
1录入学生信息insert()
2查找学生信息search()
3删除学生信息delete()
4修改学生信息modity()
5排序sort()
6统计学生总人数total()
7显示所有学生信息show()

3、主界面设计

大致样式如图所示:

 代码:

import os
def main ():
    while True:
        menu()                                         //调用菜单函数
        choice=int(input('请选择:'))
        if choice in [0,1,2,3,4,5,6,7]:
            if choice==0:
                answer = input ('请确定要退出系统?y/n:')
                if answer == 'y' or answer == 'Y':
                    print ('谢谢你的使用')
                    break
                else:
                    continue
            elif choice==1:
                insert()
            elif choice==2:
                search ()
            elif choice==3:
                delete()
            elif choice==4:
                modify()
            elif choice==5:
                sort()
            elif choice==6:
                total()
            elif choice==7:
                show()
        else:
            print('请正确输入数字!')
def menu():
    print ('=========================学生成绩管理系统=========================')
    print ('----------------------------功能模块----------------------------')
    print ('\t\t\t\t\t\t1.录入学生信息')
    print ('\t\t\t\t\t\t2.查找学生信息')
    print ('\t\t\t\t\t\t3.删除学生信息')
    print ('\t\t\t\t\t\t4.修改学生信息')
    print ('\t\t\t\t\t\t5.排序')
    print ('\t\t\t\t\t\t6.统计学生总人数')
    print ('\t\t\t\t\t\t7.显示所有学生信息')
    print ('\t\t\t\t\t\t0.退出系统')
    print ('-------------------------------------------------------------')

if __name__ == '__main__':                //程序开始运行
    main()

二、功能实现

1、主函数定义

用户根据输入功能模块对应的数字编号进行操作,功能使用完成后再次返回主页面。用户如果输入数字0后,根据提示输入y则退出系统,否则继续返回主界面

def main ():
    while True:
        menu()
        choice=int(input('请选择:'))
        if choice in [0,1,2,3,4,5,6,7]:
            if choice==0:
                answer = input ('请确定要退出系统?y/n:')
                if answer == 'y' or answer == 'Y':
                    print ('谢谢你的使用')
                    break
                else:
                    continue
            elif choice==1:
                insert()
            elif choice==2:
                search ()
            elif choice==3:
                delete()
            elif choice==4:
                modify()
            elif choice==5:
                sort()
            elif choice==6:
                total()
            elif choice==7:
                show()
        else:
            print('请正确输入数字!')

2、录入学生信息

录入学生信息函数代码部分,在这个函数中实现的功能是录入学生信息,包括学号、姓名、C语言成绩、Python成绩、Java成绩,并将其写入文件中,每一行为一个学生的信息存储。

(1)功能实现

def insert():                  //插入学生信息功能
    stu_lst = []
    while True:
        no=int(input('请输入学号(例如1001):'))
        if not no:
            break
        name=input('请输入姓名:')
        if not name:
            break
        try:
            c = int (input ('请输入C语言成绩:'))
            python = int (input ('请输入Python的成绩:'))
            java = int (input ('请输入Java的成绩:'))
        except:
            print('输入无效,请重新输入!')
            continue
        student={'id':no,'name':name,'C语言':c,'Python':python,'Java':java}
        stu_lst.append(student)
        save (stu_lst)
        print ('信息录入成功!')
        stu_lst.clear()
        choice=input('是否继续?y/n:')
        if choice=='y' or choice=='Y':
            continue
        else:
            break

def save(lst):                      //存储列表数据
    try:
        stu_txt=open(filename,'a',encoding='utf-8')
    except:
        stu_txt=open(filename,'w',encoding='utf-8')
    for item in lst:
        stu_txt.write(str(item)+'\n')
    stu_txt.close()

(2)输出界面

3、删除学生信息

删除学生信息函数代码部分,此函数主要功能是执行删除操作,输入学号进行查找,查找到学生信息之后,对学生信息进行删除。

(1)功能实现

def delete():                            //删除学生信息功能
    while True:
        student_id=int(input('请输入学生的id:'))
        if student_id:
            if os.path.exists(filename):
                with open(filename,'r',encoding='utf-8') as file:
                    student_old = file.readlines()
            else:
                student_old=[]
            flag=False
            if student_old:
                with open(filename,'w',encoding='utf-8') as files:
                    for item in student_old:
                        d = dict (eval (item))
                        if d['id']!=student_id:
                            files.write(str(d)+'\n')
                        else:
                            flag=True
                    if flag:
                        print (f'学号为{student_id}的学生信息已删除!')
                    else:
                        print (f'没有找到id为{student_id}的学生信息')
            else:
                print('无学生记录')
                break
            show()
            choice = input ('是否继续?y/n:')
            if choice == 'y':
                continue
            else:
                break
def show():                                   //显示文本中的数据
    student_lst=[]
    if os.path.exists(filename):
        with open(filename,'r',encoding='utf-8') as file:
            student=file.readlines()
            for item in student:
                student_lst.append(eval(item))
            if student_lst:
                show_student(student_lst)
    else:
        print('暂未保存学生数据!')

(2)输出界面

4、修改学生信息

修改学生信息函数代码部分,此函数的主要功能是对学生信息进行修改,当输入学号后,查询到学生信息之后,对学生各科成绩进行修改。

(1)功能实现

def modify():                
    show()
    if os.path.exists(filename):
        with open(filename,'r',encoding='utf-8') as file:
            student_lst=file.readlines()
    else:
        return
    student_id=int(input('请输入学生id:'))
    with open(filename,'w',encoding='utf-8') as file1:
        for item in student_lst:
            d = dict (eval (item))
            if d ['id'] == student_id:
                print(f'已经找到id为{student_id}的学生')
                while True:
                    try:
                        d ['name'] = input ('请输入学生姓名:')
                        d ['C语言'] = int (input ('请输入C语言成绩:'))
                        d ['Python'] = int (input ('请输入Python的成绩:'))
                        d ['Java'] = int (input ('请输入Java的成绩:'))
                    except:
                        print('输入的信息有误,重新输入!!')
                    else:
                        break
                file1.write(str(d)+'\n')
                print('修改信息成功!!!!!!!')
            else:
                file1.write(str(d)+'\n')
        switch = input ('是否要修改信息?y/n:')
        if switch == 'y':
            modify()

(2)输出界面

 

5、查找学生信息

查询学生信息函数代码部分,此函数主要功能是查询时分为按学号和按姓名查询两种,若查无此人则输出“l列表中无此学生信息”。

(1)功能实现

def search():                  //定义查找学生信息函数
    search_qurry=[]
    while True:
        id=''
        name=''
        if os.path.exists(filename):
            choice = int (input ('Id查询请按1,名字查询请按2:'))
            if choice == 1:
                id=int(input('请输入学生id:'))
            elif choice==2:
                name=input('请输入学生姓名:')
            else:
                print('输入有误,重新输入!')
                search()
            with open(filename,'r',encoding='utf-8') as file:
                student_lst=file.readlines()
                for item in student_lst:
                    d = dict (eval (item))
                    if id!='':
                        if d['id']==id:
                            search_qurry.append(d)
                    elif name!='':
                        if d['name']==name:
                            search_qurry.append(d)
            show_student(search_qurry)
            search_qurry.clear()
        a=input('是否继续查找?y/n:')
        if a=='y':
            continue
        else:
            break

def show_student(lst):                        //显示学生成绩列表
    if len(lst)==0:
        print('列表中无此学生的信息')
        return
    student_title='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
    print(student_title.format('ID','姓名','C语言成绩','Python成绩','Java成绩','绩点'))
    student_data='{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}'
    for item in lst:
        print(student_data.format(item.get('id'),item.get('name'),item.get('C语言'),item.get('Python'),item.get('Java'),round((int(item.get('C语言'))+int(item.get('Python'))+int(item.get('Java'))-180)/30,2)))
    print ('\n')

(2)输出界面

6、排序

排序学生信息函数功能是对学生信息进行排序,排序方式可选择升序和降序,排序条件可选择按英C语言、Python、Java成绩以及三门成绩折算的绩点进行排序。

(1)功能实现

def sort():
   show()
   if os.path.exists(filename):
       with open(filename,'r',encoding='utf-8')as file:
           student_lst=file.readlines()
       student_new=[]
       for item in student_lst:
           d=dict(eval(item))
           student_new.append(d)
   else:
       return
   switch=input('排序方式(0.升序,1.降序)')
   if switch=='0':
       switch_bool=False
   elif switch=='1':
       switch_bool=True
   else:
       print('输入错误!')
       sort()
   choice=input('请选择排序方式(1.C语言成绩,2.Python成绩,3.Java成绩,4.绩点)')
   if choice=='1':
       student_new.sort(key=lambda x:int(x['C语言']),reverse=switch_bool)
   elif choice=='2':
       student_new.sort (key=lambda x: int (x ['Python']), reverse=switch_bool)
   elif choice=='3':
       student_new.sort (key=lambda x: int (x ['Java']), reverse=switch_bool)
   elif choice=='4':
       student_new.sort (key=lambda x: round((int (x ['C语言'])+int (x ['Python'])+int (x ['Java'])),2), reverse=switch_bool)
   else:
       print('选择错误!重新输入')
       sort()
   show_student(student_new)

(2)输出界面

7、统计学生总人数

统计学生总数函数代码部分,此函数主要是输出信息管理系统存储数据文本文件中有几个学生的信息。

(1)功能实现

def total():
    if os.path.exists(filename):
        with open(filename,'r',encoding='utf-8') as file:
            students=file.readlines()
            if students:
                print('系统内有{}个学生'.format(len(students)))
            else:
                print('系统内无学生记录!')
    else:
        print('暂未保存学生信息!')

(2)输出界面

8、显示所有学生信息

显示学生信息函数代码部分,此函数是将文件存储的学生信息全部显示出来(学号、姓名、C语言成绩、Python成绩、Java成绩、绩点)

(1)功能实现

def show_student(lst):
    if len(lst)==0:
        print('列表中无此学生的信息')
        return
    student_title='{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
    print(student_title.format('ID','姓名','C语言成绩','Python成绩','Java成绩','绩点'))
    student_data='{:^6}\t{:^12}\t{:^8}\t{:^8}\t{:^8}\t{:^8}'
    for item in lst:
        print(student_data.format(item.get('id'),item.get('name'), item.get('C语言'),item.get('Python'),item.get('Java'),round((int(item.get('C语言'))+int(item.get('Python'))+int(item.get('Java'))-180)/30,2)))
    print ('\n')

(2)输出界面

三、项目打包 

项目打包:
安装第三方模块:1,按win+R,输入cmd,打开cmd命令界面,

                                  在线安装模式:pip install Pyinstaller

                              2,执行打包操作      

pyinstaller -F E:\PyhonProject\Chap1\system.py

四、总结

如果有特殊要求,代码复制后可自行更改。相信看完后对Python的知识有更进一步的认识,希望对初学者和小白有一定的基础。谢谢!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

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

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年5月11日
下一篇 2023年5月11日

相关推荐