C语言学生成绩管理系统
#include
#include
#include
#define LEN sizeof(struct scorenode)
#define DEBUG
#include
struct scorenode
{int number;/*学号*/
char name[10];/*姓名*/
float yuwen;/*语文成绩*/
float yingyu;/*英语成绩*/
float shuxue;/*数学成绩 */
struct scorenode *next;
};
typedef struct scorenode score;
int n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/
/*==============================================================================================*/
score *creat2311(void)
/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/
{
score*head;
score *p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
n=0;
p1=p2=p3=(score *)malloc(LEN);head=p3; /*开辟一个新单元*/
printf("请输入学生资料,输0退出!
");
repeat1: printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&p1->number);}
/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
if(p1->number==0)
goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("学号重复,请重输!
");
goto repeat1;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
printf("请输入学生姓名:");
scanf("%s",&p1->name);/*输入学生姓名*/
printf("请输入语文成绩(0~100):");/*输入语文成绩,成绩应在0-100*/
scanf("%f",&p1->yuwen);
while(p1->yuwenyuwen>100)
{getchar();
printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/
scanf("%f",&p1->yuwen);}
printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0-100*/
scanf("%f",&p1->yingyu);
while(p1->yingyuyingyu>100)
{getchar();
printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/
scanf("%f",&p1->yingyu);}
printf("请输入数学成绩(0~100):");/*输入数学成绩,成绩应在0-100*/
scanf("%f",&p1->shuxue);
while(p1->shuxueshuxue>100)
{getchar();
printf("输入错误,请重新输入数学成绩");
scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
head=NULL;
while(p1->number!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(score *)malloc(LEN);
printf("请输入学生资料,输0退出!
");
repeat2:printf("请输入学生学号(学号应大于0):");
scanf("%d",&p1->number);/*输入学号,学号应大于0*/
while(p1->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&p1->number);}
/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
if(p1->number==0)
goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("学号重复,请重输!
");
goto repeat2;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
printf("请输入学生姓名:");
scanf("%s",&p1->name);/*输入学生姓名*/
printf("请输入语文成绩(0~100):");
scanf("%f",&p1->yuwen);/*输入语文成绩,成绩应在0-100*/
while(p1->yuwenyuwen>100)
{getchar();
printf("输入错误,请重新输入语文成绩");
scanf("%f",&p1->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/
printf("请输入英语成绩(0~100):");
scanf("%f",&p1->yingyu);/*输入英语成绩,成绩应在0-100*/
while(p1->yingyuyingyu>100)
{getchar();
printf("输入错误,请重新输入英语成绩");
scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/
printf("请输入数学成绩(0~100):");
scanf("%f",&p1->shuxue);/*输入数学成绩,成绩应在0-100*/
while(p1->shuxueshuxue>100)
{getchar();
printf("输入错误,请重新输入数学成绩");
scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
}
end: p1=head;
p3=p1;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交换前后结点中的姓名,使之与学号相匹配*/
fen=max->yuwen;
max->yuwen=p1->yuwen;
p1->yuwen=fen;
/*交换前后结点中的语文成绩,使之与学号相匹配*/
fen=max->yingyu;
max->yingyu=p1->yingyu;
p1->yingyu=fen;
/*交换前后结点中的英语成绩,使之与学号相匹配*/
fen=max->shuxue;
max->shuxue=p1->shuxue;
p1->shuxue=fen;
/*交换前后结点中的数学成绩,使之与学号相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向链表头*/
}
p2->next=NULL;/*链表结尾*/
printf("输入的学生数为:%d个!
",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *load2311(score *head)
/*函数load2311,功能:从文件读入学生记录*/
{ score *p1,*p2;
int m=0;
char filepn[10];
FILE *fp;
printf("请输入文件路径及文件名:");
scanf("%s",filepn);/*输入文件路径及名称*/
if((fp=fopen(filepn,"r+"))==NULL)
{
printf("不能打开文件!
");
return 0;
}
fscanf(fp," 考试成绩管理系统
");
fscanf(fp," 作者:梅雪 班级:03电信 学号:303073011
");
fscanf(fp,"-----------------------------------------
");
fscanf(fp,"|学号|姓名|语文|英语|数学|
");
fscanf(fp,"-----------------------------------------
");/*读入表格域*/
printf(" 考试成绩管理系统
");
printf(" 作者:梅雪 班级:03电信 学号:303073011
");
printf("-----------------------------------------
");
printf("|学号|姓名|语文|英语|数学|
");
printf("-----------------------------------------
");/*打印表格域*/
m=m+1;
if(m==1)
{
p1=(score *)malloc(LEN); /*开辟一个新单元*/
fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);
printf("|%d|%s|%.1f|%.1f|%.1f|
",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
/*文件读入与显示*/
head=NULL;
do
{
n=n+1;
if(n==1) head=p1;
else {p2->next=p1;
p2=p1};
p1=(score *)malloc(LEN); /*开辟一个新单元*/
fscanf(fp,"%d%s%f%f%f
",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);
printf("|%d|%s|%.1f|%.1f|%.1f|
",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
/*文件读入与显示*/
}while(!feof(fp));
p2->next=p1;
p1->next=NULL;
n=n+1;
}printf("-----------------------------------------
");/*表格下线*/
fclose(fp);/*结束读入,关闭文件*/
return (head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *add2311(score *head,score *stu)
/*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/
{
score *p0,*p1,*p2,*p3,*max;
int i,j;
float fen;
char t[10];
p3=stu=(score *)malloc(LEN);/*开辟一个新单元*/
printf("
输入要增加的学生的资料!");
repeat4: printf("请输入学生学号(学号应大于0):");
scanf("%d",&stu->number);
/*输入学号,学号应大于0*/
while(stu->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&stu->number);}/*输入错误,重新输入学号*/
/******************************************************/
if(stu->number==0)
goto end2;/*当输入的学号为0时,转到末尾,结束追加*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(stu->number!=p3->number)
p3=p3->next;
else
{printf("学号重复,请重输!
");
goto repeat4;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
/******************************************************/
printf("输入学生姓名:");
scanf("%s",stu->name); /*输入学生姓名*/
printf("请输入语文成绩(0~100):");
scanf("%f",&stu->yuwen); /*输入语文成绩,成绩应在0-100*/
while(stu->yuwenyuwen>100)
{getchar();
printf("输入错误,请重新输入语文成绩");
scanf("%f",&stu->yuwen);} /*输入错误,重新输入语文成绩直到正确为止*/
printf("请输入英语成绩(0~100):");
scanf("%f",&stu->yingyu);/*输入英语成绩,成绩应在0-100*/
while(stu->yingyuyingyu>100)
{getchar();
printf("输入错误,请重新输入英语成绩");
scanf("%f",&stu->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/
printf("请输入数学成绩(0~100):");
scanf("%f",&stu->shuxue);/*输入数学成绩,成绩应在0-100*/
while(stu->shuxueshuxue>100)
{getchar();
printf("输入错误,请重新输入数学成绩");
scanf("%f",&stu->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/
else/*原来链表不为空*/
{
if(p1->next==NULL)/*找到原来链表的末尾*/
{
p1->next=p0;
p0->next=NULL;/*将它与新开单元相连接*/
}
else
{
while(p1->next!=NULL)/*还没找到末尾,继续找*/
{
p2=p1;p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
p1=head;
p0=stu;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交换前后结点中的姓名,使之与学号相匹配*/
fen=max->yuwen;
max->yuwen=p1->yuwen;
p1->yuwen=fen;
/*交换前后结点中的语文成绩,使之与学号相匹配*/
fen=max->yingyu;
max->yingyu=p1->yingyu;
p1->yingyu=fen;
/*交换前后结点中的英语成绩,使之与学号相匹配*/
fen=max->shuxue;
max->shuxue=p1->shuxue;
p1->shuxue=fen;
/*交换前后结点中的数学成绩,使之与学号相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向链表头*/
} end2:
printf("现在的学生数为:%d个!
",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score *search2311(score *head)
/*函数search2311,功能:查询学生成绩*/
{int number;
score *p1,*p2;
printf("输入要查询的学生的学号,");
scanf("%d",&number);
while(number!=0)
{
if(head==NULL)
{printf("
没有任何学生资料!
");return(head);}
printf("-----------------------------------------
");
printf("|学号|姓名|语文|英语|数学|
");
printf("-----------------------------------------
");/*打印表格域*/
p1=head;
while(number!=p1->number&&p1->next!=NULL)
{p2=p1;p1=p1->next;}
if(number==p1->number)
{printf("|%d|%s|%.1f|%.1f|%.1f|
",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
printf("-----------------------------------------
");}/*打印表格域*/
else
printf("%d不存在此学生!
",number);
printf("输入要查询的学生的学号,");
scanf("%d",&number);
}
printf("已经退出了!
");
return(head);}
/*==============================================================================================*/
/*==============================================================================================*/
score *del2311(score *head)/*函数del2311,功能:删除学生资料*/
{
score *p1,*p2;
int number;
printf("输入要删除的学生的学号(输入0时退出):");
scanf("%d",&number);
getchar();
while(number!=0)/*输入学号为0时退出*/
{
if(head==NULL)
{
printf("
没有任何学生资料!
");
return(head);
}
p1=head;
while(number!=p1->number&&p1->next!=NULL)
/*p1指向的不是所要找的首结点,并且后面还有结点*/
{
p2=p1;p1=p1->next;
} /*p1后移一个结点*/
if(number==p1->number)
/*找到了*/
{
if(p1==head)
head=p1->next;
/*若p1指向的是首结点,把地二个结点地址赋予head*/
else
p2->next=p1->next;
/*否则将下一个结点地址 赋给前一结点地址*/
printf("删除:%d
",number);n=n-1;
}
else
printf("%d不存在此学生!
",number);
/*找不到该结点*/
printf("输入要删除的学生的学号:");
scanf("%d",&number);
getchar();
}
#ifdef DEBUG
printf("已经退出了!
");
#endif
printf("现在的学生数为:%d个!
",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
void print2311(score *head)
/*函数print2311,功能:显示学生成绩*/
{
score *p;
if(head==NULL)
{printf("
没有任何学生资料!
");}
else
{printf("%d
",n);
printf("-----------------------------------------
");
printf("|学号|姓名|语文|英语|数学|
");
printf("-----------------------------------------
");/*打印表格域*/
p=head;
do
{printf("|%d|%s|%.1f|%.1f|%.1f|
",p->number,p->name,p->yuwen,p->yingyu,p->shuxue);
printf("-----------------------------------------
");/*打印表格域*/
p=p->next;}while (p!=NULL);/*打印完成了*/
}
}
/*==============================================================================================*/
/*==============================================================================================*/
score *statistics2311(score *head)
/*函数statistics2311,功能:统计学生成绩*/
{
float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;
score *p;
int x,y=0,i=0;
p=head;
printf("1个人总分和平均分2单科平均分3总分最高分4总分最低分
");
scanf("%d",&x);
getchar();
switch(x)
/*用switch语句实现功能选择*/
{
case 1: if(head==NULL)
{printf("
没有任何学生资料!
");return(head);}/*链表为空*/
else
{
printf("---------------------------------------------------------
");
printf("|学号|姓名|语文|英语|数学|总分|平均分|
");
printf("---------------------------------------------------------
");/*打印表格域*/
while(p!=NULL)
{
sum1=p->yuwen+p->yingyu+p->shuxue; /*计算个人总分*/
ave1=sum1/3;/*计算个人平均分*/
printf("|%d|%s|%.1f|%.1f|%.1f|%.1f|%.1f|
",p->number,p->name,p->yuwen,p->yingyu,p->shuxue,sum1,ave1);
/*打印结果*/
printf("---------------------------------------------------------
");/*打印表格域*/
p=p->next;}
}
return(head); break;
case 2: if(head==NULL)
{printf("
没有任何学生资料!
");return(head);}/*链表为空*/
while(p!=NULL)
{
sum1=sum1+p->yuwen;
sum2=sum2+p->yingyu;
sum3=sum3+p->shuxue;/*计算总分*/
y=y+1;
ave1=sum1/y;
ave2=sum2/y;
ave3=sum3/y;/*计算平均分*/
p=p->next;/*使p指向下一个结点*/
}
printf("语文平均分是%.1f
",ave1);
printf("英语平均分是%.1f
",ave2);
printf("数学平均分是%.1f
",ave3);/*打印结果*/
return(head); break;
case 3:
if(head==NULL)
{printf("
没有任何学生资料!
");return(head);}/*链表为空*/
max=p->yuwen+p->yingyu+p->shuxue;
while(i<n)
{
i=i+1;
sum1=p->yuwen+p->yingyu+p->shuxue; /*计算个人总分*/
if(max<sum1)
max=sum1;
p=p->next;
}
printf("总分最高分:%.1f",max);
printf("
");
return(head); break;
case 4: if(head==NULL)
{printf("
没有任何学生资料!
");return(head);}/*链表为空*/
while(p!=NULL)
{
min=p->yuwen+p->yingyu+p->shuxue;
while(p!=NULL)
{sum2=p->yuwen+p->yingyu+p->shuxue;
if(min>sum2)
min=sum2;
p=p->next;
}
}
printf("总分最低分:%.1f",min);
printf("
");
return(head); break;
default :printf("输入错误,请重试!
");
}
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
save2311(score *p1)
/*函数save2311,功能:保存学生的资料*/
{
FILE *fp;
char filepn[20];/*用来存放文件保存路径以及文件名*/
printf("请输入文件路径及文件名:");
scanf("%s",filepn);
if((fp=fopen(filepn,"w+"))==NULL)
{
printf("不能打开文件!
");
return 0;
}
fprintf(fp," 考试成绩管理系统
");
fprintf(fp," 作者:梅雪 班级:03电信 学号:303073011
");
fprintf(fp,"-----------------------------------------
");
fprintf(fp,"|学号|姓名|语文|英语|数学|
");
fprintf(fp,"-----------------------------------------
");
/*打印表格域*/
while(p1!=NULL)
{
fprintf(fp,"%d%s%.1f%.1f%.1f
",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
p1=p1->next;/*下移一个结点*/
}
fclose(fp);
printf("文件已经保存!
");
return 0;
}
/*==============================================================================================*/
/*==============================================================================================*/
score *taxis2311(score *head)
/*定义排序函数。此函数带回一个指向链表头的指针*/
{ score *p,*max;
int i,j,x;
float fen;
char t[10];
if(head==NULL)
{printf("
没有任何学生资料,请先建立链表!
");return(head);}/*链表为空*/
max=p=head;
for(i=0;i<80;i++)
printf("*");
printf("1按学生学号排序2按学生姓名排序3按语文成绩排序
");
printf("4按英语成绩排序5按数学成绩排序
");
for(i=0;i<80;i++)
printf("*");
printf("请选择操作:");
scanf("%d",&x);/*选择操作*/
getchar();
switch(x) /*用switch语句实现功能选择*/
{case 1 :
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p;
p=p->next;
if(max->number>p->number)
{
k=max->number;
max->number=p->number;
p->number=k;
/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
strcpy(t,max->name);
strcpy(max->name,p->name);
strcpy(p->name,t);
/*交换前后结点中的姓名,使之与学号相匹配*/
fen=max->yuwen;
max->yuwen=p->yuwen;
p->yuwen=fen;
/*交换前后结点中的语文成绩,使之与学号相匹配*/
fen=max->yingyu;
max->yingyu=p->yingyu;
p->yingyu=fen;
/*交换前后结点中的英语成绩,使之与学号相匹配*/
fen=max->shuxue;
max->shuxue=p->shuxue;
p->shuxue=fen;
/*交换前后结点中的数学成绩,使之与学号相匹配*/
}
}
max=head;p=head;/*重新使max,p指向链表头*/
}
print2311(head);break;/*打印值排序后的链表内容
我找的一个代码!试一下:
c语言学生成绩管理系统
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int shoudsave=0; /* */
struct student
{
char num[10];/* 学号 */
char name[20];
char sex[4];
int cgrade;
int mgrade;
int egrade;
int totle;
int ave;
char neartime[10];/* 最近更新时间 */
};
typedef struct node
{
struct student data;
struct node *next;
}Node,*Link;
void menu()
{
printf("********************************************************************************");
printf("1登记学生资料2删除学生资料
");
printf("3查询学生资料4修改学生资料
");
printf("5保存学生资料0退出系统
");
printf("********************************************************************************
");
}
void printstart()
{
printf("-----------------------------------------------------------------------
");
}
void Wrong()
{
printf("
=====>提示:输入错误!
");
}
void Nofind()
{
printf("
=====>提示:没有找到该学生!
");
}
void printc() /* 本函数用于输出中文 */
{
printf(" 学号 姓名 性别 英语成绩 数学成绩 C语言成绩 总分 平均分
");
}
void printe(Node *p)/* 本函数用于输出英文 */
{
printf("%-12s%s%s%d%d%d %d %d
",p->data.num,p->data.name,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->data.totle,p->data.ave);
}
Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位连表中符合要求的接点,并返回该指针 */
{
Node *r;
if(strcmp(nameornum,"num")==0) /* 按学号查询 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.num,findmess)==0)
return r;
r=r->next;
}
}
else if(strcmp(nameornum,"name")==0) /* 按姓名查询 */
{
r=l->next;
while(r!=NULL)
{
if(strcmp(r->data.name,findmess)==0)
return r;
r=r->next;
}
}
return 0;
}
void Add(Link l) /* 增加学生 */
{
Node *p,*r,*s;
char num[10];
r=l;
s=l->next;
while(r->next!=NULL)
r=r->next; /* 将指针置于最末尾 */
while(1)
{
printf("请你输入学号(以'0'返回上一级菜单:)");
scanf("%s",num);
if(strcmp(num,"0")==0)
break;
while(s)
{
if(strcmp(s->data.num,num)==0)
{
printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!
",num);
printstart();
printc();
printe(s);
printstart();
printf("
");
return;
}
s=s->next;
}
p=(Node *)malloc(sizeof(Node));
strcpy(p->data.num,num);
printf("请你输入姓名:");
scanf("%s",p->data.name);
getchar();
printf("请你输入性别:");
scanf("%s",p->data.sex);
getchar();
printf("请你输入c语言成绩:");
scanf("%d",&p->data.cgrade);
getchar();
printf("请你输入数学成绩:");
scanf("%d",&p->data.mgrade);
getchar();
printf("请你输入英语成绩:");
scanf("%d",&p->data.egrade);
getchar();
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle / 3;
/* 信息输入已经完成 */
p->next=NULL;
r->next=p;
r=p;
shoudsave=1;
}
}
void Qur(Link l) /* 查询学生 */
{
int sel;
char findmess[20];
Node *p;
if(!l->next)
{
printf("
=====>提示:没有资料可以查询!
");
return;
}
printf("
=====>1按学号查找
=====>2按姓名查找
");
scanf("%d",&sel);
if(sel==1)/* 学号 */
{
printf("请你输入要查找的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("查找结果
");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else if(sel==2) /* 姓名 */
{
printf("请你输入要查找的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
printf("查找结果
");
printstart();
printc();
printe(p);
printstart();
}
else
Nofind();
}
else
Wrong();
}
void Del(Link l) /* 删除 */
{
int sel;
Node *p,*r;
char findmess[20];
if(!l->next)
{
printf("
=====>提示:没有资料可以删除!
");
return;
}
printf("
=====>1按学号删除
=====>2按姓名删除
");
scanf("%d",&sel);
if(sel==1)
{
printf("请你输入要删除的学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("
=====>提示:该学生已经成功删除!
");
shoudsave=1;
}
else
Nofind();
}
else if(sel==2)
{
printf("请你输入要删除的姓名:");
scanf("%s",findmess);
p=Locate(l,findmess,"name");
if(p)
{
r=l;
while(r->next!=p)
r=r->next;
r->next=p->next;
free(p);
printf("
=====>提示:该学生已经成功删除!
");
shoudsave=1;
}
else
Nofind();
}
else
Wrong();
}
void Modify(Link l)
{
Node *p;
char findmess[20];
if(!l->next)
{
printf("
=====>提示:没有资料可以修改!
");
return;
}
printf("请你输入要修改的学生学号:");
scanf("%s",findmess);
p=Locate(l,findmess,"num");
if(p)
{
printf("请你输入新学号(原来是%s):",p->data.num);
scanf("%s",p->data.num);
printf("请你输入新姓名(原来是%s):",p->data.name);
scanf("%s",p->data.name);
getchar();
printf("请你输入新性别(原来是%s):",p->data.sex);
scanf("%s",p->data.sex);
printf("请你输入新的c语言成绩(原来是%d分):",p->data.cgrade);
scanf("%d",&p->data.cgrade);
getchar();
printf("请你输入新的数学成绩(原来是%d分):",p->data.mgrade);
scanf("%d",&p->data.mgrade);
getchar();
printf("请你输入新的英语成绩(原来是%d分):",p->data.egrade);
scanf("%d",&p->data.egrade);
p->data.totle=p->data.egrade+p->data.cgrade+p->data.mgrade;
p->data.ave=p->data.totle/3;
printf("
=====>提示:资料修改成功!
");
shoudsave=1;
}
else
Nofind();
}
void Disp(Link l)
{
int count=0;
Node *p;
p=l->next;
if(!p)
{
printf("
=====>提示:没有资料可以显示!
");
return;
}
printf("显示结果
");
printstart();
printc();
printf("
");
while(p)
{
printe(p);
p=p->next;
}
printstart();
printf("
");
}
void Tongji(Link l)
{
Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点 */
Node *r=l->next;
if(!r)
{
printf("
=====>提示:没有资料可以统计!
");
return ;
}
pm=pe=pc=pt=pa=r;
while(r!=NULL)
{
if(r->data.cgrade>=pc->data.cgrade)
pc=r;
if(r->data.mgrade>=pm->data.mgrade)
pm=r;
if(r->data.egrade>=pe->data.egrade)
pe=r;
if(r->data.totle>=pt->data.totle)
pt=r;
if(r->data.ave>=pa->data.ave)
pa=r;
r=r->next;
}
printf("------------------------------统计结果--------------------------------
");
printf("总分最高者:%s %d分
",pt->data.name,pt->data.totle);
printf("平均分最高者:%s %d分
",pa->data.name,pa->data.ave);
printf("英语最高者:%s %d分
",pe->data.name,pe->data.egrade);
printf("数学最高者:%s %d分
",pm->data.name,pm->data.mgrade);
printf("c语言最高者:%s %d分
",pc->data.name,pc->data.cgrade);
printstart();
}
void Sort(Link l)
{
Link ll;
Node *p,*rr,*s;
ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表 */
ll->next=NULL;
if(l->next==NULL)
{
printf("
=====>提示:没有资料可以排序!
");
return ;
}
p=l->next;
while(p)
{
s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息 */
s->data=p->data;
s->next=NULL;
rr=ll;
while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)
rr=rr->next;
if(rr->next==NULL)
rr->next=s;
else
{
s->next=rr->next;
rr->next=s;
}
p=p->next;
}
free(l);
l->next=ll->next;
printf("
=====>提示:排序已经完成!
");
}
void Save(Link l)
{
FILE* fp;
Node *p;
int flag=1,count=0;
fp=fopen("c:\\student","wb");
if(fp==NULL)
{
printf("
=====>提示:重新打开文件时发生错误!
");
exit(1);
}
p=l->next;
while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("
=====>提示:文件保存成功.(有%d条记录已经保存.)
",count);
shoudsave=0;
}
fclose(fp);
}
void main()
{
Link l;/* 连表 */
FILE *fp; /* 文件指针 */
int sel;
char ch;
char jian;
int count=0;
Node *p,*r;
printf("学生成绩管理系统
-------福建农业职业学院计应0501 黄欢(32号)
");
l=(Node*)malloc(sizeof(Node));
l->next=NULL;
r=l;
fp=fopen("C:\\student","rb");
if(fp==NULL)
{
printf("
=====>提示:文件还不存在,是否创建?(y/n)
");
scanf("%c",&jian);
if(jian=='y'||jian=='Y')
fp=fopen("C:\\student","wb");
else
exit(0);
}
printf("
=====>提示:文件已经打开,正在导入记录......
");
while(!feof(fp))
{
p=(Node*)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中 */
{
p->next=NULL;
r->next=p;
r=p; /* 将该接点挂入连中 */
count++;
}
}
fclose(fp); /* 关闭文件 */
printf("
=====>提示:记录导入完毕,共导入%d条记录.
",count);
while(1)
{
menu();
printf("请你选择操作:");
scanf("%d",&sel);
if(sel==0)
{
if(shoudsave==1)
{ getchar();
printf("
=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?
");
scanf("%c",&ch);
if(ch=='y'||ch=='Y')
Save(l);
}
printf("
=====>提示:你已经退出系统,再见!
");
break;
}
switch(sel)
{
case 1:Add(l);break; /* 增加学生 */
case 2:Del(l);break;/* 删除学生 */
case 3:Qur(l);break;/* 查询学生 */
case 4:Modify(l);break;/* 修改学生 */
case 5:Save(l);break;/* 保存学生 */
case 9:printf("==========帮助信息==========
");break;
default: Wrong();getchar();break;
}
}
}
/* */
/*
学生成绩管理程序
编制一个统计学生考试分数的管理程序。
设学生成绩已以一个学生一个记录的形式存储在文件中,
每位学生记录包含的信息有:姓名,学号和各门功课的成绩。
程序具有以下几项功能:求出各门课程的总分,平均分,按姓名,
按学号寻找其记录并显示,浏览全部学生成绩和按总分由高到低显示学生信息等。
*/
#include
#define SWN 3 /* 课程数 */
#define NAMELEN 20 /* 姓名最大字符数 */
#define CODELEN 10 /* 学号最大字符数 */
#define FNAMELEN 80 /* 文件名最大字符数 */
#define BUFLEN 80 /* 缓冲区最大字符数 */
/* 课程名称表 */
char schoolwork[SWN][NAMELEN+1] = {"Chinese","Mathematic","English"};
struct record
{
char name[NAMELEN+1]; /* 姓名 */
char code[CODELEN+1]; /* 学号 */
int marks[SWN]; /* 各课程成绩 */
int total; /* 总分 */
}stu;
struct node
{
char name[NAMELEN+1]; /* 姓名 */
char code[CODELEN+1]; /* 学号 */
int marks[SWN]; /* 各课程成绩 */
int total; /* 总分 */
struct node *next; /* 后续表元指针 */
}*head; /* 链表首指针 */
int total[SWN]; /* 各课程总分 */
FILE *stfpt; /* 文件指针 */
char stuf[FNAMELEN]; /* 文件名 */
/* 从指定文件读入一个记录 */
int readrecord(FILE *fpt,struct record *rpt)
{
char buf[BUFLEN];
int i;
if(fscanf(fpt,"%s",buf)!=1)
return 0; /* 文件结束 */
strncpy(rpt->name,buf,NAMELEN);
fscanf(fpt,"%s",buf);
strncpy(rpt->code,buf,CODELEN);
for(i=0;i<SWN;i++)
fscanf(fpt,"%d",&rpt->marks[i]);
for(rpt->total=0,i=0;i<SWN;i++)
rpt->total+=rpt->marks[i];
return 1;
}
/* 对指定文件写入一个记录 */
writerecord(FILE *fpt,struct record *rpt)
{
int i;
fprintf(fpt,"%s
",rpt->name);
fprintf(fpt,"%s
",rpt->code);
for(i=0;i<SWN;i++)
fprintf(fpt,"%d
",rpt->marks[i]);
return ;
}
/* 显示学生记录 */
displaystu(struct record *rpt)
{
int i;
printf("
Name : %s
",rpt->name);
printf("Code : %s
",rpt->code);
printf("Marks :
");
for(i=0;i<SWN;i++)
printf(" %-15s : %4d
",schoolwork[i],rpt->marks[i]);
printf("Total : %4d
",rpt->total);
}
/* 计算各单科总分 */
int totalmark(char *fname)
{
FILE *fp;
struct record s;
int count,i;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.
",fname);
return 0;
}
for(i=0;i<SWN;i++)
total[i]=0;
count=0;
while(readrecord(fp,&s)!=0)
{
for(i=0;i<SWN;i++)
total[i]+=s.marks[i];
count++;
}
fclose(fp);
return count; /* 返回记录数 */
}
/* 列表显示学生信息 */
void liststu(char *fname)
{
FILE *fp;
struct record s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.
",fname);
return ;
}
while(readrecord(fp,&s)!=0)
{
displaystu(&s);
printf("
Press ENTER to continue...
");
while(getchar()!='
');
}
fclose(fp);
return;
}
/* 构造链表 */
struct node *makelist(char *fname)
{
FILE *fp;
struct record s;
struct node *p,*u,*v,*h;
int i;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.
",fname);
return NULL;
}
h=NULL;
p=(struct node *)malloc(sizeof(struct node));
while(readrecord(fp,(struct record *)p)!=0)
{
v=h;
while(v&&p->totaltotal)
{
u=v;
v=v->next;
}
if(v==h)
h=p;
else
u->next=p;
p->next=v;
p=(struct node *)malloc(sizeof(struct node));
}
free(p);
fclose(fp);
return h;
}
/* 顺序显示链表各表元 */
void displaylist(struct node *h)
{
while(h!=NULL)
{
displaystu((struct record *)h);
printf("
Press ENTER to continue...
");
while(getchar()!='
');
h=h->next;
}
return;
}
/* 按学生姓名查找学生记录 */
int retrievebyn(char *fname, char *key)
{
FILE *fp;
int c;
struct record s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.
",fname);
return 0;
}
c=0;
while(readrecord(fp,&s)!=0)
{
if(strcmp(s.name,key)==0)
{
displaystu(&s);
c++;
}
}
fclose(fp);
if(c==0)
printf("The student %s is not in the file %s.
",key,fname);
return 1;
}
/* 按学生学号查找学生记录 */
int retrievebyc(char *fname, char *key)
{
FILE *fp;
int c;
struct record s;
if((fp=fopen(fname,"r"))==NULL)
{
printf("Can't open file %s.
",fname);
return 0;
}
c=0;
while(readrecord(fp,&s)!=0)
{
if(strcmp(s.code,key)==0)
{
displaystu(&s);
c++;
break;
}
}
fclose(fp);
if(c==0)
printf("The student %s is not in the file %s.
",key,fname);
return 1;
}
main()
{
int i,j,n;
char c;
char buf[BUFLEN];
FILE *fp;
struct record s;
clrscr();
printf("Please input the students marks record file's name: ");
scanf("%s",stuf);
if((fp=fopen(stuf,"r"))==NULL)
{
printf("The file %s doesn't exit, do you want to creat it? (Y/N) ",stuf);
getchar();
c=getchar();
if(c=='Y'||c=='y')
{
fp=fopen(stuf,"w");
printf("Please input the record number you want to write to the file: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Input the student's name: ");
scanf("%s",&s.name);
printf("Input the student's code: ");
scanf("%s",&s.code);
for(j=0;j<SWN;j++)
{
printf("Input the %s mark: ",schoolwork[j]);
scanf("%d",&s.marks[j]);
}
writerecord(fp,&s);
}
fclose(fp);
}
}
fclose(fp);
getchar();
/*clrscr();*/
puts("Now you can input a command to manage the records.");
puts("m : mean of the marks.");
puts("t : total of the marks.");
puts("n : search record by student's name.");
puts("c : search record by student's code.");
puts("l : list all the records.");
puts("s : sort and list the records by the total.");
puts("q : quit!");
while(1)
{
puts("Please input command:");
scanf(" %c",&c); /* 输入选择命令 */
if(c=='q'||c=='Q')
{
puts("
Thank you for your using.");
break; /* q,结束程序运行 */
}
switch(c)
{
case 'm': /* 计算平均分 */
case 'M':
if((n=totalmark(stuf))==0)
{
puts("Error!");
break;
}
printf("
");
for(i=0;i<SWN;i++)
printf("%-15s's average is: %.2f.
",schoolwork[i],(float)total[i]/n);
break;
case 't': /* 计算总分 */
case 'T':
if((n=totalmark(stuf))==0)
{
puts("Error!");
break;
}
printf("
");
for(i=0;i<SWN;i++)
printf("%-15s's total mark is: %d.
",schoolwork[i],total[i]);
break;
case 'n': /* 按学生的姓名寻找记录 */
case 'N':
printf("Please input the student's name you want to search: ");
scanf("%s",buf);
retrievebyn(stuf,buf);
break;
case 'c': /* 按学生的学号寻找记录 */
case 'C':
printf("Please input the student's code you want to search: ");
scanf("%s",buf);
retrievebyc(stuf,buf);
break;
case 'l': /* 列出所有学生记录 */
case 'L':
liststu(stuf);
break;
case 's': /* 按总分从高到低排列显示 */
case 'S':
if((head=makelist(stuf))!=NULL)
displaylist(head);
break;
default: break;
}
}
}
# include<malloc.h>
#include<stdio.h>
#include<string.h>
static int g;
struct Student
{
int num;
char name[100];
int age;
char faculty[100];
float math;
float physics;
float english;
float ts;//total score,总分
float average;//pingjunfen;
};
void xianshi()
{
printf("\n\n*****************学生档案管理系统*************\n\n");
printf(">1显示每个学生信息\n");
printf(">2根据学生的总分进行排序输出\n");
printf(">3根据学生的数学分数进行排序输出\n");
printf(">4根据学生的物理分数进行排序输出\n");
printf(">5根据学生的英语分数进行排序输出\n");
printf(">6输出各科成绩的平均值\n");
printf(">7查找学生信息\n");
printf(">8增加学生信息\n");
printf(">9删除学生信息\n");
printf(">10修改学生信息\n");
printf(">11退出管理系统\n");
printf("请从1-11中选择您的操作:\n");
}
void InputStudent(struct Student * p, int i)
{
int t ;
for (t=0;t<i;++t)
{
printf("请输入第%d个同学的档案信息:\n",t+1);
printf("学号:");
scanf("%d",&p[t].num);
printf("姓名:");
scanf("%s",p[t].name);
printf("年龄:");
scanf("%d",&p[t].age);
printf("院系:");
scanf("%s",p[t].faculty);
printf("数学:");
scanf("%f",&p[t].math);
printf("物理:");
scanf("%f",&p[t].physics);
printf("英语:");
scanf("%f",&p[t].english);
}
}
void OutputStudent(struct Student * p, int i)
{
int t ;
//float ts;//total score,总分
// float average;//pingjunfen;
for (t=0;t<i;++t)
{
p[t].ts = p[t].math+p[t].physics+p[t].english;
p[t].average = p[t].ts /3;
printf("\n\n\n第%d个同学的档案信息:\n",t+1);
printf("学号:");
printf("%d ",p[t].num);
printf("姓名:");
printf("%s ",p[t].name);
printf("院系:");
printf("%s ",p[t].faculty);
printf(" 数学:");
printf("%f ",p[t].math);
printf("物理: ");
printf("%f ",p[t].physics);
printf("英语: ");
printf("%f ",p[t].english);
printf("平均成绩: %f",p[t].average);
printf("总成绩:\n%f",p[t].ts);
}
printf("\n");
}
void OutputStudent1(struct Student * p, int t)
{
// int t ;
p[t].ts = p[t].math+p[t].physics+p[t].english;
p[t].average = p[t].ts /3;
printf("\n\n\n第%d个同学的档案信息:\n",t+1);
printf("学号:");
printf("%d\n",p[t].num);
printf("姓名:");
printf("%s\n",p[t].name);
printf("院系:");
printf("%s",p[t].faculty);
printf("数学:");
printf("%f",p[t].math);
printf("物理:");
printf("%f",p[t].physics);
printf("英语:");
printf("%f",p[t].english);
printf("平均成绩:%f",p[t].average);
printf("总成绩:\n%f",p[t].ts);
printf("\n");
}
void TsSort(struct Student * p, int len)
{
int i,j;
struct Student t;
for(i=0;i<len;++i)
{ p[i].ts = p[i].math+p[i].physics+p[i].english;
p[i].average = p[i].ts /3;
}
for (j=len-1;j>0;j--)
for (i=0;i<j;i++)
{
if(p[i].ts<p[i+1].ts)
{
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
}
}
}
void MathSort(struct Student * p, int len)
{
int i,j;
struct Student t;
for(i=0;i<len;++i)
{ p[i].ts = p[i].math+p[i].physics+p[i].english;
p[i].average = p[i].ts /3;
}
for (j=len-1;j>0;j--)
for (i=0;i<j;i++)
{
if(p[i].math<p[i+1].math)
{
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
}
}
}
void PhysicsSort(struct Student * p, int len)
{
int i,j;
struct Student t;
for(i=0;i<len;++i)
{ p[i].ts = p[i].math+p[i].physics+p[i].english;
p[i].average = p[i].ts /3;
}
for (j=len-1;j>0;j--)
for (i=0;i<j;i++)
{
if(p[i].physics<p[i+1].physics)
{
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
}
}
}
void EnglishSort(struct Student * p, int len)
{
int i,j;
struct Student t;
for(i=0;i<len;++i)
{ p[i].ts = p[i].math+p[i].physics+p[i].english;
p[i].average = p[i].ts /3;
}
for (j=len-1;j>0;j--)
for (i=0;i<j;i++)
{
if(p[i].english<p[i+1].english)
{
t=p[i];
p[i]=p[i+1];
p[i+1]=t;
}
}
}
void Average (struct Student * p, int len)
{
int i ;
float ma=0.0;
float pa=0.0;
float ea=0.0;
for(i=0;i<len;++i)
{
ma+= p[i].math;
pa+= p[i].physics;
ea+=p[i].english;
}
ma=ma/len;
pa=pa/len;
ea=ea/len;
printf("数学的平均成绩是%f\n",ma);
printf("物理的平均成绩是%f\n",pa);
printf("英语的平均成绩是%f\n",ea);
}
void Query(struct Student * p, int len)
{
int i,j;
char c;
int marker=0;
//int num;
char na[100];
while(1){
printf("按什么查询?\n");
printf(">1根据学号查询\n");
printf(">2根据姓名查询\n");
printf(">3根据所在系查询\n");
scanf("%d",&i);
while ((c = getchar()) != '\n')
i=10;
switch (i)
{
case 1:
printf(">根据学号查询\n");
scanf("%d",&i);
while ((c = getchar()) != '\n')
continue;
for(j=0;j<len;j++)
{
if(i==p[j].num)
{
OutputStudent1(p,j);
return;
}
}
printf("没有此学号的学生\n");
return;
case 2:
printf(">根据姓名查询\n");
scanf("%s",na);
while ((c = getchar()) != '\n')
continue;
for(j=0;j<len;j++)
{
if(0==strcmp(na,p[j].name))
{
OutputStudent1(p,j);
marker=1;
}
}
if(0==marker)
{
printf("没有此姓名的学生\n");
}
return;
case 3:
printf(">根据所在系查询\n");
scanf("%s",na);
while ((c = getchar()) != '\n')
continue;
for(j=0;j<len;j++)
{
if(0==strcmp(na,p[j].faculty))
{
OutputStudent1(p,j);
marker=1;
}
}
if(0==marker)
{
printf("没有此姓名的学生\n");
}
return;
//break;
default:
printf("输入有误,请重新输入\n");
//goto A;
break;
}
}
}
struct Student AddMessage(struct Student * p, int len)
{
struct Student psa;
printf(">增加一个学生信息\n");
g=g+1;
printf("学号:");
scanf("%d",&psa.num);
printf("姓名:");
scanf("%s",psa.name);
printf("年龄:");
scanf("%d",&psa.age);
printf("院系:");
scanf("%s",psa.faculty);
printf("数学:");
scanf("%f",&psa.math);
printf("物理:");
scanf("%f",&psa.physics);
printf("英语:");
scanf("%f",&psa.english);
//free(p);
// OutputStudent(psa,g);
return psa;
}
void DeleteMessage(struct Student * p, int len)
{
int num;
char c;
int i;
struct Student psa;
while (1)
{
printf(">删除一个学生信息\n");
printf("请输入此学生的学号:");
scanf("%d",&num);
while ((c = getchar()) != '\n')
continue;
for(i=0;i<g;i++)
{
if(num==p[i].num)
{
psa = p[i];
p[i]=p[g-1];
p[g-1]=psa;
return ;
}
}
printf("没有此学号的学生,请重新输入");
}
}
void ModifyMessage(struct Student * p, int len)
{
int num;
char c;
int i;
struct Student psa;
while (1)
{
printf(">修改一个学生信息\n");
printf("请输入此学生的学号:");
scanf("%d",&num);
while ((c = getchar()) != '\n')
continue;
for(i=0;i<g;i++)
{
if(num==p[i].num)
{
printf("新的学生信息修改为:");
printf("学号:");
scanf("%d",&p[i].num);
printf("姓名:");
scanf("%s",p[i].name);
printf("年龄:");
scanf("%d",&p[i].age);
printf("院系:");
scanf("%s",p[i].faculty);
printf("数学:");
scanf("%f",&p[i].math);
printf("物理:");
scanf("%f",&p[i].physics);
printf("英语:");
scanf("%f",&p[i].english);
return ;
}
}
printf("没有此学号的学生,请重新输入");
}
}
int main(void)
{
int s;
char c;
int jj;
struct Student st;
printf("\n\n*******************************学生档案管理系统****************************\n\n");
printf("*******************************先输入初始学生信息*******************************\n");
printf("*****************************需要输入多少个学生信息?*************************\n");
scanf("%d",&g);
struct Student * pn=(struct Student *)malloc(g*sizeof(struct Student));
struct Student * pn1;
InputStudent(pn, g);
xianshi();
while(1)
{
scanf("%d",&s);
while ((c = getchar()) != '\n')
s=111;
switch (s)
{
case 1:
OutputStudent(pn,g);
xianshi();
break;
case 2 :
TsSort(pn,g);
OutputStudent(pn,g);
xianshi();
break;
case 3 :
MathSort(pn,g);
OutputStudent(pn,g);
xianshi();
break;
case 4 :
PhysicsSort(pn,g);
OutputStudent(pn,g);
xianshi();
break;
case 5 :
EnglishSort(pn,g);
OutputStudent(pn,g);
xianshi();
break;
case 6:
Average(pn,g);
xianshi();
break;
case 7:
Query(pn,g);
xianshi();
break;
case 8:
st=AddMessage(pn,g);
pn1 =(struct Student *)malloc(g*sizeof(struct Student));
for(jj=0;jj<g-1;jj++)
{
pn1[jj]=pn[jj];
}
pn1[g-1]=st;
free(pn);
pn=(struct Student *)malloc(g*sizeof(struct Student));
for(jj=0;jj<g;jj++)
{
pn[jj]=pn1[jj];
}
free(pn1);
printf("增加一个信息后的数据为\n");
OutputStudent(pn,g);
xianshi();
break;
case 9:
DeleteMessage(pn,g);
g=g-1;
pn1 =(struct Student *)malloc(g*sizeof(struct Student));
for(jj=0;jj<g;jj++)
{
pn1[jj]=pn[jj];
}
free(pn);
pn=(struct Student *)malloc(g*sizeof(struct Student));
for(jj=0;jj<g;jj++)
{
pn[jj]=pn1[jj];
}
free(pn1);
printf("删除一个信息后的数据为\n");
OutputStudent(pn,g);
xianshi();
break;
case 10:
ModifyMessage(pn,g);
printf("修改一个信息后的数据为\n");
OutputStudent(pn,g);
xianshi();
break;
case 11:
return ;
default:
printf("输入有误,请重新输入\n");
xianshi();
break;
}
}
}
你可修改一下
创建一个结构体,包含每个学生的所有信息,成绩可以用个特殊值表示无效,比如-1,或999。
创建一个十个元素数组,元素的类型 为上面创建的结构体
所有功能,在这组数据的基础上开发。
用链表就可以了
c语言学生管理系统用文件保存
编写一个菜单驱动的学生成绩管理程序。实现如下管理功能:?能输入并显示n个学生的m门考试科目的成绩、总分和平均分。?按总分进行排序。?按学号进行排序。?任意输入一个学号,能显示该... 编写一个菜单驱动的学生成绩管理程序。实现如下管理功能: ? 能输入并显示 n 个学生的 m 门考试科目的成绩、总分和平均分。
用C++编写学生成绩管理系统
以前写的,目的:学员的成绩管理,每个学员包括三门成绩。 从键盘输入学员信息,包括学号,姓名,三门课成绩。计算学院的平均成绩,按照平均成绩 从大到小排列。另外实现 (1)插入功能, 要求插入后 保持成绩排序。。(2)删除功能 输入指定学号。从学员信息表中删除,删除后的成绩保持原有排序!\/\/--...
c语言 学生管理系统设计
include <stdio.h> include <string.h> include <stdlib.h> define MAX 1000 \/*定义学生成绩信息结构*\/ struct stu { char id[8];char name[8];double Chinese;double Math;double English;double average;double total;};\/*学生结构数组,用于存储学生成绩信息*\/ struct stu students[MAX];\/*...
用C语言编写一个简单的学生成绩管理的程序
start: printf("\\n\\t\\t\\t欢迎使用学生成绩管理系统\\n");\/*一下为功能选择模块*\/ do { printf("\\n\\t\\t\\t\\t1.录入学员信息\\n\\t\\t\\t\\t2.显示学员信息\\n\\t\\t\\t\\t3.成绩排序信息\\n\\t\\t\\t\\t4.添加学员信息\\n\\t\\t\\t\\t5.删除学员信息\\n\\t\\t\\t\\t6.修改学员信息\\n\\t\\t\\t\\t...
c语写学生成绩管理系统
假设某班级有20名学生,每个学生的信息包括学号、姓名及语文、数学、英语、物理、化学五门课程的成绩,试设计一学生成绩管理系统,使之能提供以下功能:学生信息录入功能=... 假设某班级有20名学生,每个学生的信息包括学号、姓名及语文、数学、英语、物理、化学五门课程的成绩,试设计一学生成绩管理系统,使之能提供...
C语言 学生成绩系统 C++
printf("\\n\\t\\t\\t 使用学生管理系统1.0\\n\\n\\t\\t\\t\\t\\t---景炎中学计算机组WJQ\\n");printf("***MENU***\\n");printf("\\t\\t\\t1. 输入学生成绩记录 Enter the record\\n"); \/*输入学生成绩记录*\/ printf("\\t\\t\\t2. 显示 Print the record\\n"); \/*显示*\/ printf...
c语言学生管理系统
.grade[2]);} int main(){ int i;inputgrade(stu);sum(stu);\/\/ ave(stu);printf("姓名 总分 平均成绩\\n");for(i=0;i<5;i++)printf("%s %.0f %.1f\\n",stu[i].name,stu[i].summ,stu[i].aver);printf("总分最高的学生信息如下:\\n");max(stu);return 0;} ...
学生成绩管理系统c
include "stdio.h"include<conio.h> include<string.h> include<stdlib.h> struct book{ char number[21];char shuming[30];int shuliang;int jiage;char zhuanye[20];char zuozhe[26];char chubanshe[20];char beizhu[100];struct book *next;};struct book *creat() \/*创建链表*\/ { st...
学生信息与成绩管理系统的C语言课程设计。包含学生姓名、学号、性别...
printf("\\n\\n\\n\\n\\t\\t\\t学 员 信 息 管 理 器\\n\\n\\n\\t\\t\\t C 语言课程设计练习一 \\n\\n\\n\\t\\t\\t 承德油专1002:许言杰\\n\\n");printf("\\n\\t\\t\\t 按 回 车 键 继 续:");scanf("%c",&a);system("cls");jiemian2();} int jiemian2() \/\/...
c语言学生管理系统,请把每行代码解释清楚,谢谢了
2014-05-22 c语言学生信息管理系统代码 409 2014-09-02 C语言新手,求解释每行代码的意思,谢谢了,在线等 2 2019-12-31 求一个学生成绩管理系统的代码 c语言的,谢谢大佬? 2013-06-16 用C语言编写一个学生管理系统。 199 2010-08-27 【急】求C语言学生成绩管理系统源代码,要能用的 34 更多类似问题...
辉婷银丹:[答案] 希望对你有所帮助.#include"stdio.h"#include"stdlib.h"#include"string.h"#define N 3typedef struct z1{ char no[11]; char name[15]; int score[N]; float sum; float average; int order; ...
山阴县18424546294: 编程如何用C语言编写一个学生成绩管理系统程序 - ?
辉婷银丹: 我们才做了这个作业... #include <malloc.h> #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct scorenode) #define DEBUG #include <string.h> struct scorenode { int number;/*学号*/ char name[8];/*姓名*/ float cj1;/*成绩1*/ ...
山阴县18424546294: C语言建立一个“学生管理成绩系统” - ?
辉婷银丹: #include<stdio.h>#include<malloc.h>#include<string.h>#include<conio.h>#include<windows.h> struct student//初始化结构体 包括学生学号和成绩 { char num[20]; float chengji; struct student*next; }; float p; struct student* luru()//建立链表 录入学生...
山阴县18424546294: 怎么用c语言编写一个学生成绩管理系统啊?急…… - ?
辉婷银丹: C语言课程设计报告-------学生成绩简单管理程序 一、系统菜单的主要功能 (1)输入若干条记录 (2)显示所有记录 (3)按学号排序 (4)插入一条记录 (5)按姓名查找,删除一条记录 (6)查找并显示一条记录 (7)输出统计信息 (新增)...
山阴县18424546294: 如何用C语言编一个学生成绩管理系统 - ?
辉婷银丹: #include "stdio.h"#include "stdlib.h"#include "string.h"#define NULL 0 int shoudsave=0; struct student { char num[10]; char name[20]; char sex[4]; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime[10]; }; typedef struct node { ...
山阴县18424546294: C语言编写学生成绩管理系统?
辉婷银丹: #include "stdio.h" /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average; }; /*声明学生数组及学生数量*/ struct Student students[1000]; int num=0; /*求平均值*/ float Avg(struct ...
山阴县18424546294: C语言 学生成绩管理系统 - ?
辉婷银丹: [cpp] view plaincopyprint? #include "stdio.h" #include"string" /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Average; }; /*声明学生数组及学生数量*/ struct Student students[1000]; ...
山阴县18424546294: c语言设计学生成绩管理系统 - ?
辉婷银丹: #include<iostream> #include<cstdio> #include<cmath> #include<vector> #include<list> #include<cstring> #include<map> #include<set> #include<algorithm> #include<queue> using namespace std; int n; struct birth {int year,month,day; };struct ...