Python构建学工管理系统:教师与学生登录、信息管理与成绩处理

scores.txt 分组取TopN练习数据。分组取TopN练习数据。分组取TopN练习数据。 立即下载

这个代码实现了一个基本的学工管理系统,包括教师和学生的登录、管理学生信息、打分以及查看信息等功能。

1. 引言

本系统旨在实现一个简易的学工管理平台,主要面向教师和学生两类用户。教师可以通过系统添加学生信息、为学生打分,而学生则可以查看个人信息和总成绩。系统通过文本文件存储学生和教师的账户信息以及成绩数据,基于命令行交互界面,简单易用。
在本篇博客中,我们将详细介绍该学工管理系统的设计和实现过程。系统的功能模块主要包括教师登录、学生登录、学生信息管理、成绩录入和查看等功能。通过这篇博客,读者不仅可以了解如何使用Python进行文件管理和用户交互设计,还能掌握一些常见的Python编程技巧,如如何使用getpass模块隐藏密码输入、如何处理文件读取异常等。

2. 系统功能概述

2.1 系统功能概述

系统主要分为两个角色:教师和学生,分别拥有不同的操作权限和功能。

2.2 教师端功能

教师端功能主要包括学生信息管理和成绩管理,具体功能如下:

  • 教师登录:
    • 教师首先需要输入用户名和密码,通过身份验证后才能访问教师端功能。
    • 登录验证是通过比对存储在文件中的教师账户信息完成的,确保系统安全性。
  • 添加学生:
    • 教师可以通过系统添加新学生的基本信息,包括学生的学号、姓名和密码。
    • 学生信息会被存储在student_info.txt文件中,账户信息则保存在student_accounts.txt文件中。
  • 给学生打分:
    • 教师可以为学生输入成绩。系统会首先检查该学生是否已经有了成绩记录。
    • 如果学生已有成绩,系统会显示原成绩,并询问是否更新;如果没有成绩,教师可以直接为学生录入新的成绩。
    • 成绩数据会被保存到student_scores.txt文件中,确保每个学生的成绩能够持久化存储。

2.3 学生端功能

学生端功能主要集中在个人信息查看和成绩查询,具体功能如下:

  • 学生登录:
    • 学生通过输入学号和密码登录,系统会验证输入的学号和密码是否匹配存储的账户信息,确保登录的安全性。
  • 查看个人信息:
    • 学生登录后,可以查看自己的基本信息(如学号、姓名)。这些信息存储在student_info.txt文件中。
  • 查看总成绩:
    • 学生还可以查询自己的总成绩。系统会读取student_scores.txt文件,显示该学生的成绩记录。

2.4 其他功能

  • 输入密码时隐藏:
    • 无论是教师还是学生登录时,密码输入均使用getpass.getpass()函数实现,确保输入的密码不会在终端显示,增加系统的安全性。
  • 文件存储与异常处理:
    • 所有学生和教师的信息、成绩数据都存储在文本文件中。系统会定期检查文件是否存在,并进行适当的错误处理,比如文件不存在或文件编码错误等。

2.5 系统界面与用户交互

  • 命令行界面:
    • 本系统通过命令行与用户进行交互。教师和学生通过简单的数字选择来进入各自的操作界面。
    • 系统的界面会定期清屏,并根据用户的选择进行相应的操作,操作结束后返回主界面或退出系统。

3. 系统界面与用户交互

3.1 选择用户登录页面

登录页面是系统的入口,用户首先需要通过登录界面验证身份才能进入系统。系统支持教师和学生两种角色登录,登录时需要输入用户名和密码。登录验证成功后,用户将进入相应的操作页面。

代码实现:

def main():
    while True:
        clear_screen()  # 清空屏幕
        print("欢迎使用学工管理系统")
        print("1. 教师登录")
        print("2. 学生登录")
        print("3. 退出系统")

        choice = input("请输入你的选择 (1/2/3): ")

        if choice == '1':
            teacher_login()
        elif choice == '2':
            student_login()
        elif choice == '3':
            print("退出系统...")
            break
        else:
            print("无效选择,请重新输入!")  
			input("按任意键返回...")
  • 功能描述:
    • 系统首先显示欢迎信息和三个选择项:教师登录、学生登录、退出系统。
    • 用户输入1、2或3进行选择。如果输入无效,系统会提示重新输入。

3.2 教师登录页面

教师登录页面是系统的一个重要模块。教师需要输入用户名和密码进行身份验证。验证成功后,系统将跳转到教师的操作页面。

代码实现:

def teacher_login():
    clear_screen()
    print("教师登录界面")
    username = input("请输入教师用户名: ")
    password = getpass.getpass("请输入教师密码: ")
    if validate_account('teacher_accounts.txt', username, password):
        print(f"教师 {username} 登录成功!")
        teacher_options(username)
    else:
        print("教师用户名或密码错误!")
        input("按任意键返回主界面...")
  • 功能描述:
    • 教师登录界面会提示教师输入用户名和密码。
    • 密码输入时使用getpass.getpass()函数隐藏密码。
    • 输入的用户名和密码将与保存在teacher_accounts.txt文件中的数据进行比对,若匹配成功,登录成功并跳转到教师操作界面;若验证失败,提示错误并返回登录界面。

3.2 学生登录页面

学生登录界面与教师登录类似,学生需要输入学号和密码进行身份验证。验证通过后,学生将进入学生操作界面。

代码实现:

