创建一个班级,实现对学生的增删查询

# 学生类
class Student:
    def __init__(self, name, num, age, score):
        self.name = name
        self.num = num
        self.age = age
        self.score = score

    def __str__(self):
        return '姓名:{} 学号:{} 年龄:{} 成绩:{}'.format(self.name, self.num, self.age, self.score)


# 班级类
class Class:
    def __init__(self, name):
        self.name = name
        self.stu_list = []
        self.stu_dict = {}

    # 添加学生
    def add_stu(self, stu):
        self.stu_list.append(stu)
        self.stu_dict[stu.num] = stu

    # 删除学生
    def del_stu(self, num):
        # 从字典中弹出并删除
        s = self.stu_dict.pop(num)#字典跟列表都删除
        # 从列表中删除
        self.stu_list.remove(s)

    # 学生排序
    def sort_stu(self, key=None, reverse=False):
        self.stu_list.sort(key=key, reverse=reverse)

    # 查找学生
    def get_stu(self, num):
        return self.stu_dict.get(num)

    # 展示学生信息
    def show_stu(self):
        for s in self.stu_list:
            print(s)


from random import randint

# 创建班级对象
c = Class('ZZ-JY-PY1805')

# 添加学生
for i in range(10):
    name = 'stu' + str(i+1)
    num = 100 + i
    age = randint(20, 30)
    score = randint(0, 100)
    # 创建学生对象
    stu = Student(name, num, age, score)
    # 添加到班级对象中
    c.add_stu(stu)

# 按照成绩
c.sort_stu(key=lambda s: s.score, reverse=True)

# 展示学生信息
c.show_stu()

s = c.get_stu(104)
print(s)

 

好的,班级管理系统可以分为以下几个模块: 1. 学生信息结构体定义 首先需要定义一个结构体来存储学生的信息,包括学号、姓名、性别、年龄等等。 ```c #define MAX_NAME_LEN 20 #define MAX_ID_LEN 10 typedef struct student { char id[MAX_ID_LEN]; // 学号 char name[MAX_NAME_LEN]; // 姓名 char gender; // 性别 int age; // 年龄 } Student; ``` 2. 学生信息的增删查功能 接下来需要实现增删查功能。对于增加学生信息,可以先创建一个新的学生结构体,然后将其添加到学生数组中。对于删除学生信息,可以根据学号或者姓名查找到要删除的学生,然后将其从数组中删除。对于查找学生信息,可以根据学号或者姓名查找到对应的学生,并输出其信息。 ```c #define MAX_STUDENT_NUM 100 // 存储所有学生信息的数组 Student students[MAX_STUDENT_NUM]; int student_count = 0; // 当前学生总数 // 添加学生信息 void add_student() { if (student_count >= MAX_STUDENT_NUM) { printf("学生信息已达上限\n"); return; } Student new_student; printf("请输入学号:"); scanf("%s", new_student.id); printf("请输入姓名:"); scanf("%s", new_student.name); printf("请输入性别(M/F):"); scanf(" %c", &new_student.gender); printf("请输入年龄:"); scanf("%d", &new_student.age); students[student_count++] = new_student; printf("添加成功!\n"); } // 根据学号或姓名删除学生信息 void delete_student() { char id[MAX_ID_LEN]; char name[MAX_NAME_LEN]; printf("请选择删除方式:\n"); printf("1. 根据学号删除\n"); printf("2. 根据姓名删除\n"); int choice; scanf("%d", &choice); if (choice == 1) { printf("请输入要删除的学生学号:"); scanf("%s", id); for (int i = 0; i < student_count; i++) { if (strcmp(students[i].id, id) == 0) { for (int j = i; j < student_count - 1; j++) { students[j] = students[j + 1]; } student_count--; printf("删除成功!\n"); return; } } printf("未找到该学生信息!\n"); } else if (choice == 2) { printf("请输入要删除的学生姓名:"); scanf("%s", name); for (int i = 0; i < student_count; i++) { if (strcmp(students[i].name, name) == 0) { for (int j = i; j < student_count - 1; j++) { students[j] = students[j + 1]; } student_count--; printf("删除成功!\n"); return; } } printf("未找到该学生信息!\n"); } else { printf("输入有误!\n"); } } // 根据学号或姓名查找学生信息 void find_student() { char id[MAX_ID_LEN]; char name[MAX_NAME_LEN]; printf("请选择查找方式:\n"); printf("1. 根据学号查找\n"); printf("2. 根据姓名查找\n"); int choice; scanf("%d", &choice); if (choice == 1) { printf("请输入要查找的学生学号:"); scanf("%s", id); for (int i = 0; i < student_count; i++) { if (strcmp(students[i].id, id) == 0) { printf("学号:%s,姓名:%s,性别:%c,年龄:%d\n", students[i].id, students[i].name, students[i].gender, students[i].age); return; } } printf("未找到该学生信息!\n"); } else if (choice == 2) { printf("请输入要查找的学生姓名:"); scanf("%s", name); for (int i = 0; i < student_count; i++) { if (strcmp(students[i].name, name) == 0) { printf("学号:%s,姓名:%s,性别:%c,年龄:%d\n", students[i].id, students[i].name, students[i].gender, students[i].age); return; } } printf("未找到该学生信息!\n"); } else { printf("输入有误!\n"); } } ``` 3. 主函数 最后需要在主函数中调用上述函数,来完成对学生信息的增删查操作。 ```c int main() { while (1) { printf("请选择操作:\n"); printf("1. 添加学生信息\n"); printf("2. 删除学生信息\n"); printf("3. 查找学生信息\n"); printf("4. 退出\n"); int choice; scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: delete_student(); break; case 3: find_student(); break; case 4: exit(0); default: printf("输入有误!\n"); break; } } return 0; } ``` 这样就完成了一个简单的班级管理系统,可以实现学生信息的增删查功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员日子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值