学生成绩管理系统课程设计.docx
《学生成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统课程设计
《学生成绩管理系统》
程序设计基础课程设计报告
二OO八年六月二十二
一.编程目的:
编写一个学生成绩管理系统,每个学生应该包含如下信息:
班级、学号、姓名、各科成绩、每个学生的平均分、名次以及班级各科平均分等。
可以任意添加学生,删除学生,编辑学生信息,并且具有保存和读入学生息功能以及分别根据平均分排名情况和根据。
班级、姓名、学号查找有关成绩情况。
二.设计要求:
(1)能按学期、按班级完成对学生成绩的录入、修改
(2)能按班级统计学生的成绩,求学生的总分及平均分,并能根据学生的平均成绩进行排序
(3)能查询学生成绩,不及格科目及学生名单
(4)能按班级输出学生的成绩单
三.各函数功能说明:
#include
#include
#include
intN;//输入学生人数
classstudent//建立一个student类
{
private:
char*name;
intnumber,Class;
intchinese,math,english,computer;
public:
student(){};
voidputin(intcl,intnu,charn[10],intch,inten,intma,intco)//输入学生相关信息
{
name=newchar[strlen(n)+1];
strcpy(name,n);
number=nu;
math=ma;
english=en;
chinese=ch;
computer=co;
Class=cl;
};
voidputna(char*x)
{
name=newchar[strlen(x)+1];
strcpy(name,x);
};
voidputfour(intx,inty,intz,inth)//传四个成绩
{
chinese=x;english=y;math=z;computer=h;};
voidputcl(intx){Class=x;};//赋一个值,下面同样
voidputnu(intx){number=x;};
voidputch(intx){chinese=x;};
voidputen(intx){english=x;};
voidputma(intx){math=x;};
voidputco(intx){computer=x;};
intgetcl(){returnClass;};//返回一个值,下面同样
intgetnu(){returnnumber;};
intgetch(){returnchinese;};
intgeten(){returnenglish;};
intgetma(){returnmath;};
intgetco(){returncomputer;};
char*getna(){return(name);};
voidputout()//返回学生全部信息
{
cout<setw(8)<};
};
//*******************************************************
//汇总
//*******************************************************
doubleaverage(student*p,char*na,intCl)//每一个科目的平均分
{
floatav=0,j1=1;intj=0;
for(inti=0;i{
if(strcmp(na,"语文")==0&&p[i].getcl()==Cl)
{av=av+p[i].getch();++j;j1=float(j);}
if(strcmp(na,"英语")==0&&p[i].getcl()==Cl)
{av=av+p[i].geten();++j;j1=float(j);}
if(strcmp(na,"C++程序设计")==0&&p[i].getcl()==Cl)
{av=av+p[i].getco();++j;j1=float(j);}
if(strcmp(na,"数学")==0&&p[i].getcl()==Cl)
{av=av+p[i].getma();++j;j1=float(j);}
}
if(av==0)return0;
elsereturnav/j1;
}
intsum(studentp)//每人的总分
{
ints=0;
s=p.getch()+p.geten()+p.getco()+p.getma();
returns;
}
//***************************************************************
intfind(student*p,intCl,intNu)//通过班级和学号,对要修改的对象返回它的对象里的值
{
inti=0,a=N+1;
for(;i{
if(p[i].getcl()==Cl&&p[i].getnu()==Nu)
{a=i;break;}
elsecontinue;
}
if(a!
=N+1)returna;
elsereturnN;
}
intfind(student*p,intCl,char*Na)//通过班级和名字,对要修改的对象返回它的对象里的值
{
inti=0,a=N+1;
for(;iif(p[i].getcl()==Cl&&strcmp(p[i].getna(),Na)==0)
{a=i;break;}
if(a!
=N+1)returna;
elsereturnN;
}
intfind(student*p,char*Na,intNu)//通过名字和学号,对要修改的对象返回它的对象里的值
{
inti=0,a=N+1;
for(;iif(strcmp(p[i].getna(),Na)==0&&p[i].getnu()==Nu)
{a=i;break;}
if(a!
=N+1)returna;
elsereturnN;
}
intfind(student*p,intCl)//通过班,对要修改的对象返回它的对象里的值
{
inti=0,a=N+1;
for(;iif(p[i].getcl()==Cl)
{a=i;break;}
if(a!
=N+1)returna;
elsereturnN;
}
//*******************************************************************
//查询成绩
//*******************************************************************
voidsearch(student*p,intCl,char*Na)//通过班级和名字,来查询成绩
{
intj=find(p,Cl,Na);
if(j==N)cout<"<else
{
cout<<<"语文"<<<"C++程序设计"<p[j].putout();
cout<inta4=sum(p[j]);floata5=float(a4)/4;
cout<}
}
voidsearch(student*p,char*Na,intNu)//通过名字和学号,来查询成绩
{
intj=find(p,Na,Nu),a4;floata5;
if(j==N)cout<"<else
{
cout<<"班级"<<<"语文"<<<"C++程序设计"<p[j].putout();
cout<a4=sum(p[j]);
a5=float(a4)/4;
cout<}
}
voidsearch(student*p,intCl,intNu)//通过班和号,来查询成绩
{
intj=find(p,Cl,Nu);
if(j==N)cout<"<else
{
cout<<"班级"<<<"语文"<<<"C++程序设计"<p[j].putout();
cout<inta4=sum(p[j]);
floata5=float(a4)/4;
cout<}
}
//8888888888888888888888888888888888888888888888888888888
voidlank(student*p,intCl)//按学号顺序排
{
intk1,k2,k3,k4,k5,k6;char*k7;
for(inti=0;i{
for(intj=i+1;jif(p[i].getcl()==Cl&&p[j].getcl()==Cl&&p[i].getnu()>p[j].getnu())//实现用学号来排序
{
k1=p[i].getcl();p[i].putcl(p[i+1].getcl());p[j].putcl(k1);
k7=newchar[strlen(p[i].getna())+1];
strcpy(k7,p[i].getna());p[i].putna(p[i+1].getna());p[i+1].putna(k7);
k2=p[i].getnu();p[i].putnu(p[j].getnu());p[j].putnu(k2);
k3=p[i].getch();p[i].putch(p[j].getch());p[j].putch(k3);
k4=p[i].geten();p[i].puten(p[j].geten());p[j].puten(k4);
k5=p[i].getma();p[i].putma(p[j].getma());p[j].putma(k5);
k6=p[i].getco();p[i].putco(p[j].getco());p[j].putco(k6);
}
elsecontinue;
}
}
//***********************************************
voidsearch(student*p,intCl)//查某班级的成绩,是按学号顺序排
{
intk8=find(p,Cl);
lank(p,Cl);
if(k8==N)cout<"<else
{cout<<"班级"<<<"语文"<<<"C++程序设计"<for(inti=0;iif(p[i].getcl()==Cl)
{intA1;floatA2;
A1=sum(p[i]);A2=float(A1)/4;
p[i].putout();cout<}
//******************************************************************
voidchange(student*p,intCl,intNu,char*Na)//修改成绩
{
inta=find(p,Cl,Nu);
intC,B1,B2,B3,B4;
if(a==N)cout<"<else
{cout<"<cin>>C;
switch(C)
{
case1:
cout<"<
cout<<"请输入它的新值:
";
cin>>B1;p[a].putch(B1);
cout<"<cout<<"班级"<<<"语文"<p[a].putout();cout<break;
case2:
cout<"<
cout<<"请输入它的值:
";
cin>>B1;p[a].puten(B1);
cout<"<cout<<"班级"<<<"语文"<p[a].putout();cout<break;
case3:
cout<"<
cout<<"请输入它的值:
";
cin>>B1;p[a].putma(B1);
cout<"<cout<<"班级"<<<"语文"<p[a].putout();cout<break;
case4:
cout<"<
cout<<"请输入它的值:
";
cin>>B1;p[a].putco(B1);
cout<"<cout<<"班级"<<<"语文"<p[a].putout();cout<break;
case5:
cout<"<<<"语文:
"<
"<
<<"数学:
"<
"<
cout<cout<<"请输入语文的值:
";cin>>B1;
cout<<"请输入英语的值:
";cin>>B2;
cout<<"请输入数学的值:
";cin>>B3;
cout<<"请输入C++程序设计的值:
";cin>>B4;
p[a].putfour(B1,B2,B3,B4);
cout<"<cout<<"班级"<<<"英语"<p[a].putout();cout<break;
}
}
}
//*******************************************************
voidrank(student*p,intCl)//通过比较来排名,查看某班的成绩
{
intk1,k2,k3,k4,k5,k6,k8;char*k7;
lank(p,Cl);
for(inti=0;i{for(intj=i+1;j{if(p[i].getcl()==Cl&&p[j].getcl()==Cl&&sum(p[i])<=sum(p[j]))//用学号来排序后,通过总分来比较排名
{
k1=p[i].getcl();p[i].putcl(p[j].getcl());p[j].putcl(k1);
k7=newchar[strlen(p[i].getna())+1];
strcpy(k7,p[i].getna());p[i].putna(p[j].getna());p[j].putna(k7);
k2=p[i].getnu();p[i].putnu(p[j].getnu());p[j].putnu(k2);
k3=p[i].getch();p[i].putch(p[j].getch());p[j].putch(k3);
k4=p[i].geten();p[i].puten(p[j].geten());p[j].puten(k4);
k5=p[i].getma();p[i].putma(p[j].getma());p[j].putma(k5);
k6=p[i].getco();p[i].putco(p[j].getco());p[j].putco(k6);
}
elsecontinue;
}
}
k8=find(p,Cl);
if(k8==N)cout<"<else
{cout<<"名次"<<<"姓名"<<<"数学"<intj1=0;
for(i=0;iif(p[i].getcl()==Cl)
{intA1;
floatA2;
j1++;
A1=sum(p[i]);A2=float(A1)/4;cout<p[i].putout();cout<}
}
//888888888888888888888888888888888888888888888888888888888888
voidfun(student*pupil)
{
for(intj=0;;j++)//对系统的操作
{cout<intp3,p4;
charp2[10],a0[3];
cin>>a0;
cout<<"*****************************************************************************"<if(strcmp(a0,"3")==0)//修改成绩
{for(inti=0;;i++)
{cout<";cin>>p3;
cout<<"请输入你的学号:
";cin>>p4;
cout<<"请输入你的名字:
";cin>>p2;
change(pupil,p3,p4,p2);
cout<";
charb0[3];
cin>>b0;
if(strcmp(b0,"Y")==0||strcmp(b0,"y")