def student_login():
    clear_screen()
    print("学生登录界面")
    student_id = input("请输入学号: ")
    password = getpass.getpass("请输入学生密码: ")
    if validate_account('student_accounts.txt', student_id, password):
        print(f"学生 {student_id} 登录成功!")
        student_options(student_id)
    else:
        print("学号或密码错误!")
        input("按任意键返回主界面...")
  • 功能描述:
    • 学生登录界面会提示学生输入学号和密码。
    • 密码输入时同样使用getpass.getpass()函数进行隐藏。
    • 输入的学号和密码将与保存在student_accounts.txt文件中的数据进行比对,若匹配成功,登录成功并跳转到学生操作界面;若验证失败,提示错误并返回登录界面。

3.4 教师操作选择页面

登录成功后,教师将看到一个操作选择页面。在这里,教师可以选择添加学生、给学生打分或返回主界面。

代码实现:

def teacher_options(teacher_username):
    while True:
        clear_screen()
        print(f"欢迎 {teacher_username} 教师,选择操作:")
        print("1. 添加学生")
        print("2. 给学生打分")
        print("3. 返回主界面")

        choice = input("请输入你的选择 (1/2/3): ")

        if choice == '1':
            add_student()
        elif choice == '2':
            grade_student()
        elif choice == '3':
            break
        else:
            print("无效选择,请重新输入!")
            input("按任意键返回...")
  • 功能描述:
    • 显示教师操作选择界面,提供三项操作:添加学生、给学生打分和返回主界面。
    • 用户输入选择(1、2或3),系统根据选择调用相应的函数。如果输入无效,系统会提示重新输入。

3.5 学生操作选择页面

登录成功后,学生将看到一个操作选择页面。学生可以选择查看个人信息、查看成绩或返回主界面。

代码实现:

def student_options(student_id):
    while True:
        clear_screen()
        print(f"欢迎学生 {student_id},选择操作:")
        print("1. 查看个人信息")
        print("2. 查看总成绩")
        print("3. 返回主界面")

        choice = input("请输入你的选择 (1/2/3): ")

        if choice == '1':
            view_student_info(student_id)
        elif choice == '2':
            view_student_scores(student_id)
        elif choice == '3':
            break
        else:
            print("无效选择,请重新输入!")
            input("按任意键返回...")
  • 功能描述:
    • 显示学生操作选择界面,提供三项操作:查看个人信息、查看成绩和返回主界面。
    • 学生输入选择(1、2或3),系统根据选择调用相应的函数。如果输入无效,系统会提示重新输入。

3.6 清屏函数

为了提高用户体验,在每个操作界面或登录界面之后清空屏幕,使得界面更加清晰、整洁,系统使用了一个clear_screen()函数来清屏。

代码实现:

import os

def clear_screen():
    """清屏函数,适应Windows和Unix系统"""
    os.system('cls' if os.name == 'nt' else 'clear')
  • 功能描述:
    • clear_screen()函数用于清空屏幕。在Windows系统中,使用cls命令清空屏幕;在Unix系统(如Linux或Mac)中,使用clear命令清空屏幕。
    • 该函数在每次进入新界面时都会被调用,确保界面不会混乱。

4. 项目结构与文件设计

在本系统中,所有的数据(如账户信息、学生信息和成绩)都通过文本文件存储。

4.1 项目目录结构

├── teacher_accounts.txt      # 存储教师账户信息(用户名、密码)
├── student_accounts.txt      # 存储学生账户信息(学号、密码)
├── student_info.txt         # 存储学生个人信息(学号、姓名)
├── student_scores.txt       # 存储学生成绩信息(学号、成绩)
└── main.py                  # 学工管理系统主程序

4.2 文件设计与功能说明

每个文件的作用和存储内容如下:

  • teacher_accounts.txt
    该文件存储所有教师的账户信息。每一行包含一个教师的用户名和密码,字段之间用空格隔开。教师通过这个文件进行登录验证。

    示例内容:

    teacher1 password123
    teacher2 pass456
    
  • student_accounts.txt
    该文件存储所有学生的账户信息。每一行包含一个学生的学号和密码,字段之间用空格隔开。学生通过这个文件进行登录验证。

    示例内容:

    1001 studentpass1
    1002 studentpass2
    
  • student_info.txt
    该文件存储所有学生的个人信息,包括学号和姓名。每一行包含一个学生的学号和姓名,字段之间用空格隔开。教师可以通过这个文件添加新的学生信息,学生可以通过系统查看自己的个人信息。

    示例内容:

    1001 张三
    1002 李四
    
  • student_scores.txt
    该文件存储学生的成绩信息。每一行包含一个学生的学号和成绩,字段之间用空格隔开。教师可以通过系统为学生打分,更新成绩时会直接修改该文件。学生通过系统查看自己的总成绩。

    示例内容:

    2021001 88
    2021002 92
    

5. 登录系统设计

5.1 功能需求

登录系统主要有以下几个功能需求:

  • 用户身份验证:

    • 教师和学生各自拥有独立的账户,教师和学生通过输入用户名和密码进行登录。
    • 系统会验证输入的用户名和密码是否匹配存储在相应文件中的账户信息。
    • 如果登录信息正确,系统会根据用户角色提供不同的功能界面。
    • 如果登录信息错误,系统会提示用户并允许重新输入。
  • 密码安全性:

    • 密码输入时会被隐藏为星号(*),以保护用户隐私。
  • 登录失败处理:

    • 如果用户输入错误的用户名或密码,系统会给出提示,并要求用户重新尝试登录。
    • 若连续多次登录失败,系统可以考虑增加限制(如锁定账户或暂停登录尝试),但在当前系统中,我只处理了基本的错误提示。

