- C语言学生成绩管理系统设计

  • C语言学生成绩管理系统设计
    -代码如下:
    在这里插入图片描述
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#define  NUM 2

int c_score [NUM];//C语言成绩
int e_score[NUM];//大学英语成绩?
int m_score[NUM];//高等数学成绩
long xuehao[NUM];//学号
char name[NUM][20];//姓名

int main()
{void zcd();  //声明zcd函数
 zcd();
system("pause");
return 0;
}

//输入学生学号、姓名、三门课成绩
void input()
{
    int i;
 system("cls");
    for(i=0;i<NUM;i++){

      printf("\n请输入%d个学生的学号:",i+1);
   fflush(stdin);
   scanf("%ld",&xuehao[i]);
      
   fflush(stdin);
      printf("\n请输入%d个学生的姓名:",i+1);
      gets(name[i]);
    
   
   fflush(stdin);
      printf("\n请输入%d个学生的三门课程成绩:",i+1);
      printf(" 格式 123,121,120 \n");
   scanf("%d,%d,%d",&c_score[i],&e_score[i],&m_score[i]);  

 }
}

//输出学生信息函数
void print()
{
 int i;
 printf("  学号\t    姓名\t C语言\t 英语\t 数学\n");
 for(i=0;i<NUM;i++) 
       printf("  %d\t%s\t%d\t%d\t%d\n",xuehao[i],name[i],c_score[i],e_score[i],m_score[i]);
 system("pause");
}

//求某门课程最高分函数,三门课程选择其中一门即可
//q求C语言的最高分学生信息
void Max()
{
    int max_index = 0;
    int i; 
    for (i = 1; i < NUM; i++) {
        if (c_score[i] > c_score[max_index]) { // 更新最高分
            max_index = i;
        }
    }

    printf("C 语言课程的最高分为:\n");
    printf("学号:%d\n", xuehao[max_index]);
    printf("姓名:%s\n", name[max_index]);
    printf("成绩:%d\n", c_score[max_index]);

    system("pause");
}

//求某门课程最低分函数,三门课程选择其中一门即可
// 求C语言课最低分函数,
void Min()
{
    int min_index = 0;
    int i;
    for (i = 1; i < NUM; i++) {
        if (c_score[i] < c_score[min_index]) { // 更新最低分
            min_index = i;
        }
    }

    printf("C 语言课程的最低分为:\n");
    printf("学号:%d\n", xuehao[min_index]);
    printf("姓名:%s\n", name[min_index]);
    printf("成绩:%d\n", c_score[min_index]);

    system("pause");
}

//求某门课程平均值函数,三门课程选择其中一门即可
// 求C语言课平均值函数,

    void average()
{
    float sum = 0,avg;
    int i;
    for (i = 0; i < NUM; i++) {
        sum += c_score[i];
    }

    avg = sum / NUM;

    printf("C 语言课程的平均分为:%.2f\n", avg);

    system("pause");
}



//某门课程成绩从高到低排序函数,请添加代码,实现相应功能,三门课程选择其中一门即可
//大学英语到低排序函数,请添加代码,实现相应功能
void sort()
{
int i, j;
int temp;
int choice;//声明变量
long t;//由于交换位置,需要交换学号对应的名字
char name_temp[20];
printf("\n请选择要排序的课程:\n");
printf("1. C语言\n");
printf("2. 大学英语\n");
printf("3. 高等数学\n");

printf("这里用大学英语演示  输入指令 2\n");
scanf("%d", &choice);

if(choice == 2){//如果选择了大学英语,则按照大学英语成绩从高到低排序
    //冒泡排序
    for(i=0;i<NUM-1;i++){
        for(j=0;j<NUM-i-1;j++){
            if(e_score[j] < e_score[j+1]){
                //交换e_score[j]和e_score[j+1]
                temp = e_score[j];
                e_score[j] = e_score[j+1];
                e_score[j+1] = temp;

                //同时交换其他三门课程的成绩
                temp = c_score[j];
                c_score[j] = c_score[j+1];
                c_score[j+1] = temp;

                temp = m_score[j];
                m_score[j] = m_score[j+1];
                m_score[j+1] = temp;

                t = xuehao[j];
                xuehao[j] = xuehao[j+1];
                xuehao[j+1] = t;

             
                strcpy(name_temp, name[j]);
                strcpy(name[j], name[j+1]);
                strcpy(name[j+1], name_temp);
            }
        }
    }

    printf("\n按照大学英语成绩排序结果:\n");
    printf(" 排名\t 姓名\t    学号\t C语言\t 英语\t 数学\n");
    for(i=0;i<NUM;i++){
        printf("%d\t%s\t%ld\t%d\t%d\t%d\n", i+1, name[i], xuehao[i], c_score[i], e_score[i], m_score[i]);//按照格式输出
    }
}else if(choice == 1){//如果选择了C语言,与前面的代码一样
    //类似地可以使用冒泡排序,并交换其他两门课程的成绩
}else if(choice == 3){//如果选择了高等数学,与后面的代码一样
    //类似地可以使用冒泡排序,并交换其他两门课程的成绩
}else{
    printf("\n无效的选择\n");//如果输入的不是1、2、3中的任何一个,则提示错误信息
}

system("pause");
}


