C语言学生管理系统源代码.docx

上传人:b****7 文档编号:9451638 上传时间:2023-02-04 格式:DOCX 页数:21 大小:19.37KB
下载 相关 举报
C语言学生管理系统源代码.docx_第1页
第1页 / 共21页
C语言学生管理系统源代码.docx_第2页
第2页 / 共21页
C语言学生管理系统源代码.docx_第3页
第3页 / 共21页
C语言学生管理系统源代码.docx_第4页
第4页 / 共21页
C语言学生管理系统源代码.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言学生管理系统源代码.docx

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

C语言学生管理系统源代码.docx

C语言学生管理系统源代码

C语言学生成绩管理系统源代码,保证能用……

#include”malloc.h”

#include"stdio。

h"

#include”stdlib.h"

#include”string.h”

charfilename[30];

intn=0,d;

FILE*fp;

typedefstructstudent

intnum;

charname[10];

intyuwen;

intshuxue;

intyingyu;

intcount;

floataver;

structstudent*next;

}aaa;

typedefstructstu

intnum;

charname[10];

intyuwen,shuxue,yingyu;

intcount;

floataver;

}aaaa;

aaa*head;

/*浏览*/

voidliulan(aaa*head)

aaa*p;

if(head==NULL)

printf("\n没有任何学生资料!

\n");

else

{

printf(”\t\t\t考试成绩管理系统\n”);

printf("————-—----———----——--—----————-—-—----———-—----—————\n");

printf(”|学号\t|姓名\t|语文\t|数学\t|英语\t|总分\t|平均分|\n”);

printf(”---——--—----——-—-———--————-————————-——-—-——-——---——-\n”);

p=head—〉next;

do{

printf("|%d\t|%s\t|%d\t|%d\t|%d\t|%d\t|%.1f\t|\n”,p-〉num,p—>name,p—>yuwen,p—〉shuxue,p—>yingyu,p—〉yuwen+p—>shuxue+p-〉yingyu,p—>count/3。

0);

printf(”-—--—-——-————-—-----———-—---———---—-—-——-—-——---—---\n");

p=p—〉next;

}while(p!

=NULL);

}

/*读取*/

aaa*duqu()

{

aaa*s,*head,*p,*q;

n=0;

if((fp=fopen(filename,”rb”))==NULL)

{

printf("不能读取文件!

\n”);

returnNULL;

head=malloc(sizeof(aaa));

if(head==NULL)

{

printf(”内存空间不足,文件读取失败!

\n”);

returnNULL;

head-〉next=NULL;

p=head;

q=malloc(sizeof(aaa));

if(!

feof(fp))

{

fread(q,sizeof(aaaa),1,fp);

q->next=NULL;

}

while(!

feof(fp))

s=malloc(sizeof(aaa));

fread(s,sizeof(aaaa),1,fp);

s->next=NULL;

p—>next=q;

p=q;

q=s;

n++;

}

returnhead;

/*输入函数*/

aaa*shuru(aaa*head)

{

aaa*q,*p,*s;

aaanewstd;

n=0;

q=head;

do{

q=head;

s=malloc(sizeof(aaa));

if(s==NULL)

printf(”内存不足,添加学生成绩失败!

\07\n");

break;

printf(”请输入学号(输入0退出):

");

scanf(”%d”,&newstd.num);

if(newstd.num==0)

break;

if(newstd.num〈0)

printf("输入学号有误,请重新输入\n”);

break;

p=head—〉next;

while(p!

=NULL)

if(p—〉num==newstd.num)

{

printf("输入学号重复,请重新输入!

\n");

break;

}

p=p—>next;

q=q—>next;

}

if(p==NULL)

printf(”姓名:

");

scanf("%s",newstd.name);

printf("语文:

");

scanf(”%d",&newstd.yuwen);

printf("数学:

”);

scanf(”%d”,&newstd.shuxue);

printf("英语:

”);

scanf("%d",&newstd.yingyu);

strcpy(s—〉name,newstd。

name);

s—>num=newstd。

num;

s—>yuwen=newstd。

yuwen;

s-〉shuxue=newstd.shuxue;

s->yingyu=newstd.yingyu;

s-〉count=s—〉yuwen+s—>shuxue+s->yingyu;

s—〉aver=(float)(s-〉count/3.0);

s—>next=NULL;

q-〉next=s;

n++;

}while

(1);

printf(”输入完毕,%d个学生成绩已输入(已插入)\n”,n);

returnhead;

}

/*保存*/

intbaocun(aaa*head)

{

aaa*s;

s=head—>next;

if((fp=fopen(filename,”wb”))==NULL)

{

printf("不能写入文件!

保存失败!

\n");

return0;

}

while(s!

=NULL)

{

fwrite(s,sizeof(aaaa),1,fp);

s=s->next;

}

fclose(fp);

return1;

/*保存文件*/

intsave(aaa*head)

{

inti=0;

aaa*s;

s=head—>next;

printf("请输入文件路径及文件名:

”);

scanf("%s”,filename);

if((fp=fopen(filename,”wb"))==NULL)

printf("不能建立文件!

\n");

return0;

}

while(s!

=NULL)

fwrite(s,sizeof(aaaa),1,fp);

s=s->next;

i++;

}

fclose(fp);

printf("%d名学生成绩记录写入%s中!

\n”,i,filename);

printf(”文件保存成功!

\n”);

return1;

/*打开文件*/

aaa*dakai(void)

aaa*s,*head,*p,*q;

n=0;

printf(”请输入文件路径及文件名:

”);

scanf("%s”,filename);

if((fp=fopen(filename,"rb”))==NULL)

{

printf("不能读取文件!

\n”);

returnNULL;

head=malloc(sizeof(aaa));

if(head==NULL)

printf(”内存空间不足,文件打开失败!

\n”);

returnNULL;

head-〉next=NULL;

p=head;

q=malloc(sizeof(aaa));

if(!

feof(fp))

fread(q,sizeof(aaaa),1,fp);

q-〉next=NULL;

while(!

feof(fp))

s=malloc(sizeof(aaa));

fread(s,sizeof(aaaa),1,fp);

s—>next=NULL;

p-〉next=q;

p=q;

q=s;

n++;

liulan(head);

printf(”-—-———--——-———---—-—-----—-——-———--—----—--———-——---\n”);

printf("文件已打开,%d个记录已读取\n",n);

d=baocun(head);

getchar();

returnhead;

/*建立*/

aaa*great()

{

aaa*head;

head=malloc(sizeof(aaa));

if(head==NULL)

printf(”内存空间不足,链表建立失败!

\07\n");

returnNULL;

}

head->next=NULL;

head->num=0;

head=shuru(head);

d=save(head);

returnhead;

/*查询*/

intchaxun(aaa*head)

aaa*q;

inti;

if(head==NULL)

{

printf(”\n没有任何的学生资料!

\n");

return0;

}

printf("需要查询的学号:

");

scanf(”%d”,&i);

q=head—〉next;

while(q—>num!

=i&&q!

=NULL)

q=q->next;

if(q!

=NULL)

{

printf(”学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");

q—〉count=q—>yuwen+q—>shuxue+q—>yingyu;

q->aver=(float)(q-〉count/3。

0);

printf("%d\t%s\t%d\t%d\t%d\t%d\t%。

1f\n",q—〉num,q—〉name,q-〉yuwen,q—>shuxue,q->yingyu,q->count,q-〉aver);

return0;

}

else

{

printf(”查无此人!

\n");

return0;

/*删除*/

aaa*shanchu(aaa*head)

{

aaa*s,*q;

intm;

head=duqu();

if(head==NULL)

printf(”没有任何学生记录!

\n”);

exit(0);

printf(”请输入要删除的学生学号”);

scanf(”%d",&m);

if(m==0)

returnhead;

s=head;

q=s—〉next;

while(q->num!

=m&&q!

=NULL)

q=q—>next;

s=s->next;

}

if(q!

=NULL)

{

printf("学号:

%d姓名:

%s语文:

%d数学:

%d英语:

%d总分:

%d平均分:

%。

1f\n”,q->num,q—〉name,q-〉yuwen,q-〉shuxue,q->yingyu,q-〉yingyu+q—〉shuxue+q->yuwen,q-〉count/3.0);

s—〉next=q->next;

free(q);

printf(”删除学号为%d学生记录成功!

\n",m);

}

else

printf("查无此人!

\n");

liulan(head);

d=baocun(head);

returnhead;

}

/*排序*/

aaa*paixu(aaa*head)

{

aaa*p,*max,*q;

inti,j,m;

chart[10];

head=duqu();

if(head==NULL)

printf("\n没有任何学生资料!

\07\n”);

returnNULL;

exit(0);

}

q=head;

printf(”按总成绩排序所有学生\n”);

for(i=0;i

max=p=q=q->next;

for(j=i+1;j〈n;j++)

p=p->next;

if(max—>countcount)

max=p;

}

if(max!

=q)

{

m=max->num;

max—〉num=q-〉num;

q->num=m;

strcpy(t,max—>name);

strcpy(max—>name,q->name);

strcpy(q—〉name,t);

m=max->yuwen;

max->yuwen=q—>yuwen;

q—>yuwen=m;

m=max-〉shuxue;

max->shuxue=q—〉shuxue;

q-〉shuxue=m;

m=max—>yingyu;

max—>yingyu=q—>yingyu;

q-〉yingyu=m;

q-〉count=q—>yuwen+q—>shuxue+q—〉yingyu;

q—〉aver=(float)(q->count/3.0);

}

}

d=baocun(head);

returnhead;

/*插入*/

aaa*charu(aaa*head)

aaa*s,*p;

s=p=head;

p=shuru(s);

p=paixu(p);

printf("插入完毕!

\n”);

liulan(head);

d=baocun(head);

returnhead;

/*修改*/

aaa*xiugai(aaa*head)

aaa*q;

intm;

if(head==NULL)

printf("\n没有任何学生记录!

\n”);

returnNULL;

q=head-〉next;

printf("请输入要修改的学生的学号:

");

scanf(”%d",&m);

while(q-〉num!

=m&&q!

=NULL)

q=q-〉next;

if(q==NULL)

printf(”查无此人!

\n");

printf(”学号:

%d姓名:

%s语文:

%d数学:

%d英语:

%d总分:

%d平均分:

%.1f\n”,q->num,q->name,q—〉yuwen,q->shuxue,q—〉yingyu,q—>yuwen+q—〉shuxue+q—>yingyu,q—〉count/3.0);

printf("请输入修改之后的学号:

”);

scanf("%d”,&q—>num);

printf("请输入修改之后的姓名:

”);

scanf(”%s",q—〉name);

printf("请输入修改之后的语文:

");

scanf(”%d”,&q—>yuwen);

printf(”请输入修改之后的数学:

”);

scanf("%d”,&q->shuxue);

printf("请输入修改之后的英语:

");

scanf("%d”,&q—〉yingyu);

printf("修改成功\n");

q->count=q-〉yuwen+q->shuxue+q-〉yingyu;

q->aver=(float)(q->count/3。

0);

printf("学号:

%d姓名:

%s语文:

%d数学:

%d英语:

%d总分:

%d平均分:

%.1f\n”,q->num,q-〉name,q—〉yuwen,q->shuxue,q—>yingyu,q->count,q->aver);

d=baocun(head);

head=duqu();

head=paixu(head);

printf("学号为%d学生数据修改成功!

\n",m);

liulan(head);

returnhead;

/*主函数*/

main()

aaa*head;

intm;

do{

printf("\n");

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

printf("\t***======================***\n”);

printf("\t***学生成绩管理系统***\n");

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

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

printf(”\t***1.输入学生成绩***\n”);

printf(”\t***2.打开记录文件***\n”);

printf(”\t***3.查找学生成绩***\n");

printf("\t***4。

修改学生信息***\n");

printf("\t***5。

删除学生信息***\n");

printf(”\t***6。

插入学生信息***\n");

printf(”\t***7.学生成绩排序***\n”);

printf(”\t***8。

浏览学生信息***\n”);

printf(”\t***9.保存输入数据***\n”);

printf(”\t***0退出***\n”);

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

printf(”\t************************************************\n”);

printf("请输入选项(0—-9):

”);

scanf(”%d”,&m);

switch(m)

{

case1:

{

printf(”执行输入学生成绩命令!

\n");

head=great();

};

break;

case2:

printf("执行打开文件命令!

\n");

head=dakai();

};

break;

case3:

printf(”执行查找学生信息命令!

\n");

d=chaxun(head);

};

break;

case4:

printf("执行修改学生信息命令!

\n”);

head=xiugai(head);

};

break;

case5:

printf("执行删除学生信息命令!

\n");

head=shanchu(head);

};

break;

case6:

printf(”执行插入学生信息命令!

\n");

head=charu(head);

};

break;

case7:

printf("执行学生成绩排序命令!

\n");

head=paixu(head);

printf("已成功排序,输入任意键查看!

\n");

getchar();

liulan(head);

};

break;

case8:

{

printf("执行浏览学生信息命令!

\n”);

liulan(head);

};

break;

case9:

{

printf(”执行保存学生信息命令!

\n");

d=save(head);

};

break;

case0:

gotoAAAA;

default:

printf("输入错误!

(请输入0——9选项)\07\n");

break;

}while

(1);

AAAA:

if(head!

=NULL)

d=baocun(head);

getchar();

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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