5.2 工作流程

登录系统的基本工作流程如下:

  1. 主界面选择:用户在登录界面看到三个选项:

      1. 教师登录
      1. 学生登录
      1. 退出系统
  2. 教师登录:

    • 用户选择“1”进入教师登录界面。
    • 系统提示教师输入用户名和密码。
    • 系统验证用户名和密码是否匹配teacher_accounts.txt中的记录。
    • 如果验证通过,教师成功登录,进入教师功能界面;否则,显示登录失败信息,并返回主界面。
  3. 学生登录:

    • 用户选择“2”进入学生登录界面。
    • 系统提示学生输入学号和密码。
    • 系统验证学号和密码是否匹配student_accounts.txt中的记录。
    • 如果验证通过,学生成功登录,进入学生功能界面;否则,显示登录失败信息,并返回主界面。
  4. 退出系统:

    • 用户选择“3”退出系统,程序结束。

6. 教师管理功能实现

教师管理功能实现

在学工管理系统中,教师管理功能是核心模块之一,主要用于管理学生信息和为学生打分。教师通过登录系统后,可以执行以下操作:

  • 添加学生信息:教师可以将新的学生信息(如学号、姓名、密码)添加到系统中。
  • 为学生打分:教师可以为已存在的学生添加或更新成绩。
  • 查询学生成绩:虽然查询成绩功能主要由学生执行,但教师也可以在后台查看学生成绩。

接下来,将详细介绍教师管理功能的实现,包括各个子功能的设计与实现细节。

6.1 添加学生信息

教师登录成功后,可以选择“添加学生”功能。系统会提示教师输入学生的学号、姓名和密码,然后将这些信息存储到相应的文件中。学生账户信息存储在student_accounts.txt文件中,而学生的个人信息(如姓名)存储在student_info.txt文件中。

功能实现步骤:

  1. 获取教师输入的学生学号、姓名和密码。
  2. 将学生的学号和密码存储到student_accounts.txt文件中。
  3. 将学生的学号和姓名存储到student_info.txt文件中。
  4. 显示操作成功的提示信息。
def add_student():
    clear_screen()
    print("添加学生信息")
    student_id = input("请输入学生学号: ")
    name = input("请输入学生姓名: ")
    password = input("请输入学生密码: ")

    # 将学生信息添加到 student_accounts.txt
    with open('student_accounts.txt', 'a') as file:
        file.writelines(f"{student_id} {password}\n")

    # 将学生信息添加到 student_info.txt
    with open('student_info.txt', 'a') as file:
        file.writelines(f"{student_id} {name}\n")

    print(f"学生 {name} ({student_id}) 添加成功!")
    input("按任意键返回教师界面...")
  • 输入检查:在实际开发中,可以增加对输入信息的有效性检查,例如确保学号不重复、密码符合一定的复杂度要求等。

6.2 为学生打分

教师登录后,可以选择“给学生打分”功能。系统会提示教师输入学生学号,并检查该学生是否已经存在。如果学生存在,系统会进一步检查该学生是否已有成绩。若学生已有成绩,教师可以选择是否更新成绩;若没有成绩,教师可以直接为学生打分。

功能实现步骤:

  1. 获取教师输入的学生学号。
  2. 检查学生是否存在。
  3. 如果学生存在,检查该学生是否已有成绩。
  4. 如果有成绩,提示教师是否更新成绩;如果没有成绩,允许教师输入新成绩。
  5. 更新或添加成绩到student_scores.txt文件。
def grade_student():
    clear_screen()
    print("给学生打分")
    student_id = input("请输入学生学号: ")

    # 检查学生是否存在
    if not check_student_exists(student_id):
        print(f"学生 {student_id} 不存在!")
        input("按任意键返回教师界面...")
        return

    # 检查学生是否已有分数
    old_score = get_existing_score(student_id)

    if old_score is not None:
        print(f"学生 {student_id} 的旧成绩为: {old_score}")
        update = input("是否需要更新成绩? (y/n): ").strip().lower()
        if update == 'n':
            print("未更新成绩。")
            input("按任意键返回教师界面...")
            return
        else:
            # 更新成绩
            new_score = input("请输入新的成绩: ")
            update_score_in_file(student_id, new_score)
            print(f"学生 {student_id} 的成绩已更新为: {new_score}")
            input("按任意键返回教师界面...")
            return
    else:
        # 如果没有成绩,直接输入新成绩并添加到文件
        new_score = input("请输入学生的成绩: ")
        add_score_to_file(student_id, new_score)
        print(f"学生 {student_id} 的成绩已添加为: {new_score}")
        input("按任意键返回教师界面...")
  • 检查学生是否存在:首先,系统会通过check_student_exists()函数检查该学生是否已经存在于student_info.txt中。
def check_student_exists(student_id):
    """检查学生是否存在于学生信息文件中"""
    try:
        with open('student_info.txt', 'r') as file:
            for line in file:
                stored_id, name = line.strip().split()
                if student_id == stored_id:
                    return True  # 找到该学生
        return False  # 没有找到该学生
    except FileNotFoundError:
        print("学生信息文件未找到!")
        return False
    except UnicodeDecodeError:
        print("文件编码错误!请确保文件是GBK编码。")
        return False
  • 获取学生成绩:通过get_existing_score()函数,系统会检查该学生是否已有成绩,并返回成绩(如果存在)。如果没有成绩,返回None。
