python编写学生成绩管理系统的逻辑结构及功能实现

目录
  • 学生信息系统
  • 一、功能界面
  • 二 、主函数
  • 三 、学生信息录入功能
  • 四 、学生信息查找功能
  • 五 、删除学生信息
  • 六 、学生信息修改功能
  • 七 、学生成绩排序
  • 八 、 学生人数统计
  • 九 、显示所有学生信息
  • 程序打包

学生信息系统

提示:python编写的学生成绩管理系统,包括8个功能和打包教程

一、功能界面

def menum():
    print('==================student_manger=================')
    print('---------------------功能界面---------------------')
    print('\t\t1.录入学生信息')
    print('\t\t2.查找学生信息')
    print('\t\t3.删除学生信息')
    print('\t\t4.修改学生成绩')
    print('\t\t5.排序')
    print('\t\t6.统计学生总人数')
    print('\t\t7.显示所有学生信息')
    print('\t\t8.显示功能介绍按钮')
    print('\t\t0.退出')
    print('================================================')

二 、主函数

def main():
    menum()
    while True:
        try:
            choice = int(input('请选择你想进行的操作: '))
        except ValueError:
            print('输入的数据存在错误,只能输入0到7的整数!')
            try:
                choice = int(input('请重新输入: '))
            except ValueError:
                print('重复输入错误,退出系统!')
                break
        if choice in [0, 1, 2, 3, 4, 5, 6, 7, 8]:
            if choice == 0:
                answer = input('你确定要退出系统吗?(Y/N): ')
                if answer == 'Y' or answer == 'y':
                    print('谢谢使用!')
                    break
                elif answer == 'N' or answer == 'n':
                    print('即将返回上一步操作!')
                    continue
                else:
                    input('输入错误,即将返回主界面!')
                    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:
                menum()
        else:
            print('你选择的操作无效,请重新输入!:')

三 、学生信息录入功能

逻辑结构图

def insert():
    student_list = []
    id_list = []
    while True:
        id = input('请输入ID: ')
        if not id:
            break
        name = input('请输入姓名:')
        if not name:
            break
        try:
            english = float(input('请输入英语成绩:'))
            math = float(input('请输入数学成绩:'))
            python = float(input('请输入Python成绩:'))
        except ValueError:
            print('数据输入错误!')
            continue
        # 将录入的学生信息存放到字典中
        student = {'id': id, 'name': name, 'english': english, 'math': math, 'Python': python}
        # 将每个学生的信息存放在列表中
        if student['id'] in id_list:                    # student['id'] = value(id)
            print('已存在相同ID:')
            for i in range(len(student_list)):
                if student_list[i][id] == student[id]:  # 输出重复id元素
                    print(student_list[i].items())
                    break
            print('请重新录入!')
        else:
            id_list.append(str(student['id']))
            student_list.append(student)
        # 是否继续添加学生信息
        answer = input('是否继续添加学生信息?(Y/N): ')
        if answer == 'Y' or answer == 'y':
            continue
        elif answer == 'N' or answer == 'n':
            # 存储学生信息
            save(student_list, filename)
            print('学生信息录入完毕!')
            break
        else:
            print('输入错误,即将返回主界面!')
            break

四 、学生信息查找功能

逻辑结构图

代码

def search():
    while True:
        if os.path.exists(filename):
            with open(filename, 'r', encoding = 'utf-8') as s_file:
                student_qurey = s_file.readlines()              # 将学生信息全部取出
                id_list = []
                name_list = []
                for i in student_qurey:
                    d = dict(eval(i))
                    id_list.append(d['id'])                    # 将所有学生的id存放在id_list中
                    name_list.append(d['name'])                # 将所有学生的name存放在id_list中
            try:
                mode = int(input('请选择查询模式: 1.按照ID查询 / 2.按照姓名查询 '))
            except ValueError:
                print('数据类型输入错误!请重新输入!')
            else:
                if mode == 1:                                  # 按照ID查询
                    id = input('请输入学生id: ')
                    if id in id_list:
                        print('已经查找到该名学生:')
                        print('ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:')
                        for item in student_qurey:
                            if dict(eval(item))['id'] == id:
                                p = dict(eval(item))
                                print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t   {4}\t\t   {5}'.format(
                                                 p['id'], p['name'], p['english'], p['math'], p['Python'],
                                                 float(p['english'])+float(p['math'])+float(p['Python'])))
                    else:
                        print('查无此人!')
                elif mode == 2:                               # 按照姓名查询
                    name = input('请输入学生姓名: ')
                    if name in name_list:
                        print('已经查找到该名学生:')
                        print('ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:')
                        for item in student_qurey:
                            if dict(eval(item))['name'] == name:
                                p = dict(eval(item))
                                print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t   {4}\t\t   {5}'.format(
                                    p['id'], p['name'], p['english'], p['math'], p['Python'],
                                    float(p['english']) + float(p['math']) + float(p['Python'])))
                    else:
                        print('查无此人!')
                else:
                    print('输入错误,只能选择1/2两种模式!')
                answer = input('是否继续查询? (Y/N)')
                if answer == 'Y' or answer == 'y':
                    continue
                elif answer == 'N' or answer == 'n':
                    print('正在退出查询..')
                    break
                else:
                    print('输入错误,即将返回主界面!')
                    break
        else:
            print('无学生信息文件!')
            return

