学生信息管理系统C语言(运行无误.doc_第1页
学生信息管理系统C语言(运行无误.doc_第2页
学生信息管理系统C语言(运行无误.doc_第3页
学生信息管理系统C语言(运行无误.doc_第4页
学生信息管理系统C语言(运行无误.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

#include#include#include#define N 30struct date int year; char month; char day;struct studentchar no9; char name9; char sex3; struct date birthday; int score4;int menu()int opt;printf(*学生信息管理* n);printf( 1 显示学生信息 n);printf( 2 显示按姓名排序学生信息 n);printf( 3 显示按总分排序学生信息 n);printf( 4 按学号查询学生信息和平均分数 n);printf( 5 按姓名查询学生信息和平均分数 n);printf( 6 查个门课平均分数 n);printf( 7 查男女学生数和总人数 n);printf( 8 显示学生信息表 n);printf(N)printf(超出班级学生人数!n);return; fscanf(fp,%s %s %s %d %d %d %d %d %d,&stui.no,&,&stui.sex,&stui.birthday.year,&stui.birthday.month,&stui.birthday.day,&stui.score0,&stui.score1,&stui.score2); stui.score3=stui.score0+stui.score1+stui.score2 ; fclose(fp);void printscores(struct student *ss,int n) /*显示按总分排序后的学生信息*/int i;printf(*按总分排序后的学生信息*nn);printf(nn);printf(学号 姓名 性别 年 月 日 数学 英语 C 总分 n);for(i=0;ino,ssi-name,ssi-sex,ssi-birthday.year,ssi-birthday.month,ssi-birthday.day,ssi-score0,ssi-score1,ssi-score2,ssi-score3);void nosort(struct student *pstu,int n) /* 按学号排序简单比较排序法*/ struct student temp; int i,j; for(i=0;in-1;i+) for(j=i+1;j0) temp=pstui; pstui=pstuj; pstuj=temp; void namesort(struct student *ns,int n) /*按姓名递增冒泡排序*/struct student *temp;int i,j;for(i=0;in-1;i+)for(j=0;jname,nsj+1-name)0)temp=nsj;nsj=nsj+1;nsj+1=temp;void scoresot(struct student *ss,int n) /*按总分递减选择排序*/struct student *temp;int i,j;for(i=0;in-1;i+) for(j=0;jscore3score3)temp=ssj;ssj=ssj+1;ssj+1=temp;void printstu(struct student *pstu,int n) int i; printf( 学号 姓名 性别 年 月 日 数学 英语 C 总分n); printf(n); printf(=n); for(i=0;in;i+) printf(%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %5dn,pstui.no,,pstui.sex,pstui.birthday.year, pstui.birthday.month,pstui.birthday.day, pstui.score0,pstui.score1,pstui.score2,pstui.score3); void ptintnames(struct student *pns,int n) /*显示按姓名排序后的学生信息*/int i;printf(*按姓名排序结果*nn);printf(学号 姓名 性别 年 月 日 数学 英语 C 总分n);printf(n);for(i=0;ino, pnsi-name,pnsi-sex,pnsi-birthday.year,pnsi-birthday.month,pnsi-birthday.day,pnsi-score0,pnsi-score1,pnsi-score2,pnsi-score3); void nosearch(struct student *pstu,int n) /*按学号查询*/int i=0,j=0;char no9;printf(*输入学号*:n);scanf(%s,&no);printf(n);for(i=0;ino)=0)printf(学号:%-8sn姓名:%-8sn性别%-2sn%4d年%2d月%2d日n数学:%4dn英语%4dnC:%4dn总分:%4dn平均:%4dn, pstui-no, pstui-name,pstui-sex,pstui-birthday.year, pstui-birthday.month,pstui-birthday.day, pstui-score0,pstui-score1,pstui-score2, pstui-score3,pstui-score3/3);elsej+;if(j=6)printf(cant find);int zbsearch(struct student *ns,int n,char *name) /*折半函数*/ int low=0,up=n-1,mid; if(strcmp(name,nslow-name)=0) return low; else if(strcmp(name,nsup-name)=0) return up; else while(lowname)=0)return mid;else if(strcmp(name,nsmid-name)0)low=mid+1;elseup=mid-1; return -1;void namesearch(struct student *ns,int n) /*按姓名查找*/char name9;int i;printf(*输入姓名*:);scanf(%s,name);i=zbsearch(ns,n,name);if(i!=-1)printf(n查询结果:n%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %4dnnn,nsi-no, nsi-name,nsi-sex,nsi-birthday.year,nsi-birthday.month,nsi-birthday.day,nsi-score0,nsi-score1,nsi-score2,nsi-score3);else printf(%d cant findn,name);for(;) i=i-1;if(strcmp(name,nsi-name)=0)printf(find it:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %4dn,nsi-no,nsi-name,nsi-sex,nsi-birthday.year,nsi-birthday.month,nsi-birthday.day,nsi-score0,nsi-score1,nsi-score2,nsi-score3);else break; i=zbsearch(ns,n,name);for(;) i=i+1; if(strcmp(name,nsi-name)=0) printf(find it:%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %4dn,nsi-no,nsi-name,nsi-sex,nsi-birthday.year,nsi-birthday.month,nsi-birthday.day,nsi-score0,nsi-score1,nsi-score2,nsi-score3); else break; void aver(struct student *pstu,int n) /*查各科平均分数*/static int summath=0,sumenglish=0,sumC=0,score=0;int i;struct student studAN;for(i=0;in-1;i+) studAi=pstui; nosort(studA,n); printf(nn-各科平均分数-n);for(i=0;in;i+)summath=summath+pstui.score0;sumenglish=sumenglish+pstui.score1;sumC=sumC+pstui.score2;score=score+pstui.score3;printf(n数学: %4dn,summath/(n-1);printf(英语: %4dn,sumenglish/(n-1);printf(C语言: %4dn,sumC/(n-1); printf(总分平均: %4dnn,score/(n-1);void snumbertoal(struct student *pstu,int n) /*查男女学生数*/int i,j,k,t;j=0;k=0;for(i=0;in-1;i+)if(strcmp(pstui.sex,男)=0)j+;else k+;t=j+k;printf(男:%dn,j);printf(女:%dn,k);printf(男女总数:%dn,t);void printform(struct student *pstu,int n) /*显示学生信息*/int i;struct student studAN; for(i=0;in;i+)studAi=pstui; nosort(studA, n);printf(n);printf( 学生信息表n);printf(*n);printf(n);printf( 学号 姓名 性别 年 月 日 数学 英语 C 总分);for(i=0;in;i+)printf(%-8s %-8s %-2s %4d %2d %2d %4d %4d %4d %4d n,studAi.no,studA,studAi.sex,studAi.birthday.year,studAi.birthday.month,studAi.birthday.day,studAi.score0,studAi.score1,studAi.score2,studAi.score3); void main() static struct student stuN;struct student *pstuN;struct student *nsN;struct student *ssN; int opt; int i,n; n=0; builtxinxi(stu,&n); for(i=0;iN;i+) pstui=&stui; for(i=0;iN;i+) nsi=&stui; for(i=0;iN;i+) ssi=&stui; namesort(ns, n) ; scoresot (ss,n); printf(n *学生信息* nnnn); printstu(stu, n) ; printf(n 按,进入菜单 n); while(1) opt=menu(); switch(opt) case 0: /* 退出 */ exit(1); case 1: printstu(stu, n); /*显示学生信息*/ case 2: ptintnames(ns, n); /*显示按姓名排序后的学生信息*/ break; case 3: pr

温馨提示

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

评论

0/150

提交评论