用Python编写学生成绩管理系统

大家好,我是一名刚进入大学的python新秀,初次来到博客,希望通过博客想大家分享一下自己的学习成果,并记录自己的在大数据方向的经历,希望在这里可以向各位大佬学到更多的知识,以下是我用python写的学生成绩管理系统的一个小程序,希望大家喜欢,欢迎大家提出意见,谢谢!
所用知识
1.python模块的引用
2.自定义函数
3.循环及循环嵌套
4.列表的增删改
代码展示
在讲解之前,先看看结果吧!
在这里插入图片描述

def show_menu():
    print("")
    print("*" * 50)
    print("请按下以下数字进行操作:")
    print("")
    print("1.录入")
    print("2.显示")
    print("3.搜索")
    print("4.删除")
    print("0.退出")
    print("*" * 50)

打印表头:输入对应的数字会有对应的操作
-1.录入学生姓名及成绩
-2.展示全部学生的姓名及成绩
-3.查找学生的成绩
-4.删除学生姓名及成绩
-0.退出系统

录入学生姓名及成绩
开始打印表头(为了美观),进入循环提示输入学生姓名并判断姓名是否符合要求,提示如果要退出就请按q退出,再提示输入学生成绩并判断是否在0-100之间,然后将输入的学生姓名及成绩以字典的形式加入到列表中,输入完成后,又循环到刚开始的输入成绩,直到输入退出条件即可退出。

def enter_grade():
    """录入成绩"""
    print("-" * 50)
    print("录入成绩")
    while True:
        # 提示输入学生姓名
        name_str = input("请输入学生姓名,输入q即可退出:")
        if name_str == "q":
            break
        if len(name_str) > 4:
            print("输入有误,请重新输入")
            continue
        # ---------------------姓名处理结束------------------------------
        # 提示输入学生成绩
        while True:
            grade_str = input("请输入学生成绩:")
            if 0 <= int(grade_str) <= 100:
                grade_list.append({name_str: grade_str})
                print("输入%s的成绩成功" % name_str)
                break
            else:
                print("请重写输入成绩范围为0-100")

            # ---------------------成绩录入结束--------------------

显示成绩单
同样的在开始打印表头,首先判断刚刚加入的列表里有无数据,若无数据,提示用户没有任何记录,若有数据,则打印姓名成绩的表格,再遍历打印列表,由于前面讲到,列表里是以字典形式存在的,所以打印出来是整合好的学生信息,所以还需要在循环遍历打印字典,当然要注意对齐,所以需要格式化输出。我这里使用的是format的方法输出结果的。

def show_all():
    """显示成绩单"""
    print("*" * 50)
    print("显示成绩单")
    if len(grade_list) == 0:
        print("当前没有任何的成绩记录")
        return
    if len(grade_list) != 0:
        print("")
        print("*" * 50)
        print('{:^10}{:^10}'.format("姓名", "成绩"))
        # 遍历学生列表依次输出顺序信息
        for stu in grade_list:
            for key, value in stu.items():
                print('{:^10}{:^10}'.format(key, value))

搜索名字
一样的,首先打印表头,提示输入要搜索的姓名,然后跟打印成绩单一样的方法,遍历学生列表,再循环嵌套搜索输入的学生姓名,在打印,如果列表了没有要查找的学生成绩,则提示用户没有找到。

ef search():
    """搜索名字"""
    print("-" * 50)
    print("搜索名字")
    find_name = input("请输入学生的姓名:")
    # 遍历学生列表并找到该学生
    for stu in grade_list:
        if find_name in stu:
            print('{:^10}{:^10}'.format("姓名", "成绩"))
            print('{:^10}{:^10}'.format(find_name, stu[find_name]))
            break
    else:
        print("抱歉没有找到%s的成绩" % find_name)

删除某学生的成绩
一样的步骤,打印表头,提示输入学生姓名,再循环遍历学生列表,然后循环嵌套找到输入的学生姓名,再用用列表删除的方法删除,列表删除元素有很多种方法,我这里用的remove的方法,删除完成后是提示用户删除成功,如果列表里没有该学生,则提示用户没有找到该学生。

def delete():
    """删除某学生成绩"""
    a = True
    print("-" * 50)
    find_name = input("请输入学生姓名:")
    # 遍历学生列表并找到该学生
    for stu in grade_list:
        if find_name in stu:
            grade_list.remove(stu)
            print("删除%s成功" % find_name)
            a = False
            break
    if a:
        print("抱歉没有找到%s" % find_name)

之前的函数是我在另外一个文件里命名的模块,我后面会引用这个模块
模块的引用
首先导入刚刚写的模块,在循环内提示用户输入要操作的选项,对应的数字会引用对应的函数,当然还需要判断用户是否输入正确,最后还要加上循环退出条件,不然会是死循环。

import grade_tools

while True:
    grade_tools.show_menu()
    action_str = input("请选择希望执行的操作:")
    print("您选择的操作是%s" % action_str)
    if action_str in ["1", "2", "3", "4", "5", "0"]:
        if action_str == "1":
            grade_tools.enter_grade()
            # 录入成绩
        elif action_str == "2":
            grade_tools.show_all()
            # 显示全部成绩
        elif action_str == "3":
            grade_tools.search()
            # 查询成绩
        elif action_str == "4":
            grade_tools.delete()
            # 删除
        elif action_str == "0":
            print("您已成功退出")
            break
    else:
        print("您输入的不正确,请重新选择")

到这里我的代码就已经结束了,但我学习还没有结束,今后我会不定期更新我的学习成果,同时欢迎各位大佬指点指点,毕竟我还是萌新。

Python编写一个学生成绩管理系统程序,需要处理文件读取操作,可以按照以下步骤进行: 1. 设计数据结构:首先需要设计一个合适的数据结构来存储学生信息和成绩。这通常可以通过字典或类来实现。 2. 文件读取:使用Python的文件操作函数,如`open`和`read`,来读取存储学生信息的文件。 3. 数据解析:将读取的文件内容解析成Python可操作的数据结构(例如列表或字典)。 4. 功能实现:实现添加、删除、修改和查询学生信息及成绩的功能。 5. 文件写入:将新后的学生信息和成绩写回文件,以持久化存储。 下面是一个简单的示例代码,展示了如何使用Python读取包含学生信息的文件: ```python # 假设文件存储格式为:学生ID,姓名,成绩 file_path = 'students.txt' def read_students_from_file(file_path): students = [] try: with open(file_path, 'r', encoding='utf-8') as file: for line in file: student_id, name, score = line.strip().split(',') students.append({'student_id': student_id, 'name': name, 'score': score}) except FileNotFoundError: print(f'文件未找到: {file_path}') except Exception as e: print(f'读取文件时出错: {e}') return students # 读取学生数据 students = read_students_from_file(file_path) print(students) ``` 在这个例子中,我们定义了一个函数`read_students_from_file`,它接受一个文件路径作为参数,读取该文件,并将每行学生信息解析为一个字典,然后将这些字典存储在列表中返回。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值