7-4 实验11_7_学生信息管理系统 (100 分)

#include <stdio.h>
struct id {
    int ca;//操作类型
    char name[36];//姓名
    long long ID;
    int sc1;//数学
    int sc2;//英语
    int sc3;//计算机
};

int add(struct id *ptr[], int i, struct id a[], struct id b[], int c);
//添加信息操作
void del(struct id *ptr[], int i, struct id a[], struct id b[], int c);
//删除信息操作
void readd(struct id *ptr[], int i, struct id a[], struct id b[], int c);
//重写信息操作
void print(struct id *ptr[], int i, struct id a[], struct id b[], int c);
//打印信息操作
int main() {
    struct id a[300];
    struct id b[300];
    int n;
    b[299].ID = -1;
    scanf("%d", &n);
    struct id *ptr[300];
    //录入输入
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i].ca);
        if (a[i].ca == 1) {
            scanf("%lld", &a[i].ID);
            scanf("%s", a[i].name);
            scanf("%d", &a[i].sc1);
            scanf("%d", &a[i].sc2);
            scanf("%d", &a[i].sc3);
        }
        if (a[i].ca == 2 || a[i].ca == 4) {
            scanf("%lld", &a[i].ID);
        }
        if (a[i].ca == 3) {
            scanf("%lld", &a[i].ID);
            scanf("%d", &a[i].sc1);
            scanf("%d", &a[i].sc2);
            scanf("%d", &a[i].sc3);
        }
    }
    int c = 0;//记录成功写入的次数
    for (int i = 0; i < n; i++) {
        if (a[i].ca == 1) {
            c = add(ptr, i, a, b, c);
        }
        if (a[i].ca == 2) {
            del(ptr, i, a, b, c);
        }
        if (a[i].ca == 3) {
            readd(ptr, i, a, b, c);
        }
        if (a[i].ca == 4) {
            print(ptr, i, a, b, c);
        }
    }
    return 0;
}

int add(struct id *ptr[], int i, struct id a[], struct id b[], int c) {
    int f = 1;
    for (int j = 0; j < c; j++) {
        if (ptr[j]->ID == a[i].ID) {
            f = 0;
        }
    }
    if (f == 1) {
        ptr[c] = &b[c];
        b[c] = a[i];
        printf("Add success\n");
        c++;
    }
    if (f == 0) {
        printf("Students already exist\n");
    }
    return c;
}

void del(struct id *ptr[], int i, struct id a[], struct id b[], int c) {
    int f = 1;
    for (int j = 0; j < c; j++) {
        if (ptr[j]->ID == a[i].ID) {
            ptr[j] = &b[299];//不是真的删除,而是指向一个不可能存在的数据,使其条件不成立,执行结果和删除一样(不是一个好方法)
            f = 0;
        }
    }
    if (f == 0) {
        printf("Delete success\n");
    }
    if (f == 1) {
        printf("Students do not exist\n");
    }
}

void readd(struct id *ptr[], int i, struct id a[], struct id b[], int c) {
    int f = 1;
    for (int j = 0; j < c; j++) {
        if (ptr[j]->ID == a[i].ID) {
            ptr[j]->sc1 = a[i].sc1;
            ptr[j]->sc2 = a[i].sc2;
            ptr[j]->sc3 = a[i].sc3;
            f = 0;
        }
    }
    if (f == 0) {
        printf("Update success\n");
    }
    if (f == 1) {
        printf("Students do not exist\n");
    }
}

void print(struct id *ptr[], int i, struct id a[], struct id b[], int c) {
    int f = 1, m;
    double ave;
    for (int j = 0; j < c; j++) {
        if (ptr[j]->ID == a[i].ID) {
            f = 0;
            m = j;
        }
    }
    if (f == 1) {
        printf("Students do not exist\n");
    }
    if (f == 0) {
        printf("Student ID:%lld\n", ptr[m]->ID);
        printf("Name:");
        puts(ptr[m]->name);
        ave = ((double) ptr[m]->sc1 + (double) ptr[m]->sc2 + (double) ptr[m]->sc3) / 3;
        printf("Average Score:%.1lf\n", ave);
    }
}

创建学生信息管理系统,具体要求如下:

学生信息包括:学号 姓名 数学成绩 英语成绩 计算机成绩

功能1:添加学生信息 执行1时,输入学号,姓名,三门科目成绩;如果添加学生成功则输出“Add success”,如果学生已存在则输出“Students already exist”

功能2:删除学生信息 执行2时,输入学号信息;如果学生不存在,输出“Students do not exist”,如果存在,则输出“Delete success”

功能3:更改学生成绩信息 执行3时,输入学号信息;如果学生不存在,输出“Students do not exist”,如果存在,输出“Update success”

功能4:显示学生平均分成绩 执行4时,输入学号信息;如果学生不存在,输出“Students do not exist”,如果存在,则输出学生信息,如下格式:

Student ID:2019989890

Name:Jerry

Average Score:89.3

其中平均分为三门科目相加除以3,保留一位小数,每行之间换行。

输入格式:

第一行为一个整数n(0<n<130),后边共n行,每一行表示执行一种功能。其中1,2,3,4分别对应执行上面4种功能,具体格式见输入样例。 测试用例保证:学号和名字均为长度不超过10的字符串,各门课成绩为0到100之间的整数。

输出格式:

输入样例:

8
1 201817123 Tom 89 80 76
1 2019989890 Jerry 78 99 67
4 201817123
2 201817123
4 201817123
4 2019989890
3 2019989890 79 90 99
4 2019989890

输出样例:

Add success
Add success
Student ID:201817123
Name:Tom
Average Score:81.7
Delete success
Students do not exist
Student ID:2019989890
Name:Jerry
Average Score:81.3
Update success
Student ID:2019989890
Name:Jerry
Average Score:89.3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生信息管理系统实验是一个常见的编程实践项目,旨在帮助学生熟悉编程语言和数据库操作。该实验要求实现对学生信息和成绩的管理,包括添加、删除、修改和查询等功能。 以下是一个示例的学生信息管理系统实验的功能实现: 1. 学生信息管理: - 添加学生信息:通过输入学生的姓名、学号、年龄等信息,将学生信息添加到系统中。 - 删除学生信息:根据学号或姓名等关键字,从系统中删除对应的学生信息。 - 修改学生信息:根据学号或姓名等关键字,找到对应的学生信息,并允许修改其中的某些字段,如年龄、联系方式等。 - 查询学生信息:根据学号或姓名等关键字,从系统中查询对应的学生信息,并将结果显示出来。 2. 学生成绩管理: - 添加学生成绩:根据学号或姓名等关键字,找到对应的学生信息,并输入学生的各科成绩,将成绩信息添加到系统中。 - 删除学生成绩:根据学号或姓名等关键字,找到对应的学生信息,并删除其成绩信息。 - 修改学生成绩:根据学号或姓名等关键字,找到对应的学生信息,并允许修改其中的某些科目的成绩。 - 查询学生成绩:根据学号或姓名等关键字,找到对应的学生信息,并显示其各科成绩。 这只是一个简单的示例,实际的学生信息管理系统可以根据需求进行扩展和优化。在实现过程中,可以使用编程语言(如C、C++、Java、Python等)和数据库(如MySQL、SQLite等)来存储和操作学生信息和成绩数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值