c语言学生管理系统.docx

上传人:b****3 文档编号:5268334 上传时间:2022-12-14 格式:DOCX 页数:30 大小:18.42KB
下载 相关 举报
c语言学生管理系统.docx_第1页
第1页 / 共30页
c语言学生管理系统.docx_第2页
第2页 / 共30页
c语言学生管理系统.docx_第3页
第3页 / 共30页
c语言学生管理系统.docx_第4页
第4页 / 共30页
c语言学生管理系统.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

c语言学生管理系统.docx

《c语言学生管理系统.docx》由会员分享,可在线阅读,更多相关《c语言学生管理系统.docx(30页珍藏版)》请在冰豆网上搜索。

c语言学生管理系统.docx

c语言学生管理系统

#include

#include

#include

typedefstructlink

{

intnumber;

charname[10];

charsex[4];

intscore[10];

floatsum;

floatave;

structlink*next;

}link;

intm,n;

link*h;

//菜单

voidmenu()

{

printf("\n\n\n\t\t\t*************菜单*************\n");

printf("\n\t\t\t\t1从文件读取学生信息\n");

printf("\t\t\t\t2显示所有学生信息\n");

printf("\t\t\t\t3进入成绩管理系统\n");

printf("\t\t\t\t4进入学生信息维护系统\n");

printf("\t\t\t\t5显示菜单\n");

printf("\t\t\t\t6将学生信息写入新的文件\n");

printf("\t\t\t\t7返回主菜单\n");

printf("\t\t\t\t8退出系统\n");

}

//排序菜单

voidmenupx()

{

printf("\n\n\n\t\t\t\*************排序*************\n");

printf("\n\t\t\t\t1按总分顺序排序\n");

printf("\t\t\t\t2按总分降序排序\n");

printf("\t\t\t\t3按一门课成绩顺序排序\n");

printf("\t\t\t\t4按一门课成绩降序排序\n");

printf("\t\t\t\t5返回上级菜单\n");

printf("\t\t\t\t6返回主系统\n");

}

//按某门课成绩排序菜单

voidmenupx3()

{

inti;

for(i=1;i<=n;i++)

printf("*%d按科目%d的成绩排序\n",i,i);

}

//学生信息维护菜单

voidmenuxxwh()

{

printf("\n\n\n\t\t\t\*************学生信息维护*************\n");

printf("\n\t\t\t\t1显示所有学生信息\n");

printf("\t\t\t\t2计算每个学生的总分和平均分\n");

printf("\t\t\t\t3按学号查找一个同学\n");

printf("\t\t\t\t4按姓名查找一个同学\n");

printf("\t\t\t\t5按学号删除一个同学的信息\n");

printf("\t\t\t\t6按姓名删除一个同学的信息\n");

printf("\t\t\t\t7添加一个同学的信息\n");

printf("\t\t\t\t8修改一个同学的信息\n");

printf("\t\t\t\t9返回上级菜单\n");

printf("\t\t\t\t10返回主系统\n");

}

//链表

link*creat()

