c语言成绩管理系统的作用,C语言实现班级成绩管理系统

42bd13c6670274f0993c5c92419dc87e.png

C语言课程设计――班级成绩管理系统,供大家参考,具体内容如下

题目:

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

要求:

(1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。

(2)本系统显示这样的菜单:

请选择系统功能项:

a、成绩录入

b、成绩显示

c、成绩保存

d、成绩排序

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

f、成绩统计

1)显示每门课程成绩最高的学生的基本信息

2)显示每门课程的平均成绩

3)显示超过某门课程平均成绩的学生人数

g、退出系统

1)执行一个具体的功能之后,程序将重新显示菜单。

2)将学生成绩保存到文件中。

代码:

#include

#include

#include

#include

#include

#include

#include

using namespace std;

typedef struct Student{

int ID; /*学生学号*/

char name[15]; /*学生姓名*/

vector 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 Stu; /*本课设采用动态数组vector,防止浪费内存空间*/

bool condition=true; /*系统运行状态*/

char choice; /*用于输入来选择功能*/

/*---------------------------------------------a.成绩录入---------------------------------------------*/

void InsertScore(){

cout<

cin>>N>>M;

cout<

for(i=0;i

cin>>temp.ID>>temp.name;

for(j=0;j

cin>>score;

temp.subject.push_back(score);

}

Stu.push_back(temp);

/*------------------------------这一行很重要------------------------------*/

/*------------------------------这一行很重要------------------------------*/

vector().swap(temp.subject);

/*------------------------------这一行很重要------------------------------*/

/*------------------------------这一行很重要------------------------------*/

}

cout<

}

/*---------------------------------------------b.成绩显示---------------------------------------------*/

void ShowScore(){

cout<

for(i=0;i

cout<

cout<

for(i=0;i

cout<

for(int j=0;j

cout<

cout<

}

}

/*---------------------------------------------c.成绩保存---------------------------------------------*/

void SaveScore(){

FILE *fp;

if((fp=fopen("stu.dat","wb"))==NULL){

cout<

return;

}

for(i=0;i

if(fwrite(&Stu[i],sizeof(Student),1,fp)!=1)

cout<

}

fclose(fp);

cout<

}

/*---------------------------------------------d.成绩排序---------------------------------------------*/

void SortScore(){

for(i=0;i

Stu[i].sum=0;

for(j=0;j

Stu[i].sum+=Stu[i].subject[j];

}

sort(Stu.begin(),Stu.end(),Rule()); /*使用排序函数排序*/

cout<

}

/*---------------------------------------------e.成绩修改---------------------------------------------*/

void ModifyScore(){

string password;

int id,no;

cout<

cin>>password;

/*------------------------------密码输入错误------------------------------*/

while(password!="GUXUNMEI"){

cout<

cin>>password;

if(password=="Q")

return;

}

/*------------------------------密码输入正确------------------------------*/

cout<

while(1){

cout<

cin>>id;

if(id==-1){

cout<

return;

}

cin>>no>>score;

if(no>M){ /*课程不存在*/

cout<

continue;

}

for(i=0;i

if(Stu[i].ID==id){

Stu[i].subject[no-1]=score;

break;

}

}

if(i==N){ /*学生不存在*/

cout<

continue;

}

cout<

}

}

/*---------------------------------------------f.成绩统计---------------------------------------------*/

void CountScore(){

int maxn[M],count[M];

double k,average[M];

memset(maxn,0,sizeof(maxn));

/*--------------------显示每门课程成绩最高的学生的基本信息--------------------*/

for(i=0;i

for(j=0;j

if(Stu[i].subject[j]>Stu[i].subject[maxn[j]])

maxn[j]=i;

}

}

for(i=0;i

cout<

for(j=0;j

cout<

cout<

}

cout<

/*---------------------------显示每门课程的平均成绩---------------------------*/

for(j=0;j

k=0;

for(i=0;i

k+=Stu[i].subject[j];

average[j]=k/N;

cout<

}

cout<

/*---------------------显示超过某门课程平均成绩的学生人数---------------------*/

for(j=0;j

count[j]=0;

for(i=0;i

if(Stu[i].subject[j]>average[j])

++count[j];

}

cout<

}

}

/*---------------------------------------------g.退出系统---------------------------------------------*/

void ExitSystem(){

condition=false; /*全局变量condition控制程序运行*/

cout<

}

int main()

{

while(condition){

/*-----------------------------------系统菜单-----------------------------------*/

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

cout<

/*-----------------------------------选择系统功能项-----------------------------------*/

cout<

cin>>choice;

cout<

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<

}

}

return 0;

}

关于管理系统的更多内容请点击《管理系统专题》进行学习

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

原文链接:https://blog.csdn.net/weixin_45953673/article/details/107097298

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值