学生成绩统计系统
1. c语言学生成绩统计系统
#include<stdio.h>
#include<string.h>
#define NUM1 3
#define NUM2 3
#define NUM3 3
struct student
{
char name[10];
int score;
}c1[NUM1],c2[NUM2],c3[NUM3];//定义三个结构体数组
int i,j,k;
FILE *fp1_order,*fp2_order,*fp3_order;/*/定义文件指针
/*/=========================================================
void main(void)
{
void data_in(void);
void score_order(void);
void save_in(void);
void save_order(void);
void open_order(void);
printf("******************************学生成绩文件管理******************************\n");
printf(" programmer:喻翔\n\n");
printf("一、输入三个班的学生姓名和成绩:\n\n");
data_in();
printf("\n\n\n");
printf("############################################################################\n\n");
printf("二、保存输入的姓名和成绩:\n\n");
save_in();
printf("\n\n\n\n");
printf("############################################################################\n\n");
printf("三、排名并保存姓名和成绩:\n\n");
score_order();
save_order();
printf("\n\n\n\n");
printf("############################################################################\n\n");
printf("四、验证排名后保存的文件:\n\n");
open_order();
printf("\n\n\n");
}
//=============================================================
void data_in(void)
{
printf("请输入一班%d个学生的姓名和成绩:\n",NUM1);
for(i=0;i<NUM1;i++)
{
printf("第%d个:",i+1);
scanf("%s %d",c1[i].name,&c1[i].score);
}
printf("\n\n\n请输入二班%d个学生的姓名和成绩:\n",NUM2);
for(j=0;j<NUM2;j++)
{
printf("第%d个:",j+1);
scanf("%s %d",c2[j].name,&c2[j].score);
}
printf("\n\n\n请输入三班%d个学生的姓名和成绩:\n",NUM3);
for(k=0;k<NUM3;k++)
{
printf("第%d个:",k+1);
scanf("%s %d",c3[k].name,&c3[k].score);
}
}
//=============================================================
void score_order(void)
{
int h,t;
char s[10];
for(h=0;h<NUM1-1;h++)
for(i=0;i<NUM1-1-h;i++)
if(c1[i].score<c1[i+1].score)
{
t=c1[i].score;
c1[i].score=c1[i+1].score;
c1[i+1].score=t;
strcpy(s,c1[i].name);//一定要使用strcpy()函数
strcpy(c1[i].name,c1[i+1].name);
strcpy(c1[i+1].name,s);
}
for(h=0;h<NUM2-1;h++)
for(j=0;j<NUM2-1-h;j++)
if(c2[j].score<c2[j+1].score)
{
t=c2[j].score;
c2[j].score=c2[j+1].score;
c2[j+1].score=t;
strcpy(s,c2[j].name);
strcpy(c2[j].name,c2[j+1].name);
strcpy(c2[j+1].name,s);
}
for(h=0;h<NUM3-1;h++)
for(k=0;k<NUM3-1-h;k++)
if(c3[k].score<c3[k+1].score)
{
t=c3[k].score;
c3[k].score=c3[k+1].score;
c3[k+1].score=t;
strcpy(s,c3[k].name);
strcpy(c3[k].name,c3[k+1].name);
strcpy(c3[k+1].name,s);
}
}
//=====================================================================
void save_in(void)
{
FILE *fp1_in,*fp2_in,*fp3_in;
if((fp1_in=fopen("data1_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(i=0;i<NUM1;i++)
if(fwrite(&c1[i],sizeof(struct student),1,fp1_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp1_in);
if((fp2_in=fopen("data2_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(j=0;j<NUM2;j++)
if(fwrite(&c2[j],sizeof(struct student),1,fp2_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp2_in);
if((fp3_in=fopen("data3_in.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(k=0;k<NUM3;k++)
if(fwrite(&c3[k],sizeof(struct student),1,fp3_in)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp3_in);
}
//==============================================================
void save_order(void)
{
if((fp1_order=fopen("data1_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(i=0;i<NUM1;i++)
if(fwrite(&c1[i],sizeof(struct student),1,fp1_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp1_order);
if((fp2_order=fopen("data2_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(j=0;j<NUM2;j++)
if(fwrite(&c2[j],sizeof(struct student),1,fp2_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp2_order);
if((fp3_order=fopen("data3_order.dat","wb"))==NULL)
{
printf("The file can not open!\n");
return;
}
for(k=0;k<NUM3;k++)
if(fwrite(&c3[k],sizeof(struct student),1,fp3_order)!=1)
{
printf("file write error!\n");
return;
}
fclose(fp3_order);
}
//=============================================================
void open_order(void)
{
fp1_order=fopen("data1_order.dat","rb");
printf("一班的成绩排名如下:\n");
printf("名次 姓名 C语言成绩\n");
printf("----------------------------------------\n");
for(i=0;i<NUM1;i++)
{
printf("第%d名 ",i+1);
fread(&c1[i],sizeof(struct student),1,fp1_order);
printf("%s %d\n",c1[i].name,c1[i].score);
}
fp2_order=fopen("data2_order.dat","rb");
printf("\n\n\n二班的成绩排名如下:\n");
printf("名次 姓名 C语言成绩\n");
printf("----------------------------------------\n");
for(j=0;j<NUM2;j++)
{
printf("第%d名 ",j+1);
fread(&c2[j],sizeof(struct student),1,fp2_order);
printf("%s %d\n",c2[j].name,c2[j].score);
}
fp3_order=fopen("data3_order.dat","rb");
printf("\n\n\n三班的成绩排名如下:\n");
printf("名次 姓名 C语言成绩\n");
printf("----------------------------------------\n");
for(k=0;k<NUM3;k++)
{
printf("第%d名 ",k+1);
fread(&c3[k],sizeof(struct student),1,fp3_order);
printf("%s %d\n",c3[k].name,c3[k].score);
}
}
2. C++学生成绩统计系统
#include<iostream>
#include<string>
usingnamespacestd;
structStudent
{
stringsid;
stringsname;
intmath;
intcomputer;
intenglish;
};
intmain()
{
StudentS[10];
cout<<"请依次输入10名同学的学号、姓名、数学、计算机、英语三门成绩"<<endl;
for(size_ti=0;i!=10;++i)
{
cin>>S[i].sid>>S[i].sname>>S[i].math
>>S[i].computer>>S[i].english;
}
cout<<"每门功课成绩≥80或总分大于260的学生姓名及总分"<<endl;
for(size_ti=0;i!=10;++i)
{
if(S[i].math>=80&&S[i].computer>=80&&S[i].english>=80||
(S[i].math+S[i].computer+S[i].english)>260)
cout<<S[i].sname<<" 总分:"<<(S[i].math+S[i].computer+S[i].english)<<endl;
}
cout<<"不及格同学及其不及格科目"<<endl;
for(size_ti=0;i!=10;++i)
{
if(S[i].math<60||S[i].computer<60||S[i].english<60)
cout<<S[i].sname<<"不及格科目:";
if(S[i].math<60)
cout<<"数学"<<"";
if(S[i].computer<60)
cout<<"计算机"<<"";
if(S[i].english<60)
cout<<"英语";
if(S[i].math<60||S[i].computer<60||S[i].english<60)
cout<<endl;
}
system("pause");
return0;
}
执行结果:
3. 用C语言设计一个学生成绩统计系统
// 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;
}
4. 求高手做一个学生成绩统计管理系统
C程序 学生管理系统
/* Note:Your choice is C IDE */
#include "stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct student//定义学生
{
char name[10];
int number;
char sex[2];
int math;
int eglish;
int clanguge;
int average;
}student;
typedef struct unit//定义接点
{
student date;
struct unit *next;
}unit;
unit* build()//建立链表并返回指针
{
unit *p;
if((p=(unit*)malloc(sizeof(unit)))==NULL)
{ printf("=>初始化失败!");
return 0;
}
else
{p->next=NULL;
p->date.number=0;//头结点存放学生人数
printf("初始化成功!\n");
return p;
}
}
void add(unit *head)//增加学生
{
unit *p,*q;
int m,n=0;
q=head->next;
p=(unit*)malloc(sizeof(unit));
printf("=>请输入新生姓名!\n");
gets(p->date.name);fflush(stdin);
printf("=>请输入学号!\n");
while(n==0)
{
("%d",&m);fflush(stdin);
if(q==NULL) n=1;
while(q)
{
if(q->date.number==m)
{
printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");
q=head->next;
break;
}
else
{
q=q->next;
if(q==NULL) n=1;
}
}
}
p->date.number=m;
printf("=>请输入性别!\n");
gets(p->date.sex);fflush(stdin);
printf("=>请输入数学成绩\n");
scanf("%d",&m);fflush(stdin);
p->date.math=m;
printf("=>请输入英语成绩\n");
scanf("%d",&m);fflush(stdin);
p->date.eglish=m;
printf("=>请输入c语言成绩\n");
scanf("%d",&m);fflush(stdin);
p->date.clanguge=m;
p->date.average=(p->date.math+p->date.eglish+p->date.clanguge);
q=head->next;
head->next=p;
p->next=q;
head->date.number++;
}
void deletion(unit *head)//删除一名学生
{
unit *p=head->next,*q=head;
char N[10];
printf("=>请输入你想删除的学生姓名!\n");
gets(N);fflush(stdin);
if(p==NULL)
printf("=>系统无学生可删除!\n");
while(p)
{
if(strcmp(p->date.name,N)==0)
{
q->next=p->next;
head->date.number--;
printf("=>删除%s成功!\n",p->date.name);
free(p);
break;
}
else
{
p=p->next;
q=q->next;
if(p==NULL)
printf("=>你要删除的学生不存在,删除失败!\n");
}
}
}
int display(unit *head)//显示学生信息
{
unit *p=head->next;
int m,n=0;
char N[10];
if(p==NULL)
{
printf("=>系统无学生!\n");
return 0;
}
while(n==0)
{
printf("******************************************************************************\n");
printf("=>请选择你的操作!\n");
printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");
scanf("%d",&m);
fflush(stdin);
switch(m)
{
case 1:printf("\n=>该系统拥有%d名学生!\n\n",head->date.number);
p=head->next;
printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n\n");
while(p)
{
printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->date.name,p->date.number,p->date.sex,p->date.math,
p->date.eglish,p->date.clanguge,p->date.average);
p=p->next;
}
break;
case 2:printf("=>请输入查找姓名!\n");
gets(N);
fflush(stdin);
p=head->next;
while(p)
{
if(strcmp(p->date.name,N)==0)
{
printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");
printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->date.name,p->date.number,p->date.sex,p->date.math,
p->date.eglish,p->date.clanguge,p->date.average);
break;
}
else
{
p=p->next;
if(p==NULL)
printf("=>你要查的学生不存在!");
}
}
break;
case 3: printf("=>请输入查找学号!\n");
scanf("%d",&m);
fflush(stdin);
p=head->next;
while(p)
{
if(p->date.number==m)
{
printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n");
printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->date.name,p->date.number,p->date.sex,p->date.math,
p->date.eglish,p->date.clanguge,p->date.average);
break;
}
else
{
p=p->next;
if(p==NULL)
printf("=>你要查的学生不存在!\n");
}
}
break;
case 4:n=1;break;
}
}
return 1;
}
int range(unit *head)//排序
{
unit *p=head,*q=head->next;
int n,i,m=head->date.number;
printf("*******************************************************************************\n");
printf("\t\t\t1.按学号\t2.按成绩\n\n");
printf("=>请选择操作!\n》");
scanf("%d",&n);
fflush(stdin);
if(q==NULL)
{ printf("=>无学生可排序!\n");
return 0;
}
switch(n)
{
case 2:for(i=0;i<m;i++)//按总分排序
{
p=head;q=head->next;
while(q->next)
{
if((q->date.average)<(q->next->date.average))
{
p->next=q->next;
p=p->next;
q->next=p->next;
p->next=q;
}
else
{
p=p->next;q=q->next;
}
}
}
break;
case 1:for(i=0;i<=m;i++)//按学号排序
{
p=head;q=head->next;
while(q->next)
{
if((q->date.number)>(q->next->date.number))
{
p->next=q->next;
p=p->next;
q->next=p->next;
p->next=q;
}
else
{
p=p->next;q=q->next;
}
}
}
break;
}
printf("=>排序成功!\n");
return 1;
}
void menu()
{
printf("\n********************************* 主菜单 ***************************************\n");
printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.查看信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保存信息\t8.退出系统\n");
printf("=>请选择你的操作!\n");
}
int save(unit *head)//保存
{
FILE *fp;
unit *p;
p=head;
if((fp=fopen("d:\\学生","wb+"))==NULL)
{
printf("=>保存失败!");
return 0;
}
while(p)
{fwrite(&(p->date),sizeof(student),1,fp);
p=p->next;
}
printf("=>保存成功!");
fclose(fp);
return 1;
}
unit* read()//读入系统学生信息
{
int i;
unit *p,*q,*head;
FILE *fp;
if((head=(unit*)malloc(sizeof(unit)))==NULL)
{ printf("=>开辟空间失败!");
exit(1);
}
else
{
head->next=NULL;
head->date.number=0;//头结点存放学生人数
}
q=head;
if((fp=fopen("d:\\学生","rb"))==NULL)
{printf("=>系统无学生!\n");
return 0;
}
fread(&(q->date),sizeof(student),1,fp);
for(i=0;i<head->date.number;i++)
{
if((p=(unit*)malloc(sizeof(unit)))==NULL)
{ printf("=>读值失败!");
exit(1);
}
fread(&(p->date),sizeof(student),1,fp);
p->next=q->next;
q->next=p;
}
fclose(fp);
return head;
}
void main()
{
int m=0,n, i;
unit *head;
printf("********************************************************************************\n\n");
printf("\t\t\t* 欢迎使用学生成绩管理系统 * \n");
printf("\n\t\t\t\t\t\t\t\t编译员:岳英明\n\n");
printf("=>正在读取系统信息......\n");
if((head=read())==0)
{
printf("=>是否新建?\n");
printf("\t\t\t是(1)\t\t否(2)\n");
scanf("%d",&i);
fflush(stdin);
if(i==1)
head=build();
else if(i==2)
exit(1);
}
else
printf("=>信息导入成功!");
while(m==0)
{
menu();
scanf("%d",&n);
fflush(stdin);
switch(n)
{
case 1: head=build();break;
case 2:add(head);break;
case 3:deletion(head);break;
case 4:display(head);break;
case 5: range(head);break;
case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;
case 7:save(head);break;
case 8:m=1;break;
}
}
}
我在CSDN找到的 你试试看
5. 用c语言编写一个学生成绩统计系统 急!!
思路提示。创建一个头文件,定义二维数组保存学生成绩。声明求学生总成绩以及各科最高最低成绩函数。创建源文件,实现上述头文件声明的函数。创建main函数调用上述方法即可
6. 需要一个“学生成绩统计”软件
http://www.skycn.com/soft/48457.html### 天创试卷分析管理系统PAS,是一款非常专业的试卷分析软件,适合各类大中专院校进行各年份各类试卷的质量分析与统一管理,功能非常强大也极其实用,智能化、自动化、专业化功能兼备,是高校教务系统的最得力帮手,是提高学校教学质量的必备软件。该软件主要功能有: 1.导入:可以轻松地导入EXCEL工作表中的学生成绩及学生相关信息,采用了智能识别技术。 2.录入:可以实现试卷基本信息、学生相关信息及其成绩的录入,录入方式非常简便快捷。 3.修改:对已录入的试卷基本信息或学生成绩及相关信息进行修改,操作非常简便,不易出错。 4.导出:可以导出学生的相关信息及其成绩到EXCEL工作表,而且导出内容可以由用户自定义。 5.排名:可以对选定试卷的学生成绩进行排名次,成绩类型和排名方法都可以由用户自定义。 6.自动生成学号:非常棒的小功能,可由软件自动产生规律性的学号,免去用户输入的烦恼。 7.试卷分析:可以对选定的单张试卷进行试卷分析,分析的项目非常丰富,专业性非常强。还可以一次性对多份试卷进行无人工干预地批量分析处理,导出文件的格式可以有三种类型(WORD、EXCEL、网页),可由用户自由选择。导出的试卷分析报告非常标准规范,不仅对相关统计学指标给出了精确结果,并自动给出了试卷的质量分析结果,提供给分析人员作为参考依据,真正做到了试卷分析的科学化、专业化、自动化。
7. 学生成绩统计小系统
完全纯手工完成啊,codeblocks编译运行通过!!
#include<stdio.h>
#define N 10
#define M 200
void zongfen(int a[][3]);
void chengji(int a[][3]);
void maxmin(int a[][3]);
void avg(int a[][3]);
void main()
{
int a[10][3]={0};
chengji(a);
zongfen(a);
maxmin(a);
avg(a);
getchar();
}
void chengji(int d[][3])
{
int m,n;
printf("请输入学生的三个成绩,成绩间以空格隔开!!\n\n");
for(m=0;m<N;m++)
{
printf("第%d个学生的成绩:\n",m+1);
for(n=0;n<3;n++)
{
scanf("%d",&d[m][n]);
}
}
}
void zongfen(int a[][3])
{
int b;
for(b=0;b<N;b++)
{
printf("第%d个学生的总分:%d\n",b+1,a[b][0]+a[b][1]+a[b][2]);
}
}
void maxmin(int a[][3])
{
int max1=0,max2=0,max3=0,min1=M,min2=M,min3=M,i=0;
while(i<N)
{
if(max1<a[i][0])
max1=a[i][0];
if(min1>a[i][0])
min1=a[i][0];
if(max2<a[i][1])
max2=a[i][1];
if(min2>a[i][1])
min2=a[i][1];
if(max3<a[i][2])
max3=a[i][2];
if(min3>a[i][2])
min3=a[i][2];
i++;
}
printf("第一门课的最高分:%d 最低分:%d\n",max1,min1);
printf("第二门课的最高分:%d 最低分:%d\n",max2,min2);
printf("第三门课的最高分:%d 最低分:%d\n",max3,min3);
}
void avg(int a[][3])
{
int i,j;
float b[10]={0},c[3]={0};
for(i=0;i<3;i++)
{
for(j=0;j<N;j++)
{
c[i]+=a[j][i];
}
}
for(i=0;i<N;i++)
{
for(j=0;j<3;j++)
{
b[i]+=a[i][j];
}
}
printf("三门课的平均成绩分别为:%.1f %.1f %.1f \n",c[0]/3,c[1]/3,c[2]/3);
printf("学生的平均成绩分别为如下:\n");
printf("%.1f %.1f %.1f %.1f %.1f %.1f %.1f %.1f %.1f %.1f",
b[0]/3,b[1]/3,b[2]/3,b[3]/3,b[4]/3,b[5]/3,b[6]/3,b[7]/3,b[8]/3,b[9]/3);
}
8. 求一学生考试成绩统计系统的程序
1. 成绩分析(应用教育统计学)--EAS V4.0 Build 060529
EAS在对学生的考试成绩进行常规汇总和统计的基础上,还
www.skycn.com/soft/10270.html
2. 成绩分析(应用教育统计学)-- EAS V4.0 Build 051117
EAS在对学生的考试成绩进行常规汇总和统计的基础上。还采用教育统计学中的“标准?
download.21cn.com/list.php?id=36641
3. 成绩分析(应用教育统计学)--EAS 4.0 Build 060529
EAS在对学生的考试成绩进行常规汇总和统计的基础上,还采用教育统计学中的“标准差”
www.onlinedown.net/soft/2855.htm
4. 网上成绩统计系统 1.2
1.能够生成历次考试成绩曲线图表2.历次成绩的详细情况3.学生模糊查询4.生成各班成绩柱
www.onlinedown.net/soft/22214.htm
5. 易人试卷分析软件 1.0
一款便捷的整理和分析学生的考试成绩的统计工具
download.pchome.net/home/ecate/22396.html
6. 易人试卷分析软件 1.0
为老师减负整理和分析学生的考试成绩是老师日常工作必不可少的环节,手工统计占用老师
www.onlinedown.net/soft/47423.htm
7. 易人试卷分析软件 1.0
整理和分析学生的考试成绩是老师日常工作必不可少的环节,手工统计占用老师太多的时间
dl.pconline.com.cn/html_2/1/154/id=11224&pn=0.html
8. 成绩分析(应用教育统计学)--EAS 4.0 Build 060529
EAS在对学生的考试成绩进行常规汇总和统计的基础上,还采用教育统计学中的“标准差”
dl.pconline.com.cn/html_2/1/149/id=7751&pn=0.html
9. 学生考试成绩分析系统 V2.01
学生成绩分析统计软件!
download.enet.com.cn/html/030792004051401.html
10. 学生成绩分析系统 V6.3
可自动统计学生考试的班级名次和年级名次。
download.enet.com.cn/html/030792004030901.html
9. 学生成绩统计系统
//vc6.0下测试通过
//自己添加剩下的课程吧。。。我有点懒。。。
//有什么问题追问我哦 ^_^
#include<iostream>
using namespace std;
#define MaxSize 50
#define SubjectNum 2
#define MATH 0
#define ENGLISH 1
typedef struct node{
name[20];
float score[SubjectNum];
struct node * next;
} Node;
class Students{
private:
int num;//学生数
Node student[MaxSize];//学生表
public:
Students(){ num = 0;}
bool Add();
float Average( int);
float Sum( int);
float Min( int);
float Max( int);
void Display();
};
float Students::Average( int _subject){
float sum = 0;
for( int i = 0; i < num; i++){
sum += student[i].score[_subject];
}
return sum / num;
}
float Students::Sum( int _subject){
float sum = 0;
for( int i = 0; i < num; i++){
sum += student[i].score[_subject];
}
return sum;
}
float Students::Max( int _subject){
float max = 0;
for( int i = 0; i < num; i++){
if( student[i].score[_subject] > max)
max = student[i].score[_subject];
}
return max;
}
float Students::Min( int _subject){
float min = 0;
for( int i = 0; i < num; i++){
if( student[i].score[_subject] < min)
min = student[i].score[_subject];
}
return min;
}
bool Students::Add(){
cout << "输入学生数:" ;
cin >> num;
if( num <= MaxSize){
for( int i = 0; i < num; i ++){
cout << "第" << i + 1 << "个学生的数据" << endl;
cout << "姓名:";
cin >> student[i].name;
cout << "数学:";
cin >> student[i].score[0];
cout << "英语:";
cin >> student[i].score[1];
}
cout << "完成" << endl << endl;;
return true;
}else{
cout << "失败" << endl;
return false;
}
}
void Students::Display(){
cout << "-----------------成绩单-------------" << endl << endl;
cout << "姓名\t" << "数学" << "\t英语" << endl;
for( int i = 0; i < num; i++){
cout << student[i].name << "\t" << student[i].score[MATH] << "\t" << student[i].score[ENGLISH] << endl;
}
cout << "平均\t" << Average( MATH) << "\t" << Average( ENGLISH) << endl;
cout << "总分\t" << Sum( MATH) << "\t" << Sum( ENGLISH) << endl;
cout << "最高\t" << Max( MATH) << "\t" << Max( ENGLISH) << endl;
cout << "最低\t" << Min( MATH) << "\t" << Min( ENGLISH) << endl;
cout << "-------------------------------------" << endl << endl;
}
int main(){
Students st;
st.Add();
st.Display();
return 0;
}
10. 学生成绩统计系统
/******************************************************
* Last Revision Date : 2011/07/6 10:35:27
* Author : zengjinliang
* Description : 简单学生成绩处理系统
*******************************************************/
#include<vector>
#include<iostream>
#include<string>
#include<sstream>
#include<fstream>
#include<ctime>
using namespace std;
typedef int scoreType;
const string DATAFILE="testdata.txt";
const string RESULTFILE="result.txt";
const scoreType ERRORCode=-999;
//转换失败,则返回ERRORCode
scoreType string_to_scoreType(const string& word)
{
scoreType Sum = ERRORCode;
stringstream ss;
ss<<word;
ss>>Sum;
return Sum;
}
string scoreType_to_string(const scoreType integer)
{
stringstream ss;
string str;
ss<<integer;
ss>>str;
return str;
}
//学生信息节点
class TStudentInfo{
public:
int getsOrder() {return sOrder;}
string getsId() {return sId;}
string getsName() {return sName;}
string getsClass() {return sClass;}
scoreType getsAvgScore() {return sAvgScore;}
scoreType getsMidScore() {return sMidScore;}
scoreType getsFinalScore() {return sFinalScore;}
string getsTotalScore() {return sTotalScore;}
string str() {
string sTmp;
stringstream stream;
stream<<sOrder<<" ";
stream<<sId<<" ";
stream<<sName<<" ";
stream<<sClass<<" ";
stream<<sAvgScore<<" ";
stream<<sMidScore<<" ";
stream<<sFinalScore;
if (""!=sTotalScore)
stream<<" "<<"综合成绩:"<<sTotalScore;
getline(stream,sTmp);
return sTmp;
}
//计算总评成绩
bool caculateTotalScore();
TStudentInfo(){}
bool setStudentInfo(string sInfo);
TStudentInfo(string sInfo){
setStudentInfo(sInfo);
}
TStudentInfo(int aOrder,string aId,string aName,string aClass,
scoreType aAvgScore,scoreType aMidScore=-1,scoreType aFinalScore=-1):
sOrder(aOrder),sId(aId),sName(aName),sClass(aClass),
sAvgScore(aAvgScore),sMidScore(aMidScore),sFinalScore(aFinalScore){}
virtual ~TStudentInfo() {}
private:
int sOrder; //序号
string sId; //学号
string sName; //姓名
string sClass; //班级
scoreType sAvgScore; //平时成绩
scoreType sMidScore; //期中成绩
scoreType sFinalScore; //期末成绩
string sTotalScore; //总评成绩
};
typedef TStudentInfo TSInfo;
typedef struct TStudentNode{
TSInfo *aStudent;
TStudentNode *next;
} *TSptr;
class TScoreInfo{
public:
bool printScore();
bool printStatistics();
bool saveResult();
bool clear();
bool fileList();
bool insertList(TSptr newPtr);
TScoreInfo():stateFlag(0),absentNum(0),
sMaxScore(0),sMinScore(0),sTotalScore(0){
list = new TStudentNode;
list->aStudent = new TSInfo();
list->next = 0;
for (int i=0;i<5;i++) scores[i] = 0;
}
~TScoreInfo(){
clear();
delete(list->aStudent);
list->aStudent=0;
delete(list);}
private:
int absentNum; //缺考人数
int passNum; //及格人数
TStudentNode *list; //指向学生的链表,自带空头指针
int scores[5]; //存储期末成绩分数段人数分布
scoreType aAvgScore;
double aPassRate;
scoreType sMaxScore;
scoreType sMinScore;
scoreType sTotalScore;
//0新建、1已装载数据并处理
int stateFlag;
bool dealNode(TSInfo *aInfo){
scoreType sFScore=aInfo->getsFinalScore();
if (sFScore<0) return false;
else if (sFScore<60) scores[0]++;
else if (sFScore<70) scores[1]++;
else if (sFScore<80) scores[2]++;
else if (sFScore<90) scores[3]++;
else scores[4]++;
sTotalScore += sFScore;
if (sFScore>sMaxScore) sMaxScore=sFScore;
if (sFScore<sMinScore) sMinScore=sFScore;
}
};
int main(){
TScoreInfo si;
si.fileList();
si.printScore();
si.printStatistics();
cout<<"The End!"<<endl;
si.saveResult();
return 0;
}
bool TStudentInfo::caculateTotalScore(){
scoreType iTmp(0);
if (-1==sFinalScore){
sTotalScore = "旷考";
return false;}
if ((0<sMidScore)&&(100>sMidScore)){
iTmp = (10*sAvgScore + 30*sMidScore + 60*sFinalScore)/100;
sTotalScore=scoreType_to_string(iTmp);}
else {
iTmp = (30*sAvgScore + 70*sFinalScore)/100;
sTotalScore=scoreType_to_string(iTmp);}
return true;
}
bool TStudentInfo::setStudentInfo(string sInfo){
istringstream stream(sInfo);
sAvgScore = -1;
sMidScore = -1;
sFinalScore=-1;
stream>>sOrder;
stream>>sId;
stream>>sName;
stream>>sClass;
stream>>sAvgScore;
stream>>sMidScore;
stream>>sFinalScore;
}
bool TScoreInfo::printScore(){
if (!stateFlag) return false;
int scnt=0;
for (int i=0;i<5;i++) scnt+=scores[i];
aPassRate = (double)(scnt-scores[0])/scnt;
aAvgScore = sTotalScore/scnt;
cout<<"共读取了"<<scnt<<"个学生的数据!其中旷考"<<absentNum
<<"人,其余成绩如下:"<<endl;
cout<<"序号,学号,姓名,班级,平时成绩,其中成绩,期末成绩,总评成绩。"<<endl;
TSptr p=list->next;
while(0!=p){
cout<< p->aStudent->str()<<endl;
p=p->next;
}
return true;
}
bool TScoreInfo::printStatistics(){
int i;
if (!stateFlag) return false;
cout<<endl<<"期末成绩按分数段进行划分:"<<endl;
cout<<"0~59、60~69、70~79、80~89、90~100的人数各有(人):";
for (i=0;i<5;i++)
cout<<scores[i]<<" ";
cout<<endl<<"分布图如下:"<<endl;
//分布图待续、判断正态分布待续
cout<<"此次期末及格率:"<<aPassRate<<endl;
cout<<"平均分:"<<aAvgScore<<endl;
cout<<"最高分:"<<sMaxScore<<endl;
cout<<"最低分:"<<sMinScore<<endl;
}
bool TScoreInfo::clear(){
TSptr p=list->next;
int j=0;
while(0!=p){
list->next = p->next;
delete(p->aStudent);
delete p;
p=list->next;
}
list->next=0;
stateFlag = 0;
for (int i=0;i<5;i++) scores[i] = 0;
sMaxScore = 0;
sMinScore = 0;
sTotalScore = 0;
absentNum=0;
}
bool TScoreInfo::fileList(){
ifstream sfile;
string sSInfo;
clear();
sfile.open(DATAFILE.c_str(),ifstream::in);
if (!sfile.is_open()){
cout<<"Can't open datafile!Please check the existence of this file!"<<endl;
return false;}
//读取第一行的标题行
getline(sfile,sSInfo);
//读取数据
getline(sfile,sSInfo);
while(!sfile.eof()){
TSptr p=new TStudentNode;
p->aStudent= new TSInfo(sSInfo);
p->next = 0;
p->aStudent->caculateTotalScore();
dealNode(p->aStudent);
insertList(p);
getline(sfile,sSInfo);
}
sfile.close();
stateFlag=1;
return true;
}
bool TScoreInfo::insertList(TSptr newPtr){
if (!newPtr) return false;
scoreType iTScore = string_to_scoreType(newPtr->aStudent->getsTotalScore());
if (ERRORCode!=iTScore) {
TSptr p=list->next;
TSptr q=list;
while((0!=p)&&(iTScore <= string_to_scoreType(p->aStudent->getsTotalScore()))){
q = p;
p = p->next;
}
newPtr->next = p;
q->next = newPtr;
}
else absentNum++;
}
bool TScoreInfo::saveResult(){
fstream sfile;
string sSInfo;
time_t now_time=time(NULL);
char tmp[64];
strftime(tmp, sizeof(tmp),"%Y/%m/%d %a",localtime(&now_time));
sfile.open(RESULTFILE.c_str(),ofstream::out|ofstream::app);
if (!sfile.is_open()){
cout<<"Can't write resultfile!Please check the existence of this file!"<<endl;
return false;}
sfile<<"****************************************"<<endl;
sfile<<"Date: "<<tmp<<endl;
sfile.close();
//重定位屏幕输出到文件输出
freopen(RESULTFILE.c_str(), "a+", stdout);
printScore();
printStatistics();
cout<<"****************************************"<<endl;
return true;
}