c/c++语言开发共享C语言实现班级成绩管理系统

c语言课程设计——班级成绩管理系统题目:对一个有n个学生的班级,每个学生有m门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能要求:(1)本系统采用一个结构体数组,每个数据的

c语言课程设计——班级成绩管理系统

题目:

对一个有n个学生的班级,每个学生有m门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能

要求:

(1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、m门课程名称。
(2)本系统显示这样的菜单:

请选择系统功能项:

a、成绩录入

b、成绩显示

c、成绩保存

d、成绩排序

e、成绩修改(要求先输入密码)

f、成绩统计

1)显示每门课程成绩最高的学生的基本信息
2)显示每门课程的平均成绩
3)显示超过某门课程平均成绩的学生人数

g、退出系统

1)执行一个具体的功能之后,程序将重新显示菜单。
2)将学生成绩保存到文件中。

代码:

  #include<vector>  #include<iostream>  #include<cstdio>  #include<cstdlib>  #include<algorithm>  #include<cstring>  #include<string>  using namespace std;      typedef struct student{   int id;    /*学生学号*/   char name[15];   /*学生姓名*/    vector<double> subject;  /*因未知课程数量,所以课程数量采用动态数组vector*/   double sum;    /*学生各科成绩总分*/  }student;      struct rule{    /*排序规则*/    bool operator()(const student &stu1,const student &stu2)const   {   if(stu1.sum!=stu2.sum)  /*总分不相等按照总分从大到小排序*/     return stu1.sum>stu2.sum;   return stu1.id>stu2.id;  /*总分相等按照学号从大到小排序*/    }  };      int n,m,i,j;    /*n为学生人数,m为课程数量*/  double score;    /*临时变量*/  student temp;    /*临时变量*/  vector<student> stu;   /*本课设采用动态数组vector,防止浪费内存空间*/  bool condition=true;   /*系统运行状态*/  char choice;    /*用于输入来选择功能*/      /*---------------------------------------------a.成绩录入---------------------------------------------*/  void insertscore(){   cout<<"请输入班级学生数量和课程数量:";   cin>>n>>m;   cout<<endl<<"现在请依次输入每个学生的学号、姓名和"<<m<<"门课程的成绩:"<<endl<<endl;   for(i=0;i<n;++i){   cin>>temp.id>>temp.name;   for(j=0;j<m;++j){    cin>>score;    temp.subject.push_back(score);   }   stu.push_back(temp);   /*------------------------------这一行很重要------------------------------*/   /*------------------------------这一行很重要------------------------------*/   vector<double>().swap(temp.subject);   /*------------------------------这一行很重要------------------------------*/   /*------------------------------这一行很重要------------------------------*/    }   cout<<endl<<"成绩录入成功!"<<endl;   }      /*---------------------------------------------b.成绩显示---------------------------------------------*/  void showscore(){   cout<<"学号tt"<<"姓名tt";   for(i=0;i<m;++i)   cout<<"课程"<<i+1<<"t";   cout<<endl;   for(i=0;i<n;++i){   cout<<stu[i].id<<"t"<<stu[i].name<<"t";   for(int j=0;j<m;++j)    cout<<stu[i].subject[j]<<"t";   cout<<endl;   }  }      /*---------------------------------------------c.成绩保存---------------------------------------------*/  void savescore(){    file *fp;    if((fp=fopen("stu.dat","wb"))==null){    cout<<"文件打开错误";    return;     }    for(i=0;i<n;++i){     if(fwrite(&stu[i],sizeof(student),1,fp)!=1)      cout<<"写入错误!"<<endl;     }    fclose(fp);    cout<<"成绩保存成功!"<<endl;   }      /*---------------------------------------------d.成绩排序---------------------------------------------*/  void sortscore(){   for(i=0;i<n;++i){    /*计算每个人的总成绩*/   stu[i].sum=0;   for(j=0;j<m;++j)    stu[i].sum+=stu[i].subject[j];   }   sort(stu.begin(),stu.end(),rule());  /*使用排序函数排序*/   cout<<"成绩排序成功!"<<endl;  }      /*---------------------------------------------e.成绩修改---------------------------------------------*/  void modifyscore(){   string password;   int id,no;   cout<<"请输入密码开启成绩修改权限:";   cin>>password;      /*------------------------------密码输入错误------------------------------*/   while(password!="guxunmei"){   cout<<endl<<"密码错误,请重新输入,若输入q则中止进入成绩修改功能:";   cin>>password;   if(password=="q")    return;   }      /*------------------------------密码输入正确------------------------------*/   cout<<endl<<"成功进入成绩修改功能,若学号输入-1则退出成绩修改功能!"<<endl;    while(1){   cout<<endl<<"请输入需要修改成绩的学生的学号,第几门课程以及修改后的分数:";   cin>>id;   if(id==-1){    cout<<endl<<"已成功退出成绩修改功能!"<<endl;    return;    }   cin>>no>>score;   if(no>m){    /*课程不存在*/     cout<<endl<<"不存在此课程!"<<endl;    continue;   }   for(i=0;i<n;++i){    if(stu[i].id==id){    stu[i].subject[no-1]=score;    break;    }   }   if(i==n){     /*学生不存在*/     cout<<endl<<"不存在此学生!"<<endl;    continue;    }   cout<<endl<<"修改成功!"<<endl;    }  }      /*---------------------------------------------f.成绩统计---------------------------------------------*/  void countscore(){   int maxn[m],count[m];   double k,average[m];    memset(maxn,0,sizeof(maxn));      /*--------------------显示每门课程成绩最高的学生的基本信息--------------------*/    for(i=0;i<n;++i){   for(j=0;j<m;++j){    if(stu[i].subject[j]>stu[i].subject[maxn[j]])    maxn[j]=i;   }   }   for(i=0;i<m;++i){   cout<<"课程"<<i+1<<"成绩最高分学生信息:"<<stu[i].id<<"t"<<stu[i].name<<"t";   for(j=0;j<m;++j)    cout<<stu[i].subject[j]<<"t";   cout<<endl;   }   cout<<endl;      /*---------------------------显示每门课程的平均成绩---------------------------*/   for(j=0;j<m;++j){   k=0;   for(i=0;i<n;++i)    k+=stu[i].subject[j];   average[j]=k/n;   cout<<"课程"<<j+1<<"的平均成绩为:"<<average[j]<<endl;    }   cout<<endl;      /*---------------------显示超过某门课程平均成绩的学生人数---------------------*/   for(j=0;j<m;++j){   count[j]=0;   for(i=0;i<n;++i){    if(stu[i].subject[j]>average[j])    ++count[j];   }   cout<<"超过课程"<<j+1<<"平均成绩的学生人数为:"<<count[j]<<endl;    }  }      /*---------------------------------------------g.退出系统---------------------------------------------*/  void exitsystem(){   condition=false; /*全局变量condition控制程序运行*/   cout<<"已退出班级成绩管理系统"<<endl;   }       int main()  {   while(condition){   /*-----------------------------------系统菜单-----------------------------------*/   cout<<"                             "<<endl;   cout<<"-------------------------系统菜单-------------------------"<<endl;   cout<<"                             "<<endl;   cout<<"     请选择系统功能项:               "<<endl;   cout<<"              a.成绩录入           "<<endl;   cout<<"              b.成绩显示           "<<endl;   cout<<"              c.成绩保存           "<<endl;   cout<<"              d.成绩排序           "<<endl;   cout<<"              e.成绩修改           "<<endl;   cout<<"              f.成绩统计           "<<endl;   cout<<"              g.退出系统           "<<endl;   cout<<"                             "<<endl;   cout<<"----------------------------------------------------------"<<endl;   cout<<"                             "<<endl;      /*-----------------------------------选择系统功能项-----------------------------------*/   cout<<"请输入选项:";   cin>>choice;   cout<<endl;   switch(choice){    case 'a':insertscore(); break;    case 'b':showscore(); break;    case 'c':savescore(); break;    case 'd':sortscore(); break;    case 'e':modifyscore(); break;    case 'f':countscore(); break;    case 'g':exitsystem(); break;    default:cout<<"不存在此项功能!"<<endl;   }    }   return 0;  }

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/598537.html

(0)
上一篇 2021年5月8日
下一篇 2021年5月8日

精彩推荐