学生成绩管理系统课程设计.docx

上传人:b****6 文档编号:8544500 上传时间:2023-01-31 格式:DOCX 页数:12 大小:26.64KB
下载 相关 举报
学生成绩管理系统课程设计.docx_第1页
第1页 / 共12页
学生成绩管理系统课程设计.docx_第2页
第2页 / 共12页
学生成绩管理系统课程设计.docx_第3页
第3页 / 共12页
学生成绩管理系统课程设计.docx_第4页
第4页 / 共12页
学生成绩管理系统课程设计.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统课程设计.docx

《学生成绩管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统课程设计.docx(12页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统课程设计.docx

学生成绩管理系统课程设计

课程:

学号:

姓名:

班级:

教师:

时间:

课程设计报告

(本科)

数据结构

19/31/64

程徐/章燕芳/江淑芬

2013级计算机科学与技术(嵌入式)

史君华

2014.12.1—2014.12.30

计算机科学与技术系

设计名称:

成绩分析问题

设计内容、目的与要求:

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日:

大家根据运行的结果,完善程序,填写课程设计报告册,准备验收。

设计过程、步骤:

设计过程:

1.程序结构的分析:

2.函数功能的描述:

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.输入1即为对数学成绩的分析

3.输入2即为对英语成绩的分析:

4.输入3即为对计算机成绩的分析:

5.个人平均成绩的分析:

6.输入要找的学号和姓名之后:

7.输入不存在的学号的分析:

设计体会与建议:

程徐:

接近一个月的课程设计在紧张而忙碌的氛围中度过了。

在这段时间里,我不但对课本上的知识有了更深刻的理解,还学到了平时课堂上学不到的知识,使我对计算机有了更深刻的认识。

首先,我掌握了成绩分析程序的判断和设计,使自己的主动学习能力得到提高。

虽然在刚开始设计程序的过程中没有太多的思路,但是通过图书馆,上网查阅资料也是自己得到了解决问题的办法。

在调试程序的过程中尽管存在一些错误,但是通过翻阅课本,熟识课本上的相关知识,使得设计方案中发现的问题得到解决并成功实现系统所需要的功能,那种成就感使

我忘记了这些天的辛苦。

我学到了很多知识,熟识了很多程序代码,也认识到自己的基础知识不是很丰富。

时间虽短,我却收获丰富,不单单是对于知识的收获,还夹杂着同学们互帮互助的精神和合作的精神。

总之,这次课程设计给了我们一次应用自己所学知识的机会,使我们对数据结构这门课程有了更深刻的认识。

对于我们而言,知识上的收获是喜悦的,但是更重要的是要互帮互助,多请教别人,虚心求问是我们今后在学习过程中需要注意的地方。

通过本次实验,我学会了利用综合学过的知识对于问题进行编程,是一次很好的实践,也为今后的学习奠定了良好的基础,是对自己综合能力的一种提高。

章燕芳:

在这次课程设计报告的完成过程中,我充分地体会到合作的必要性。

我们都在尽自己最大的能力去完成这次课程设计报告,过程难免艰苦,特别是编

译时,出现错误时,当时真的是手足无措,三个人在机房讨论再修改,错误克服了,到运行时又不能达到预期的效果,就是查找时不能按照要求来实现,然后又一起研究了好久,问问老师,问问学长,热心的他们帮我们解决了最大的问题,程序成功运行了,很有成就感。

在面对困难的时候,我们还是一如既往的去专研,上网搜索,在图书馆查询资料。

可以说这次实践是一个很锻炼人的机会,结果或好或坏,过程更加珍贵。

江淑芬:

本次的数据结构课程设计针对具体的实际项目来进行需求分析,从中

我收获了很多。

经过一周的课程设计,有很多的心得体会。

首先,在编写函数之前要充分利用图书资源和网络资源,应该更详细的考虑实际情况,才能使程序更切合实际,更具有实用性;更多的我想应该是组员之间的合作精神吧!

通过这次课程设计练习,使我更深刻地理解了数据结构重要存储结构的的精髓。

完成整个程序设计,我加深了对数据结构的理解和认识,并在完成课程设计的过程作主动查阅了相关资料,学到了不少课本上没有的技术知识。

经过这次课程设计,我深刻认识到算法在程序设计中的重要性,特别是怎样将理论与实践相结合,把书本上的的内容应用到我们做的程序上。

其次我熟悉了数据结构的知识学会了很多关于程序设计的经验和技巧。

知道如何在困难重重时一步一步细心发现问题,解决问题。

我们从中学到很多在课本上学不到或者无法在课堂上掌握的知识,同时也

能从中感受到编程的乐趣。

兴趣是可以培养的,只要坚持下去,面对困难我们总能够找到解决法。

通过小组的分工与合作,使我充分认识到在项目团队开发过程中合作的重要性,也更加理解了沟通协作能力在行业中的重要性。

建议:

由于一个人的力量是有限的,我们应该虚心求教,多多利用可利用的资源,不懂的地方可以去图书馆查阅资料,或者上网搜索自己有困扰的地方。

附录:

程序源代码:

#include

#include

#include

#defineN7

structstudent

{

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

st[i].score=st[i].math;

break;

case2:

printf("★★★★★★★★★以下是关于英语的成绩分析:

★★★★★★★★★\n");

for(i=0;i

st[i].score=st[i].english;

break;

case3:

printf(”★★★★★★★★★以下是关于计算机成绩分析:

★★★★★★★★★\n");

for(i=0;i

st[i].score=st[i].computer;

break;

}

intj;

printf("按学号每个人的原始数据为:

\n");

for(i=0;i

printf("%d\n",st[i].score);

printf("排序后的数据为\n");

for(i=0;i

{

for(j=0;j

if(st[j+1].score

{

temp=st[j].score;

st[j].score=st[j+1].score;

st[j+1].score=temp;

}

}for(i=0;i

printf("%d\n",st[i].score);

printf("该门课的平均成绩为:

\n");

floatsum=0;

floatcourseave;

for(i=0;i

{

sum=sum+st[i].score;

}courseave=sum/7;

printf("%f\n",courseave);

printf("该门课的最高分为:

\n");

intmax=st[0].score;for(i=0;i

{

if(st[i].score>max)

{

max=st[i].score;

}

}

printf("%d\n",max);//最高分

printf("该门课的最低分为:

\n");

intmin=st[0].score;for(i=0;i

{

if(st[i].score

{min=st[i].score;

}

}

printf("%d\n",min);//最低分

intbjg=0;

intjg=0;

intzd=0;

intlh=0;

intyx=0;for(i=0;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++;

{

}

yx++;

}

printf("

该门课的不及格人数为:

\n

人数:

\n

%d\n

70~79人数:

\n

数:

\n

%d\n

90分以上人数:

\n

}

if(st[i].score>=90)//计算90分以上人数

}

voidstudentave(studentst[],intn)//计算每个人的平均成绩并排序

%d\n60~69%d\n80~89人%d\n",bjg,jg,zd,lh,yx);

inti;

inttemp;

for(i=0;i

{st[i].eveave=(st[i].math+st[i].english+st[i].computer)/4;

}

printf("每个人平均成绩为:

\n");

for(i=0;i

printf("%d\n",st[i].eveave);

for(i=0;i

{

for(intj=0;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

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

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].englis

h,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

{

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].mat

h,st[i].english,st[i].computer);

}

fclose(fp);

}

voidmain()

{

structstudentst[7]={{"001","王放",78,77,90},

{"002","张强",89,67,88},{"003","李浩",56,66,78},{"004","黄鹂兵",89,86,85},{"005","李浩",67,88,76},{"006","陈利风",45,54,67},{"007","尚晓",78,76,70}};

printf("★★★★★★★★★★★★本题的实验数据为数据:

★★★★★

★★★★★★★★★\n");

cunchu(st,7);//存盘input.dat

duqu(st,7);〃读取数据

printf("★★★★★★★★★★★★对各科的成绩分析如下:

★★★★★

★★★★★★★★★\n");

printf("本实验采取switch()语句,分别1~3中的表示不同的学科\n

输入1表示计算关于数学方面的成绩;\n输入2表示计算关于英语方面

的成绩;\n输入3表示计算关于计算机方面的成绩;\n");

subject(st,7);//按各科成绩排序

subject(st,7);//按各科成绩排序

subject(st,7);//按各科成绩排序

printf(”★★★★★★★★★★★★关于个人平均成绩分析:

★★★★★

★★★★★★★★★\n");

studentave(st,7);/计算每个人的平均成绩并排序

printf("★★★★★★★★★★★★按照不同条件查询分析:

★★★★★

★★★★★★★★★\n");

nosearch(st,7);/按学号查找学生的各门成绩namesearch(st,7);按姓名查找学生的各门成绩

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1