zuoye.c
#define MAX 100
#include "zuoye.h"
int main(int argc, char const *argv[])
{
int menu=0;
struct Class *ptr=create();
while(1)
{
print_menu();
printf("请输入需要的功能:");
scanf("%d",&menu);
switch (menu)
{
case 1:
{
stu_scan(ptr);
}break;
case 4:
{
stu_print(ptr);
}break;
case 2:
{
stu_jiang(ptr);
stu_print(ptr);
}break;
case 3:
{
stu_max(ptr);
}break;
case 5:
{
stu_bomm(&ptr);
stu_print(ptr);
}
break;
case 6:
{
zeng(ptr);
}break;
case 7:
{
shan(ptr);
}break;
case 8:
{
gai(ptr);
}break;
case 9:
{
cha(ptr);
}break;
case 0:goto END;
}
}
END:
return 0;
}
zuoye1.c
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#define MAX 100
struct Stu
{
char name[20];
int age;
int score;
};
struct Class
{
struct Stu stu[MAX];
int size;
};
void print_menu()
{
printf("\t\t=====1.班级创建 学生信息录入=====\n");
printf("\t\t=====2.按成绩降序=====\n");
printf("\t\t=====3.成绩中最好最差的学生=====\n");
printf("\t\t=====4.学生信息输出=====\n");
printf("\t\t=====5.班级销毁=====\n");
printf("\t\t=====0.退出=====\n");
printf("\t\t=====6.增=====\n");
printf("\t\t=====7.删=====\n");
printf("\t\t=====8.改=====\n");
printf("\t\t=====9.查=====\n");
}
int *create()
{
int *ptr = (int *)malloc(3204); //Stu结构体占32字节 Class占36字节 10个学生加人数4字节 3204
if(ptr==NULL)
{
printf("申请失败!\n");
return NULL;
}
memset(ptr,0,3204);
return ptr;
}
void stu_scan(struct Class *ptr)
{
printf("请输入班级的人数:");
scanf("%d",&ptr->size);
for(int i=0;i<ptr->size;i++)
{
getchar();
printf("请输入第%d位学生的名字:",i+1);
scanf("%s",ptr->stu[i].name);
printf("请输入第%d位学生的年龄:",i+1);
scanf("%d",&ptr->stu[i].age);
printf("请输入第%d位学生的成绩:",i+1);
scanf("%d",&ptr->stu[i].score);
}
}
void stu_print(struct Class *ptr)
{
if(NULL == ptr)
{
printf("error\n");
return ;
}
printf("姓名\t年龄\t成绩\t\n");
for(int i=0;i<ptr->size;i++)
{
printf("%s\t%d\t%d\t\n",ptr->stu[i].name,ptr->stu[i].age,ptr->stu[i].score);
}
}
void stu_jiang(struct Class *ptr)
{
for(int i=1;i<ptr->size;i++)
{
for(int j=0;j<ptr->size-i;j++)
{
if(ptr->stu[j].score>ptr->stu[j+1].score)
{
int temp=ptr->stu[j].score;
ptr->stu[j].score=ptr->stu[j+1].score;
ptr->stu[j+1].score=temp;
}
}
}
}
void stu_max(struct Class *ptr)
{
int max=ptr->stu[0].score;
int maxi=0;
int min=ptr->stu[ptr->size-1].score;
int mini=ptr->size-1;
for(int i=0;i<ptr->size;i++)
{
if(ptr->stu[i].score>max)
{
max=ptr->stu[i].score;
maxi=i;
}
if(ptr->stu[i].score<min)
{
min=ptr->stu[i].score;
mini=i;
}
}
printf("成绩最好:%s\t%d\t%d\t\n",ptr->stu[maxi].name,ptr->stu[maxi].age,ptr->stu[maxi].score);
printf("成绩最差:%s\t%d\t%d\t\n",ptr->stu[mini].name,ptr->stu[mini].age,ptr->stu[mini].score);
}
void stu_bomm(struct Class **ptr)
{
if(NULL != *ptr)
{
free(*ptr); //释放空间
*ptr = NULL;
}
}
int zeng(struct Class *ptr)
{
int n=0,p=0;
printf("请输入要增加的位置和增加的学生信息个数:");
scanf("%d %d",&n,&p);
if(ptr==NULL||n<0||n>ptr->size)
{
printf("添加失败\n");
return -1;
}
for(int j=1;j<=p;j++){
printf("插入第%d个数据\n",j);
for(int i=ptr->size;i>n;i--)
{
ptr->stu[i]=ptr->stu[i-1];
}
printf("请输入该学生的名字:");
scanf("%s",ptr->stu[n].name);
printf("请输入该学生的年龄:");
scanf("%d",&ptr->stu[n].age);
printf("请输入该学生的成绩:");
scanf("%d",&ptr->stu[n].score);
printf("插入成功\n");
ptr->size++;
n++;
}
return 0;
}
int shan(struct Class *ptr)
{
int n=0;
printf("请输入要删除的位置:");
scanf("%d",&n);
if(ptr==NULL||n<0||n>ptr->size)
{
printf("操作失败\n");
return -1;
}
for(int i=n;i<ptr->size;i++)
{
ptr->stu[i-1]=ptr->stu[i];
}
ptr->size--;
printf("删除成功\n");
return 0;
}
int gai(struct Class *ptr)
{
int n=0;
printf("请输入要修改的位置:");
scanf("%d",&n);
if(ptr==NULL||n<0||n>ptr->size)
{
printf("操作失败\n");
return -1;
}
getchar();
printf("请输入该学生的名字:");
scanf("%s",ptr->stu[n].name);
printf("请输入该学生的年龄:");
scanf("%d",&ptr->stu[n].age);
printf("请输入该学生的成绩:");
scanf("%d",&ptr->stu[n].score);
printf("修改成功\n");
}
int cha(struct Class *ptr)
{
char a[10]="";
if(ptr==NULL)
{
printf("操作失败\n");
return -1;
}
printf("请输入你要查找的学生名字\n");
getchar();
gets(a);
for(int i=0;i<ptr->size;i++)
{
if(strcmp(a,ptr->stu[i].name)==0)
{
printf("要查找的数据在第%d个\n信息为:\n",i+1);
printf("%s\t%d\t%d\n",ptr->stu[i].name,ptr->stu[i].age,ptr->stu[i].score);
return 1;
}
}
printf("查找不到\n");
return 0;
}
zuoye.h
#ifndef test_h
#define test_h
struct Stu;
struct Class;
void print_menu();
int *create();
void stu_scan(struct Class *ptr);
void stu_print(struct Class *pt);
void stu_jiang(struct Class *pt);
void stu_max(struct Class *pt);
void stu_bomm(struct Class **ptr);
int zeng(struct Class *ptr);
int shan(struct Class *ptr);
int gai(struct Class *ptr);
int cha(struct Class *ptr);
#endif