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:
                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()
            else:
                show()
# 菜单
def menu():
    print("====================学生成绩管理系统=========================")
    print("======================功能菜单==============================")
    print("\t\t1、录入学生信息")
    print("\t\t2、查找学生信息")
    print("\t\t3、删除学生信息")
    print("\t\t4、修改学生信息")
    print("\t\t5、排序")
    print("\t\t6、统计学生人数")
    print("\t\t7、显示所有学生信息")
    print("\t\t0、退出系统")
    print("--------------------------------------------------------------")
# 插入
def insert():
    student_list=[]
    while True:
        id = input('请输入ID(如1001):')
        if not id:
            break
        name = input('请输入姓名:')
        if not name:
            break

        try:
            english=int(input("input english grade:"))
            python=int(input("input python grade:"))
            java=int(input("input java grade:"))
        except:
            print("输入成绩无效!重新输入!")
            continue

        student = {'id':id,'name':name,'english':english,'python':python,'java':java}
        student_list.append(student)
        answer = input("是否继续添加信息!?:'y/n'")
        if answer == 'y':
            continue
        else:
            break

    # 调用save函数将其保存在文本当中
    save(student_list)
    print("学生信息录入成功!")
# 保存
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()
# 搜索
def search():
    while True:
        student_name = input("请输入你要查找的学生姓名:")
        if student_name:
            if os.path.exists(filename):
                with open(filename,'r',encoding='utf-8') as rfile:
                    student_old = rfile.readlines()
            else:
                student_old = []

            if student_old:
                d = {}
                flag = False
                for item in student_old:
                    d = dict(eval(item))
                    if d['name'] == student_name:
                        flag = True
                        student_show(d)
                    else:
                        pass
                    
            else:
                print("无学生信息,请添加!")
            if flag:
                print("查询成功")
            else:
                print("查询失败")
        else:
            print("没有输入学生姓名!")
        
        answer = input("请问是否继续查询:y/n")
        if answer == "y":
            continue
        else:
            break
# 展示个人信息
def student_show(dic):
    format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
    print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))

    format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
    print(format_data.format(dic.get('id'),
                            dic.get('name'),
                            dic.get('english'),
                            dic.get('python'),
                            dic.get('java'),
                            int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')),
                            ))
# 删除
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:
                    d={}
                    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"{student_id}已经被删除!")
                    else:
                        print(f"{student_id}没有找到!")
            else:
                print("无学生信息!")
                break

            show()
            answer = input("是否继续删除?y/n")
            if answer == 'y':
                continue
            else:
                break
        else:
            print("请输入要删除的ID:")
            continue
# 修改      
def modify():
    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=[]
            if student_old:
                with open(filename,'w',encoding='utf-8') as wfile:
                    d = {}
                    for item in student_old:
                        d = dict(eval(item))
                        if d['id'] == student_id:
                            answer = input('已经找到该学生信息,是否修改:y/n?')
                            flag = False
                            if answer:
                                d['name']=input("姓名:")
                                d['english']=int(input("english:"))
                                d['python']=int(input("python:"))
                                d['java']=int(input("java:"))
                                wfile.write(str(d)+"\n")
                                flag = True
                            else:
                                wfile.write(str(d)+"\n")
                                break
                        else:
                            wfile.write(str(d)+"\n")
                    if flag:
                        print("修改成功!")
                    else:
                        print("修改失败!")
            else:
                print("无学生信息,请添加")
            answer = input("请问是否继续修改?y/n")
            if answer == "y":
                continue
            else:
                break
        else:
            print("输入错误!")
# 排序           
def sort():
    while True:
        if os.path.exists(filename):
            with open(filename,'r',encoding='utf-8') as file:
                student_old = file.readlines()
            student_new = []
            d={}
            for item in student_old:
                d=dict(eval(item))
                student_new.append(d)
            asc_and_desc = int(input("怎么排序:0 升序  1 降序:"))
            choice = int(input("按照什么排序:1 english  2 python  3 java  0 总成绩:"))
            if choice == 1:
                student_new.sort(key=lambda x:int(x['english']),reverse=asc_and_desc)
            elif choice == 2:
                student_new.sort(key=lambda x:int(x['python']),reverse=asc_and_desc)
            elif choice == 3:  
                student_new.sort(key=lambda x:int(x['java']),reverse=asc_and_desc)
            elif choice == 0:
                student_new.sort(key=lambda x:int(x['english'])+int(x['python'])+int(x['java']),reverse=asc_and_desc)
            else:
                print("输入有误")
                sort()
        else:
            print("无学生信息")
        format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
        print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))

        format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
        for dic in student_new:
            print(format_data.format(dic.get('id'),
                                    dic.get('name'),
                                    dic.get('english'),
                                    dic.get('python'),
                                    dic.get('java'),
                                    int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')),
                                    ))
        answer = input("请问是否继续排序?y/n")
        if answer == "y":
            continue
        else:
            break
# 总人数
def total():
    if os.path.exists(filename):
        with open(filename,'r',encoding='utf-8') as file:
            student_old = file.readlines()
        print('一共有',len(student_old),'名学生!')
    else:
        print("无人员资料")
    import msvcrt
    msvcrt.getch()
