班级学生成绩管理c语言课设内容摘要:

组当中,并由用户输入待删除学生的学号,而后按照该学号进行查找,如果文件中存在该学生的数据,则采用删除算法删除,否则输出学生信息不存在的提示信息。 对学生信息的具体删除算法是在结构体沈 阳 航 院 设 计 用 纸 10 数组中实现的,当学生的信息被找到后,位于数组中该学生后面的学生记录依次向前移动一个元素的位置,这些操作完成后,要删除的学生信息就被后面的数组元素覆盖掉了,也就实现了删除。 在数组中删除学生信息后,还要将更改后的信息重新写回文件当中,以保证数据的一致性。 具体程序段如下: void del() /*信息删除函数 */ {struct student stu[N]。 char number[20]。 FILE *fp。 int n,i,j。 reads(stu,amp。 n)。 printf(\n请输入要删除信息的学生学号,按回车键确认: )。 scanf(%s,number)。 for(i=0。 in。 i++) /*查找待删除的学生记录 */ if(strcmp(number,stu[i].num)==0) break。 if(i=n) {printf(没有找到该学生 信息。 \n)。 return。 } else {for(j=i+1。 jn。 j++) /*左移,覆盖待删除的学生记录 */ strcpy(stu[j1].num,stu[j].num)。 strcpy(stu[j1].name,stu[j].name)。 stu[j1].english=stu[j].english。 stu[j1].puter=stu[j].puter。 stu[j1].math=stu[j].math。 } if((fp=fopen(e:\\,wb))==NULL) { printf(文件打开失败。 )。 沈 阳 航 院 设 计 用 纸 11 return。 } else /*重新写回文件当中 */ { putw(n1,fp)。 for(i=0。 in1。 i++) fwrite(amp。 stu[i],sizeof(struct student),1,fp)。 } fclose(fp)。 printf(删除成功。 \n)。 } 总分排序函数 对于总分的排序采用的排序算法是冒泡法排序,其中总分 的求得是在排序的过程中实现的,这部分程序仍然调用了 reads 函数,整个排序过程在结构体数组 stu 中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量来协助。 排序函数使学生数据的排列顺序发生了变化,因此也需要队员文件进行更新,此外,对于学生排序后名次的确定,仅在结果输出时予以显示,并未将名次信息写入源文件。 具体的程序段如下: void sort()/*排序函数 */ { FILE *fp。 struct student stu[N],temp。 int i,j,n。 reads(stu,amp。 n)。 for(i=0。 in1。 i++) 沈 阳 航 院 设 计 用 纸 12 for(j=0。 jn1i。 j++) {if(stu[j].english+stu[j].puter+stu[j].mathstu[j+1].english+stu[j+1].puter+stu[j+1].math) { strcpy(,stu[j].num)。 strcpy(,stu[j].name)。 =stu[j].english。 =stu[j].puter。 =stu[j].math。 strcpy(stu[j].num,stu[j+1].num)。 strcpy(stu[j].name,stu[j+1].name)。 stu[j].english=stu[j+1].english。 stu[j].puter=stu[j+1].puter。 stu[j].math=stu[j+1].math。 strcpy(stu[j+1].num,)。 strcpy(stu[j+1].name,)。 stu[j+1].english=。 stu[j+1].puter=。 stu[j+1].math=。 } } if((fp=fopen(e:\\,wb))==NULL) /*更新文件 */ {printf(打开文件失败。 )。 return。 } putw(n,fp)。 j=1。 for(i=0。 in。 i++) { fwrite(amp。 stu[i],sizeof(struct student),1,fp)。 if(stu[i].english+stu[i].puter+stu[i].math==stu[i+1].english+stu[i+1].puter+stu[i+1].math) printf(%3d%5s%5s%%%%\n,j,stu[i].num,stu[i].name,stu[i].english,stu[i].puter,stu[i].math,stu[i].english+stu[i].puter+stu[i].math)。 else 沈 阳 航 院 设 计 用 纸 13 printf(%3d%5s%5s%%%%\n,j++,stu[i].num,stu[i].name,stu[i].english,stu[i].puter,stu[i].math,stu[i].english+stu[i].puter+stu[i].math)。 } fclose(fp)。 getch()。 } 四、个人总结 通过这次课设我对 C 语言的掌握比以前熟练了很多 ,也学会了严谨的治学态度。 以前对“ c 语言”的认识就是以为这是一门学校开设的学科,首先不能挂科,其次要学好它,至于它有什么用处,感受并不是深。 本次课设,就是一个把所学知识与生活实践完美结合的典范。 课设让我们知道了所学的知识大有用武之地,从而更加激发我学习“ c 语言”的热情。 这次课程设计考察了多方面的知识,比如结构体、文件等等,使我们熟练的掌握知识的同时还增强了我们的实际动手的能力。 有时候我个人的能力是有限的,必要是要接受别人的帮助。 沈 阳 航 院 设 计 用 纸 14 五、参考文献 1 谭浩强. C 程序设计.北京:清华大学出版社, 2020 2 刘成等. C 语言程序设计实验指导与习题集.北京:中国铁道出版社, 2020 六、源程序 include include define N 20 struct student {char num[20]。 char name[10]。 float english。 float puter。 flo。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。