用C++编写学生成绩管理系统

2024-12-12 02:10:59
推荐回答(1个)
回答1:

#include
#include
#include
#include
#include
#include
struct student //定义一个学生结构体
{
char name[8];
int num;
char add[20];
int GS,YY,JSJ,SUM;
};

int s=0;
class student1 //定义一个学生类
{
private:
student stu[40];
char name,add;
int num;
int GS,YY,JSJ,SUM;

public:
void sr(char *,int,char *,int,int,int);
void print(int);
int jc(int xxh)
{
int m=0;
while(m<=s+1)
if(xxh==stu[m++].num)
break;
if(m>s+1)
return 0;
else
return 1;
}
void cz(int);
void sc(int);
void sum(int);
};

void student1::sr(char *xm,int xh,char *dz,int gs,int yy,int jsj) //输入模块
{
strcpy(stu[s].name,xm);
stu[s].num=xh;
strcpy(stu[s].add,dz);
stu[s].GS=gs;
stu[s].YY=yy;
stu[s].JSJ=jsj;
}

void student1::print(int s) //输出模块
{
cout< cout< cout< cout< cout< cout< cout< cout<}

void student1::cz(int s) //查找模块
{
int xxh,p;
while(s==0)
{
cout<<"没有记录,请先输入记录!"< break;
}
if(s!=0)
{cout<<"请输入您要查找的学号:";
cin>>xxh;
while (xxh<100000||xxh>999999) //判断输入的学号是否正确
{
cout<<"您输入的学号不正确,请输入一个六位数的学号"< cin>>xxh;
}
while(s!=0) //查找是否有符合条件的记录
{
p=1;
if (xxh==stu[s].num)
{
cout<<"姓名\t学号\t地址\t高数\t英语\t计算机"< cout< cout< cout< cout< cout< cout< getch();
break;
}
else
p=0;
s--;
}
if(p==0)
cout<<"很抱歉,没有找到您要查找的学号!"< getch();
}

void student1::sc(int n) //删除模块
{
int xxh,p;
char da;
while(s==0)
{
cout<<"没有记录,请先输入记录!"< break;
}
if(s!=0)
{
cout<<"请输入您要删除的学号:";
cin>>xxh;
while (xxh<100000||xxh>999999)
{
cout<<"您输入的学号不正确,请您输入一个六位数的学号" < cin>>xxh;
}

for(int i=1;i<=n;i++)
{
if(stu[i].num!=xxh)
p=0;
if(stu[i].num==xxh)
{
cout<<"姓名\t学号\t地址\t高数\t英语\t计算机"< cout< cout< cout< cout< cout< cout< cout<<"您确实要删除该学生的记录吗?(y/n)";
cin>>da;
if(da=='y'||da=='Y')
{
for(int j=i;j<=n-1;j++) //删除记录
{
strcpy(stu[j].name,stu[j+1].name);
stu[j].num=stu[j+1].num;
strcpy(stu[j].add,stu[j+1].add);
stu[j].GS=stu[j+1].GS;
stu[j].YY=stu[j+1].YY;
stu[j].JSJ=stu[j+1].JSJ;

}
cout<<"该记录已删除!"< s=s-1;
p=1;
break;
}
else
{
cout<<"该记录未删除!"< p=1;
}
}
}
if(p==0)
cout<<"很抱歉,没有找到您要找的学号!"< }
getch();
}

void student1::sum(int s) //排序模块
{
int chang;
int b[40];
while(s==0)
{
cout<<"没有记录,请先输入记录!"< break;
}
if(s!=0)
{
cout<<"姓名\t学号\t地址\t英语\t";
cout<<"高数\t计算机\t总分"<
for(int k=1;k<=s;k++)
{
b[k]=stu[k].GS+stu[k].YY+stu[k].JSJ;
stu[k].SUM=stu[k].GS+stu[k].YY+stu[k].JSJ;
}

for(int i=1;i<=s;i++) //利用冒泡法对B[]进行排序
for(int j=1;j<=s-i;j++)
if(b[j] {
chang=b[j];
b[j]=b[j+1];
b[j+1]=chang;
}
for(int h=1;h<=s;h++) //输出与B[]中相同总分所对应的内容
for(int e=1;e<=s;e++)
if(b[h]==stu[e].SUM)
{
cout< cout< cout< cout< cout< cout< cout< }
}

getch();
}

void main()
{
student1 st;
char da,a;
char *xm,*dz;
int gs,yy,jsj,xh;
time_t t;
time(&t);
while(1)
{
system("cls");
cout<<" 版权所有:张珊珊 肖朋丽 姚约汉"< cout< cout<<" 学生成绩管理系统"< cout<<" 显示系统时间和日期:"< cout<<"1.输入/添加学生资料"< cout<<"2.显示学生资料"< cout<<"3.按学号查找"< cout<<"4.删除记录"< cout<<"5.按总分进行排序"< cout<<"6.退出"< cout<<"请选择操作(1-6)"< cin>>a;
t: if(a=='6') break;
switch (a)
{
case '1':
{
cout<<"请依次输入学生的姓名,学号,地址,高数,英语,计算机:"< xm=new char[];dz=new char[];
cin>>xm>>xh>>dz>>gs>>yy>>jsj;
while(st.jc(xh)) //调用JC模块判断学号是否重复
{
cout<<"学号重复,请重新输入!"< cin>>xh;
}
s=s+1;
st.sr(xm,xh,dz,gs,yy,jsj);
cout<<"是否继续输入?(y/n)";
cin>>da;
while (da=='y'||da=='Y') //判断是否要继续输入
{
cout<<"请依次输入学生的姓名,学号,地址,高数,英语,计算机:"< xm=new char[];dz=new char[];
cin>>xm>>xh>>dz>>gs>>yy>>jsj;
while(st.jc(xh))
{
cout<<"学号重复,请重新输入!"< cin>>xh;
}
s=s+1;
st.sr(xm,xh,dz,gs,yy,jsj);
cout<<"是否继续输入?(y/n)";
cin>>da;

}
getch();
};break;

case '2':
{
if(s==0) //判断是否有记录输入
{
cout<<"没有记录,请先输入记录!"< getch();
break;
}
if(s!=0)
{
cout<<"序号"<<"\t";
cout<<"姓名"<<"\t";
cout<<"学号"<<"\t";
cout<<"地址"<<"\t";
cout<<"高数"<<"\t";
cout<<"英语"<<"\t";
cout<<"计算机"< for(int i=1;i<=s;i++)
st.print(i);
getch();
}
};break;
case '3':st.cz(s);break;
case '4':st.sc(s);break;
case '5':st.sum(s);break;
default:
{
while(a=='0'||a>'6') //判断选项是否正确
{
cout<<"错误选项,请重新选择!"< cin>>a;
}
goto t;
};break;
}
}
cout<<"谢谢您的使用!"<}