五 、删除学生信息

逻辑结构图

代码

def delete():
    while True:
        student_id = 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 wfile:
                    for item in student_old:
                        d = dict(eval(item))        # 转化为字典类型
                        if d['id'] != student_id:
                            wfile.write(str(d)+'\n')
                        else:
                            flag = True
                    if flag:
                        print(f'id为{student_id}的学生信息已被删除!')
                    else:
                        print(f'没有找到id为{student_id}的学生信息!')
            else:
                print('无学生信息')
                break
            show()                  # 显示更新后的文件信息
            answer = input('是否继续删除学生信息?(Y/N): ')
            if answer == 'Y' or answer == 'y':
                continue
            elif answer == 'N' or answer == 'n':
                break
            else:
                print('输入错误,即将返回主界面!')
                break

六 、学生信息修改功能

逻辑结构图

代码

def modify():
    show()
    if os.path.exists(filename):
        with open(filename, 'r', encoding = 'utf-8') as rfile:
            student_old = rfile.readlines()             # 直接将文本文件的内容整行读取到列表中
    else:
        print('学生文件信息不存在!')
    student_id = input('请输入想要修改的学生的ID: ')
    with open(filename, 'w', encoding = 'utf-8') as just_file:  # 判断学生是否在该系统中
        id_list = []
        for i in student_old:
            d = dict(eval(i))
            id_list.append(d['id'])                             # 将所有学生的id存放在id_list中
        if student_id in id_list:                               # 要修改的学生存在时
            for item in student_old:
                e = dict(eval(item))
                if e['id'] == student_id:
                    print('已找到该名学生!')
                    while True:
                        try:
                            e['name'] = input('请输入姓名: ')
                            e['english'] = input('请输入英语成绩: ')
                            e['math'] = input('请输入数学成绩: ')
                            e['Python'] = input('请输入Python成绩: ')
                        except ValueError:
                            print('数据类型输入错误!请重新输入!')
                        else:
                            break  # try...except..else: 输入为出错时,执行else语句
                    just_file.write(str(e) + '\n')
                    print('修改成功!')
                else:
                    just_file.write(str(e) + '\n')
        else:
            answer1 = input('查无此人!,是否执行插入操作?  (Y/N)')
            if answer1 == 'Y' or answer1 == 'y':
                insert()
            else:
                print('结束当前操作')
        answer = input('是否继续修改其余学生信息?(Y/N): ')
        if answer == 'Y' or answer == 'y':
            modify()
        elif answer == 'N' or answer == 'n':
            print('结束修改,即将返回主界面..')
        else:
            print('输入错误,即将返回主界面!')

七 、学生成绩排序

逻辑结构图

代码

