用C语言设计一个学生成绩统计系统?

设计一个学生成绩统计系统:学期末,根据一个班每个学生的平时成绩、半期成绩和期末成绩,按一定的百分比算出他们学期总评成绩,并统计出各个分数段的人数以及优生率(85分以上)、及格率(60—85分)和差生率(60分以下)。
要求:
① 数据输入:可通过两种途径得到原始数据,一种是程序运行期间有键盘临时输入,另一种是从实现建立好的数据文件中获得数据。
② 数据处理:平时成绩和半期成绩各占10%的比例统计出每个学生的总评成绩,并按期末成绩算出全班总分、总平均分、最高分、最低分和及格率、优生率、差生率。最后按总评成绩排出学生名次。
③数据输出:结果输出到屏幕的同时,可将结果输出到磁盘文件中。

// Note:Your choice is C++ IDE
#include <iostream>
#include <string>
using namespace std;
//N代表科目数,M代表人数
#define N 2
#define M 3

class student
{public:
float score[N];
string name;
float average;
float total;
int rank;

student();
void inscore();
void calav();
void caltt();
void show();

};

void student::inscore()
{
int i;
cout<<"输入姓名:";
cin>>name;
cout<<"输入成绩:";
for(i=0;i<N;i++)
{
cin>>score[i];
}
caltt();
calav();

}

void student::calav()
{
average=total/N;
}

void student::caltt()
{
int i;
for(i=0;i<N;i++)
total+=score[i];
}

void student::show()
{
int i;
cout<<rank<<" "<<name<<" ";
for(i=0;i<N;i++)
cout<<score[i]<<" ";

cout<<endl;
}

void setrank(student sys[M])
{
int i,j;
student tmp=sys[0];

for(i=0;i<M-1;i++)
{
for(j=i+1;j<M;j++)
if(sys[j].average>sys[i].average)
{
tmp=sys[j];
sys[j]=sys[i];
sys[i]=tmp;
}
sys[i].rank=i+1;
}
sys[i].rank=i+1;
}

void findsc(student sys[M])
{
string n;
int i;
cout<<"请输入查询的名字:";
cin>>n;
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(i=0;i<M;i++)
if(sys[i].name==n)
{

sys[i].show();
}
}

void findrank(student sys[M])
{
string n;
int i;
cout<<"请输入查询的名字:";
cin>>n;
for(i=0;i<M;i++)
if(sys[i].name==n) cout<<sys[i].rank;

}

void find10(student sys[M])
{
int j;
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<10;j++)
sys[j].show();
}

void findgrade(student sys[M])
{
int i,j;
cout<<"1.>=85 2.>=75 3.>=60 4.<60"<<endl;
cin>>i;
switch(i)
{
case 1:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<M;j++)
sys[j].show();

}
break;

case 2:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<M;j++)
if(sys[j].average>=75 && sys[j].average<85) sys[j].show();

}
break;
case 3:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<M;j++)
sys[j].show();

}
break;

case 4:
{
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<M;j++)
if(sys[j].average<60) sys[j].show();

}
break;

}

}

void findbad(student sys[M])
{
int i,j,k;
for(i=0;i<M;i++)
{
k=0;

cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(j=0;j<N;j++)
{
if(sys[i].score[j]<60) k++;
if(k==3)
}
}
}

void pub(student sys[M])
{
int i;
cout<<"排名 "<<"姓名 "<<"--成绩--"<<endl;
for(i=0;i<M;i++)
sys[i].show();
}