def get_existing_score(student_id):
    """检查学生是否已有分数"""
    try:
        with open('student_scores.txt', 'r') as file:
            for line in file:
                stored_id, score = line.strip().split()
                if student_id == stored_id:
                    return score
        return None  # 如果没有找到该学生的成绩,则返回None
    except FileNotFoundError:
        print("成绩文件未找到!")
        return None
    except UnicodeDecodeError:
        print("文件编码错误!请确保文件是GBK编码。")
        return None
  • 更新成绩:如果学生已有成绩,教师可以选择是否更新成绩。通过update_score_in_file()函数,系统会更新student_scores.txt文件中的成绩。
def update_score_in_file(student_id, new_score):
    """更新文件中已有成绩"""
    try:
        # 读取文件内容
        with open('student_scores.txt', 'r') as file:
            lines = file.readlines()

        # 更新学生成绩
        with open('student_scores.txt', 'w') as file:
            for line in lines:
                stored_id, score = line.strip().split()
                if student_id == stored_id:
                    file.writelines(f"{student_id} {new_score}\n")  # 更新成绩
                else:
                    file.writelines(line)  # 保持其他行不变
    except FileNotFoundError:
        print("成绩文件未找到!")
    except UnicodeDecodeError:
        print("文件编码错误!请确保文件是GBK编码。")
  • 添加成绩:如果学生没有成绩,教师可以直接为学生添加成绩,通过add_score_to_file()函数,将成绩写入student_scores.txt文件。
def add_score_to_file(student_id, score):
    """将新成绩添加到文件"""
    try:
        with open('student_scores.txt', 'a') as file:
            file.writelines(f"{student_id} {score}\n")
    except FileNotFoundError:
        print("成绩文件未找到!")
    except UnicodeDecodeError:
        print("文件编码错误!请确保文件是GBK编码。")

7. 学生功能实现

学生功能实现

在学工管理系统中,学生功能是另一个关键模块,主要提供给学生查看个人信息和成绩的功能。学生通过登录后,能够执行以下操作:

  • 查看个人信息:学生可以查看自己的基本信息,如学号和姓名。
  • 查看总成绩:学生可以查看自己当前的成绩。

下面将详细介绍学生功能的实现,涵盖功能模块的设计与实现细节。

7.1 查看个人信息

学生登录成功后,可以选择“查看个人信息”功能,系统会根据学生的学号从student_info.txt文件中查找并显示学生的姓名和学号。

功能实现步骤:

  1. 获取学生输入的学号。
  2. 从student_info.txt文件中查找该学生的基本信息(学号、姓名)。
  3. 如果找到了学生信息,则显示给学生;如果未找到,提示学生信息不存在。
def view_student_info(student_id):
    clear_screen()
    try:
        with open('student_info.txt', 'r', encoding='gbk') as file:
            for line in file:
                stored_id, name = line.strip().split()
                if student_id == stored_id:
                    print(f"学生 {student_id} 的信息:姓名: {name}")
                    break
            else:
                print("未找到该学生的信息!")
    except FileNotFoundError:
        print("学生信息文件未找到!")
    except UnicodeDecodeError:
        print("文件编码错误!请确保文件是GBK编码。")
    input("按任意键返回学生界面...")
  • 文件读取:该功能会打开student_info.txt文件,并逐行读取。每一行包含一个学生的学号和姓名,格式为:学号 姓名。如果找到了与输入学号匹配的学生,便会显示其姓名,否则提示学生未找到。

7.2 查看总成绩

学生还可以选择“查看总成绩”功能,系统将从student_scores.txt文件中查找该学生的成绩。如果学生存在成绩记录,系统会显示该成绩;如果学生没有成绩记录,则提示成绩未找到。

功能实现步骤:

  1. 获取学生输入的学号。
  2. 从student_scores.txt文件中查找该学生的成绩。
  3. 如果找到了成绩,则显示给学生;如果未找到,提示成绩不存在。
def view_student_scores(student_id):
    clear_screen()
    try:
        with open('student_scores.txt', 'r') as file:
            for line in file:
                stored_id, score = line.strip().split()
                if student_id == stored_id:
                    print(f"学生 {student_id} 的总成绩: {score}")
                    break
            else:
                print("未找到该学生的成绩!")
    except FileNotFoundError:
        print("成绩文件未找到!")
    input("按任意键返回学生界面...")
  • 文件读取:该功能会打开student_scores.txt文件,逐行读取每个学生的成绩记录,格式为:学号 成绩。如果找到了与输入学号匹配的成绩,便会显示该成绩;如果找不到,则提示成绩未找到。

8. 系统测试

8.1 主界面

界面
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
错误输入
Pasted image 20241114104900

8.2 教师操作

8.2.1 登录

登录成功
Pasted image 20241114104024
登录失败
Pasted image 20241114104006

8.2.2 添加学生

Pasted image 20241114104153

8.2.3 给学生打分

学生不存在
Pasted image 20241114104229
没有打分记录
Pasted image 20241114104303
更新学生分数
Pasted image 20241114104329

8.3 学生

8.3.1 登录

登录成功
Pasted image 20241114104443
登录失败
Pasted image 20241114104415

8.3.2 查看个人信息

Pasted image 20241114104525

8.3.3 查看总成绩

存在成绩
Pasted image 20241114104550
不存在成绩
Pasted image 20241114104656

