学生成绩管理系统链表版C代码包含所有功能适合初学者借鉴.docx_第1页
学生成绩管理系统链表版C代码包含所有功能适合初学者借鉴.docx_第2页
学生成绩管理系统链表版C代码包含所有功能适合初学者借鉴.docx_第3页
学生成绩管理系统链表版C代码包含所有功能适合初学者借鉴.docx_第4页
学生成绩管理系统链表版C代码包含所有功能适合初学者借鉴.docx_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include stdio.h#include time.h#include string.h#include stdlib.h#include conio.h#define NULL 0typedef struct Lstu int cla,ID; long num; char name20; char sex20; float chinese,math,english; float sum,ave; Lstu *next;Lstu;Lstu *head;void Create(int n) /创建链表Lstu *p,*s;int i;for(i=0;icla); printf(请输入学号: );scanf(%ld,&p-num); printf(请输入姓名: );scanf(%s,p-name);printf(请输入性别: );scanf(%s,p-sex);printf(请输入语文成绩: );scanf(%f,&p-chinese);printf(请输入数学成绩: );scanf(%f,&p-math);printf(请输入英语成绩: );scanf(%f,&p-english);p-sum=p-chinese+p-math+p-english;p-ave=p-sum/3;head=p;if(n=1) p-next=NULL; elses=(Lstu *)malloc(sizeof(Lstu);printf(请输入第%d个人的信息n,i+1);printf(请输入班级: );scanf(%d,&s-cla); printf(请输入学号: );scanf(%ld,&s-num); printf(请输入姓名: );scanf(%s,s-name);printf(请输入性别: );scanf(%s,s-sex);printf(请输入语文成绩: );scanf(%f,&s-chinese);printf(请输入数学成绩: );scanf(%f,&s-math);printf(请输入英语成绩: );scanf(%f,&s-english);s-sum=s-chinese+s-math+s-english;s-ave=s-sum/3; p-next=s;p=s;s-next=NULL;void List() /输出链表内容 Lstu *p;int i=0; p=head; if(p=NULL)printf(Sorry,Its a Empty Listn);elseprintf(nnt-n);printf(t%-5s%-5s %-10s%-8s%-7s%-10s%-10s%-10sn,序号,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩);printf(t-n);while (p)i+;p-ID=i; printf(t %-4d%-5d %-7d %-8s%-7s%-10.2f%-10.2f%-10.2fn,p-ID,p-cla,p-num,p-name,p-sex,p-chinese,p-math,p-english); printf(t-n); p=p-next; void list() /输出链表所有内容 Lstu *p;int i=0; p=head; if(p=NULL)printf(Sorry,Its a Empty Listn);elseprintf(n -n);printf( %-5s%-5s %-7s %-8s%-7s%-10s%-10s%-10s%-8s%-8sn,序号,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩,总分,平均分);printf( -n);while (p)i+;p-ID=i; printf( %-4d%-6d%-12d%-8s%-7s%-10.2f%-10.2f%-10.2f%-8.2f%-8.2fn,p-ID,p-cla,p-num,p-name,p-sex, p-chinese,p-math,p-english,p-sum,p-ave); printf( -n); p=p-next; void save() /文件保存 FILE *fp; Lstu *p; p=head; if(fp=fopen(初始值二进制.txt,wb)=NULL) printf(Cannot open the file ); exit(0); while(p) fwrite(p,sizeof(Lstu),1,fp); p=p-next; fclose(fp);void save1() /文件保存 FILE *fp; Lstu *p; p=head; if(fp=fopen(初始值二进制备用.txt,wb)=NULL) printf(Cannot open the file ); exit(0); while(p) fwrite(p,sizeof(Lstu),1,fp); p=p-next; fclose(fp);void read() /文件读取 FILE *fp; Lstu *p,*p1; if(fp=fopen(初始值二进制.txt,rb)=NULL) printf(Cannot open the filen); exit(0); head=(Lstu*)malloc(sizeof(Lstu); p1=head; while(!feof(fp) p=(Lstu *)malloc(sizeof(Lstu); if(fread(p,sizeof(Lstu),1,fp)=1) p1-next=p; p1=p1-next; head=head-next;fclose(fp);void read1() /文件读取 FILE *fp; Lstu *p,*p1; if(fp=fopen(初始值二进制备用.txt,rb)=NULL) printf(Cannot open the filen); exit(0); head=(Lstu*)malloc(sizeof(Lstu); p1=head; while(!feof(fp) p=(Lstu *)malloc(sizeof(Lstu); if(fread(p,sizeof(Lstu),1,fp)=1) p1-next=p; p1=p1-next; head=head-next;fclose(fp);void SAVE() /保存到可浏览文件 FILE *fp; Lstu *p;int i=0; p=head; if(fp=fopen(初始值可浏览文件.txt,w+)=NULL) printf(Cannot open the file ); exit(0); fprintf(fp,nnt-n); fprintf(fp,t%-5s%-5s %-10s%-8s%-7s%-10s%-10s%-10sn,序号,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩); fprintf(fp,t-nn);while(p) i+;p-ID=i; fprintf(fp,t %-4d%-5d %-7d %-8s%-7s%-10.2f%-10.2f%-10.2fn,p-ID,p-cla,p-num,p-name, p-sex,p-chinese,p-math,p-english); fprintf(fp,t-n); p=p-next; fclose(fp);void SAVE1() /保存到可浏览文件 FILE *fp;char filename20; Lstu *p;int i=0; p=head; printf(请输入保存到可浏览文件的文件名: ); scanf(%s,filename); if(fp=fopen(filename,w+)=NULL) printf(Cannot open the file ); exit(0); fprintf(fp,n -n); fprintf(fp, %-5s%-5s %-7s %-8s%-7s%-10s%-10s%-10s%-8s%-8sn,序号,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩,总分,平均分); fprintf(fp, -n);while(p) i+;p-ID=i; fprintf(fp, %-4d%-5d %-7d %-8s%-7s%-10.2f%-10.2f%-10.2f%-8.2f%-8.2fn,p-ID,p-cla,p-num,p-name,p-sex, p-chinese,p-math,p-english,p-sum,p-ave); fprintf(fp,-n); p=p-next; fclose(fp);void sort_data_copy(Lstu *p,Lstu *s) /交换排序时的值int cla1;cla1=p-cla;p-cla=s-cla;s-cla=cla1;long num1;num1=p-num;p-num=s-num;s-num=num1;char name120;strcpy(name1,p-name);strcpy(p-name,s-name);strcpy(s-name,name1);char sex120;strcpy(sex1,p-sex);strcpy(p-sex,s-sex);strcpy(s-sex,sex1);float chinese1;chinese1=p-chinese;p-chinese=s-chinese;s-chinese=chinese1;float math1;math1=p-math;p-math=s-math;s-math=math1;float english1;english1=p-english;p-english=s-english;s-english=english1;float sum1;sum1=p-sum;p-sum=s-sum;s-sum=sum1;float ave1;ave1=p-ave;p-ave=s-ave;s-ave=ave1;void sort() /对初始成绩进行排序Lstu *p,*s;int n;char a;read();p=head;if(p=NULL)printf(Sorry,Its a Empty Listn);printf(n按Enter键继续n);a=getch();elsewhile(1)system(cls);printf(n排序前结果为:n);read();list(); printf(t *=*=*=*=*=*=*=*=*=*=*=按学号排序(1)n); printf(t *=*=*=*=*=*=*=*=*=*=*=按语文成绩排序(2)n);printf(t *=*=*=*=*=*=*=*=*=*=*=按数学成绩排序(3)n);printf(t *=*=*=*=*=*=*=*=*=*=*=按英语成绩排序(4)n); printf(t *=*=*=*=*=*=*=*=*=*=*=按平均分排序(5)n);printf(t *=*=*=*=*=*=*=*=*=*=*=回主菜单(0)nn);printf(t请输入选择: ); scanf(%d,&n); for(p=head;p-next!=NULL;p=p-next)for(s=p-next;s!=NULL;s=s-next) switch(n) case 1: if(p-nums-num)sort_data_copy(p,s);break;case 2: if(p-chinesechinese)sort_data_copy(p,s);break;case 3: if(p-mathmath)sort_data_copy(p,s);break;case 4: if(p-englishenglish)sort_data_copy(p,s);break;case 5: if(p-aves-ave)sort_data_copy(p,s);break;case 0: break;default : printf(chooe error!);break;if(n=0)printf(n按Enter键回主菜单n);a=getch();break;elseprintf(排序后结果为:n);list();SAVE1();printf(n按Enter键继续n);a=getch();void sort1() /对所有数据进行排序Lstu *p,*s;int n;char a;read1();p=head;if(p=NULL)printf(Sorry,Its a Empty Listn);printf(n按Enter键继续n);a=getch();elsewhile(1)system(cls);printf(n排序前结果为:n);read1();list(); printf(t *=*=*=*=*=*=*=*=*=*=*=按学号排序(1)n); printf(t *=*=*=*=*=*=*=*=*=*=*=按语文成绩排序(2)n);printf(t *=*=*=*=*=*=*=*=*=*=*=按数学成绩排序(3)n);printf(t *=*=*=*=*=*=*=*=*=*=*=按英语成绩排序(4)n); printf(t *=*=*=*=*=*=*=*=*=*=*=按平均分排序(5)n);printf(t *=*=*=*=*=*=*=*=*=*=*=回主菜单(0)nn);printf(t请输入选择: ); scanf(%d,&n); for(p=head;p-next!=NULL;p=p-next)for(s=p-next;s!=NULL;s=s-next) switch(n) case 1: if(p-nums-num)sort_data_copy(p,s);break;case 2: if(p-chinesechinese)sort_data_copy(p,s);break;case 3: if(p-mathmath)sort_data_copy(p,s);break;case 4: if(p-englishenglish)sort_data_copy(p,s);break;case 5: if(p-aves-ave)sort_data_copy(p,s);break;case 0: break;default : printf(chooe error!);break;if(n=0)printf(n按Enter键回主菜单n);a=getch();break;elseprintf(排序后结果为:n);list();SAVE1();printf(n按Enter键继续n);a=getch();void search_print(Lstu *p) /输出查找信息printf(t-n);printf(t%-5s %-7s %-8s%-7s%-10s%-10s%-10sn,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩);printf(t-n);printf(t%-5d %-7d %-8s%-7s%-10.2f%-10.2f%-10.2fn,p-cla,p-num,p-name,p-sex,p-chinese,p-math,p-english);printf(t-n);void search_choose() /选择按分数段查找方式Lstu *p;int n,i=1,flag=0;float a,b;p=head;printf(t*=*=*=*=*=*=*=*=*=*=*=按语文分数段查找(1)n);printf(t*=*=*=*=*=*=*=*=*=*=*=按数学分数段查找(2)n);printf(t*=*=*=*=*=*=*=*=*=*=*=按英语分数段查找(3)nn);printf(t请输入选择: );scanf(%d,&n);printf(请输入分数下限(包括输入的分数): ); scanf(%f,&a);printf(请输入分数上限(包括输入的分数): );scanf(%f,&b); switch(n) case 1: while(p) if(p-chinese)=a&(p-chinese)next; if(flag=0) printf(没有此分数段的同学!n); elseprintf(您所查找的同学信息如下:n); printf(t-n); printf(t%-5s %-7s %-8s%-7s%-10s%-10s%-10sn,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩);p=head;printf(t-n); while(p) if(p-chinese)=a&(p-chinese)cla,p-num,p-name,p-sex,p-chinese,p-math,p-english); printf(t-n); p=p-next; break;case 2: while(p) if(p-chinese)=a&(p-math)next; if(flag=0) printf(没有此分数段的同学!n); elseprintf(您所查找的同学信息如下:n); printf(t-n); printf(t%-5s %-7s %-8s%-7s%-10s%-10s%-10sn,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩);printf(t-n);p=head; while(p) if(p-chinese)=a&(p-math)cla,p-num,p-name,p-sex,p-chinese,p-math,p-english); printf(t-n); p=p-next;break; case 3: while(p) if(p-chinese)=a&(p-english)next; if(flag=0) printf(没有此分数段的同学!n); elseprintf(您所查找的同学信息如下:n); printf(t-n); printf(t%-5s %-7s %-8s%-7s%-10s%-10s%-10sn,班级,学号,姓名,性别,语文成绩,数学成绩,英语成绩);printf(t-n);p=head; while(p) if(p-chinese)=a&(p-english)cla,p-num,p-name,p-sex,p-chinese,p-math,p-english); printf(t-n); p=p-next;break; default : printf(chooe error!);break; void search() /查找Lstu *p;int n;long m;char str20;p=head;if(p=NULL)printf(Sorry,Its a Empty Listn);elseprintf(nnt*=*=*=*=*=*=*=*=*=*=*=按学号查找(1)n);printf(t*=*=*=*=*=*=*=*=*=*=*=按姓名(2)n);printf(t*=*=*=*=*=*=*=*=*=*=*=分数段查找(3)nn);printf(t请输入选择: );scanf(%d,&n);switch(n) case 1: printf(请输入学号: ); scanf(%ld,&m); if(p-num=m) printf(您所查找的同学信息如下:n); search_print(p); else while(p-next!=NULL&p-next-num!=m)p=p-next; if(p-next=NULL)printf(It havent this numbern); else printf(您所查找的同学信息如下:n); search_print(p-next);break;case 2: printf(请输入姓名: ); scanf(%s,str); if(strcmp(p-name,str)=0) printf(您所查找的同学信息如下:n); search_print(p); else while(p-next!=NULL&strcmp(p-next-name,str)!=0)p=p-next; if(p-next=NULL)printf(It havent this namen); else printf(您所查找的同学信息如下:n); search_print(p-next);break; case 3: search_choose();break; default : printf(chooe error!);break; void modify_choose(Lstu *p,int n) /选择修改方式Lstu *s;printf(t*=*=*=*=*=*=*=*=*=*=*=修改语文成绩(1)n);printf(t*=*=*=*=*=*=*=*=*=*=*=修改数学成绩(2)n);printf(t*=*=*=*=*=*=*=*=*=*=*=修改英语成绩(3)n);printf(t*=*=*=*=*=*=*=*=*=*=*=修改所有成绩(4)n);printf(t*=*=*=*=*=*=*=*=*=*=*=回主菜单(0)nn);printf(t请输入选择: );scanf(%d,&n);s=(Lstu *)malloc(sizeof(Lstu);switch(n) case 1: printf(请输入新的语文成绩: ); scanf(%f,&s-chinese); p-chinese=s-chinese;break; case 2: printf(请输入新的数学成绩: ); scanf(%f,&s-math); p-math=s-math;break; case 3: printf(请输入新的英语成绩: ); scanf(%f,&s-english); p-english=s-english;break; case 4: printf(请输入新的语文成绩: ); scanf(%f,&s-chinese); printf(请输入新的数学成绩: ); scanf(%f,&s-math); printf(请输入新的英语成绩: ); scanf(%f,&s-english); p-chinese=s-chinese; p-math=s-math; p-english=s-english;break; default : printf(chooe error!);break;void modify() /按姓名修改Lstu *p;int n;char str20;p=head;if(p=NULL)printf(Sorry,Its a Empty Listn);elseprintf(修改前信息如下:n);List();printf(请输入你将修改成绩人的姓名: );scanf(%s,str);if(strcmp(p-name,str)=0)modify_choose(p,n);printf(修改后信息如下:n);List();elsewhile(p-next!=NULL&strcmp(p-next-name,str)!=0)p=p-next; if(p-next=NULL)printf(Its a error namen);elsemodify_choose(p-next,n);printf(修改后信息如下:n);List();void Insert() /按序号插入int n,i=0; Lstu *p,*s;p=head;if(p=NULL)printf(Sorry,Its a Empty Listn);elseprintf(插入前信息如下:n);List();printf(请输入你将插入信息放置位置的序号: ); scanf(%d,&n);while(p)p=p-next;i+;if(ni+1)printf(输入位置序号错误!n);elseprintf(请输入你要插入的信息n); s=(Lstu *)malloc(sizeof(Lstu); printf(请输入班级: );scanf(%d,&s-cla); printf(请输入学号: );scanf(%ld,&s-num); printf(请输入姓名: );scanf(%s,s-name); printf(请输入性别: );scanf(%s,s-sex); printf(请输入语文成绩: );scanf(%f,&s-chinese); printf(请输入数学成绩: );scanf(%f,&s-math); printf(请输入英语成绩: );scanf(%f,&s-english); s-sum=s-chinese+s-math+s-english;s-ave=s-sum/3; if(n=1) p=head;head=s;s-next=p; printf(插入后信息如下:n);List(); elsep=head; while(p-next!=NULL&p-next-ID!=n)p=p-next; s-next=p-next;p-next=s; printf(插入后信息如下:n);List();void del() /按姓名删除char str20; Lstu *p,*q;p=head;printf(nn请输入你要删除人的姓名n);scanf(%s,str); if(p=NULL) printf(Sorry,Its a Empty Listn);if(strcmp(p-name,str)=0) printf(您要删除人信息如下:n);search_print(p); head=p-next; printf(删除后信息如下:n);List();elsep=head;while(p-next!=NULL&strcmp(p-next-name,str)!=0)p=p-next; if(p-next=NULL)printf(Its a error namen);elseprintf(您要删除人信息如下:n);search_print(p-next); q=p-next;p-next=q-next; free(q); printf(删除后信息如下:n);List();void statistics()system(cls);printf(nn全部成绩统计如下:nn);Lstu *p=head;int n=0,i;float sum,average,a;while(p)n+;p=p-next;printf(t全部共有%d个人nnn,n);p=head;sum=0;i=0;while(p)sum=sum+p-chinese;if(p-chinesenext;average=sum/n;a=(float(n)-float(i)/float(n);printf(t语文平均分为: %-7.2fnn,average);printf(t共有%d个人语文不及格nn,i);printf(t及格率为%.2f%snnn,a*100,%);p=head;sum=0;i=0;while(p)sum=sum+p-math;if(p-mathnext;average=sum/n;a=(float(n)-float(i)/float(n);printf(t数学平均分为: %-7.2fnn,average);printf(t共有%d个人数学不及格nn,i);printf(t及格率为%.2f%snnn,a*100,%);p=head;sum=0;i=0;while(p)sum=sum+p-english;if(p-englishnext;average=sum/n;a=(float(n)-float(i)/float(n);printf(t英语平均分为: %-7.2fnn,average);printf(t共有%d个人英语不及格nn,i);printf(t及格率为%.2f%snnn,a*100,%);int menu() /菜单 int a; time_t rawtime; struct tm * timeinfo; time ( &rawtime

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论