/*按学号查找某名学生三门课程成绩并显示*/ 
void search_num()
{
long num;
int i, index = -1;//初始化为-1,表示未找到

printf("\n请输入要查询的学生学号:");
fflush(stdin);
scanf("%ld", &num);

for(i=0;i<NUM;i++){
    if(num == xuehao[i]){//如果找到匹配的学号,将index设置为i,并跳出循环
        index = i;
        break;
    }
}

if(index == -1){//如果未找到,则提示“查无此人”
    printf("\n查无此人\n");
}else{//否则,输出该名学生的姓名和成绩
    printf("\n姓名:%s\n", name[index]);
    printf("C语言成绩:%d\n", c_score[index]);
    printf("大学英语成绩:%d\n", e_score[index]);
    printf("高等数学成绩:%d\n", m_score[index]);
}
}


/*按姓名查找某名学生三门课程成绩并显示*/ 
void search_name()
{
char sname[20];
int i, index = -1;//初始化为-1,表示未找到

printf("\n请输入要查询的学生姓名:");
fflush(stdin);//清空输入缓冲区,以避免读取上一个输入时留下的回车符
gets(sname);

for(i=0;i<NUM;i++){
    if(strcmp(sname, name[i]) == 0){//如果找到匹配的姓名,将index设置为i,并跳出循环
        index = i;
        break;
    }
}

if(index == -1){//如果未找到,则提示“查无此人”
    printf("\n查无此人\n");
}else{//否则,输出该名学生的学号和成绩
    printf("\n学号:%ld\n", xuehao[index]);
    printf("C语言成绩:%d\n", c_score[index]);
    printf("大学英语成绩:%d\n", e_score[index]);
    printf("高等数学成绩:%d\n", m_score[index]);
}
}


/*主函数界面*/  
void zcd()
{ int n=0;
 char m;
 system("cls");/*清屏*/
    printf("按任一键进入主菜单\n"); /*按任一键进入主菜单*/ 
       printf("********************************************************************************\n"); 
       printf("\t\t欢迎您\n"); 
       printf("\n\t\t--------- 欢迎使用简单成绩管理系统\n\t\t\t\n"); 
       printf("************************************ MENU **************************************\n"); 
       printf("\t1. 输入学生成绩信息 input the record\n"); /*输入学生成绩记录*/ 
       printf("\t2. 显示学生成绩信息 print the record\n");  
       printf("\t3. 显示某门课程的最高分 print the highest score \n"); 
       printf("\t4. 显示某门课程的最低分 print the lowest score\n");  
       printf("\t5. 显示某门课程的平均分 print the average score\n");  
       printf("\t6. 从高到低显示某门课程成绩 print the score from high to low\n");  
       printf("\t7. 按学号查找某个学生三门课程成绩 search record on number\n");  
       printf("\t8. 按姓名查找某个学生三门课程成绩 search record on name\n"); 
       printf("\t9. 退出 quit\n"); 
       printf("********************************************************************************\n"); 
       printf("\t输入你的选择  Enter your choice(1~9):"); 
       fflush(stdin);
    m=getchar(); 
 do
 {switch(m)
  { 
     case '1':input();zcd();break; 
           case '2':print();zcd();break;
     case '3':Max();zcd();break; 
     case '4':Min();zcd();break;
           case '5':average();zcd();break;
           case '6':sort();zcd();break;
           case '7':search_num();Sleep(3000);zcd();break; 
           case '8':search_name();Sleep(3000);zcd();break;
           case '9':exit(0);    /*如菜单返回值为9则程序结束*/ 
     default:printf("错误命令"); getchar();zcd();
  } 
 } while(1);

}



公众号 Aq头像社
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值