9. 附录:完整代码

import os  
import getpass  
  
def clear_screen():  
    # 清屏函数,适应Windows和Unix系统  
    os.system('cls' if os.name == 'nt' else 'clear')  
  
  
def main():  
    while True:  
        clear_screen()  # 清空屏幕  
        print("欢迎使用学工管理系统")  
        print("1. 教师登录")  
        print("2. 学生登录")  
        print("3. 退出系统")  
  
        choice = input("请输入你的选择 (1/2/3): ")  
  
        if choice == '1':  
            teacher_login()  
        elif choice == '2':  
            student_login()  
        elif choice == '3':  
            print("退出系统...")  
            break  
        else:  
            print("无效选择,请重新输入!")  
			input("按任意键返回...")  
  
  
def teacher_login():  
    clear_screen()  
    print("教师登录界面")  
    username = input("请输入教师用户名: ")  
    password = getpass.getpass("请输入教师密码: ")  
    if validate_account('teacher_accounts.txt', username, password):  
        print(f"教师 {username} 登录成功!")  
        teacher_options(username)  
    else:  
        print("教师用户名或密码错误!")  
        input("按任意键返回主界面...")  
  
  
def student_login():  
    clear_screen()  
    print("学生登录界面")  
    student_id = input("请输入学号: ")  
    password = getpass.getpass("请输入学生密码: ")  
    if validate_account('student_accounts.txt', student_id, password):  
        print(f"学生 {student_id} 登录成功!")  
        student_options(student_id)  
    else:  
        print("学号或密码错误!")  
        input("按任意键返回主界面...")  
  
  
def validate_account(file_name, username, password):  
    try:  
        with open(file_name, 'r') as file:  
            for line in file:  
                stored_username, stored_password = line.strip().split()  
                if username == stored_username and password == stored_password:  
                    return True  
        return False    except FileNotFoundError:  
        print(f"文件 {file_name} 未找到!")  
        return False  
  
  
def teacher_options(teacher_username):  
    while True:  
        clear_screen()  
        print(f"欢迎 {teacher_username} 教师,选择操作:")  
        print("1. 添加学生")  
        print("2. 给学生打分")  
        print("3. 返回主界面")  
  
        choice = input("请输入你的选择 (1/2/3): ")  
  
        if choice == '1':  
            add_student()  
        elif choice == '2':  
            grade_student()  
        elif choice == '3':  
            break  
        else:  
            print("无效选择,请重新输入!")  
            input("按任意键返回...")  
  
  
def student_options(student_id):  
    while True:  
        clear_screen()  
        print(f"欢迎学生 {student_id},选择操作:")  
        print("1. 查看个人信息")  
        print("2. 查看总成绩")  
        print("3. 返回主界面")  
  
        choice = input("请输入你的选择 (1/2/3): ")  
  
        if choice == '1':  
            view_student_info(student_id)  
        elif choice == '2':  
            view_student_scores(student_id)  
        elif choice == '3':  
            break  
        else:  
            print("无效选择,请重新输入!")  
            input("按任意键返回...")  
  
  
def add_student():  
    clear_screen()  
    print("添加学生信息")  
    student_id = input("请输入学生学号: ")  
    name = input("请输入学生姓名: ")  
    password = input("请输入学生密码: ")  
  
    with open('student_accounts.txt', 'a') as file:  
        file.writelines(f"{student_id} {password}\n")  
  
    with open('student_info.txt', 'a') as file:  
        file.writelines(f"{student_id} {name}\n")  
  
    print(f"学生 {name} ({student_id}) 添加成功!")  
    input("按任意键返回教师界面...")  
  
  
def grade_student():  
    clear_screen()  
    print("给学生打分")  
    student_id = input("请输入学生学号: ")  
  
    # 检查学生是否存在  
    if not check_student_exists(student_id):  
        print(f"学生 {student_id} 不存在!")  
        input("按任意键返回教师界面...")  
        return  
  
    # 检查学生是否已有分数  
    old_score = get_existing_score(student_id)  
  
    if old_score is not None:  
        print(f"学生 {student_id} 的旧成绩为: {old_score}")  
        update = input("是否需要更新成绩? (y/n): ").strip().lower()  
        if update == 'n':  
            print("未更新成绩。")  
            input("按任意键返回教师界面...")  
            return  
        else:  
            # 更新成绩  
            new_score = input("请输入新的成绩: ")  
            update_score_in_file(student_id, new_score)  
            print(f"学生 {student_id} 的成绩已更新为: {new_score}")  
            input("按任意键返回教师界面...")  
            return  
    else:  
        # 如果没有成绩,直接输入新成绩并添加到文件  
        new_score = input("请输入学生的成绩: ")  
        add_score_to_file(student_id, new_score)  
        print(f"学生 {student_id} 的成绩已添加为: {new_score}")  
        input("按任意键返回教师界面...")  
  
def check_student_exists(student_id):  
    """检查学生是否存在于学生信息文件中"""  
    try:  
        with open('student_info.txt', 'r') as file:  
            for line in file:  
                stored_id, name = line.strip().split()  
                if student_id == stored_id:  
                    return True  # 找到该学生  
        return False  # 没有找到该学生  
    except FileNotFoundError:  
        print("学生信息文件未找到!")  
        return False  
    except UnicodeDecodeError:  
        print("文件编码错误!请确保文件是GBK编码。")  
        return False  
  
