C语言实现简易学生成绩管理系统

某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,编程实现如下学生成绩管理:

(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩,以及课程总分和平均分。

输入格式:

( 1 ) 录入学生的人数:

要求输入数据格式为:"%d"
提示信息为:“Input student number(n<30):\n”

( 2 )录入每个学生的学号和考试成绩:

要求输入数据格式为:"%ld%f"
提示信息为:“Input student's ID and score:\n”

输出格式:

1、菜单项的输出显示:

Management for Students' scores
1.Input record
2.Calculate total and average score of course
3.Sort in descending order by score
4.Sort in ascending order by number
5.Search by number
6.Statistic analysis
7.List record
0.Exit
Please Input your choice:

2、计算课程的总分和平均分:

要求输出总分与平均分格式为:“sum=%.0f,aver=%.2f\n”

3、按成绩由高到低排出名次表:

要求输出格式为:"%ld\t%.0f\n"
提示信息为:“Sort in descending order by score:\n”

4、按学号由小到大排出成绩表:

要求输出格式为:"%ld\t%.0f\n"
提示信息为:“Sort in ascending order by number:\n”

5、按学号查询学生信息及其考试成绩(输出学号与成绩):

如果未查到此学号的学生,提示信息为:“Not found!\n”;
如果查询到该学生,要求输出格式为:"%ld\t%.0f\n"

6、按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比:
成绩<60输出提示格式为:"<60\t%d\t%.2f%%\n";
成绩=100输出格式为:"%d\t%d\t%.2f%%\n";
其他要求输出百分比格式为:"%d-%d\t%d\t%.2f%%\n"

演示效果:

代码:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

//宏定义最大学生人数
#define stu_max 30

/*进行函数的全局声明*/

//获取学生人数
int stu_num();
//显示菜单获取用户输入
char menu_tips();
//获取学生学号,及本门考试成绩
void stu_information(long num[],float score[],int n);
//计算输出课程的总分和平均分
void sum_aver(float score[],int n);
//模块功能:交换两个长整型数据
void exchange_long(long *a,long *b);
//模块功能:交换两个浮点型数据
void exchange_float(float *a,float *b);
//按成绩由高到低输出名次表
void output_score(long num[],float score[],int n);
//按学号从小到大排出成绩表
void output_num(long num[],float score[],int n);
//查询输出学生信息及考试成绩:
void query(long num[],float score[],int n);
//分数划界处理并输出
void score_pro(float score[],int n);
//直接输出对应列表
void output(long num[],float score[],int n);
//暂停清屏
void clean();

int main()
{
 int n,i;
 long num[stu_max];
 float score[stu_max];
 n=stu_num();
 while(1)
 {
 i=menu_tips();
 switch(i)
 {
  case '1':printf("1"),stu_information(num,score,n),system("cls");break;
  case '2':printf("2"),sum_aver(score,n),clean();break;
  case '3':printf("3"),output_score(num,score,n),clean();break;
  case '4':printf("4"),output_num(num,score,n),clean();break;
  case '5':printf("5"),query(num,score,n),clean();break;
  case '6':printf("6"),score_pro(score,n),clean();break;
  case '7':printf("7"),output(num,score,n),clean();break;
  case '0':printf("0"),exit(0);break;
  default:printf("Input error!\n"),clean();
 }
 }
}

/*以下为函数功能模块*/

//获取学生人数
int stu_num()
{
 int n;
 printf("Input student number(n<30):\n");
 scanf("%d",&n);
 system("cls");
 return n;
}

//显示菜单获取用户输入
char menu_tips()
{
 printf(" -----------------------------------------------------------\n");
 printf("|  Management for Students' scores  |\n");
 printf(" -----------------------------------------------------------\n");
 printf("| 1.Input record     |\n");
 printf("| 2.Calculate total and average score of course |\n");
 printf("| 3.Sort in descending order by score   |\n");
 printf("| 4.Sort in ascending order by numbe   |\n");
 printf("| 5.Search by number     |\n");
 printf("| 6.Statistic analysis    |\n");
 printf("| 7.List record     |\n");
 printf("| 0.Exit      |\n");
 printf(" -----------------------------------------------------------\n");
 printf("\nPlease Input your choice:\n");
 char i;
 i=getch();
 return i;
}

//获取学生学号,及本门考试成绩
void stu_information(long num[],float score[],int n)
{
 int i;
 printf("\nInput student's ID and score:\n");
 for(i=0;i<n;i++)
 scanf("%ld%f",&num[i],&score[i]);
}

//计算输出课程的总分和平均分
void sum_aver(float score[],int n)
{
 int i;
 float sum,aver;
 for(i=0,sum=0;i<n;i++)
 sum+=score[i];
 aver=sum/n;
 printf("\nsum=%.0f,aver=%.2f\n",sum,aver);
}

//模块功能:交换两个长整型数据
void exchange_long(long *a,long *b)
{
 long t;
 t=*a;
 *a=*b;
 *b=t;
}

//模块功能:交换两个浮点型数据
void exchange_float(float *a,float *b)
{
 float t;
 t=*a; *a=*b; *b=t;
}

//按成绩由高到低输出名次表
void output_score(long num[],float score[],int n)
{
 int i,j;
 for(j=n-1;j>0;j--)
 {
 for(i=0;i<j;i++)
  if(score[i]<score[i+1])
 {
  exchange_float(&score[i],&score[i+1]);
  exchange_long(&num[i],&num[i+1]);
 }
 }
 printf("\nSort in descending order by score:");
 output(num,score,n);
}

//按学号从小到大排出成绩表
void output_num(long num[],float score[],int n)
{
 int i,j;
 for(j=n-1;j>0;j--)
 {
 for(i=0;i<j;i++)
  if(num[i]>num[i+1])
 {
  exchange_float(&score[i],&score[i+1]);
  exchange_long(&num[i],&num[i+1]);
 }
 }
 output(num,score,n);
}

//查询输出学生信息及考试成绩:
void query(long num[],float score[],int n)
{
 printf("\nEnter the ID to query:\n");
 long temp;
 scanf("%ld",&temp);
 int i;
 for(i=0;i<n;i++)
 {
 if(num[i]==temp)
 {
  printf("%ld\t%.0f\n",num[i],score[i]);
  return;
 }
 }
 printf("\nNot found!\n");
}

//分数划界处理并输出
void score_pro(float score[],int n)
{
 int t[6]={0,0,0,0,0,0};
 /*前五个分别对应优秀、良好、中等、及格、不及格五个类别
 第六位存储100分的人数*/
 int i,m;
 for(i=0;i<n;i++)
 {
 if(score[i]>=90&&score[i]<100) t[0]++;
 if(score[i]>=80&&score[i]<=89) t[1]++;
 if(score[i]>=70&&score[i]<=79) t[2]++;
 if(score[i]>=60&&score[i]<=69) t[3]++;
 if(score[i]>=0 &&score[i]<=59) t[4]++;
 if(score[i]==100)  t[5]++;
 }

 //遍历t数组,输出对应的数据
 for(i=0,m=9;i<6;i++)
 {
 if(i==4)
  printf("<60\t%d\t%.2f%%\n",t[4],(float)t[4]/n*100);
 if(i==5)
  printf("%d\t%d\t%.2f%%\n",100,t[5],(float)t[5]/n*100);
 if(i!=4&&i!=5)
 {
  if(i==0)
  printf("\n");
  printf("%d-%d\t%d\t%.2f%%\n",m*10,m*10+9,t[i],(float)t[i]/n*100);
  m--;
 }
 }
}

//直接输出对应列表
void output(long num[],float score[],int n)
{
 int i;
 for(i=0;i<n;i++)
 {
 if(i==0)
  printf("\n");
 printf("%ld\t%.0f\n",num[i],score[i]);
 }
}

//暂停清屏
void clean()
{
 system("pause");
 system("cls");
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现简单学生学籍管理系统

    本文实例为大家分享了C语言实现学生学籍管理系统的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<conio.h> #define N 100 /*存储100个学生的学籍信息*/ int flag; /*标记是否登录*/ struct date /*出生日期*/ { int year; int month; int day; }; struct

  • 学生信息管理系统C语言版

    C语言学生信息管理系统包括以下功能: 1.学生信息的整体注册 2.学生信息的修改 3.学生成绩信息的录入 4.学生信息的添加 5.恢复误删的学生信息 6.学生信息的删除 7.密码修改保存函数 8.学生信息的查询 9.密码修改函数 10.学生信息管理系统的菜单函数 #include "stdio.h" #include "malloc.h" #include "string.h" #include "stdlib.h" #inc

  • C语言实现学生信息管理系统(单链表)

    本文实例为大家分享了C语言实现学生信息管理系统的具体代码,供大家参考,具体内容如下 /*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年7月1日 * 版本号:codeblock * * 问题描述: 学生信息管理系统 * 输入描述: * 程序输出: 输出结果 */ #include <stdio.h> #include <stdlib.h> #include

  • C语言学生管理系统源码分享

    本文实例为大家分享了C语言学生管理系统源码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h> //结构体可以存放的学生信息最大个数,不可变变量 int const MAX_LENGTH=100; //学生信息结构体数组,最多可以存放100个学生信息 struct student{ int id; //学号 char *name; //姓名 int age; //年龄 float c_score; //C语言成绩 float engl

  • C语言编写学生成绩管理系统

    用C语言编写学生成绩管理系统代码,供大家参考,具体内容如下 C语言实现学生成绩管理系统实战教学 https://www.jb51.net/article/154767.htm (1)给出所选课程设计题目以及本题目具体所要完成的功能要求说明. 1.课程设计题目:学生成绩管理系统 2.完成的功能要求: (1).主要实现的功能: 1---学生输入 2---学生插入 3---学生查询(按学号) 4---学生删除 5---学生输出 6---计算每名学生的平均分并输出 7---计算每科的平均分并输出 8--

  • C语言数据结构之学生信息管理系统课程设计

    本文实例为大家分享了学生信息管理系统设计的具体代码,供大家参考,具体内容如下 建立一个动态链表,链表中每一结点包括:学号.姓名.性别.年龄.成绩.程序能实现以下功能: 建立链表      显示链表      查找链表中是否存在某个元素,并显示这个元素的所有信息,若没有这个元素则显示"无此记录!"的信息.      删除链表中指定学号的结点.      在链表中指定的位置插入一个新结点(学号不能和其他结点重复). 要求:程序运行中,先显示实现以上功能所构成的菜单,然后根据选项调用相应程序

  • C语言利用结构体数组实现学生成绩管理系统

    要求: 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).定义结构体类型描述学生信息,每个学生信息包括:学号.姓名.多门课的成绩.总成绩和平均成绩.用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统. (1) 录入每个学生的学号.姓名和各科考试成绩. (2) 计算每门课程的总分和平均分. (3) 计算每个学生的总分和平均分. (4) 按每个学生的总分由高到低排出名次表. (5) 按学号由小到大排出成绩表. (6) 按姓名的字典顺序排出成

  • C语言学生成绩管理系统源代码

    大学C语言实训课,C语言学生成绩管理系统,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; float kaoshi; double zongping; }stu[4]; void main() { void a(); void b(); void

  • 学生成绩管理系统C语言代码实现

    C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct person //定义结构体 { char num[10]; //学号 char name[20]; //姓名 float cyuyan; //C语言成绩 float en; //物理学成绩 float ji; //原子物理成绩

  • C语言实现简单学生管理系统

    花了一个月的时间,学习了链表,文件,多文件编程,然后就开始写学生管理系统,比较简单的那种,实现了增,添,改,查,多种排序,输入的时候的限定,成绩分析的功能.遇到的问题很多,也尝试解决了,下面写点写学生管理系统的要注意的地方,希望对别人有帮助. 1.一定要先写好主函数的框架,然后再往上面加东西,这样说有点笼统,我把我的主函数在下面,可以借鉴下哈.我的主函数是一个while(1)的无限循环,里面一个switch选择,利用一个菜单函数,让其返回值当成switch选择的值,然后进入不同的功能主函数,其他

随机推荐