急求 C语言作业 做学生成绩管理系统

2025-03-15 06:32:00
推荐回答(4个)
回答1:

#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "string.h"
typedef struct
{
int year;
char xueqi[10];
char banji[20];
int sno;
char name[20];
}student;

typedef struct
{
int math;
int english;
int chinese;
int biology;
int chemitsy;
int avenge;
}chengji;

typedef struct node
{
student stu;
chengji chj;
node *next;
}Lnode;

Lnode* chushihua()
{
Lnode *h;//定义指向节点的指针,指向学生单链表头结点
h=(Lnode*)malloc(sizeof(Lnode));
h->next=NULL;
return h;
}

int luruxinxi(Lnode *h)//录入相关信息
{
Lnode *p,*q;
p=h;
while(p->next!=NULL)
{
p=p->next;
}
char flag='y';//结束标志
while(flag=='y')
{
q=(Lnode *)malloc(sizeof(Lnode));
printf("请输入年份:\n");
scanf("%d",&q->stu.year);
fflush(stdin);
printf("请输入学期:\n");
scanf("%s",q->stu.xueqi);
fflush(stdin);
printf("请输入班级:\n");
scanf("%s",q->stu.banji);
fflush(stdin);
printf("请输入学生学号:\n");
scanf("%d",&q->stu.sno);
fflush(stdin);
printf("请输入姓名:\n");
fflush(stdin);
scanf("%s",q->stu.name);
printf("请输入各科成绩:语文 数学 英语 生物 化学\n");
scanf("%d%d%d%d%d",&q->chj.chinese,&q->chj.math,&q->chj.english,&q->chj.biology,&q->chj.chemitsy);
q->chj.avenge=(q->chj.biology+q->chj.chemitsy+q->chj.chinese+q->chj.english+q->chj.math)/5;
p->next=q;
p=q;
fflush(stdin);
printf("是否继续【y/n】\n");
scanf("%c",&flag);
}
p->next=NULL;
return 1;
}

int change(Lnode* h)
{
Lnode *p;
p=h;
int number;
char flag1='y';
char flag2='y';
char flag3='y';
int i;
printf("请输入你要修改的学生学号:\n");
scanf("%d",&number);
while(p->next!=NULL&&flag3=='y')
{
p=p->next;
if(number==p->stu.sno)
{

fflush(stdin);
printf("修改学生信息:【y/n】");
scanf("%c",&flag1);
if('y'==flag1)
{

printf("您可以修改班级和姓名:\n");
printf("请选择修改部分:\n");
printf("1.班级姓名都修改\n");
printf("2.修改班级:\n");
printf("3.修改姓名:\n");
scanf("%d",&i);
switch(i)
{
case 1:
fflush(stdin);
printf("请输入修改班级号:\n");
scanf("%s",p->stu.banji);
printf("请输入修改姓名:\n");
fflush(stdin);
scanf("%s",p->stu.name);
break;
case 2:
printf("请输入修改班级号:\n");
scanf("%s",p->stu.banji);
break;
case 3:
fflush(stdin);
printf("请输入修改姓名:\n");
scanf("%s",p->stu.name);
break;
default:
printf("输入错误\n");
break;
}
}
else
{
printf("你可以修改全部或部分成绩:\n");
printf("1.修改语文:\n");
printf("2.修改数学:\n");
printf("3.修改英语:\n");
printf("4.修改生物:\n");
printf("5.修改化学:\n");
printf("可多选\n");
printf("为方便计算请按标准输入:\n");
printf("例:修改123,输入11100,确认修改的按1,反之按0!\n");
scanf("%d",&i);
switch(i)
{
case 10000:
printf("请输入修改后的语文成绩:\n");
scanf("%d",&p->chj.chinese);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 11000:
printf("请输入修改后的语文成绩:\n");
scanf("%d",&p->chj.chinese);
printf("请输入修改后的数学成绩:\n");
scanf("%d",&p->chj.math);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 11100:
printf("请输入修改后的语文成绩:\n");
scanf("%d",&p->chj.chinese);
printf("请输入修改后的数学成绩:\n");
scanf("%d",&p->chj.math);
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 11110:
printf("请输入修改后的语文成绩:\n");
scanf("%d",&p->chj.chinese);
printf("请输入修改后的数学成绩:\n");
scanf("%d",&p->chj.math);
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
printf("请输入修改后的生物成绩:\n");
scanf("%d",&p->chj.biology);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 11111:
printf("请输入修改后的语文成绩:\n");
scanf("%d",&p->chj.chinese);
printf("请输入修改后的数学成绩:\n");
scanf("%d",&p->chj.math);
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
printf("请输入修改后的生物成绩:\n");
scanf("%d",&p->chj.biology);
printf("请输入修改后的化学成绩:\n");
scanf("%d",&p->chj.chemitsy);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 01000:
printf("请输入修改后的数学成绩:\n");
scanf("%d",&p->chj.math);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 01100:
printf("请输入修改后的数学成绩:\n");
scanf("%d",&p->chj.math);
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 01110:
printf("请输入修改后的数学成绩:\n");
scanf("%d",&p->chj.math);
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
printf("请输入修改后的生物成绩:\n");
scanf("%d",&p->chj.biology);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 01111:
printf("请输入修改后的数学成绩:\n");
scanf("%d",&p->chj.math);
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
printf("请输入修改后的生物成绩:\n");
scanf("%d",&p->chj.biology);
printf("请输入修改后的化学成绩:\n");
scanf("%d",&p->chj.chemitsy);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 00100:
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 00110:
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
printf("请输入修改后的生物成绩:\n");
scanf("%d",&p->chj.biology);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;

break;
case 00111:
printf("请输入修改后的英文成绩:\n");
scanf("%d",&p->chj.english);
printf("请输入修改后的生物成绩:\n");
scanf("%d",&p->chj.biology);
printf("请输入修改后的化学成绩:\n");
scanf("%d",&p->chj.chemitsy);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 00010:
printf("请输入修改后的生物成绩:\n");
scanf("%d",&p->chj.biology);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 00011:
printf("请输入修改后的生物成绩:\n");
scanf("%d",&p->chj.biology);
printf("请输入修改后的化学成绩:\n");
scanf("%d",&p->chj.chemitsy);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
case 00001:
printf("请输入修改后的化学成绩:\n");
scanf("%d",&p->chj.chemitsy);
p->chj.avenge=(p->chj.biology+p->chj.chemitsy+p->chj.chinese+p->chj.english+p->chj.math)/5;
break;
default:
printf("输入有误!\n");
break;
}
}
flag3='n';
}

}
if(flag3=='y')
{
printf("无该学生!\n");
}
return 1;
}

