c语言学生成绩管理指针,C语言实现学生信息管理(结构体指针版)

#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");

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值