def get_existing_score(student_id):  
    """检查学生是否已有分数"""  
    try:  
        with open('student_scores.txt', 'r') as file:  
            for line in file:  
                stored_id, score = line.strip().split()  
                if student_id == stored_id:  
                    return score  
        return None  # 如果没有找到该学生的成绩,则返回None  
    except FileNotFoundError:  
        print("成绩文件未找到!")  
        return None  
    except UnicodeDecodeError:  
        print("文件编码错误!请确保文件是GBK编码。")  
        return None  
  
  
def update_score_in_file(student_id, new_score):  
    """更新文件中已有成绩"""  
    try:  
        # 读取文件内容  
        with open('student_scores.txt', 'r') as file:  
            lines = file.readlines()  
  
        # 更新学生成绩  
        with open('student_scores.txt', 'w') as file:  
            for line in lines:  
                stored_id, score = line.strip().split()  
                if student_id == stored_id:  
                    file.writelines(f"{student_id} {new_score}\n")  # 更新成绩  
                else:  
                    file.writelines(line)  # 保持其他行不变  
    except FileNotFoundError:  
        print("成绩文件未找到!")  
    except UnicodeDecodeError:  
        print("文件编码错误!请确保文件是GBK编码。")  
  
  
def add_score_to_file(student_id, score):  
    """将新成绩添加到文件"""  
    try:  
        with open('student_scores.txt', 'a') as file:  
            file.writelines(f"{student_id} {score}\n")  
    except FileNotFoundError:  
        print("成绩文件未找到!")  
    except UnicodeDecodeError:  
        print("文件编码错误!请确保文件是GBK编码。")  
  
  
def view_student_info(student_id):  
    clear_screen()  
    try:  
        with open('student_info.txt', 'r', encoding='gbk') as file:  
            for line in file:  
                stored_id, name = line.strip().split()  
                if student_id == stored_id:  
                    print(f"学生 {student_id} 的信息:姓名: {name}")  
                    break  
            else:  
                print("未找到该学生的信息!")  
    except FileNotFoundError:  
        print("学生信息文件未找到!")  
    except UnicodeDecodeError:  
        print("文件编码错误!请确保文件是GBK编码。")  
    input("按任意键返回学生界面...")  
  
  
def view_student_scores(student_id):  
    clear_screen()  
    try:  
        with open('student_scores.txt', 'r') as file:  
            for line in file:  
                stored_id, score = line.strip().split()  
                if student_id == stored_id:  
                    print(f"学生 {student_id} 的总成绩: {score}")  
                    break  
            else:  
                print("未找到该学生的成绩!")  
    except FileNotFoundError:  
        print("成绩文件未找到!")  
    input("按任意键返回学生界面...")  
  
  
if __name__ == "__main__":  
    main()
学工管理系统JSP代码 本系统必须实现一个按钮级控制的权限管理,而且数据的操作范围分为“院级”和“校级”。比如  材料学院、计算机学院辅导员只能看到自己学院的学生信息、家长信息  学生处、组织部可以看到全校的学生信息、家长信息 操作权限 立即下载

相关推荐

halcon 查找圆形

先找到大概位置进行拟合,然后再以拟合出的位置作为测量的大概位置进行找圆;

qq_59062726的博客 733

学工管理系统介绍及使用指南 - 学工系统 - 智慧校园

合肥自友科技专注学工管理系统研发十年,打造出智慧校园核心管理平台。该系统集成学生档案、奖助学金、心理健康、宿舍考勤等模块,实现全流程数字化管理,支持多端访问与数据共享。通过线上化申请审批、智能数据分析等功能,显著提升高校管理效率和服务质量。作为行业领先解决方案,系统持续升级并计划引入AI技术,为院校提供更精准的决策支持,彰显了企业深耕教育信息化领域的专业实力。

合肥自友科技-专注于智慧校园建设 336

揭秘无人机前沿领域的科技新突破

本文旨在系统性地介绍无人机技术在前沿领域的最新突破,涵盖从基础理论到实际应用的各个方面。我们将重点关注那些正在改变无人机行业面貌的关键技术创新,并分析它们对未来发展的影响。文章首先介绍无人机技术的基础概念和背景,然后深入探讨六个关键领域的技术突破,接着分析实际应用案例,最后展望未来发展趋势。自主导航系统(SLAM):同时定位与地图构建技术,使无人机能在未知环境中自主导航计算机视觉(CV):使无人机能够"看"和理解周围环境的技术5G通信:第五代移动通信技术,提供高速、低延迟的数据传输能源管理。

AI天才研究院 1489

学工管理系统-在线学生综合管理系统 - 学工系统 - 智慧校园

合肥自友科技专注智慧校园建设,其学工管理系统作为核心平台,覆盖学生全生命周期管理,实现信息、奖惩、考勤、心理等业务线上化。系统打破数据孤岛,联动教务、公寓等模块,提升效率、规范流程、支撑决策,是学校数字化转型的重要抓手。

合肥自友科技-专注于智慧校园建设 269

从DIY桌面CNC到工业机器人:手把手教你用LinuxCNC搭建自己的第一台数控系统(基于Xenomai实时补丁)

本文详细介绍了如何使用LinuxCNC和Xenomai实时补丁搭建高性价比的数控系统,从硬件选型到实时系统构建,再到HAL硬件抽象层实战和G代码加工,手把手教你打造从DIY桌面CNC到工业机器人的完整解决方案。

weixin_28727975的博客 286

最近爆火的 Ontology 本体是什么?一文看懂基础概念 + 落地实操