int display(Lnode *h)
{
Lnode *k;
k=h;
printf("年份 学期 班级 学号 姓名 语文 数学 英语 化学 生物 平均\n");
while(k->next!=NULL)
{
k=k->next;
printf("%d %s %s %d %s %d %d %d %d %d %d \n",k->stu.year,k->stu.xueqi,k->stu.banji,k->stu.sno,k->stu.name,k->chj.chinese,k->chj.math,k->chj.english,k->chj.chemitsy,k->chj.biology,k->chj.avenge);
}
return 1;
}

int chaxun(Lnode *h)
{
Lnode *p;
Lnode *q;
p=h;
char flag='y';
printf("不及格学生的信息:\n");
printf("年份 学期 班级 学号 姓名:\n");
while(p->next!=NULL)
{
p=p->next;

if(p->chj.biology<60||p->chj.chemitsy<60||p->chj.chinese<60||p->chj.english<60||p->chj.math<60)
{
flag='n';
printf("%d %s %s %d %s",p->stu.year,p->stu.xueqi,p->stu.banji,p->stu.sno,p->stu.name);
}
}
if(flag=='y')
{
printf("表现非常良好,无不及格学生");
return 0;
}
return 1;
}

int tongji(Lnode *h)
{
Lnode *p;
p=h;
Lnode *h1;//某班级链表头指针
h1=(Lnode*)malloc(sizeof(Lnode));
h1->next=NULL;
Lnode *q;
Lnode *k;
k=h1;
q=h1;
char flag='y';
char banji[20];
printf("请输入班级号:\n");
scanf("%s",banji);
while(p->next!=NULL)
{
p=p->next;
if(strcmp(p->stu.banji,banji)==0)
{
flag='n';
q->next=p;
q=p;
}
}
if(flag=='y')
{
printf("无该班级,请检查输入!\n");
return 0;
}
else
{

q->next=NULL;
printf("%s班级信息如下:\n",banji);
printf("年份 学期 班级 学号 姓名 语文 数学 英语 化学 生物 平均\n");
while(k->next!=NULL)
{
k=k->next;
printf("%d %s %s %d %s %d %d %d %d %d %d \n",k->stu.year,k->stu.xueqi,k->stu.banji,k->stu.sno,k->stu.name,k->chj.chinese,k->chj.math,k->chj.english,k->chj.chemitsy,k->chj.biology,k->chj.avenge);
}
Lnode *p1,*q1,*k1;
Lnode *r1;
k1=h1;
while(k1->next!=NULL)
{
p1=k1;
while(p1->next->next!=NULL)
{
q1=p1->next;
r1=q1->next;
if(q1->chj.avenge<(r1->chj.avenge))
{
p1->next=r1;
q1->next=r1->next;
r1->next=q1;
}
p1=p1->next;
}
k1=k1->next;
}
printf("排序后%s班级的成绩表如下显示:\n",banji);
printf("年份 学期 班级 学号 姓名 语文 数学 英语 化学 生物 平均\n");
Lnode *j;
j=h1;
while(j->next!=NULL)
{
j=j->next;
printf("%d %s %s %d %s %d %d %d %d %d %d \n",j->stu.year,j->stu.xueqi,j->stu.banji,j->stu.sno,j->stu.name,j->chj.chinese,j->chj.math,j->chj.english,j->chj.chemitsy,j->chj.biology,j->chj.avenge);
}

return 1;
}
}

int main(void)
{
Lnode *h;
int i;
h=chushihua();
printf("请输入学生信息及学生成绩:\n");
luruxinxi(h);
while(1)
{
printf("选择操作:\n");
printf("1.显示全部信息:\n");
printf("2.改变学生信息:\n");
printf("3.统计学生信息:\n");
printf("4.查询不及格学生:\n");
printf("5.退出系统:\n");
scanf("%d",&i);
switch(i)
{
case 1:
display(h);
break;
case 2:
change(h);
break;
case 3:
tongji(h);
break;
case 4:
chaxun(h);
break;
case 5:
exit(0);
default:
printf("输入出错!\n");
break;

}

}

return 1;
}

看看行吗,有问题找我

回答2:

这个要自己写呀,只有自己写了,才会学到东西呀

回答3:

有偿 可联系 看ID

回答4:

纯C还是要用数据库的?