学生成绩管理系统课程设计_第1页
学生成绩管理系统课程设计_第2页
学生成绩管理系统课程设计_第3页
学生成绩管理系统课程设计_第4页
学生成绩管理系统课程设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

PAGE课程设计报告(本科)课程:数据结构学号:1310441019/1310441031/1310441064姓名:程徐/章燕芳/江淑芬班级:2013级计算机科学与技术(嵌入式)教师:史君华时间:2014.12.1—2014.12.30计算机科学与技术系PAGE7

设计名称:成绩分析问题设计内容、目的与要求:1.设计内容:录入并保存一个班级学生多门课程的成绩,并对成绩进行分析。2.目的与要求:a)通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat。b)对文件input.dat中的数据进行处理,要求具有如下功能:按各门课程成绩排序,并生成相应的文件输出;计算每个人的平均成绩,按平均成绩排序,并生成文件;求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数;根据姓名或学号查询某人的各门课成绩。c)使用VisualC++6.0控制台应用程序开发,界面美观。计划与进度安排:计划:1.首先明确设计要求和理论知识,了解题目的大致思路。2.上网或者去图书馆搜集资料,对题目进行编写。3.对程序进行调试和修改,并分析运行结果。进度安排:1.12月1日-12月10日:程徐从图书馆借阅了有关数据结构方面的书,研究所给条件,分析该系统应该达到的目标;章燕芳复习结构体,数组等相关知识,江淑芬上网搜索类似题目的解题思想。2.12月11日-12月20日:大家共同讨论算法思路,编写程序并进行上机调试程序,并分析该程序实现的功能。,3.12月21日-12月25日:大家根据运行的结果,完善程序,填写课程设计报告册,准备验收。设计过程、步骤:设计过程:程序结构的分析:mainmain函数分析某个学科分析个人平均成绩按条件查找存储和读取数据cunchu()函数duqu()函数nosearch()函数namesearch()函数subject()函数studentave()函数函数功能的描述:subject()函数:选择某个学科,分析与他有关的所有数据。例如本题的各科的平均成绩、最高分、最低分等studentave()函数:求每个学的平均成绩并且按平均成绩排序。nosearch()函数:按学号查找某个学生。namesearch()函数:按姓名查找某个学生。cunchu()函数:把数据存到C盘RJ下的input.dat中。duqu()函数:从C盘RJ下的input.dat中读取数据。步骤:首先定义student结构体,再定义结构体成员,其中字符型数组name[20]和no[10]分别来存实验数据中的姓名和学号,另外定义整型变量math、english、computer分别存储各科成绩。再定义存储函数cunchu()和读取函数duqu()这两个函数分别通过运用文件存储函数fwrite和文件读取函数fread来实现将数据存入指定路径,以及从指定路径读取数据,并显示在显示屏上。通过构造函数subject()来实现对各科成绩的分析,studentave()来对个人成绩进行分析,nosearch()和namesearch()来实现按条件查找不同的学生信息。最后在主函数中输入实验数据,并通过调用各个函数来实现实验要求。结果与分析:选择运行后出现如下界面:输入1即为对数学成绩的分析输入2即为对英语成绩的分析:输入3即为对计算机成绩的分析:个人平均成绩的分析:输入要找的学号和姓名之后:7.输入不存在的学号的分析:设计体会与建议:程徐:接近一个月的课程设计在紧张而忙碌的氛围中度过了。在这段时间里,我不但对课本上的知识有了更深刻的理解,还学到了平时课堂上学不到的知识,使我对计算机有了更深刻的认识。首先,我掌握了成绩分析程序的判断和设计,使自己的主动学习能力得到提高。虽然在刚开始设计程序的过程中没有太多的思路,但是通过图书馆,上网查阅资料也是自己得到了解决问题的办法。在调试程序的过程中尽管存在一些错误,但是通过翻阅课本,熟识课本上的相关知识,使得设计方案中发现的问题得到解决并成功实现系统所需要的功能,那种成就感使我忘记了这些天的辛苦。我学到了很多知识,熟识了很多程序代码,也认识到自己的基础知识不是很丰富。时间虽短,我却收获丰富,不单单是对于知识的收获,还夹杂着同学们互帮互助的精神和合作的精神。总之,这次课程设计给了我们一次应用自己所学知识的机会,使我们对数据结构这门课程有了更深刻的认识。对于我们而言,知识上的收获是喜悦的,但是更重要的是要互帮互助,多请教别人,虚心求问是我们今后在学习过程中需要注意的地方。通过本次实验,我学会了利用综合学过的知识对于问题进行编程,是一次很好的实践,也为今后的学习奠定了良好的基础,是对自己综合能力的一种提高。章燕芳:在这次课程设计报告的完成过程中,我充分地体会到合作的必要性。我们都在尽自己最大的能力去完成这次课程设计报告,过程难免艰苦,特别是编译时,出现错误时,当时真的是手足无措,三个人在机房讨论再修改,错误克服了,到运行时又不能达到预期的效果,就是查找时不能按照要求来实现,然后又一起研究了好久,问问老师,问问学长,热心的他们帮我们解决了最大的问题,程序成功运行了,很有成就感。在面对困难的时候,我们还是一如既往的去专研,上网搜索,在图书馆查询资料。可以说这次实践是一个很锻炼人的机会,结果或好或坏,过程更加珍贵。江淑芬:本次的数据结构课程设计针对具体的实际项目来进行需求分析,从中我收获了很多。经过一周的课程设计,有很多的心得体会。首先,在编写函数之前要充分利用图书资源和网络资源,应该更详细的考虑实际情况,才能使程序更切合实际,更具有实用性;更多的我想应该是组员之间的合作精神吧!通过这次课程设计练习,使我更深刻地理解了数据结构重要存储结构的的精髓。完成整个程序设计,我加深了对数据结构的理解和认识,并在完成课程设计的过程作主动查阅了相关资料,学到了不少课本上没有的技术知识。经过这次课程设计,我深刻认识到算法在程序设计中的重要性,特别是怎样将理论与实践相结合,把书本上的的内容应用到我们做的程序上。其次我熟悉了数据结构的知识学会了很多关于程序设计的经验和技巧。知道如何在困难重重时一步一步细心发现问题,解决问题。我们从中学到很多在课本上学不到或者无法在课堂上掌握的知识,同时也能从中感受到编程的乐趣。兴趣是可以培养的,只要坚持下去,面对困难我们总能够找到解决法。通过小组的分工与合作,使我充分认识到在项目团队开发过程中合作的重要性,也更加理解了沟通协作能力在行业中的重要性。建议:由于一个人的力量是有限的,我们应该虚心求教,多多利用可利用的资源,不懂的地方可以去图书馆查阅资料,或者上网搜索自己有困扰的地方。附录:程序源代码:#include<stdio.h>#include<string.h>#include<stdlib.h>#defineN7structstudent{ charno[10];//学号charname[20];//姓名 intmath;//数学分数 intenglish;//英语分数 intcomputer;//计算机分数 intscore;//交换用分数 inteveave;//个人平均分};structstudentst[N];//定义学生结构体voidsubject(studentst[],intn)//选定某个学科进行分析{ intnumber; inttemp; printf("请选择要分析的学科:"); scanf("%d",&number); inti=0; switch(number) { case1: printf("★★★★★★★★★以下是关于数学的成绩分析:★★★★★★★★★★\n"); for(i=0;i<n;i++) st[i].score=st[i].math; break; case2: printf("★★★★★★★★★以下是关于英语的成绩分析:★★★★★★★★★★\n"); for(i=0;i<n;i++) st[i].score=st[i].english; break; case3: printf("★★★★★★★★★以下是关于计算机成绩分析:★★★★★★★★★★\n"); for(i=0;i<n;i++) st[i].score=st[i].computer; break; } intj; printf("按学号每个人的原始数据为:\n"); for(i=0;i<n;i++) printf("%d\n",st[i].score); printf("排序后的数据为\n"); for(i=0;i<n-1;i++) { for(j=0;j<n-i;j++) if(st[j+1].score<st[j].score) { temp=st[j].score; st[j].score=st[j+1].score; st[j+1].score=temp; } } for(i=0;i<n;i++) printf("%d\n",st[i].score); printf("该门课的平均成绩为:\n"); floatsum=0; floatcourseave; for(i=0;i<n;i++) { sum=sum+st[i].score; } courseave=sum/7; printf("%f\n",courseave); printf("该门课的最高分为:\n"); intmax=st[0].score; for(i=0;i<n;i++) { if(st[i].score>max) { max=st[i].score; } } printf("%d\n",max);//最高分 printf("该门课的最低分为:\n"); intmin=st[0].score; for(i=0;i<n;i++) { if(st[i].score<min) { min=st[i].score; } } printf("%d\n",min);//最低分 intbjg=0; intjg=0; intzd=0; intlh=0; intyx=0; for(i=0;i<n;i++) { if(st[i].score<60)//计算不及格人数 { bjg++; } if(st[i].score>=60&&st[i].score<70)//计算60~69人数 { jg++; } if(st[i].score>=70&&st[i].score<80)//计算70~79人数 { zd++; } if(st[i].score>=80&&st[i].score<90)//计算80~89人数 { lh++; } if(st[i].score>=90)//计算90分以上人数 { yx++; } } printf("该门课的不及格人数为:\n%d\n60~69人数:\n%d\n70~79人数:\n%d\n80~89人数:\n%d\n90分以上人数:\n%d\n",bjg,jg,zd,lh,yx); }voidstudentave(studentst[],intn)//计算每个人的平均成绩并排序{ inti; inttemp; for(i=0;i<n;i++) { st[i].eveave=(st[i].math+st[i].english+st[i].computer)/4; } printf("每个人平均成绩为:\n"); for(i=0;i<n;i++) printf("%d\n",st[i].eveave); for(i=0;i<n-1;i++) { for(intj=0;j<n-1-i;j++) if(st[j].eveave>st[j+1].eveave) { temp=st[j].eveave; st[j].eveave=st[j+1].eveave; st[j+1].eveave=temp; } } printf("平均成绩排序为:\n"); for(i=0;i<n;i++) printf("%d\n",st[i].eveave);}voidnosearch(studentst[],intn)//按学号查找学生的各门成绩{ inti=0; n=7; charno[10]; printf("请输入要查找的学生号:"); scanf("%s",&no); while(strcmp(no,st[i].no)!=0&&i<n) i++; if(i==n) { printf("meizhaodao\n"); } else printf("%s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer);}voidnamesearch(studentst[],intn)//按姓名查找学生的各门成绩{ inti=0; n=7; charname[20]; printf("请输入要查找的姓名:"); scanf("%s",&name); while(strcmp(name,st[i].name)!=0&&i<7) i++; if(i==n) { printf("meizhaodao\n"); } else printf("%s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer);}voidcunchu(studentst[],intn)//存盘{ inti; FILE*fp; fp=fopen("C:\\RJ\\input.dat","wb");//以"写"方式打开一个二进制文件 if(fp==NULL) { printf("Can'topen!\n"); exit(0); } for(i=0;i<n;i++) { fwrite(&st[i],sizeof(structstudent),1,fp);//一次写入一个学生的成绩 } fclose(fp);}voidduqu(studentst[],intn)//读取数据{ inti; FILE*fp; fp=fopen("C:\\RJ\\input.dat","rb");//以"读"方式打开一个二进制文件 if(fp==NULL) { printf("Can'topen!\n"); exit(0); } for(i=0;i<7;i++) { fread(&st[0],sizeof(structstudent),1,fp);//一次读取一个学生的成绩 printf("%s\t%s\t%d\t%d\t%d\n",st[i].no,st[i].name,st[i].math,st[i].english,st[i].computer); } fclose(fp);}voidmain(){ structstudentst[7]={{"001","

温馨提示

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

评论

0/150

提交评论