求作:C语言程序设计 —— 学籍管理系统

2024-12-29 12:02:54
推荐回答(1个)
回答1:

#include

//定义结构体
struct student
{
int number;
char name[20];
float score1;
float score2;
float score3;
float ave;
};

//单个学员录入函数
void input(struct student *st)
{
printf("\n学号: ");
scanf("%d",&st->number);
printf("姓名: ");
fflush(stdin);
gets(st->name);
printf("三门课成绩:\n成绩1: ");
scanf("%f",&st->score1);
printf("成绩2: ");
scanf("%f",&st->score2);
printf("成绩3: ");
scanf("%f",&st->score3);
st->ave=(st->score1+st->score2+st->score3)/3;
}

//显示学员信息函数
void display(struct student *st,int n)
{
int i;
printf("\n\t学号\t姓名\t平均成绩\n");
for(i=0; i {
printf("\t%d\t%s\t%5.2f\n",st->number,st->name,st->ave);
st++;
}
}

//排序函数,大到小
void sorting(struct student stu[],int n)
{
struct student temp;
int i,j;
for(i=0; i {
for(j=0; j {
if(stu[j].ave {
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}

//插入函数
void insertinfo(struct student stu[], struct student *st1, int n)
{
int i,j;
for(i=0; i {
if(stu[i].aveave)
break;
}
for(j=n; j>i; j--)
stu[j]=stu[j-1];
stu[i]=*st1;
}

//删除学员信息函数
void deleteinfo(struct student stu[], int num, int n)
{
int i,j;
for(i=0; i {
if(stu[i].number==num)
break;
}
for(j=i; j stu[j]=stu[j+1];
}

void main()
{
struct student stu[50],stu1;
char ch;
int i=0,num;

//通过调用函数录入学员的信息
printf(" 请输入学员信息: \n\n");
do
{
input(&stu[i++]);
printf("是否继续(Y/N)? ");
fflush(stdin);
ch=getchar();
}while(ch=='Y'||ch=='y');

//显示学员信息
printf("\n排序前学员的信息如下: \n");
display(stu,i);

//排序函数
sorting(stu,i);

//显示学员信息
printf("\n排序后学员的信息如下: \n");
display(stu,i);

//插入函数
printf("\n是否要插入新学员(Y/N)? ");
fflush(stdin);
ch=getchar();
while(ch=='Y'||ch=='y')
{
printf("\n请输入要插入学员的信息: \n");
input(&stu1);
insertinfo(stu,&stu1,i);
i++;
printf("\n是否继续插入新学员(Y/N)? ");
fflush(stdin);
ch=getchar();
}

//显示学员信息
printf("\n插入后学员的信息如下: \n");
display(stu,i);

//删除函数
printf("\n是否要删除某个学员(Y/N)? ");
fflush(stdin);
ch=getchar();
while(ch=='Y'||ch=='y')
{
printf("\n请输入要删除学员的学号: \n");
scanf("%d",&num);
deleteinfo(stu,num,i);
i--;
printf("\n是否继续删除某个学员(Y/N)? ");
fflush(stdin);
ch=getchar();
}

//显示学员信息
printf("\n删除后学员的信息如下: \n");
display(stu,i);
}