def sort():
    student_new = []
    if os.path.exists(filename):
        with open(filename, 'r', encoding = 'utf-8') as sort_file:
            student_list = sort_file.readlines()                    # 无序的学生信息列表
        for item in student_list:
            d = dict(eval(item))
            student_new.append(d)                                   # 列表元素转化为字典
        while True:
            try:
                sort_choice = int(input('请选择排序方式: 0:升序 / 1:降序\t'))
            except ValueError:
                print('输入的数据类型错误,请重新输入')
            else:
                if sort_choice == 0:
                    Flag = False
                    break
                elif sort_choice == 1:
                    Flag = True
                    break
                else:
                    print('输入错误,只能在0/1中选择!')
                    continue
        while True:
            try:
                asc_choice = int(input('请选择按照哪一门成绩进行排序: 英语:0  / 数学:1  / python:2\t\t'))
            except ValueError:
                print('输入的数据类型错误,请重新输入')
            else:
                if asc_choice == 0:
                    student_new.sort(key = lambda x: int(x['english']), reverse = Flag)     # 根据列表中的元素进行排序
                    show()
                    break
                elif asc_choice == 1:
                    student_new.sort(key = lambda x: int(x['math']), reverse = Flag)
                    show()
                    break
                elif asc_choice == 2:
                    student_new.sort(key = lambda x: int(x['Python']), reverse = Flag)
                    show()
                    break
                elif asc_choice == 3:
                    student_new.sort(key = lambda x: int(x['Python'])+int(x['english'])+int(x['math']), reverse = Flag)
                    show()
                    break
                else:
                    print('输入错误,只能在0/1/2中选择!')
                    continue
    else:
        print('学生信息文件不存在!')

八 、 学生人数统计

逻辑结构图

代码

def total():
    nums = 0
    if os.path.exists(filename):
        with open(filename, 'r', encoding = 'utf-8') as t_file:
            len_list = t_file.readlines()
        for i in range(len(len_list)):
            if len_list[i] != '':
                nums += 1
        print('当前学生总人数为: ', nums)
        print('请选择你想进行的下一步操作: ')
    else:
        print('暂无学生信息文件')

九 、显示所有学生信息

逻辑结构图

代码

def show():
    if os.path.exists(filename):
        with open(filename, 'r', encoding = 'utf-8') as show_file:
            student_list = show_file.readlines()
            if student_list:
                print('----全部学生信息如下----')
                print('ID\t\t\t姓名:\t\t英语成绩:\t\t数学成绩:\t\tPython成绩:\t\t总成绩:')
                for item in student_list:
                    p = dict(eval(item))
                    print('{0}\t\t{1}\t\t {2}\t\t {3}\t\t   {4}\t\t   {5}'.format(
                        p['id'], p['name'], p['english'], p['math'], p['Python'],
                        float(p['english']) + float(p['math']) + float(p['Python'])))
            else:
                print('暂无学生信息!')
    else:
        print('暂无学生信息!')

程序打包

在 pycharm 终端 或者 python命令界面, 使用:

pip install PyInstaller

下载python打包程序,下载完成后, 执行以下操作:

pyinstaller —F F:\xxxx\xxx\xx\x.py

其中:

  • -F 代表将程序打包为单个exe文件,
  • F:\xxx\xxx\xx.py 为你的学生成绩管理系统文件的绝对地址

打包完成后,提示信息倒数第二行:Appending语句后面即为exe文件位置,若无特殊显示,则在当前目录父文件下