{

link*head,*p;

inti,j=0;

FILE*fp1;

head=NULL;

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

if(p==NULL)

printf("申请内存出错!

");

else

head=p;

printf("已正确读取文件\n",m,n);

fp1=fopen("输入.txt","r");

if(fp1==NULL)

printf("读取文件失败!

");

while(j

{

j++;

fscanf(fp1,"%d%s%s",&p->number,p->name,p->sex);

for(i=0;i

{

fscanf(fp1,"%d",&p->score[i]);

}

p->next=(link*)malloc(sizeof(link));

if(p->next==NULL)

printf("申请内存出错!

");

if(j==m)

p->next=NULL;

else

p=p->next;

}

fclose(fp1);

returnhead;

}

//信息输入到文件

voidfscan(link*head)

{

FILE*fp;

link*t;

inti,j;

t=head;

fp=fopen("输出.txt","w+");

if(fp==NULL)

{

printf("文件处理错误!

");

}

else

{

fprintf(fp,"学号姓名性别");

for(j=1;j<=n;j++)

{

fprintf(fp,"科目%d",j);

}

fprintf(fp,"\n");

while(t!

=NULL)

{

fprintf(fp,"%4d%s%s",t->number,t->name,t->sex);

for(i=0;i

fprintf(fp,"%4d",t->score[i]);

fprintf(fp,"\n");

t=t->next;

}

fclose(fp);

printf("信息已写入文件!

");

}

}

/*//链表复制

link*copcreat(link*head)

{

link*p,*q,*h,*t=NULL;

inti;

p=head;

h=NULL;

q=(link*)malloc(sizeof(link));

if(q==NULL)

printf("申请内存出错!

");

else

h=q;

while(p!

=NULL)

{

q->ave=p->ave;

q->number=p->number;

for(i=0;i

{

q->score[i]=p->score[i];

}

q->sum=p->sum;

strcpy(q->name,p->name);

strcpy(q->sex,p->sex);

q->next=(link*)malloc(sizeof(link));

if(q->next==NULL)

printf("申请内存出错!

");

else

{p=p->next;

t=q;

q=q->next;

}

}

t->next=NULL;

returnh;

}

*/

//显示学生信息

voidprint(link*head)

{

inti,j;

link*t,*h;

t=h=head;

printf("");

for(j=1;j<=n;j++)

{

printf("****");

}

printf("学生信息");

for(j=1;j<=n;j++)

{

printf("****");

}

printf("\n");

printf("学号姓名性别");

for(j=1;j<=n;j++)

{

printf("科目%d",j);

}

printf("\n");

while(t!

=NULL)

{

printf("%4d%s%s",t->number,t->name,t->sex);

for(i=0;i

printf("%4d",t->score[i]);

printf("\n");

t=t->next;

}

}

//计算每个同学的总分、平均分

link*sum(link*head)

{

link*p;

inti;

p=head;

while(p!

=NULL)

{

p->sum=0;

p->ave=0;

for(i=0;i

p->sum+=p->score[i];

p->ave=p->sum/n;

p=p->next;

}

returnhead;

}

//输出成绩、总分、平均分

voidprint1(link*head)

{

inti,j;

link*t,*h;

t=h=head;

printf("");

for(j=1;j<=n;j++)

{

printf("*****");

}

printf("学生成绩和总分");

for(j=1;j<=n;j++)

{

printf("*****");

}

printf("\n");

printf("学号姓名性别");

for(j=1;j<=n;j++)

{

printf("科目%d",j);

}

printf("总分平均分\n");

while(t!

=NULL)

{

printf("%4d%s%s",t->number,t->name,t->sex);

for(i=0;i

printf("%4d",t->score[i]);

printf("%.2f",t->sum);

printf("%.2f",t->ave);

printf("\n");

t=t->next;

}

}

//排序

//按总分顺序排序

link*sumsxpx(link*head)

{

inti;

link*p,*q,*temp;

temp=(link*)malloc(sizeof(link));

for(p=head;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->sum>q->sum)

{

temp->sum=p->sum;

temp->ave=p->ave;

temp->number=p->number;

for(i=0;i

{

temp->score[i]=p->score[i];

}

strcpy(temp->name,p->name);

strcpy(temp->sex,p->sex);

p->sum=q->sum;

p->ave=q->ave;

p->number=q->number;

for(i=0;i

{

p->score[i]=q->score[i];

}

strcpy(p->name,q->name);

strcpy(p->sex,q->sex);

q->sum=temp->sum;

q->ave=temp->ave;

q->number=temp->number;

for(i=0;i

{

q->score[i]=temp->score[i];

}

strcpy(q->name,temp->name);

strcpy(q->sex,temp->sex);

}

}

}

returnhead;

}

//按总分降序排序

link*sumjxpx(link*head)

{

inti;

link*p,*q,*temp;

temp=(link*)malloc(sizeof(link));

for(p=head;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->sumsum)

{

temp->sum=p->sum;

temp->ave=p->ave;

temp->number=p->number;

for(i=0;i

{

temp->score[i]=p->score[i];

}

strcpy(temp->name,p->name);

strcpy(temp->sex,p->sex);

p->sum=q->sum;

p->ave=q->ave;

p->number=q->number;

for(i=0;i

{

p->score[i]=q->score[i];

}

strcpy(p->name,q->name);

strcpy(p->sex,q->sex);

q->sum=temp->sum;

q->ave=temp->ave;

q->number=temp->number;

for(i=0;i

{

q->score[i]=temp->score[i];

}

strcpy(q->name,temp->name);

strcpy(q->sex,temp->sex);

}

}

}

returnhead;

}

//按一门课顺序排序

link*scoresxpx(link*head)

{

link*h=head;

link*p,*q,*temp;

inta,i;

printf("请选择一门课科目:

");

scanf("%d",&a);

temp=(link*)malloc(sizeof(link));

for(p=head;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->score[a-1]>q->score[a-1])

{

temp->sum=p->sum;

temp->ave=p->ave;

temp->number=p->number;

for(i=0;i

{

temp->score[i]=p->score[i];

}

strcpy(temp->name,p->name);

strcpy(temp->sex,p->sex);

p->sum=q->sum;

p->ave=q->ave;

p->number=q->number;

for(i=0;i

{

p->score[i]=q->score[i];

}

strcpy(p->name,q->name);

strcpy(p->sex,q->sex);

q->sum=temp->sum;

q->ave=temp->ave;

q->number=temp->number;

for(i=0;i

{

q->score[i]=temp->score[i];

}

strcpy(q->name,temp->name);

strcpy(q->sex,temp->sex);

}

}

}

returnhead;

}

//按一门课降序排序

link*scorejxpx(link*head)

{

link*h=head;

link*p,*q,*temp;

inta,i;

printf("请选择一门课科目:

");

scanf("%d",&a);

temp=(link*)malloc(sizeof(link));

for(p=head;p!

=NULL;p=p->next)

{

for(q=p->next;q!

=NULL;q=q->next)

{

if(p->score[a-1]score[a-1])

{

temp->sum=p->sum;

temp->ave=p->ave;

temp->number=p->number;

for(i=0;i

{

temp->score[i]=p->score[i];

}

strcpy(temp->name,p->name);

strcpy(temp->sex,p->sex);

p->sum=q->sum;

p->ave=q->ave;

p->number=q->number;

for(i=0;i

{

p->score[i]=q->score[i];

}

strcpy(p->name,q->name);

strcpy(p->sex,q->sex);

q->sum=temp->sum;

q->ave=temp->ave;

q->number=temp->number;

for(i=0;i

{

q->score[i]=temp->score[i];

}

strcpy(q->name,temp->name);

strcpy(q->sex,temp->sex);

}

}

}

returnhead;

}

//按学号查找一个同学信息

link*findxh(link*head)

{

intx;

link*h,*t=NULL;

printf("请输入学生的学号\n");

scanf("%d",&x);

for(h=head;h!

=NULL;h=h->next)

{

if(x==h->number)

{

t=h;

break;

}

}

returnt;

}

//按姓名查找一个同学

link*findxm(link*head)

{

charstr[10];

link*h,*t=NULL;

printf("请输入学生的姓名\n");

getchar();

gets(str);

for(h=head;h!

=NULL;h=h->next)

{

if(strcmp(h->name,str)==0)

{

t=h;

break;

}

}

returnt;

}

//按学号删除一个同学

link*delxh(link*head)

{

intkey,k=0;

link*h,*t,*p;

h=t=p=head;

printf("请输入要删除的学生的学号:

");

scanf("%d",&key);

for(;p!

=NULL;p=p->next)

{

k++;

if(k>2)

{

t=t->next;

}

if((key==p->number)&&(k==1))

{

h=p->next;

}

elseif(key==p->number&&k>1)

{

t->next=p->next;

}

elseif(key==p->number&&p->next==NULL)

{

t=NULL;

}

}

returnh;

}

//按姓名删除一个同学

link*delxm(link*head)

{

intk=0;

charstr[10];

link*h,*t,*p;

h=t=p=head;

printf("请输入要删除的学生的姓名:

");

getchar();

gets(str);

for(;p!

=NULL;p=p->next)

{

k++;

if(k>2)

{

t=t->next;

}

if((strcmp(p->name,str)==0)&&(k==1))

{

h=p->next;

}

elseif(strcmp(p->name,str)==0&&k>1)

{

t->next=p->next;

}

elseif(strcmp(p->name,str)==0&&p->next==NULL)

{

t=NULL;

}

}

returnh;

}

//添加一个学生信息

link*add(link*head)

{

link*h,*h1;

inti,k=0;

h1=(link*)malloc(sizeof(link));

printf("请输入要添加学生的信息:

\n");

printf("学号姓名性别");

for(i=0;i

{

printf("科目%d",i+1);

}

printf("\n");

scanf("%d%s%s",&h1->number,h1->name,h1->sex);

for(i=0;i

{

scanf("%d",&h1->score[i]);

}

h1->next=head;

h=h1;

returnh;

}

//修改一个同学的信息

link*xg(link*t)

{

link*p=t;

inti;

printf("请输入这个同学的所有信息:

\n");

scanf("%d%s%s",&p->number,p->name,p->sex);

for(i=0;i

{

scanf("%d",&p->score[i]);

}

returnp;

}

//主函数

main()

{

inta,b,c,i,j;

link*h,*t,*d;

link*f,*p;

L:

printf("\n\n\n\n\n\n\t\t\t\********欢迎使用学生信息管理系统********\n");

printf("\n\n\t\t\t\t制作人:

");

printf("\n\n\t\t\t\t请输入学生数和科目数:

");

scanf("%d%d",&m,&n);

H:

system("cls");

menu();

while

(1)

{

scanf("%d",&a);

switch(a)

{

case1:

{

h=creat();

}

break;

case2:

{

print(h);

}break;

case3:

{system("c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1