学生成绩管理

该博客介绍了一个使用C语言编写的学生成绩管理系统,系统能管理40人以内班级的成绩,支持录入、修改、查找、删除、显示、排序、统计等功能。包括录入学号、姓名、性别和各科成绩,按学号、姓名排序,按成绩统计等级分布等。程序设计要求包括菜单驱动的交互方式,以及数据的保存和读取操作。
摘要由CSDN通过智能技术生成

学生成绩管理

一、程序说明

假设某班有不超过40人(具体人数在程序运行时由键盘录入)参加本学期的期末考试,考试科目为语文(CN),数学(MT),英语(EN),科学(SC)。要求编写一个学生成绩管理系统,实现对班级学生成绩的录入、修改、查找、删除、显示、排序、统计、保存等操作的管理。

二、程序设计要求

系统主菜单应包括:

  1. 录入每个同学的学号、姓名、性别和各科的考试成绩;
  2. 成绩修改:可以根据输入的学号修改成绩;在修改之前需要用户进一步确认,确认无误后再进行操作。
  3. 计算每门课程的总分和平均分;
  4. 计算每个学生所有课程的总分和平均分;
  5. 按每个学生的总分进行排序;
  6. 按学号排出成绩表;
  7. 按姓名的字典顺序排出成绩表;
  8. 按姓名查询学生的各科成绩、总分、平均分及在班级的排名;
  9. 按学号查询学生的各科成绩、总分、平均分及在班级的排名;
  10. 对每门课程按优(90~100)、良(80~89)、中(70~79)、及格(60~69)、不及格(0~59)统计人数,及所占的百分比。
  11. 输出每个学生的姓名、学号、性别、各门课程的考试成绩、总分、平均分及在班级内的排名;
  12. 输出班级每门课程的统计数据:包括每门课程的平均分、每门课程优、良、中、及格、不及格的人数及所占百分比;
  13. 将每个学生的相关信息写入文件保存;
  14. 从文件中读出相关信息并进行处理;
  15. 退出系统

执行一个具体的功能之后,程序将重新显示菜单,直至选择退出系统的功能。
在这里插入图片描述

==main.c==👇

#include "class.h"

int main(){
   
    Class X;
    init(&X);
    puts("1)load from std");
    puts("2)load from file");
    puts("3)save to file");
    puts("4)modify the score");
    puts("5)sort by sum");
    puts("6)sort by number");
    puts("7)sort by name");
    puts("8)find by name");
    puts("9)find by number");
    puts("10)print all the date");
    puts("11)print class date");
    puts("12)exit");
    int d;
    char tmp[100];
    while(1) {
   
        scanf("%d",&d);
        if(d == 1) load_from_std(&X);
        if(d == 2) load_from_file(&X);
        if(d == 3) save_to_file(&X);
        if(d == 4) {
   scanf("%s",tmp);fun0(&X,tmp);}
        if(d == 5) fun1(&X);
        if(d == 6) fun2(&X);
        if(d == 7) fun3(&X);
        if(d == 8) {
   scanf("%s",tmp);fun4(&X,tmp);}
        if(d == 9) {
   scanf("%s",tmp);fun5(&X,tmp);}
        if(d == 10) fun6(&X);
        if(d == 11) fun7(&X);
        if(d == 12) break;
    }
    return 0;
};

==class.h==👇

//
// Created by limbo_null on 12/21/17.
//
#include "student.h"

#ifndef UNTITLED_CLASS_H
#define UNTITLED_CLASS_H
typedef struct {
   
    int tot;
    student stu[50];
    int sum_CN,sum_MT,sum_EN,sum_SC;
    int CA,CB,CC,CD,CE,MA,MB,MC,MD,ME,EA,EB,EC,ED,EE,SA,SB,SC,SD,SE;
}Class;

void init(Class *x) {
   
    x->tot = 0;
    x->sum_CN=x->sum_MT=x->sum_EN=x->sum_SC = 0;
    x->CA=x->CB=x->CC=x->CD=x->CE=x->SA=x->SB=x->SC=x->SD=x->SE=x->MA=x->MB=x->MC=x->MD=x->ME=x->EA=x->EB=x->EC=x->ED=x->EE=0;
}

void sort(Class *x,int (*cmp)(student *a,student *b)) {
   
    int i,j;
    student tmp;
    for(i = 1 ; i < x->tot ; ++i)
        for(j = i+1 ; j <= x->tot ; ++j)
            if((*cmp)(&x->stu[i],&x->stu[j])) {
   
                tmp = x->stu[i];
                x->stu[i] = x->stu[j];
                x->stu[j] = tmp;
            }
}

void fun0(Class *x,char *number) {
   
    int i;
    int a,b,c,d;
    for(i = 1 ; i <= x->tot ; ++i)
        if(!strcmp(number,x->stu[i].number)) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值