以上就是python编写学生成绩管理系统实现八个功能示例的详细内容,更多关于python编写学生成绩管理系统的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python学生成绩管理系统简洁版

    讲起学生成绩管理系统,从大一C语言的课程设计开始,到大二的C++课程设计都是这个题,最近在学树莓派,好像树莓派常用Python编程,于是学了一波Python,看了一点基本的语法想写点东西练下手. 开发环境:Ubuntu+Python2.7 代码如下: #coding=utf-8 #保存学生信息 studentList=[] def addInfo(name,addr): tempInfo={} tempInfo['name']=name tempInfo['addr']=addr student

  • python mysql实现学生成绩管理系统

    这学期在学python,感觉想写一个东西来巩固自己的基础,因为大二的时候我看过python,所以还是一共花了几个小时写了一个基于mysql的成绩管理系统,这个东西其实拿不出手,不过就当复习基本了. 1 .首先如果你python中没安装mysql的驱动,还是要打开cmd命令行安装一下才可以使用: pip3 install PyMySQL 2 .创建数据库studentdb,你可以在图形化界面sqlyog中创建: 3 .然后在数据库中创建表st 4 .python连接数据库的核心代码: db = p

  • Python实现学生成绩管理系统

    本文实例为大家分享了Python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 基本功能: 输入并存储学生的信息:通过输入学生的学号.姓名.和分数,然后就可以把数据保存在建立的student文件里面. 打印学生的所有信息:通过一个打印函数就可以把所有的信息打印在屏幕上. 修改学生信息:这个功能首先通过查询功能查询出该学生是否存在,如果存在就对该学生的信息进行修改,如果不存在则返回到主界面. 删除学生信息:该功能是对相应的学生进行删除操作,如果学生存在就查找到进行删除. 按学生成绩进行排

  • python创建学生成绩管理系统

    python学生成绩管理系统创建,供大家参考,具体内容如下 要求编写学生类,班级类,并在电脑运行生成表单,输入一个数字,得到对应的结果. 输出样式 代码如下 学生类 class Student: def __init__(self,sno,name,english,math): self.sno=sno self.name=name self.__english=english self.__math=math @property def english(self): return self._

  • python实现简易版学生成绩管理系统

    300来行python代码实现简易版学生成绩管理系统,供大家参考,具体内容如下 使用链表来实现 class Node(object): def __init__(self, data, pointer): self.data = data self.next = pointer # 创建单链表 class SingleLinkedList(object): def __init__(self): self.head = Node(None, None) self.point = self.hea

  • python编写学生成绩管理系统的逻辑结构及功能实现

    目录 学生信息系统 一.功能界面 二 .主函数 三 .学生信息录入功能 四 .学生信息查找功能 五 .删除学生信息 六 .学生信息修改功能 七 .学生成绩排序 八 . 学生人数统计 九 .显示所有学生信息 程序打包 学生信息系统 提示:python编写的学生成绩管理系统,包括8个功能和打包教程 一.功能界面 def menum(): print('==================student_manger=================') print('----------------

  • C语言编写学生成绩管理系统

    用C语言编写学生成绩管理系统代码,供大家参考,具体内容如下 C语言实现学生成绩管理系统实战教学 https://www.jb51.net/article/154767.htm (1)给出所选课程设计题目以及本题目具体所要完成的功能要求说明. 1.课程设计题目:学生成绩管理系统 2.完成的功能要求: (1).主要实现的功能: 1---学生输入 2---学生插入 3---学生查询(按学号) 4---学生删除 5---学生输出 6---计算每名学生的平均分并输出 7---计算每科的平均分并输出 8--

  • python实现简单的学生成绩管理系统

    本文实例为大家分享了python实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 需求: 代码: import os filename = 'student.txt' def main():     while True:         menu()         choice = int(input("请选择:"))         if choice in [0,1,2,3,4,5,6,7]:             if choice==0:            

  • python超详细实现完整学生成绩管理系统

    目录 学生成绩管理系统简介 源代码 students.txt main.py Login.py db.py MenuPage.py view.py 学生成绩管理系统简介 一个带有登录界面具有增减改查功能的学生成绩管理系统(面向对象思想,利用tkinter库进行制作,利用.txt文件进行存储数据) 源代码 仅供学习参考,最好还是自己多敲多练习(实践是检验真理的唯一标准) students.txt 用于存储数据 main.py from tkinter import * from Login imp

  • 学生成绩管理系统C语言代码实现

    C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct person //定义结构体 { char num[10]; //学号 char name[20]; //姓名 float cyuyan; //C语言成绩 float en; //物理学成绩 float ji; //原子物理成绩

  • C语言实现学生成绩管理系统

    设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能. 功能要求 1.每一条记录包括一个学生的学号.姓名.3门课成绩.平均成绩. 2.输入功能:可以一次完成若干条记录的输入. 3.显示功能:完成全部学生记录的显示. 4.查找功能:完成按姓名查找学生记录,并显示. 5.排序功能:按学生平均成绩进行排序. 6.插入功能:按平均成绩高低插入一条学生记录 7.删除功能:如果输入错误,可以删除学生记录: 8.退出. 代码: #i

  • C语言学生成绩管理系统小设计

    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 一.本设计涉及的重要C语言知识有: 1.单链表的各种操作 2.文件流的操作 3.单链表的排序 二.本设计主要以下几个模块组成 1.学生成绩添加模块 2.学生成绩删除模块 3.学生成绩修改模块 4.学生成绩检索模块 5.学生成绩显示模块(包括成绩排序) 6.学生成绩保存模块 效果图: 本设计大概5.6百行代码左右,通过这个设计,本人感觉C语言熟练了很多, 希望能对像我一样的C语言菜鸟同学会有点帮助,废话少说,咱们上代码

随机推荐