C语言学生管理系统源代码.docx
- 文档编号:9451638
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:21
- 大小:19.37KB
C语言学生管理系统源代码.docx
《C语言学生管理系统源代码.docx》由会员分享,可在线阅读,更多相关《C语言学生管理系统源代码.docx(21页珍藏版)》请在冰豆网上搜索。
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—>count count) 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();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 管理 系统 源代码
![提示](https://static.bdocx.com/images/bang_tan.gif)