这是当时大一第一学期做了一回枪手临时赶出来的,bug未曾测试,仅供参考!
#include<stdio.h>
#include<string.h>
struct mystruct{
char name[20];
int number,Eng,math,phy,cyuyan,jixie,zongfen,pingjun;
};
void input(mystruct student[],int m);
void xiugai(mystruct student[],int m);
void chaxun(mystruct student[],int m);
void tongji(mystruct student[],int m);
void shuchu(mystruct student[],int m);
bool com(mystruct a,mystruct b);
int main(){
int n,m;
printf("请输入班级学生数: \n");
scanf("%d",&n);
mystruct *student=new mystruct[n];
printf("请按顺序输入全部学生信息,姓名,学号,英语,高数,大学物理,C语言,机械制图:\n");
input(student,n);
printf("请输入您所需功能,0代表信息修改,1代表成绩查询,2代表成绩统计,3代表成绩输出,-1结束 \n");
while(scanf("%d",&m)){
if(m==-1) break;
if(m==0) xiugai(student,n);
else if(m==1) chaxun(student,n);
else if(m==2) tongji(student,n);
else if (m==3) shuchu(student,n);
else {
printf("请重新输入!!!!\n");
}
printf("请继续输入,0代表信息修改,1代表成绩查询,2代表成绩统计,3代表成绩输出,-1结束\n");
}
return 0;
}
void input(mystruct student[],int m){
int i;
for(i=0;i<m;++i){
scanf("%s%d%d%d%d%d%d",student[i].name,&student[i].number,&student[i].Eng,&student[i].math,&student[i].phy,&student[i].cyuyan,&student[i].jixie);
student[i].zongfen=student[i].Eng+student[i].math+student[i].phy+student[i].cyuyan+student[i].jixie;
student[i].pingjun=student[i].zongfen/5;
}
}
void xiugai(mystruct student[],int m){
printf("请输入想要修改的学生学号,-1停止修改\n");
int k,j;
while(scanf("%d",&k)){
if(k==-1) break;
printf("请输入想要修改的信息,0代表英语,1代表高数,2代表大学物理,3代表C语言,4代表机械制图,-1停止修改\n");
while(scanf("%d",&j)&&j!=-1){
for(int i=0;i<m;++i){
if(k==student[i].number){
printf("请输入修改值\n");
int tmp;
scanf("%d",&tmp);
if(j==0) student[i].Eng=tmp;
else if(j==1) student[i].math=tmp;
else if(j==2) student[i].phy=tmp;
else if(j==3) student[i].cyuyan=tmp;
else if (j==4) student[i].jixie=tmp;
else{
printf("请重新输入\n");
break;
}
break;
}
}
printf("请继续输入想要修改的信息,0代表英语,1代表高数,2代表大学物理,3代表C语言,4代表机械制图,-1停止修改\n");
}
printf("请继续输入学生学号,-1结束修改\n");
}
}
void chaxun(mystruct student[],int m){
printf("请选择查询项目,0代表学生信息,1代表某课程最高分最低分,-1结束查询\n");
int k,i,j,num;
while(scanf("%d",&k)){
if(k==-1) break;
if(k==0){
printf("请选择查询模式,输入0按姓名查询,1按学号查询\n");
scanf("%d",&j);
if(j==0){
char names[20];
printf("请输入名字: \n");
scanf("%s",names);
for(i=0;i<m;++i){
if(strcmp(student[i].name,names)==0){
printf("姓名:%s 学号:%d 英语:%d\n",names,student[i].number,student[i].Eng);
printf("高数:%d 大学物理:%d C语言:%d 机械制图:%d\n",student[i].math,student[i].phy,student[i].cyuyan,student[i].jixie);
break;
}
if(i==m-1) printf("查无此人!!!\n");
}
}
else if(j==1) {
printf("请输入学号:\n");
scanf("%d",&num);
for(i=0;i<m;++i){
if(student[i].number==num){
printf("姓名:%s 学号:%d 英语:%d\n",student[i].name,student[i].number,student[i].Eng);
printf("高数:%d 大学物理:%d C语言:%d 机械制图:%d\n",student[i].math,student[i].phy,student[i].cyuyan,student[i].jixie);
break;
}
if(i==m-1) printf("查无此人!!!\n");
}
}
else printf("错误输入!!!\n");
}
else if(k==1){
printf("请输入想查询的课程,0代表英语,1代表高数,2代表大学物理,3代表C语言,4代表机械制图,-1结束查询\n");
while(scanf("%d",&j)){
if(j==-1) break;
int max=0,min=100;
if(j==0){
for(i=0;i<m;++i){
if(student[i].Eng>max) max=student[i].Eng;
if(min>student[i].Eng) min=student[i].Eng;
}
printf("英语最高分是:%d 最低分:%d\n",max,min);
}
else if(j==1){
for(i=0;i<m;++i){
if(student[i].math>max) max=student[i].math;
if(min>student[i].math) min=student[i].math;
}
printf("高数最高分是:%d 最低分:%d\n",max,min);
}
else if(j==2){
for(i=0;i<m;++i){
if(student[i].phy>max) max=student[i].phy;
if(min>student[i].phy) min=student[i].phy;
}
printf("大学物理最高分是:%d 最低分:%d\n",max,min);
}
else if(j==3){
for(i=0;i<m;++i){
if(student[i].cyuyan>max) max=student[i].cyuyan;
if(min>student[i].cyuyan) min=student[i].cyuyan;
}
printf("C语言最高分是:%d 最低分:%d\n",max,min);
}
else if(j==4){
for(i=0;i<m;++i){
if(student[i].jixie>max) max=student[i].jixie;
if(min>student[i].jixie) min=student[i].jixie;
}
printf("机械制图最高分是:%d 最低分:%d\n",max,min);
}
else printf("错误输入!!!\n");
printf("请继续输入想查询的课程,0代表英语,1代表高数,2代表大学物理,3代表C语言,4代表机械制图,-1结束查询\n");
}
}
printf("请继续选择查询项目,0代表学生信息,1代表某课程最高分最低分,-1结束查询\n");
}
}
void tongji(mystruct student[],int m){
for(int i=0;i<m;++i){
for(int j=i;j<m;++j){
if(student[i].zongfen<student[j].zongfen){
mystruct c=student[i];
student[i]=student[j];
student[j]=c;
}
}
}
char xing[]={"姓名"},mingci[]={"名次"},zong[]={"总分"},ping[]={"平均分"};
printf("%10s%10s%10s%10s\n",mingci,xing,zong,ping);
for(int i=0;i<m;++i){
printf("%10d%10s%10d%10d\n",i+1,student[i].name,student[i].zongfen,student[i].pingjun);
}
}
void shuchu(mystruct student[],int m){
for(int i=0;i<m;++i){
printf("姓名:%s 学号:%d 英语:%d\n",student[i].name,student[i].number,student[i].Eng);
printf("高数:%d 大学物理:%d C语言:%d 机械制图:%d\n",student[i].math,student[i].phy,student[i].cyuyan,student[i].jixie);
printf("总分:%d 平均分:%d\n\n",student[i].zongfen,student[i].pingjun);
}
}