求c语言学生成绩管理,学生成绩管理系统C语言【急求!!!谢谢!!!】

答案:这个你看看需要哪些改进的地方

#include

#include

#include

typedef struct student

{

int number;//学号

char name[30];//姓名

int a,b,c;//三门课成绩

float aver;//平均成绩

}student;

typedef struct node

{

student data;

struct node *next;

}Node,*Link;

void xian1()

{

printf("                                学籍管理系统\n");

printf("                                      *\n");

printf("                                      *\n");

printf("                                      *\n");

}

void xian2()

{

printf("     ******************************************************************\n");

printf("                 1.添加学生资料;           2.查找学生资料;\n");

printf("                 3.修改学生资料;           4.删除学生资料;\n");

printf("                 5.按名次查看成绩;         6.清除所有资料;\n");

printf("                 7.查看全班平均分;         8.查看所有学生平均分;\n");

printf("                 0.退出学籍系统;           9.查看菜单项;\n");

printf("     ******************************************************************\n");

}

void Save(Link L)//保存学生资料

{

Node *p;

FILE *fp;

int flag=1,count=0;

fp=fopen("student","wb");

if(fp==NULL)

{

printf("\n=====>提示重新打开文件时发生错误!\n");

return;

}

p=L->next;

while(p)

{

if(fwrite(p,sizeof(Node),1,fp)==1)

{  p=p->next;

count++;

}

else

{

flag=0;

break;

}

}

if(flag)

printf("\n=====>提示:文件保存成功.(有%d条记录已经保存.)\n",count);

fclose(fp);

}

void Saveas(Link L)//是否保存资料

{

char h;

printf("是否保存设置?(y/n):");

h=getchar();

h=getchar();

if(h!='n')

Save(L);

}

Node *Locate(Link L,int number)//查找

{

Node *p;

p=L->next;

while(p)

{

if(p->data.number==number)

return p;

p=p->next;

}

return p;

}

void Findname(Link L)//按姓名查找

{

Node *p=L->next;

char nam[20];

int flag=0;

printf("查找姓名:");

scanf("%s",nam);

if(p==NULL)

{printf("没有资料可供查找!\n");return;}

while(p)

{

if(strcmp(p->data.name,nam)==0)

{

printf("学号:%d\n",p->data.number);

printf("姓名:%s\n",p->data.name);

printf("第1门成绩:%d\n",p->data.a);

printf("第2门成绩:%d\n",p->data.b);

printf("第3门成绩:%d\n",p->data.c);

printf("平均分:%f\n",p->data.aver);

flag++;

}

p=p->next;

}

if(flag==0)

printf("\n\t\t\t没有该生!\n");

}

void Findnumber(Link L)//按学号找

{

Node *p;

int number;

printf("查找学号:");

scanf("%d",&number);

p=Locate(L,number);

if(p==NULL)

{printf("\n\t\t\t没有该生!\n");return;}

printf("\n学号:%d\n",p->data.number);

printf("姓名:%s\n",p->data.name);

printf("第1门成绩:%d\n",p->data.a);

printf("第2门成绩:%d\n",p->data.b);

printf("第3门成绩:%d\n",p->data.c);

printf("平均分:%f\n",p->data.aver);

}

void ADD(Link L)//添加学生

{

Node *w,*r,*p;

int number;

r=L;

while(r->next!=NULL)

r=r->next;

printf("查看是否有需添加的学号:");

scanf("%d",&number);

w=Locate(L,number);

if(w)

{

printf("=====>提示:该同学已存在!\n");

return;

}

p=(Node *)malloc(sizeof(Node));

p->next=NULL;

printf("=====>提示:可以添加!\n");

printf("姓名:");

scanf("%s",p->data.name);

p->data.number=number;

p->data.aver=0.0;

printf("第1门分数:");

scanf("%d",&p->data.a);

printf("第2门分数:");

scanf("%d",&p->data.b);

printf("第3门分数:");

scanf("%d",&p->data.c);

p->data.aver=(p->data.a)+(p->data.b)+(p->data.c);

p->data.aver=p->data.aver/3;

printf("=====>提示:添加成功!\n");

r->next=p;

Save(L);

}

void Modify(Link L)//修改

{

int number;

Node *p;

printf("需修改人的学号:");

scanf("%d",&number);

p=Locate(L,number);

if(!p)

printf("=====>提示:没有该生资料!\n");

else

{

printf("姓名:");

scanf("%s",p->data.name);

printf("学号:");

scanf("%d",&p->data.number);

printf("第1门分数:");

scanf("%d",&p->data.a);

printf("第2门分数:");

scanf("%d",&p->data.b);

printf("第3门分数:");

scanf("%d",&p->data.c);

p->data.aver=(p->data.a)+(p->data.b)+(p->data.c);

p->data.aver=p->data.aver/3;

printf("=====>提示:修改成功!\n");

Saveas(L);

}

}

void Clasaver(Link L)//计算全班平均成绩

{

Node *p;

float sum=0.0,aver;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值