1993 Tom Gruber原版定义:本体是对领域概念化模型的显式形式化规范。1998 Studer完善通用定义:本体是共享、明确、形式化的领域概念模型规范。大白话翻译:本体就是机器能看懂的行业词典+业务规则手册。数据库只管存数据,本体只管定规则,知识图谱是规则+数据结合体。区别于普通开源本体工具,这款国产商用本体平台核心优势:业务沙盘推演、可控业务数据写回、全链路字段级数据血缘审计,适配企业生产级业务落地。

驽马不舍 364

学工管理系统介绍及功能特点

【摘要】合肥自友科技专注智慧校园建设,推出涵盖26个子系统的综合平台,其中学工管理系统作为核心模块,实现学生全周期数字化管理。该系统集成信息管理、事务处理、思政教育、心理健康等核心功能,具有数据互通、移动适配、智能预警等特性,支持多角色协同工作。通过线上流程优化和数据分析,显著提升管理效率与学生服务体验,典型应用于新生入学、学业预警、毕业离校等场景,并可根据需求扩展疫情防控等特色功能。公司依托教育行业经验,持续深化教育大数据应用,推动智慧校园价值创新。

合肥自友科技-专注于智慧校园建设 490

详解【计算机类&面试真题】军队文职考试——第7期:C盘格式化需要注意什么?| 两台笔记本连起来后ping不同,可能存在哪些问题?| 模拟信号到数字信号是如何转化的?| 计算机由哪些部件组成?

这是我分享的系列面试知识——军队文职(计算机类)面试真题详解(第7期)。本期分享:两台笔记本连起来后ping不同,你觉得可能存在哪些问题?模拟信号到数字信号是如何转化的?谈一谈计算机由哪些部件组成?如何加强计算机网络安全管理?若通过域名无法访问,而通过IP地址能访问。这是怎么回事?你将如何解决?谈一谈C盘格式化需要注意什么?开放类题目:如果应聘的岗位和你想的差距很远,你怎么办?

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1917

学工管理系统:高效、便捷的学生事务管理工具

创建学工管理系统的初始立意在于提升学校的管理效率与学生服务水平。学校管理者仅需登录管理系统,便能达成对学生信息、考勤、社团、活动以及奖助学金等方面的全方位、精准、迅速的管理。学工管理系统呈献了一整套完备的综合性解决之策,涵盖学生信息管理、学生考勤管理、学生社团管理、学生活动管理、学生奖助学金管理等等,囊括了日常学生管理的诸般层面。学生身为学校的关键构成要素,其诸般事务的管理始终是学校管理者瞩目的焦点之一。为了更优地管理学生事务,提升管理效能,学工管理系统顺势而生,化作了高效、便捷的学生事务管理之利器。

合肥自友科技-专注于智慧校园建设 639

RK3566-预装APP

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

qq_24093081的博客 701

34、婴儿监视器应用开发指南

本文详细介绍了基于 ESP32 和 Edge Impulse 开发婴儿监视器应用的全过程,涵盖音频处理、机器学习推理、ESP RainMaker 平台集成以及内存监控等功能。通过实现 AppAudio、AppRmaker 和 AppMem 三个核心类,完成了婴儿哭声的实时检测与远程通知,并通过合理的内存管理优化,有效节省了 ESP32 的内部 RAM 资源。文章还提供了完整的代码示例和配置说明,适用于物联网和嵌入式 AI 应用开发爱好者参考学习。

python9snake的博客 93

基于银川市的学工管理系统的开发与演示

基于银川市的学工管理系统的开发,为银川市的学校提供了一套高效、便捷的学生工作管理解决方案。通过系统的演示,可以看到该系统具有功能完善、操作简便、界面友好等特点,能够满足学校管理人员、教师和学生的实际需求。在未来的应用中,该系统将不断优化和完善,为银川市的教育信息化发展做出更大的贡献。该系统旨在整合学生的基本信息、学业成绩、奖惩情况、社团活动等多方面的数据,实现学生工作的信息化、智能化管理。对于银川市的各类学校而言,高效的学生工作管理系统能够极大地提升管理效率,优化教育资源配置,为学生提供更好的服务。

合肥自友科技-专注于智慧校园建设 850

【AI测试干货】软件测试 - 全流程提示词完整体系

本篇教程是一套专为软件测试工程师打造的 AI 协作提示词体系。从测试计划制定、用例设计、自动化脚本开发、缺陷管理,到测试报告生成,每个环节都提供了结构化的提示词模板,帮助测试人员高效利用 AI 提升工作质量。

blues_C的博客 344

基于学工管理系统在青岛高校的应用探索

学工管理系统是利用计算机技术、网络技术和数据库技术,针对高校学生工作管理而开发的一套信息化管理平台。它涵盖了学生基本信息管理、思想政治教育管理、奖助学金管理、宿舍管理、就业指导管理等多个方面,旨在实现学生工作管理的规范化、信息化和智能化,提高管理效率和服务质量。

合肥自友科技-专注于智慧校园建设 1071

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

基于Java+SSM+JSP供电所档案管理系统(源码+LW+调试文档+讲解等)/供电所档案/档案管理系统/供电所档案软件/电力档案管理/供电所资料管理系统/供电所文档管理系统/供电所档案信息化

