c语言成绩统计系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言成绩统计系统
#include
#include
#include
int shoudsave=0; /* 为后面判断是否改动资料做铺垫*/ struct student
{
char num[11];/*学号*/
char name[20];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
float ajd;//平均绩点
};
typedef struct node
{
struct student data;
struct node *next;
} Node,*Link;
void menu()
{
printf("************************************************************************ ********");
printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n");
printf("\t3查询学生资料\t\t\t\t\t4修改学生资料\n");
printf("\t5显示学生资料\t\t\t\t\t6统计学生成绩\n");
printf("\t7排序学生成绩\t\t\t\t\t8保存学生资料\n");
printf("\t9获取帮助信息\t\t\t\t\t0退出系统\n");
printf("************************************************************************ ********\n");
}
void printstart()
{
printf("--------------------------------------------------------------------------------\n");
}
void Wrong()
{
printf("\n=====>提示:输入错误!\n");
}
void Nofind()
{
printf("\n=====>提示:没有找到该学生!\n");
}
void printc() /* 本函数用于输出中文标题*/
{
printf(" 学号\t 姓名英语成绩数学成绩C语言成绩总分平均分平均绩点\n");
}
void printe(Node *p)/*本函数用于输出中文标题下的具体内容*/
{
printf("%-12s%s\t%d\t %d\t %d\t %d\t %d\t %2.1f\n",p->data.num,p->d ,
p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave,p->data.ajd);
}
Node *Locate(Link l,char findmess[],char nameornum[]) /*该函数用于定位连表中符合要求的接点,并返回该指针*/
{
Node *r;
if(strcmp(nameornum,"num")==0) /*按学号查询*/
{
r=l->next;
while(r)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /*按姓名查询*/
{
r=l->next;
while(r)
{
if(strcmp(r->,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
float jd(Node *p)
{
int b[3],i;
float sum=0.0,a;
b[0]=p->data.cgrade;b[1]=p->data.mgrade;b[2]=p->data.egrade;
for( i=0;i<=2;i++)
{
if(b[i]>=90) a=5.0 ;
else if(b[i]>=85) a=4.5;
else if(b[i]>=80) a=4.0;
else if(b[i]>=75) a=3.5;
else if(b[i]>=70) a=3.0;
else if(b[i]>=65) a=2.5;
else if(b[i]>=60) a=2.0;
else a=0.0 ;
sum+=a;
}
return sum/3;
}
void Add(Link l) /*增加学生*/
{
Node *p,*r,*s;
char num[11];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next;
while(1)
{
k0: printf("请你输入学号(以'0'返回上一级菜单)");
scanf("%s",num);
getchar();
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4' 修改!\n",num);