# 展示
def show():
    if os.path.exists(filename):
        with open(filename,'r',encoding='utf-8') as file:
            student_old = file.readlines()
        d = {}
        students = []
        for item in student_old:
            d = dict(eval(item))
            students.append(d)
    else:
        print("没有信息!")
    if len(students):
        format_title = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
        print(format_title.format('ID','姓名','英语成绩','python成绩','java成绩','总成绩'))

        format_data = '{:^6}\t{:^12}\t{:^8}\t{:^10}\t{:^10}\t{:^8}'
        for dic in students:
            print(format_data.format(dic.get('id'),
                                    dic.get('name'),
                                    dic.get('english'),
                                    dic.get('python'),
                                    dic.get('java'),
                                    int(dic.get('english'))+int(dic.get('python'))+int(dic.get('java')),
                                    ))
    else:
        print("无人员信息!")
    import msvcrt
    msvcrt.getch()

if __name__ == '__main__':
    main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(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实现GUI学生信息管理系统

    本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码,供大家参考,具体内容如下 项目环境:  软件环境: OS:RedHat6.3                   Lib:Pygtk                   Language:Python                   Support tool:Glade3 项目简述: ①Glade3设计用户的登录窗口,功能主窗口 ②通过Gtk.Builder初始化,载入界面 ③在Mysql.py文件中实现Python操作数

  • 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实现学生成绩管理系统

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

  • Python中创建表格的方法你知道吗

    目录 1. 引言 2. 准备工作 3. 举个栗子 3.1 使用list生成表格 3.2 使用dict生成表格 3.3 增加索引列 3.4 缺失值处理 4. 总结 1. 引言 如果能够将我们的无序数据快速组织成更易读的格式,对于数据分析非常有帮助. Python 提供了将某些表格数据类型轻松转换为格式良好的纯文本表格的能力,这就是 tabulate 库. 2. 准备工作 安装tabulate库安装tabulate库非常容易,使用pip即可安装,代码如下: pip install tabulate

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

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

  • python实现学生信息管理系统

    继上篇博客Python实现简易通讯录后,我就想写一个复杂点的学生信息管理系统,这次实现的功能有 1.学生信息的录入管理: 2.学生选课操作: 3.学生选课情况查询: 这次仍然用到sqlite3模块.虽然看着挺简单,但是也踩了不少坑,毕竟刚开始实战,有些细节的还需要多多磨炼啊! 好了,废话不多说,直接上代码,欢迎感兴趣的朋友私信讨论~~~ #-*- coding:utf-8 -*- import sqlite3 #打开本地数据库用于存储用户信息 conn = sqlite3.connect('st

  • python学生信息管理系统(完整版)

    本文是基于上一篇(python项目:学生信息管理系统(初版) )进行了完善,并添加了新的功能. 主要包括有: 完善部分:输入错误:无数据查询等异常错误 新的功能:文件的操作:文件的读写,其中重点是对文本字符串的详细解析(关于整个解析拆解和重组详见代码,以及添加了注释) 学生信息管理系统(完整版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----------------------+ | 1)添加学生信息 | | 2)显示所有学生的信息 | | 3)删除学生信息 | | 4)修改学生

  • 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实现学生成绩管理系统的具体代码,供大家参考,具体内容如下 需求: 代码: 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实现简单的学生成绩管理系统

    目录 基本功能: 实现效果: 制作技巧 1.定义变量 2.读取学生成绩信息 3.循环等待操作指令并执行 4.编写操作指令执行函数 (1)显示学生成绩信息函数 (2)新建学生成绩信息函数 (3)查询学生成绩信息函数 (4)删除学生成绩信息函数 (5)修改学生成绩信息函数 5.保存学生成绩信息函数 完整源代码 总结 基本功能: 能够实现学生成绩相关信息的输入.输出.查找.删除.修改等功能:(使用数据库对数据进行存取) 输入并存储学生的信息:通过输入学生的学号.姓名.和分数,然后就可以把数据保存在建立

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

    本文实例为大家分享了C++实现简单学生成绩管理系统的具体代码,供大家参考,具体内容如下 manage.h #include <iostream> #include <fstream> #include <string> using namespace std; //学生 template <class T> class Student {     template <class T>     friend class StudentManage;

  • Python实现简单的学生信息管理系统

    本文实例为大家分享了Python实现学生信息管理系统的具体代码,供大家参考,具体内容如下 要求描述: 学生的信息包括:学号,姓名,年龄,性别,出生日期,地址,电话,E-mail等等.试设计一个学生信息管理系统,使之能提供一下基本功能: 系统以菜单方式工作 学生信息录入功能(学生信息用文件保存)--- 输入 学生信息浏览功能 --- 输出 查询.排序功能 --- 算法 1. 按学号查询2. 按姓名查询 学生信息的删除与修改(可选项) 基本思路同之前写的那篇图书借阅系统,在此就不多赘述. 直接上代码

  • C语言利用链表实现学生成绩管理系统

    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用. 链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点. 链表都有一个头指针,一般以head来表示,存放的是一个地址.链表中的节点分为两类,头结点和一般节点,头结点是没有数据域的.链表中每个节点都分为两部分,一个数据域,一个是指针域. 说到这里你应该就明白了,链表就如同车链子一样,head指向第一个元素:第一个元素又指向第二个元素:……,直到最后一

  • 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

随机推荐