#include
#include
#include
/**
使用结构体指针数组的做法
对学生结构体只保留了学号,姓名和成绩3个信息
计算机64严育豪
2160500100
*/
typedef struct {
char id[32];
char name[32];
double score;
}Stu,*PStu;
typedef struct {
PStu pStus[100];
int count;
}Group,*PGroup;
void addStu(PGroup pg, PStu ps);
void addNewStu(PGroup pg);
void showStu(PStu ps);
void showGroup(PGroup pg);
void delStu(PGroup pg,char id[]);
void findStuById(PGroup pg,char id[]);
void sortGroup(PGroup pg);
void view(void);
int main() {
view();
return 0;
}
//显示程序主要功能
void view(void){
printf("班级信息管理3.0版---阿豪\n");
Group g;
g.count = 0;
//初始化3个数据
Stu t1 = { "2160500100","张三",60 };
Stu t2 = { "2160500101","李四",50 };
Stu t3 = { "2160500102","王五",80 };
addStu(&g, &t1);
addStu(&g, &t2);
addStu(&g, &t3);
char id[32];
int n;
while (1) {
printf("1,添加学生 2,删除学生 3,查找学生 4,按照学号排序 5,按照成绩排序 6,输出 7,退出\n");
scanf("%d", &n);
switch (n){
case 1:
addNewStu(&g);
break;
case 2:
printf("请输入要删除的学生学号:");
scanf("%s",id);
delStu(&g,id);
break;
case 3:
printf("请输入要查找的学生学号:");
scanf("%s",id);
findStuById(&g,id);
break;
case 4:
sortGroup(&g);
showGroup(&g);
break;
case 5:
showGroup(&g);
break;
case 6:
return;
default:
printf("请输入有效指令\n");
break;
}
printf("\n");
}
}
void addStu(PGroup pg,PStu ps) {
pg->pStus[pg->count] = ps;
pg->count++;
}
void showStu(PStu ps) {
printf("%s\t%s\t%.3lf\n",ps->id,ps->name,ps->score);
}
void showGroup(PGroup pg) {
int i ;
printf("学号\t\t姓名\t成绩\n");
for (i = 0; i < pg->count; i++)
showStu(pg->pStus[i]);
}
void addNewStu(PGroup pg){
if(pg->count>100){
printf("学生已满,无法添加\n");
return;
}
PStu ps = (PStu)malloc(sizeof(Stu));
printf("请输入信息(空格隔开):学号 姓名 成绩\n");
scanf("%s %s %lf", ps->id, ps->name, &ps->score);
pg->pStus[pg->count] = ps;
pg->count++;
printf("添加成功\n");
}
void findStuById(PGroup pg,char id[]){
int i ;
for (i = 0; i < pg->count; i++) {
if( ! strcmp(pg->pStus[i]->id,id )){
showStu(pg->pStus[i]);
return;
}
}
printf("没有学号为 %s 的学生\n",id);
}
void delStu(PGroup pg,char id[]){
int i ;
if(pg->count <= 0) return;
for (i = 0; i < pg->count; i++) {
if( ! strcmp(pg->pStus[i]->id,id )){
if(i==pg->count){
pg->count--;
}else{
for(;icount-1;i++){
pg->pStus[i]=pg->pStus[i+1];
}
pg->count--;
}
printf("删除成功\n");
return;
}
}
printf("没有学号为 %s 的学生\n",id);
}
void sortGroup(PGroup pg){
PStu t;
int i,j;
int n=pg->count;
for(i=0;i
for(j=i+1;j
if(pg->pStus[i]->score > pg->pStus[j]->score){
t=pg->pStus[i];
pg->pStus[i]=pg->pStus[j];
pg->pStus[j]=t;
}
}
}
printf("排序成功\n");
}