




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include #include #include #define pf printf#include time.h #define len sizeof(struct st1)/定义结构体/typedef struct st1 char idnumber16;/*学号*/ char familyname16; /*姓*/ char givenname16; /*名*/ int sex; /*性别(0代表女,1代表男)*/ int birthyear; /*出生年*/ int birthmonth; /*出生月*/ int birthday; /*出生日*/ float score0,score1,score2,score3; /*成绩*/ float sum; /*总分*/ float average; /*平均分*/ struct st1 *next; studentnode;int time()struct tm* ptm;long ts;int y,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; /秒return(y); studentnode *head=null; /全局指针 int n,i=0,c=0,d=0,j=0; /全局变量 j在函数中作数组下标或循环变量 c为总分数组中元素个数 d为平均分数组元素个数float english=0.0,math=0.0,c=0.0,mazhe=0.0,sum100,avr100; /全局变量/自定义函数/void show_menu(); /显示菜单void menu(); /执行菜单void creat_stu(); /建立链表 void input_stu(); /输入学生信息void print_stu(); /显示链表中所有记录信息void search_no(); /以学号方式查询信息void search_name(); /以姓方式查询信息void arrage_stu(); /学生成绩排名void del_stu(); /删除学生信息void revise_stu(); /修改学生信息void save(); /保存信息void jisuan(); /计算所有学生的以及各科总分和均分 void search_clas(); /按班级查询显示学生信息 void insert_stu(); /插入学生记录到表中void sort(float x,int n); /对学生按总分进行从高到底排序void search_allscore(); /按学生总成绩查询,用来输出排名信息void jieduan(); /用来输出按平均分阶段输出信息,其中用了按平均分输出信息的程序。void loadf(); /从文件中读出所有学生记录void main() printf(*); printf(n);printf( 欢迎来到学生管理系统 !); printf(n); printf(n); printf( 制作人:陈志52101610); creat_stu(); menu();/*创建链表*void creat_stu() file *fp; long size; studentnode *p1,*p2; head=(studentnode *)malloc(sizeof(studentnode); head-next=null; if(fp=fopen(fname.txt,r)=null) printf(这是新表n); return; fseek(fp,0l,2); size=ftell(fp); if(!size) printf(这是空表n); return; /开始创建链表 rewind(fp); /移动到文件首 p2=head-next; /找到当前位置 while(!feof(fp) p1=(studentnode *)malloc(sizeof(studentnode); fscanf(fp,%s %s %s %d %d %d %d %f %f %f %f %f %fn,p1-idnumber,p1-familyname,p1-givenname, &p1-sex,&p1-birthyear,&p1-birthmonth,&p1-birthday,&p1-score0,&p1-score1,&p1-score2,&p1-score3,&p1-sum, &p1-average); p1-next=null; /创建节点完 if(head-next=null) head-next=p1; else p2-next=p1; p2=p1; n+; p2-next=null; fclose(fp);/*执行菜单*void menu() int c; show_menu(); while(1) scanf(%d,&c); switch(c) getchar();case 1:input_stu();break;case 2:del_stu(); break;case 3:print_stu();break;case 4:search_name(); break;case 5:save();break;case 6:loadf();break;case 7:jisuan(); break;case 8:search_clas(); break;case 9:insert_stu() ; break;case 10:search_no(); break;case 11:arrage_stu();break;case 12:revise_stu(); break;case 13:jieduan();break;case 0:exit(0); /执行菜单选项 show_menu(); /*显示菜单*void show_menu() pf(n); pf(n*菜单*n); pf(tt* 1.输 入 学 生 信 息 *n); pf(tt* 2.删 除 学 生 信 息 *n); pf(tt* 3.显示链表中所有记录信息 *n); pf(tt* 4.按照学生的姓查找记录 *n); pf(tt* 5.将链表中记录保存到文件中 *n); pf(tt* 6.从文件中读入记录 *n); pf(tt* 7.计算所有学生以及各科总分和均分 *n); pf(tt* 8.按班级查询显示学生信息 *n); pf(tt* 9.插入记录到表中 *n); pf(tt* 10.按学号查询学生信息 *n); pf(tt* 11.学生成绩排名 *n); pf(tt* 12.修改学生信息 *n); pf(tt* 13.按平均分阶段输出学生信息 *n); pf(tt* 0. 退 出 *n); pf(*n); pf(n请选择n);/*输入学生信息*void input_stu() /输入学生信息float a,b; /a,b分别用来存放该生的各科总成绩和平均成绩int y,j;y=time(); n=0; studentnode *p1=null,*p2=null; p1=( studentnode *)malloc(sizeof(studentnode); pf(n*输入学生信息*n); /输入学生信息 pf(tt输入学生学号:t); scanf(%s,p1-idnumber); /学号 pf(tt输入学生的姓:t); scanf(%s,p1-familyname); /姓 pf(tt输入学生的名:t); scanf(%s,p1-givenname); /名 pf(tt输入学生性别(0代表女,1代表男):t); scanf(%d,&p1-sex); /性别 for(j=0;j+) /判断输入年份是否合理,假设人年龄在0-100岁之间为正常 pf(tt输入学生出生年:t); scanf(%d,&p1-birthyear); /出生年 if(y-p1-birthyear)100|(p1-birthyeary) pf(tt年份输入错误不符合要求,请重新输入出生年份:t); else break;for(j=0;j+) /判断输入月份是否合理 pf(tt输入学生出生月:t); scanf(%d,&p1-birthmonth); /出生月 if(p1-birthmonthbirthmonth12) pf(tt月份输入错误不符合要求,请重新输入出生月份:t); else break;for(j=0;j+) / 判断输入出生日是否合理 pf(tt输入学生出生日:t); scanf(%d,&p1-birthday); /出生日 if(p1-birthdaybirthday31) pf(tt出生日输入错误不符合要求,请重新输入出生日:t); else break; pf(tt输入学生的外语成绩:t); scanf(%f,&p1-score0); /各科成绩 pf(tt输入学生的数学成绩:t); scanf(%f,&p1-score1); pf(tt输入学生的c语言成绩:t); scanf(%f,&p1-score2); pf(tt输入学生的马哲成绩:t); scanf(%f,&p1-score3); a=p1-score0+p1-score1+p1-score2+p1-score3; /求该生的各科总成绩 b=(a/4); /求该生的平均成绩 p1-sum=a; p1-average=b; english=english+p1-score0; /求学生英语总分 math=math+p1-score1; /求学生数学总分 c=c+p1-score2; /求学生c语言总分 mazhe=mazhe+p1-score3; /求学生马哲总分 sumc+=a; /将各学生的总成绩输入到一个全局数组当中,方便按成绩排序 avrd+=b; /将个学生的平均分输入到一个全局数组中存放 n+; if(head-next=null) head=(studentnode *)malloc(len); head-next=p1; else for(p2=head;p2-next!=null;p2=p2-next); /*找到最后的结点,然后 将增加的结点挂在它上面*/ p2-next=p1; p1-next=null; save();/保存到文件/*显示链表中所有记录学生信息*void print_stu() /学生信息浏览studentnode *p=null; if(head=null) /判断链表是否为空 pf(文档中无记录!n); return; for(p=head-next;p!=null;p=p-next) /读出信息 pf(*查看链表中所有记录学生信息*n); pf(t学生学号:t%sn,p-idnumber); pf(t学生姓:t%sn,p-familyname); pf(t学生名:t%sn,p-givenname); pf(t学生性别:t%dn,p-sex); pf(t学生出生年:t%dn,p-birthyear); pf(t学生出生月:t%dn,p-birthmonth); pf(t学生出生日:t%dn,p-birthday); pf(t学生英语成绩:t%fn,p-score0); pf(t学生数学成绩:t%fn,p-score1); pf(t学生c语言成绩:t%fn,p-score2); pf(t学生马哲成绩:t%fn,p-score3); pf(t学生总成绩:t%fn,p-sum); pf(t学生平均成绩:t%fn,p-average); pf(n); /输出信息 pf(t各个学生总分分别为:); for(n=0;nc;n+) pf(%ft,sumn); pf(n); pf(t各个学生平均分分别为:); for(n=0;nnext;p!=null;p=p-next) /读出信息 if(!strcmp(p-familyname, familyname) pf(tt您查找的学生有:n); pf(n); pf(tt学生学号:t%sn,p-idnumber); pf(tt学生姓:t%sn,p-familyname); pf(tt学生名:t%sn,p-givenname); pf(tt学生性别:t%dn,p-sex); pf(tt学生出生年:t%dn,p-birthyear); pf(tt学生出生月:t%dn,p-birthmonth); pf(tt学生出生日:t%dn,p-birthday); pf(tt学生英语成绩:t%fn,p-score0); pf(tt学生数学成绩:t%fn,p-score1); pf(tt学生c语言成绩:t%fn,p-score2); pf(tt学生马哲成绩:t%fn,p-score3); pf(tt学生总成绩:t%fn,p-sum); pf(tt学生平均成绩:t%fn,p-average); pf(n); i=1; /输出信息 if(i!=1) pf(无该姓氏学生信息!请查证:); /没找到信息时的处理 /*按照学生学号信息查找*void search_no() /学生学号信息查找int i=0;studentnode *p=null; char idnumber20; if(head=null) /判断链表是否为空 pf(文档中无记录!n); return; pf(请输入学生学号:); scanf(%s,idnumber); for(p=head-next;p!=null;p=p-next) /读出信息 if(!strcmp(p-idnumber,idnumber) pf(tt您查找的学生是:n); pf(n); pf(tt学生学号:t%sn,p-idnumber); pf(tt学生姓:t%sn,p-familyname); pf(tt学生名:t%sn,p-givenname); pf(tt学生性别:t%dn,p-sex); pf(tt学生出生年:t%dn,p-birthyear); pf(tt学生出生月:t%dn,p-birthmonth); pf(tt学生出生日:t%dn,p-birthday); pf(tt学生英语成绩:t%fn,p-score0); pf(tt学生数学成绩:t%fn,p-score1); pf(tt学生c语言成绩:t%fn,p-score2); pf(tt学生马哲成绩:t%fn,p-score3); pf(tt学生总成绩:t%fn,p-sum); pf(tt学生平均成绩:t%fn,p-average); pf(n); i=1; /输出信息 if(!i) pf(无该生信息!请查证:); /没找到信息时的处理 /*按照学生班级统计并输出总成绩*void search_clas() /学生学号信息查找int i=0,j=0;studentnode *p=null; char a6,b6; if(head=null) /判断链表是否为空 pf(文档中无记录!n); return; pf(请输入学生班级:); scanf(%s,a); for(p=head-next;p!=null;p=p-next) /读出信息 for(j=0;jidnumberj; if(a0=b0&a1=b1&a2=b2&a3=b3&a4=b4&a5=b5) pf(tt您查找的班级学生有:n); pf(n); pf(tt学生学号:t%sn,p-idnumber); pf(tt学生姓:t%sn,p-familyname); pf(tt学生名:t%sn,p-givenname); pf(tt学生性别:t%dn,p-sex); pf(tt学生出生年:t%dn,p-birthyear); pf(tt学生出生月:t%dn,p-birthmonth); pf(tt学生出生日:t%dn,p-birthday); pf(tt学生英语成绩:t%fn,p-score0); pf(tt学生数学成绩:t%fn,p-score1); pf(tt学生c语言成绩:t%fn,p-score2); pf(tt学生马哲成绩:t%fn,p-score3); pf(tt学生总成绩:t%fn,p-sum); pf(tt学生平均成绩:t%fn,p-average); pf(n); i=1; /输出信息 if(!i) pf(无该班级信息!请查证:); /没找到信息时的处理 /*修改学生信息*void revise_stu()int y,j,k=0,m=0;int i=0; float a,b; y=time();studentnode *p=null; if(head=null) /判断链表是否为空 pf(文档中无记录!n); return; char idnumber20; pf(请输入学生的学号:t); scanf(%s,idnumber); for(p=head-next;p!=null;p=p-next) if(!strcmp(p-idnumber,idnumber) /验证信息是否正确 pf(tt你要修改的学生是:n); pf(n); pf(tt学生学号:t%sn,p-idnumber); pf(tt学生姓:t%sn,p-familyname); pf(tt学生名:t%sn,p-givenname); pf(tt学生性别(0代表女,1代表男):t%dn,p-sex); pf(tt学生出生年:t%dn,p-birthyear); pf(tt学生出生月:t%dn,p-birthmonth); pf(tt学生出生日:t%dn,p-birthday); pf(tt学生英语成绩:t%fn,p-score0); pf(tt学生数学成绩:t%fn,p-score1); pf(tt学生c语言成绩:t%fn,p-score2); pf(tt学生马哲成绩:t%fn,p-score3); pf(tt学生总成绩:t%fn,p-sum); pf(tt学生平均成绩:t%fn,p-average); pf(n); /输出要修改信息 i=1; for(k=0;ksum=sumk) break; for(m=0;maverage=avrm) break;english=english-p-score0; /修改学生英语总分 math=math-p-score1; /修改学生数学总分 c=c-p-score2; /修改学生c语言总分 mazhe=mazhe-p-score3; /修改学生马哲总分 pf(tt您修改学号为%s的学生:n,idnumber); pf(n); strcpy(p-idnumber,idnumber); pf(tt输入修改学生姓:t); scanf(%s,p-familyname); pf(tt输入修改学生名:t); scanf(%s,p-givenname); pf(tt输入修改学生性别(0代表女,1代表男):t); scanf(%d,&p-sex); for(j=0;j+) /判断输入年份是否合理,假设人年龄在0-100岁之间为正常 pf(tt输入学生出生年:t); scanf(%d,&p-birthyear); /出生年 if(y-p-birthyear)100|(p-birthyeary) pf(tt年份输入错误不符合要求,请重新输入出生年份:t); else break; for(j=0;j+) /判断输入月份是否合理 pf(tt输入学生出生月:t); scanf(%d,&p-birthmonth); /出生月 if(p-birthmonthbirthmonth12) pf(tt月份输入错误不符合要求,请重新输入出生月份:t); else break; for(j=0;j+) / 判断输入出生日是否合理 pf(tt输入学生出生日:t); scanf(%d,&p-birthday); /出生日 if(p-birthdaybirthday31) pf(tt出生日输入错误不符合要求,请重新输入出生日:t); else break; pf(tt输入学生的外语成绩:t); scanf(%f,&p-score0); /修改的各科成绩 pf(tt输入学生的数学成绩:t); scanf(%f,&p-score1); pf(tt输入学生的c语言成绩:t); scanf(%f,&p-score2); pf(tt输入学生的马哲成绩:t); scanf(%f,&p-score3); a=p-score0+p-score1+p-score2+p-score3; /求该生的各科总成绩 b=(a/4); /求该生的平均成绩 p-sum=a; p-average=b; sumk=p-sum; /将新的总分修改原总分 avrm=p-average; /将新的平均分修改原平均分 english=english+p-score0; /修改学生英语总分 math=math+p-score1; /修改学生数学总分 c=c+p-score2; /修改学生c语言总分 mazhe=mazhe+p-score3; /修改学生马哲总分 pf(n); /输入修改信息 save(); if(!i) pf(无该生信息!请查证:); /*没找到信息时的处理*/ /*删除学生信息*void del_stu() int i=0; studentnode *p=null; if(head=null) /判断链表是否为空 pf(文档中无记录!n); return; else char idnumber20; pf(请输入学生的学号:t); scanf(%s,idnumber); for(p=head;p!=null;p=p-next) if(!strcmp(p-next-idnumber,idnumber) /验证信息是否正确 pf(%sn,idnumber); pf(tt您要删除的学生是:n);pf(n); pf(tt学生学号:t%sn,p-next-idnumber); pf(tt学生姓:t%sn,p-next-familyname); pf(tt学生名:t%sn,p-next-givenname); pf(tt学生性别:t%dn,p-next-sex); pf(tt学生出生年:t%dn,p-next-birthyear); pf(tt学生出生月:t%dn,p-next-birthmonth); pf(tt学生出生日:t%dn,p-next-birthday); pf(tt学生英语成绩:t%fn,p-next-score0); pf(tt学生数学成绩:t%fn,p-next-score1); pf(tt学生c语言成绩:t%fn,p-next-score2); pf(tt学生马哲成绩:t%fn,p-next-score3); pf(tt学生总成绩:t%fn,p-next-sum); pf(tt学生平均成绩:t%fn,p-next-average); pf(n); /输出要删除的信息 english=english-(p-next-score0); /修改学生英语总分 math=math-(p-score1);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司聚会赞助活动方案
- 公司现场宣传活动方案
- 公司营地团建活动方案
- 公司清远漂流活动方案
- 公司春茗策划方案
- 公司椅子清仓活动方案
- 公司新生产线策划方案
- 公司新春工会活动方案
- 公司组织云年会活动方案
- 公司端午感恩策划方案
- 广东省佛山市顺德区2023-2024学年七年级下学期期末语文试题(原卷版)
- 部编人教版六年级上册语文全册教学课件+单元复习课件
- 【新教材】苏科版(2024)七年级上册数学第1-6章全册教案设计
- 车辆维修保养服务 投标方案(技术方案)
- 陕西省西安市雁塔区2023-2024学年六年级下学期期末语文试卷
- 加油站会员体系设计与运营策略
- 精索静脉曲张教学
- GB/T 5683-2024铬铁
- 提高静脉血栓栓塞症规范预防率-医务科-2023.12.7
- 2024年建筑业10项新技术
- 配电设备运行、维护、巡回检查制度范本
评论
0/150
提交评论