首先需要安装xlwt库来进行xls文件的操作:

!pip install xlwt

然后根据题目需求,可以先定义一个学生类来存储学生的信息:

class Student:
    def __init__(self, id, name, number):
        self.id = id
        self.name = name
        self.number = number
        self.score = None

    def set_score(self, score):
        self.score = score

接着读取名册文件,将每个学生信息存储在列表中:

import xlrd

workbook = xlrd.open_workbook('名册.xls')
sheet = workbook.sheet_by_index(0)

students = []
for i in range(1, sheet.nrows):
    id, name, number = sheet.row_values(i)[:3]
    student = Student(id, name, number)
    students.append(student)

定义一个函数来根据学号或姓名进行模糊匹配:

def search_students(keyword):
    result = []
    for student in students:
        if keyword in student.number or keyword in student.name:
            result.append(student)
    return result

然后就可以实现主程序的逻辑了:

import xlwt

while True:
    keyword = input('请输入学号或姓名:')
    matches = search_students(keyword)
    if not matches:
        print('没有找到匹配的学生')
    elif len(matches) == 1:
        student = matches[0]
        print('学号:{},姓名:{}'.format(student.number, student.name))
        score = input('请输入成绩:')
        student.set_score(score)
    else:
        print('找到了{}个匹配的学生:'.format(len(matches)))
        for i, student in enumerate(matches):
            print('{}. 学号:{},姓名:{}'.format(i+1, student.number, student.name))
        choice = input('请选择序号或按q退出:')
        if choice == 'q':
            break
        try:
            index = int(choice) - 1
            student = matches[index]
            print('学号:{},姓名:{}'.format(student.number, student.name))
            score = input('请输入成绩:')
            student.set_score(score)
        except:
            print('输入有误,请重新输入')

# 保存xls文件
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('成绩单')
worksheet.write(0, 0, '序号')
worksheet.write(0, 1, '学号')
worksheet.write(0, 2, '姓名')
worksheet.write(0, 3, '成绩')
for i, student in enumerate(students):
    worksheet.write(i+1, 0, student.id)
    worksheet.write(i+1, 1, student.number)
    worksheet.write(i+1, 2, student.name)
    worksheet.write(i+1, 3, student.score)
workbook.save('成绩单.xls')

完整代码如下:

!pip install xlwt
import xlrd
import xlwt

class Student:
    def __init__(self, id, name, number):
        self.id = id
        self.name = name
        self.number = number
        self.score = None

    def set_score(self, score):
        self.score = score

workbook = xlrd.open_workbook('名册.xls')
sheet = workbook.sheet_by_index(0)

students = []
for i in range(1, sheet.nrows):
    id, name, number = sheet.row_values(i)[:3]
    student = Student(id, name, number)
    students.append(student)

def search_students(keyword):
    result = []
    for student in students:
        if keyword in student.number or keyword in student.name:
            result.append(student)
    return result

while True:
    keyword = input('请输入学号或姓名:')
    matches = search_students(keyword)
    if not matches:
        print('没有找到匹配的学生')
    elif len(matches) == 1:
        student = matches[0]
        print('学号:{},姓名:{}'.format(student.number, student.name))
        score = input('请输入成绩:')
        student.set_score(score)
    else:
        print('找到了{}个匹配的学生:'.format(len(matches)))
        for i, student in enumerate(matches):
            print('{}. 学号:{},姓名:{}'.format(i+1, student.number, student.name))
        choice = input('请选择序号或按q退出:')
        if choice == 'q':
            break
        try:
            index = int(choice) - 1
            student = matches[index]
            print('学号:{},姓名:{}'.format(student.number, student.name))
            score = input('请输入成绩:')
            student.set_score(score)
        except:
            print('输入有误,请重新输入')

# 保存xls文件
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('成绩单')
worksheet.write(0, 0, '序号')
worksheet.write(0, 1, '学号')
worksheet.write(0, 2, '姓名')
worksheet.write(0, 3, '成绩')
for i, student in enumerate(students):
    worksheet.write(i+1, 0, student.id)
    worksheet.write(i+1, 1, student.number)
    worksheet.write(i+1, 2, student.name)
    worksheet.write(i+1, 3, student.score)
workbook.save('成绩单.xls')
Python实现学生名册管理系统:模糊匹配、成绩录入、Excel保存

原文地址: https://www.cveoy.top/t/topic/nfKZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录