int main()
{
student st[M];
int i,j;

while(1)
{
cout<<
"-------------------------------\n"<<
"1.输入成绩\n"<<
"2.查询任一学生成绩\n"<<
"3.查询任一学生排名\n"<<
"4.查询前十的学生\n"<<
"5.查询成绩级别的情况\n"<<
"6.查询三门不及格的学生\n"<<
"7.按成绩高低,顺序输入所有学生\n"<<
"-------------------------------"<<endl;
cin>>i;
switch(i)
{
case 1:
for(j=0;j<M;j++)
{
cout<<"输入第"<<j+1<<"个学生的成绩"<<endl;
st[j].inscore();
};
setrank(st);
break;

case 2:findsc(st);system("pause");break;
case 3:findrank(st);system("pause");break;
case 4:find10(st);system("pause");break;
case 5:findgrade(st);system("pause");break;
case 6:findbad(st);system("pause");break;
case 7:pub(st);system("pause");break;
}

}

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-25
实际上,你完全可以用现成的系统,比如“瑞文考试成绩统计分析系统”它不仅可以用来排名,而且还有很强大的功能,几乎你想要的它都可以提供给你,而且操作简单,还是免费软件。

怎样用C语言写学生成绩管理系统?
student[][1]到student[][4]存放四门成绩,\\x0d\\x0a\/\/student[][5]存放总分,student[][6]存放平均分,student[][7]存放排名\\x0d\\x0a int n,i,j,k,p,t,count,

利用c语言开发一个“学生成绩管理系统”谁来帮帮忙
include "stdio.h" \/*I\/O函数*\/ include "stdlib.h" \/*其它说明*\/ include "string.h" \/*字符串函数*\/ include "conio.h" \/*屏幕操作函数*\/ include "mem.h" \/*内存操作函数*\/ include "ctype.h" \/*字符操作函数*\/ include "alloc.h" \/*动态地址分配函数*\/ define N 3 \/*定义常...

C语言学生成绩管理系统
并把这些信息(包括学号、姓名、班级、三门课的成绩及平均分)保存到一个文件(score.txt)中,并显示在... 有4个学生,每个学生有三门课成绩,从键盘上输入以上数据,计算每个学生的平均分。并把这些信息(包括学号、姓名、班级、三门课的成绩及平均分)保存到一个文件(score.txt)中,并显示在屏幕上 具体要求:1定义...

怎么用C语言作学生成绩管理系统
int m,n,i;\/\/m,n,i,j为循环变量 printf("请输入要统计的人数 M= ");scanf("%d",&c);printf("请输入要统计的科目数量N= ");scanf("%d",&d);printf("\\n");for(m=0;m<c;m++){ printf("请输入第%d个学生的学号 \\t\\t",m+1);scanf("%d",&stu[m].number);for (i...

用C语言 设计一学生成绩管理系统,要求: 1. 学生成绩的信息包括:学号...
用C语言 设计一学生成绩管理系统,要求: 1. 学生成绩的信息包括:学号、姓名、性别、年龄、系别、班级、 我来答 首页 用户 认证用户 视频作者 帮帮团 认证团队 合伙人 企业 媒体 政府 其他组织 商城 法律 手机答题 我的 用C语言 设计一学生成绩管理系统,要求: 1. 学生成绩的信息包括...

C语言学生成绩管理系统代码
printf("q:退出 a:成绩输入 p:成绩输出 s:成绩统计 w:成绩排名 t:成绩查询\\n");menu();\/\/函数调用,选择成绩管理方式 printf("请选择成绩管理方式>>");while(1){ char c;printf(">>\\n");scanf("%c",&c);if (c=='q')printf("这是退出学生成绩管理信息系统函数\\n>>\\n")...

用C语言编程实现一个简单的学生成绩管理系统
Operate1+1-m_p_number,Operate1+1-c_p_number);\/\/因为数组下标是从0开始的}void main(){ Student student[maxnumber]; stream=freopen("in.txt","r",stdin); int Operate=3;int i;int id_n; char student_element[20]; for(i=0;i<Operate1;i++) { printf("请输入第%d位学生...

求助C语言高手,跪求一个关于成绩统计程序.希望哪位大侠帮帮忙,感激不...
4.成绩统计程序。学号导论离散c语言英语数学145789067562768789966637783674574455676687515677898643566678937665各科平均:64.3333333378.583.8333333372.557.83333333各科最高:77... 4.成绩统计程序。学号 导论 离散 c语言 英语 数学1 45 78 90 67 562 76 87 89 96 663 77 83 67 45 744 55 67 66 87 515 67 78 98 ...

c语言大作业 学生成绩管理系统
给个参考你: \/*编制一个学生成绩管理系统,每个学生信息包括:学号、姓名、C语言、高数和英语成绩。具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的成绩;(3)按学号或姓名查询成绩;(4)添加成绩记录;(5)修改指定姓名或学号的学生的成绩并可存盘;(6)显示输出60分以下、60~79、80~...

c语言实现学生成绩管理系统
printf("C语言的成绩:\\n"); scanf("%f",&a[i].score[0]); printf("Access的成绩:\\n"); scanf("%f",&a[i].score[1]); printf("Dreamweaver的成绩:\\n"); scanf("%f",&a[i].score[2]); a[i].sum=a[i].sum+a[i].score[0]+a[i].score[1]+a[i].score[2]; a[i].averge=a[...

相似回答