ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:411.09KB ,
资源ID:1549196      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-1549196.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(学生成绩管理系统实验C语言文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

学生成绩管理系统实验C语言文档格式.docx

1、 /成绩 float sum; /总分 float average; /平均分 struct St *next; ;六,程序结构流程图七,模块功能在结构流程图中已经给出。八,实验结果体会:这个实验较上一个比起来更困难一些,不过经过和同学们的探讨和自己的努力最终完成了这个实验的基本要求,从中我受益匪浅,对以前学习的知识进行了进一步的巩固,对以后的学习有着很大的帮助。附录:#includestdlib.hmalloc.hstring.htime.hconio.hvoid Input(struct St * head,struct St * per); /录入学生数据int del(struct S

2、t * head,charIDNumber); /删除学生数据 void average(struct St * head); /按照平均分排序void listprint(struct St * head); /链表中学生信息输出intsearchname(struct St * head,charFamilyName ,char GivenName );/按照姓名查询信息 intfsave(struct St * head); /将链表中的数据保存到文件中intfread(struct St * head,FILE * fp); /读取文件信息intclasearch(struct St

3、* head); /按班级查找int grades(struct St * head); /计算学生的总分和平均分int main() printf(tt$*$*$tttn);tt¥*学生成绩管理系统*¥tttnstruct St * head=(struct St*)malloc(sizeof(struct St); head-next=NULL; FILE * fp=NULL;inti=1; while(i!=9) printf(tt1.输入学生信息n printf(tt2.按学号从表中删除学生信息ntt3.显示链表中所有记录ntt4.按照姓名查找记录ntt5.将链表中记录保存到文件中nt

4、t6.从文件中读入记录ntt7.计算所有学生的总分和平均分ntt8.按班级查询显示学生总分ntt9.退出n 请选择: scanf(%d,&i); switch(i) case 1:system(cls if(head=NULL) printf(数据出错! exit(0); else struct St * per=(struct St*)malloc(sizeof(struct St); per- Input(head,per); break; case 2: system( printf(ttt删除学生信息n请输入要删除的学生的学号:scanf(%s,IDNumber); del(head,

5、IDNumber);break; case 3:ttt显示链表中学生信息n listprint(head); break; case 4:ttt学生信息查询n请输入要查询学生的姓: scanf(,FamilyName);请输入要查询学生的名:,GivenName); searchname(head,FamilyName,GivenName); case 5: fsave(head); case 6: fread(head,fp); case 7: grades(head); case 8: clasearch(head); case 9: return 1; default: void Inp

6、ut(struct St * head,struct St * per) /录入学生数据 struct St *p=head-next ; if(p!=NULL) while(p-next! p=p-next; p-next=per; else head-ttt录入学生信息n请输入学生的学号: scanf(,per-IDNumber);请输入学生的姓:FamilyName);请输入学生的名:GivenName); do请输入学生的性别(0女,1男):per-sex); if(1!=per-sex & 0!sex)您输入的性别有误!n while(1! struct tm *ptm; /当前时间

7、获取 long ts;inty,m,d,h,n,s;ts=time(NULL);ptm=localtime(&ts); y=ptm-tm_year+1900; /*年*/ m=ptm-tm_mon+1; /*月*/ d=ptm-tm_mday; /*日*/ h=ptm-tm_hour; /*时*/ n=ptm-tm_min; /*分*/ s=ptm-tm_sec; /*秒*/请输入出生年:BirthYear); if(per-BirthYear y)您输入的年份有错请重新输入! while(per- y);请输入出生月:BirthMonth);BirthMonth 12)您输入的月份份有错请重

8、新输入! 12);请输入出生日:BirthDay);BirthDay 31)您输入的日期有错请重新输入! 31);外语:%fscore0);高数:score1);C语言:score2);马哲:score3); per-average=(per-score0 + per-score1 + per-score2 + per-score3)/4;sum=per-score0+per-score1+per-score2+per-score3;int del(struct St * head,charIDNumber) /删除学生数据 if(head-next=NULL)数据列表为空,无法删除! ret

9、urn 0; struct St *p=head- struct St * pfront=head; while(p!=NULL &strcmp(p-IDNumber,IDNumber)!=0) pfront=p; if(p=NULL)记录中没有发现您要删除的人n else pfront-next=p- free(p);该生信息已删除n return 1;void average(struct St * head) /按照平均分将列表排序 struct St *p,*q,*m,*n; struct St *temp1;NO LINKLIST! p=head;q=head- while(q- m

10、=p- n=q- temp1=m; while(temp1- if(temp1-next-average average & temp1- n-average ) m=temp1;n=temp1- temp1=temp1- /*此循环用于找到基准(q)以后的序列的最小的节点*/ if(m!=p-next | (m=p-next & m-average n-average ) p-next=n; p=n; m-next=q; m=q; q=q- n=n- /*此条件用于交换两个节点*/ p=p- /*此条件用于没有找到最小值时的p,q后移操作*/ /*外循环用于从前往后扫描,通过移动p,q指针实

11、现*/void listprint(struct St * head) /链表中学生信息输出 average(head);学号:%s 姓氏:%s 名字:%s 性别:%d n 出生年:%d 月:%d 日:%d n,p-IDNumber,p-FamilyName,p-GivenName,p-sex,p-BirthYear,p-BirthMonth,p-%f 高数:%f c语言:%f 马哲:n%f 总分:%f 平均分:%fnscore0,p-score1,p-score2,p-score3,p-sum,p-average); 链表为空,请先输入数据nintsearchname(struct St *

12、 head,charFamilyName ,char GivenName ) /按照姓名查询信息数据列表为空,无法查询! if(strcmp(p-FamilyName,FamilyName)=0&GivenName,GivenName)=0) break;记录中并没有发现您要找的人!%fc 语言:n %f 总分:intfsave(struct St * head) /将链表中的数据保存到文件中 printf(ttt文件保存n FILE * fp; if(fp=fopen(grades.txt,wb+)=NULL)文件无法打开! struct St * p=head- fwrite(p,size

13、of(struct St),1,fp); fclose(fp);链表已经写入文件nintfread(struct St * head,FILE * fp) /读取文件信息ttt文件读取n struct St * p, * p1; p=p1=(struct St*)malloc(sizeof(struct St);rb文件读取错误! printf(正在读取.n while(!feof(fp) p=(struct St*)malloc(sizeof(struct St); fread(p,sizeof(struct St),1,fp); if(feof(fp)next=NULL) head-nex

14、t=p; p1- p1=p; p1- listprint(head);文件已读完nint grades(struct St * head) /计算有学生的总分和平均分ttt计算学生的总分和平均分n struct St * p=head- float totalScore4=0,0,0,0; float totalAverage4=0,0,0,0; int amount=0;数据列表为空,无法计算所有学生的总分和平均分! totalScore0+=p-score0; totalScore1+=p-score1; totalScore2+=p-score2; totalScore3+=p- amo

15、unt+; totalAverage0=totalScore0/amount; totalAverage1=totalScore1/amount; totalAverage2=totalScore2/amount; totalAverage3=totalScore3/amount;记录中共有%d个学生的信息,各科总分和平均分如下:,amount);外语总分为:%ftt外语平均分:,totalScore0,totalAverage0);高数总分为:%ftt高数平均分:,totalScore1,totalAverage1);C语言总分为:%fttC语言平均分:,totalScore2,totalAverage2);马哲总分为:%ftt马哲平均分:,totalScore3,totalAverage3);平均分90分以上的学生信息: p=head- while(p!=NULL ) if( p-average=90)%d 出生年: p=p-平均分8090分的学生信息:

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2