C语言 求高人

2025-02-24 17:06:17
推荐回答(2个)
回答1:

给你个模板,这是我们老师让我们写的
你在自己改改
#include
#include
#include
struct Student
{
char ID[20];
char name[20];
float score1;
float score2;
float score3;
float average;
float sum;
};
struct Student students[1000];
int num=0;
float Avg(struct Student stu)
{
return(stu.score1+stu.score2+stu.score3)/3;
}
float Sum(struct Student stu)
{
return(stu.score1+stu.score2+stu.score3);
}
int SearchByIndex(char id[])
{
int i;
for (i=0;i {
if (strcmp(students[i].ID,id)==0)
{
return i;
}
}
return -1;
}
int SearchByname(char name[])
{
int i;
for (i=0;i {
if (strcmp(students[i].name,name)==0)
{
return i;
}
}
return -1;
}
void DisplaySingle(int index)
{
printf("%10s%10s%8s%8s%8s%10s%10s\n","学号","姓名","数学","语文","C语言","平均成绩","总分");
printf("-------------------------------------------------------------\n");
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[index].ID,students[index].name,students[index].score1,students[index].score2,students[index].score3,students[index].average,students[index].sum);
}
void Insert()
{
while(1)
{
printf("请输入学号:");
scanf("%s",&students[num].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[num].name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].score1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].score2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[num].score3);
getchar();
students[num].average=Avg(students[num]);
students[num].sum=Sum(students[num]);
num++;
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
void Correct()
{
float score1,score2,score3;
while(1)
{
char id[20];
int index;
printf("请输入要修改的学生的学号:");
scanf("%s",&id);
getchar();
index=SearchByIndex(id);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要修改的学生信息为:\n");
DisplaySingle(index);
printf("-- 请输入新值--\n");
printf("请输入学号:");
scanf("%s",&students[index].ID);
getchar();
printf("请输入姓名:");
scanf("%s",&students[index].name);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].score1);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].score2);
getchar();
printf("请输入成绩:");
scanf("%f",&students[index].score3);
getchar();
students[index].average=Avg(students[index]);
students[index].sum=Sum(students[index]);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
void Delete()
{
int i;
while(1)
{
char id[20];
int index;
printf("请输入要删除的学生的学号:");
scanf("%s",&id);
getchar();
index=SearchByIndex(id);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要删除的学生信息为:\n");
DisplaySingle(index);
printf("是否真的要删除?(y/n)");
if (getchar()=='y')
{
for (i=index;i {
students[i]=students[i+1];
}
num--;
}
getchar();
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
void SelectByName()
{
while(1)
{
char name[20];
int index;
printf("请输入要查询的学生的姓名:");
scanf("%s",&name);
getchar();
index=SearchByname(name);
if (index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要查询的学生信息为:\n");
DisplaySingle(index);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
void SelectByIndex()
{
while(1)
{
char id[20];
int index;
printf("请输入要查询的学生的学号:");
scanf("%s",id);
getchar();
index=SearchByIndex(id);
if(index==-1)
{
printf("学生不存在!\n");
}
else
{
printf("你要查询的学生信息为:\n");
DisplaySingle(index);
}
printf("是否继续?(y/n)");
if (getchar()=='n')
{
break;
}
}
}
void Sort()
{
int i,j;
struct Student tmp;
for (i=0;i {
for (j=1;j {
if (students[j-1].average {
tmp=students[j-1];
students[j-1]=students[j];
students[j]=tmp;
}
}
}
}
void Display()
{
int i;
printf("%10s%10s%8s%8s%8s%10s%10s\n","学号","姓名","数学","语文","C语言","平均成绩","总分");
printf("-------------------------------------------------------------\n");
for (i=0;i {
printf("%10s%10s%8.2f%8.2f%8.2f%10.2f%10.2f\n",students[i].ID,students[i].name, students[i].score1,students[i].score2,students[i].score3,students[i].average,students[i].sum);
}
}
void Read()
{
FILE *fp;
int i;
if ((fp=fopen("Database.dat","rb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i {
fread(&students[i],sizeof(struct Student),1,fp);
}
}
fclose(fp);
}
void Write()
{
FILE *fp;
int i;
if ((fp=fopen("Database.dat","wb"))==NULL)
{
printf("不能打开文件!\n");
return;
}
if (fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入文件错误!\n");
}
for (i=0;i {
if (fwrite(&students[i],sizeof(struct Student),1,fp)!=1)
{
printf("写入文件错误!\n");
}
}
fclose(fp);
}
void main()
{
int choice;
Read();
while(1)
{
printf("\n------ 学生成绩管理系统------\n");
printf("0. 显示全部记录\n");
printf("1. 增加学生记录\n");
printf("2. 修改学生记录\n");
printf("3. 删除学生记录\n");
printf("4. 按姓名查询学生记录\n");
printf("5. 按学号查询学生记录\n");
printf("6. 按平均成绩排序\n");
printf("7. 退出\n");
printf("请选择(1-7):");
scanf("%d",&choice);
getchar();
switch(choice)
{
case 0:
Display();
break;
case 1:
Insert();
break;
case 2:
Correct();
break;
case 3:
Delete();
break;
case 4:
SelectByName();
break;
case 5:
SelectByIndex();
break;
case 6:
Sort();
Display();
break;
case 7:
exit(0);
break;
}
Write();
}
}

回答2:

多攒点分再来问