




已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025电子商务平台用户增长与活跃度提升合同
- 2025年劳动合同制员工劳动合同解除备案合同
- 2025年大货车货运信息平台会员服务合同
- 2025沉井劳务分包及施工技术监督合同协议书
- 2025年度房地产项目开发合作合同及协议书
- 2025年度抵押借款合同法律效力及履行监督协议
- 2025年度派遣至亚洲地区员工文化交流合同
- 2025版生物科技企业研发人员劳动合同集锦
- 2025年度数据中心施工图设计合同范本
- 说课的基本步骤
- 建筑安全员c2考试题库及答案
- 2025年中学教师资格考试《综合素质》核心考点特训题库(含答案)之教育文化素养论述题库
- 2025海南省老干部服务管理中心招聘事业编制人员6人(第1号)笔试参考题库附答案解析
- 2025-2026人教版(2024)二年级上册数学教学计划
- 湖北省利川市2025年上半年公开招聘辅警试题含答案分析
- 八年级历史上学期 导言课 课件(内嵌视频)
- 1.1.2 生物的特征 同步练习(含解析)人教版(2024)初中生物学七年级上册
- 2025云南玉溪国润建筑有限责任公司招聘工作人员10人笔试备考题库及答案解析
- 2025云南省腾冲市边防办招聘边境专职联防员(10人)笔试备考试题及答案解析
- 2022年高考全国甲卷:写作指导及范文课件16张
- 郭锡良《古代汉语》讲稿(不仔细看别后悔哦)
评论
0/150
提交评论