前端:JSP后端:Spring、SpringMVC、Mybatis,这三个技术简称SSM,Maven构建项目jar包,Tomcat运行Web环境,后端语言Java数据库:MySQL、SQLServer开发工具:IDEA、Eclipse、Navicat等✌关于毕设项目技术实现问题讲解也可以给我留言咨询!!!在程序设计中,JSP 的标签库为开发者提供了极大的便利。这些标签库包含了各种功能强大的标签,如用于循环遍历数据的标签、条件判断标签等。

擅长Java、Python、小程序、Web网站开发和计算机毕设项目实战✌ 1075

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

学工管理系统 - 智慧校园

合肥自友科技深耕教育行业十年,推出涵盖26个子系统的智慧校园平台,其中学工管理系统为核心模块,实现学生从入学到离校全生命周期的数字化管理。系统整合信息、考勤、奖惩、资助、心理、请假、测评等职能,打通教务、公寓、就业等数据链,提升效率、驱动决策、优化服务。基于微服务架构与统一数据模型,支持灵活配置与安全管控,助力高校实现学生工作智能化转型。

合肥自友科技-专注于智慧校园建设 163

宁夏学工管理系统-学工管理系统-智慧校园解决方案 - 学工系统|学工平台|学生管理系统|学生信息管理系统|学工管理平台|智慧学工|智慧学工系统

合肥自友科技推出智慧校园解决方案,其核心产品宁夏学工管理系统整合26个子平台,实现学生信息管理、事务处理及数据分析等功能。该系统采用云端存储和AI技术,支持移动端应用和智能预警,与教务等平台无缝对接。具备模块化扩展能力,已成功应用于多所高校,提升30%管理效率。未来将引入区块链技术,强化数据安全,拓展智慧城市服务联动。

合肥自友科技-专注于智慧校园建设 592

读写文件统计成绩

以下是读写文件统计成绩 f = open(‘scores.txt’, encoding=‘utf-8’)#打开这个文件 lines = f.readlines()#每一行的成绩分开 f.close() results = []#需要在循环之前初始化 for line in lines:#分割 data = line.split() sum = 0 score_list = data[1:]#学生各科成绩列表 for score in score_list: sum += int(score) res

weixin_51353862的博客 649

打破传统限制,智慧校园学工管理系统实现留级申请线上化

在教育信息化的大背景下,智慧校园正逐渐成为推动学校现代化管理的重要力量。作为智慧校园的核心组成部分,学工管理系统扮演着举足轻重的角色。今天,我们聚焦于学工管理系统中的一个重要功能——留级申请,看看它是如何帮助学校实现精细化管理,为学生提供更加人性化的学籍异动服务的。智慧校园学工管理系统集成了学校学生日常管理所需的各项功能,...

weixin_35995951的博客 285

学工管理系统用户手册:使用指南与操作教程

合肥自友科技专注智慧校园建设,核心产品为包含26个子系统的智慧校园平台。公司基于教育行业经验,提供定制化解决方案,未来将深化教育大数据应用。其学工管理系统支持用户管理、在线事务办理、数据统计等功能,具备完善的操作指引和问题处理机制,助力高校数字化管理升级。系统定期更新,持续优化用户体验,推动智慧校园创新发展。

合肥自友科技-专注于智慧校园建设 584

学工管理系统-高校学工信息管理系统 - 学工管理系统信息修改

【摘要】合肥自友科技推出的智慧校园平台包含学工管理系统等26个子平台,为高校提供专业解决方案。文章重点探讨学工管理系统信息修改的重要性:确保数据准确性、提升管理效率、促进智能化发展;介绍了学生自助和管理员修改两种操作方式;同时指出需应对信息安全、系统稳定性及用户培训等挑战。公司依托教育行业经验,将持续深化智慧校园建设,通过教育大数据挖掘创造更大价值。

合肥自友科技-专注于智慧校园建设 961

jsp大学生勤工助学信息管理系统9gisv

未来,随着技术的不断进步和用户需求的变化,系统将持续优化升级,引入更多智能化、个性化的功能和服务,以更好地服务于广大大学生和企业用户。支持SQL(结构化查询语言),用于执行数据库操作,如查询、更新、插入和删除数据。:系统应设置留言咨询和反馈功能,方便学生就岗位详情、应聘流程等问题进行咨询,同时也为企业提供一个了解学生意见和建议的渠道,以便不断改进和完善系统。:系统应公开透明地展示所有勤工俭学活动的相关信息,包括岗位详情、应聘情况、面试结果、薪酬标准等,确保整个过程的公正性,避免任何形式的暗箱操作。

cccc_cz的博客 1293

武汉学工管理系统-学工管理系统-智慧校园解决方案 - 学工系统|学工平台|学生管理系统|学生信息管理系统|学工管理平台|智慧学工|智慧学工系统

合肥自友科技专注智慧校园建设,其学工管理系统作为核心产品,覆盖学生全生命周期26个管理模块,实现数据一体化、流程自动化、服务个性化。系统采用微服务架构和AI技术,与教务、后勤等平台深度协同,构建"可感知、可分析"的智慧校园生态。针对武汉高校特点,公司建议分步实施,优先解决奖助贷等痛点,并强调系统需具备数据对接能力与移动端体验。作为教育行业深耕者,自友科技通过教育大数据挖掘,持续推动校园管理向"数据驱动、以生为本"的智慧模式转型。

合肥自友科技-专注于智慧校园建设 76
上一篇: Python从小白到大神 -- 2Python基础
下一篇: 安全见闻 -- 二进制与网络安全的关系
?crying
博客等级 码龄7年 449粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值