学生成绩管理系统数据结构-课程设计报告(编辑修改稿)内容摘要:

*/ repeat5:printf(\t\t请输入数学成绩 (0~100):)。 scanf(\t\t\t%g,amp。 stud[n+i].math)。 if(stud[n+i].math0||stud[n+i].math100 ) { printf(\t\t\t输入错误,请重新输入 !\n)。 goto repeat5。 } repeat6:printf(\t\t请输入英语成绩 (0~100):)。 scanf(\t\t\t%g,amp。 stud[n+i].english)。 if(stud[n+i].english0||stud[n+i].english100 ) { printf(\t\t\t输入错误,请重新输入 !\n)。 goto repeat6。 } printf(\t\t是否继续输入记录 ?(Y/N))。 scanf(\t\t%c,amp。 sign)。 /*输入判断 */ i++。 } return(n+i)。 } 调用 display 函数 (本函数的功能是显示学生的各类信息和规定输出格式 ,时间复杂度为 O(n)) void Display(Student stud[],int n) /*浏览所有记录 */ { int i。 printf( \n)。 /*格式头 */ printf( 学期 学生证号 姓名 语文 数学 英语 \n)。 printf( \n)。 for(i=1。 in+1。 i++) { printf( %8d%15s%15s%15g%15g%5g\n,stud[i1].term,stud[i1].num,stud[i1].name,stud[i1].chinese,stud[i1].math,stud[i1].english)。 } printf(\t\t\t)。 system(pause)。 } 调用排序 函数 ( Sort 函数, heapsort 函数和 sift 函数) ( 本函数的功能是对学生的 成绩 进行排序 ,时间复杂度为 O(n)) 调用 Sort 函数 void Sort(Student stud[],int n) { int i。 for(。 ) { switch(menu6()) { case 1: heapsort(stud,n)。 printf(\t\t\t 语文成绩排序 \n)。 printf(\n)。 printf(\t\n)。 /*格式头 */ printf(\t 学期 学生证号 姓名 语文 \n)。 printf(\t\n)。 for(i=1。 in+1。 i++) printf(\t%8d%15s%15s%15g%\n,stud[i1].term,stud[i1].num,stud[i1].name,stud[i1].chinese)。 system(pause)。 break。 case 2: heapsort1(stud,n)。 printf(\t\t\t 数学成绩排序 \n)。 printf(\n)。 printf(\t\n)。 /*格式头 */ printf(\t 学期 学生证号 姓名 数学 \n)。 printf(\t\n)。 for(i=1。 in+1。 i++) printf(\t%8d%15s%15s%15g%\n,stud[i1].term,stud[i1].num,stud[i1].name,stud[i1].math)。 system(pause)。 break。 case 3: heapsort2(stud,n)。 printf(\t\t\t 英语成绩排序 \n)。 printf(\n)。 printf(\t\n)。 /*格式头 */ printf(\t 学期 学生证号 姓名 英语 \n)。 printf(\t\n)。 for(i=1。 in+1。 i++) printf(\t%8d%15s%15s%15g\n,stud[i1].term,stud[i1].num,stud[i1].name,stud[i1].english)。 system(pause)。 break。 case 4: return。 } } } 调用 sift 函数 (调整堆) /* 调整堆 */ void sift(Student stud[],int t,int w) { int i,j。 Student x。 i=t。 x=stud[i]。 j=2*i+1。 while(j=w) {if((jw)amp。 amp。 (stud[j].chinesestud[j+1].chinese)) j++。 if(stud[j].chinese) { stud[i]=stud[j]。 i=j。 j=2*j+1。 } else break。 } stud[i]=x。 } void sift1(Student stud[],int t,int w) { int i,j。 Student x。 i=t。 x=stud[i]。 j=2*i+1。 while(j=w) {if((jw)amp。 amp。 (stud[j].mathstud[j+1].math)) j++。 if(stud[j].math) { stud[i]=stud[j]。 i=j。 j=2*j+1。 } else break。 } stud[i]=x。 } void sift2(Student stud[],int t,int w) { int i,j。 Student x。 i=t。 x=stud[i]。 j=2*i+1。 while(j=w) {if((jw)amp。 amp。 (stud[j].englishstud[j+1].english)) j++。 if(stud[j].english) { stud[i]=stud[j]。 i=j。 j=2*j+1。 } else break。 } stud[i]=x。 } 调用 heapsort 函数 /* 堆排序的算法 */ void heapsort(Student stud[],int j) { int i。 Student x。 for(i=j/21。 i=0。 i) sift(stud,i,j1)。 for(i=j1。 i0。 i) { x=stud[0]。 stud[0]=stud[i]。 stud[i]=x。 sift(stud,0,i1)。 } } void heapsort1(Student stud[],int j) { int i。 Student x。 for(i=j/21。 i=0。 i) sift1(stud,i,j1)。 for(i=j1。 i0。 i) { x=stud[0]。 stud[0]=stud[i]。 stud[i]=x。 sift1(stud,0,i1)。 } } void heapsort2(Student stud[],int j) { int i。 Student x。 for(i=j/21。 i=0。 i) sift2(stud,i,j1)。 for(i=j1。 i0。 i) { x=stud[0]。 stud[0]=stud[i]。 stud[i]=x。 sift2(stud,0,i1)。 } } 调用 add_a_record 函数 ( 本函数的功能是添加一个学生的信息 ,时间复杂度为 O(n)) int add_a_record(Student stud[],int n) /* 添加多条信息 */ {char x[10],sign。 int j,i=0。 while(sign!=39。 n39。 amp。 amp。 sign!=39。 N39。 ) /*判断 */ { repeat1: printf(\t\t 请输入学期 :)。 scanf(\t\t%d,amp。 stud[n+i].term)。 if(stud[n+i].term!=1amp。 amp。 stud[n+i].term!=2) { printf(\t\t\t 输入错误,请重新输入 !\n)。 goto repeat1。 } repeat2: printf(\t\t 请输入学生证号 :)。 /*交互输入 */ scanf(\t\t%s,stud[n+i].num)。 for(j=0。 jn+i。 j++) if(strcmp(stud[n+i].num,stud[j].num)==0) /*判断是否输入重复学生学号 */ { printf(\t\t\t 学生学号已存在,请重新输入 !\n)。 goto repeat2。 } repeat3: printf(\t\t 请输入学生姓名 :)。 scanf(\t\t%s,stud[n+i].name)。 for(j=0。 jn+i。 j++) if(strcmp(stud[n+i].name,stud[j].name)==0) /*判断是否输入重复学生姓名*/ { printf(\t\t\t 学生姓名已存在,请重新输入 !\n)。 goto repeat3。 } repeat4: printf(\t\t 请输入语文成绩 (0~100):)。 scanf(\t\t\t%g,amp。 stud[n+i].chinese)。 if(stud[n+i].chinese0||stud[n+i].chinese100 ) /*输入不合理成绩的错误提示 */ { printf(\t\t\t 输入错误,请重新输入 !\n)。 goto repeat4。 } /*重新输入该科成绩 */ repeat5:prin。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。