学生成绩管理c语言课程设计报告.docx

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

学生成绩管理c语言课程设计报告.docx

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

学生成绩管理c语言课程设计报告.docx

学生成绩管理c语言课程设计报告

课程设计(论文)任务书

 

信息工程学  院  通信工程专  业15-1 班  

一、课程设计(论文)题目:

学生成绩管理  

二、课程设计(论文)工作自2016年6月27日起至2016年7月1日止

三、课程设计(论文)地点:

8栋601

四、课程设计(论文)内容要求:

1.本课程设计的目的

(1)进一步巩固和加深对“C程序设计”课程基本知识的理解和掌握,了解C语言在项目开发中的应用。

(2)学习程序设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。

(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发

能力,同时提倡团队合作精神。

2.课程设计的任务及要求

1)基本要求:

(1)对系统功能进行需求分析;

(2)使用VisualC++编译器进行程序编译;

(3)提出系统的设计方案;

(4)编写源程序代码并进行调试。

2)创新要求

在基本要求达到后,可进行创新设计。

3)课程设计报告撰写及装订要求

课程设计报告的撰写要求表述简明,图表准确。

报告按如下内容和顺序用A4纸进行打印并装订成册。

(1)封面

采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。

(2)设计任务书

(3)评阅书

(4)目录

(5)正文

(6)主要参考文献

4)课程设计评分标准:

每人按指定题目进行设计,严禁抄袭,各选题2人/组。

要求每人自己动手编写程序,采取同一组同时检查程序及运行结果,检查时同组成员每人陈述自己的分工,同一选题不同组如发现代码完全一样,则双方都作不及格处理。

(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;

(2)能正确回答设计的中老师所提问题,可增加10分;

(3)课程设计报告书写规范整齐,可增加10分;

(4)心得体会认真总结,可增加10分;

(5)程序有创新性,可增加10分;

成绩评定实行优秀、良好、中等、及格和不及格五个等级。

不及格者需重做。

5)课程设计进度安排

(1)准备阶段(3学时):

选择设计题目、了解设计目的要求、查阅相关资料。

(2)程序模块设计分析阶段(4学时):

程序总体设计、详细设计。

(3)代码编写调试阶段(10学时):

程序模块代码编写、调试、测试。

(4)撰写论文阶段(3学时):

总结课程设计任务和设计内容,撰写课程设计论文。

6)课程设计题目具体要求:

学生成绩管理系统要求从键盘输入某班级30个学生的学号、姓名、三门课(语文、数学、英语)的成绩,分别实现1.统计平均分和总分2.按总分大小排出名次3.打印成绩在班平均分之上的学生成绩和信息4.输入任意学号查找该学生的成绩和名次。

要求:

各个功能要求分别用独立的函数来实现,在主函数中通过菜单选择来实现各个功能。

且要求使用结构体数组来存储和处理30个学生信息,定义的结构体主要包括:

学号、姓名、三门课成绩、总分、平均分、名次等成员。

可以有创新内容。

 

学生签名:

2016年6月24日

课程设计(论文)评阅意见

序号

项目

等   级

优秀

良好

中等

及格

不及格

1

课程设计态度评价

2

出勤情况评价

3

任务难度评价

4

工作量饱满评价

5

设计中创新性评价

6

论文书写规范化评价

综合评定等级

评阅人职称副教授

2016年7月2日

目 录

一、功能介绍………………………………………………………5

二、摘要……………………………………………………………6

三、程序设计………………………………………………………8

四、运行的图文分析………………………………………………21

五、使用说明………………………………………………………24

六、课程设计心得…………………………………………………29

七、参考文献………………………………………………………30

一、功能介绍

 

菜单是应用程序非常重要的组成部分,通过菜单,应用程序可以实现不同的功能,通过本系统的设计,可以实现应用程序的菜单。

(1)进入系统之前,用户敲回车键开始输入学生信息(姓名和各科成绩,之后进入菜单,可选择1-5实现五种不同功能。

(2)用户根据需要输入1-5,若输入其他字符,则显示按键错误,请重新选择。

(3)实现完各功能之后用户可输入BB返回返单,若输入错误需要重新输入。

(4)选择功能1后,程序自动输各科的平均分以及总分平均分,还有各学生的学号、姓名、各科成绩、总成绩。

(5)选择功能2后,程序自动给各学生排名,并输出各学生的名次和相关信息。

(6)选择功能3后,程序自动打印出分数高于平均分的学生的信息。

(7)选择功能4后,输入学号可查询现骨干学生的信息,系统会自动计算该学生的成绩绩点,并判断该学生是否拿得到学位证。

若输入无关学号则会提醒未查到该学生请重新输入学号。

(8)选择功能5后,程序运行结束,输出图形,按任意键关闭程序。

二、摘要

 

步骤:

1.打开应用程序,弹出“欢迎使用”界面。

2.输入每位学生的相关信息。

3.进入菜单栏,可选择各项功能。

4.对输入信息进行判断,若正确则执行相关功能,错误就需要重新选择。

5.实现功能后可以返回菜单栏。

6.继续判断输入信息,然后执行下一个功能。

7.可输入相关信息进行选择相应功能使程序结束运行。

8.程序运行结束时会出现一个心形的图案,并显示出“感谢使用,再见!

 

流程图

三、程序设计

 

源代码

#include

#include

#include

structstudent/*创建结构体1*/

{

intnum;

charname[99];

floatChinese;

floatEnglish;

floatMath;

}st[30];

structstudent2/*创建结构体2*/

{

intnum;

charname[99];

floatChinese;

floatEnglish;

floatMath;

}st2[30];

main()

{inta,i,j,b,d,e,m,n,o,z;

charc[99],f;

floatAVE,aveC,aveE,aveM,sum[30],sum2[30],sumC=0,sumE=0,sumM=0,jC[30],jE[30],jM[30],avej[30],w,x,y,k,p;

printf("*****************\n");

printf("*******************\n");

printf("*******\n");

printf("*******\n");

printf("**************\n");

printf("****************\n");

printf("*******欢迎使用\n");

printf("*******\n");

printf("*******\n");

printf("********************学生成绩管理系统\n");

printf("*******\n");

printf("*******\n");

printf("**********************按回车键开始输入学生信息\n");

printf("*******\n");

printf("*******\n");

printf("********************\n");

printf("***********************************\n");/*以上代码均用于图形设计*/

getchar();

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

printf("请输入学生姓名,成绩\n");/*循环语句输入学生信息*/

for(i=15001;i<=15030;i++)

{

printf("学号%d\n",i);

st[i-15001].num=i;

st2[i-15001].num=i;

printf("请输入姓名");

gets(st[i-15001].name);

strcpy(st2[i-15001].name,st[i-15001].name);

printf("请输入语文成绩");

scanf("%f",&st[i-15001].Chinese);

st2[i-15001].Chinese=st[i-15001].Chinese;

printf("请输入英语成绩");

scanf("%f",&st[i-15001].English);

st2[i-15001].English=st[i-15001].English;

printf("请输入数学成绩");

scanf("%f",&st[i-15001].Math);

st2[i-15001].Math=st[i-15001].Math;

sumC+=st[i-15001].Chinese;/*计算总分、平均分、成绩绩点*/

sumE+=st[i-15001].English;

sumM+=st[i-15001].Math;

sum[i-15001]=st[i-15001].Chinese+st[i-15001].English+st[i-15001].Math;

sum2[i-15001]=st2[i-15001].Chinese+st2[i-15001].English+st2[i-15001].Math;

if(st[i-15001].Chinese<60)

jC[i-15001]=0;elsejC[i-15001]=(st[i-15001].Chinese-60)/10;

if(st[i-15001].English<60)

jE[i-15001]=0;elsejE[i-15001]=(st[i-15001].English-60)/10;

if(st[i-15001].Math<60)

jM[i-15001]=0;elsejM[i-15001]=(st[i-15001].Math-60)/10;

avej[i-15001]=(jC[i-15001]+jE[i-15001]+jM[i-15001])/3;

getchar();

}

aveC=sumC/30;

aveE=sumE/30;

aveM=sumM/30;

AVE=aveC+aveE+aveM;

lable2:

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

printf("请输入序号选择功能(请输入1~5之间的数字并按回车键确认)\n1.统计平均分和总分\n2.排序\n3.打印\n4.查找(可查成绩绩点)\n5.退出\n请输入序号:

");/*输出菜单栏*/

scanf("%d",&a);

switch(a)

{

case1:

/*模块1实现输出总分平均分等功能*/

{

printf("语文平均分=%f\n",aveC);

printf("英语平均分=%f\n",aveE);

printf("数学平均分=%f\n",aveM);

printf("总分平均分=%f\n",AVE);

for(j=0;j<30;j++)

{

printf("姓名:

");

puts(st[j].name);

printf("学号%d语文%f英语%f数学%f总分%f\n",st[j].num,st[j].Chinese,st[j].English,st[j].Math,sum[j]);

}

};

printf("输入BB返回选择界面(按回车键确认)");

lable3:

scanf("%c",&f);

getchar();

if(f=='B')

gotolable2;/*goto语句实现返回功能*/

else

{

printf("");

gotolable3;/*goto语句实现返回功能*/

};

break;

case2:

/*模块二实现排序功能*/

{

for(m=0;m<30;m++)

{

o=m;

for(n=m+1;n<30;n++)

{

if(sum2[o]

o=n;

}

if(o!

=m)

{

p=sum2[m];

sum2[m]=sum2[o];

sum2[o]=p;

y=st2[m].Chinese;

st2[m].Chinese=st2[o].Chinese;

st2[o].Chinese=y;

x=st2[m].English;

st2[m].English=st2[o].English;

st2[o].English=x;

w=st2[m].Math;

st2[m].Math=st2[o].Math;

st2[o].Math=w;

z=st2[m].num;

st2[m].num=st2[o].num;

st2[o].num=z;

strcpy(c,st2[m].name);

strcpy(st2[m].name,st2[o].name);

strcpy(st2[o].name,c);

}

}

for(m=0;m<30;m++)

{

printf("姓名:

");

puts(st2[m].name);

printf("名次%d学号%d语文%f英语%f数学%f总分%f\n",m+1,st2[m].num,st2[m].Chinese,st2[m].English,st2[m].Math,sum2[m]);

}

};

printf("输入BB返回选择界面");

lable4:

scanf("%c",&f);

getchar();

if(f=='B')

gotolable2;/*goto语句实现返回功能*/

else

{

printf("");

gotolable4;/*goto语句实现返回功能*/

};

break;

case3:

/*模块3实现打印功能*/

{

printf("总分大于平均分的有\n");

for(b=0;b<30;b++)

if(sum[b]>=AVE)

{printf("姓名:

");

puts(st[b].name);

printf("学号%d总分%f\n",st[b].num,sum[b]);};

printf("语文大于平均分的有\n");

for(b=0;b<30;b++)

if(st[b].Chinese>aveC)

{printf("姓名:

");

puts(st[b].name);

printf("学号%d语文%f\n",st[b].num,st[b].Chinese);};

printf("英语大于平均分的有\n");

for(b=0;b<30;b++)

if(st[b].English>aveE)

{printf("姓名:

");

puts(st[b].name);

printf("学号%d英语%f\n",st[b].num,st[b].English);};

printf("数学大于平均分的有\n");

for(b=0;b<30;b++)

if(st[b].Math>aveM)

{printf("姓名:

");

puts(st[b].name);

printf("学号%d数学%f\n",st[b].num,st[b].Math);};

};

printf("输入BB返回选择界面");

lable5:

scanf("%c",&f);

getchar();

if(f=='B')

gotolable2;/*goto语句实现返回功能*/

else

{

printf("");

gotolable5;/*goto语句实现返回功能*/

};

break;

case4:

/*模块4实现查询功能*/

{

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

printf("请输入要查询的学号");

lable6:

scanf("%d",&d);

if(d>15030||d<15001)

{

printf("未查询到该学号,请检查是否输入正确\n");

printf("请重新输入学号");

gotolable6;/*goto语句实现返回功能*/

}

for(e=15001;e<=15030;e++)

{

if(d==e)

{

printf("姓名:

");

puts(st[e-15001].name);

printf("学号%d语文%f英语%f数学%f总分%f\n",st[e-15001].num,st[e-15001].Chinese,st[e-15001].English,st[e-15001].Math,sum[e-15001]);

printf("该学生成绩绩点为语文%f英语%f数学%f平均%f\n",jC[e-15001],jE[e-15001],jM[e-15001],avej[e-15001]);

if(avej[e-15001]>=2.2)/*判断是否能拿到学位证*/

printf("该学生可以拿到学位证\n");

elseprintf("该学生不能拿到学位证\n");

}

}

};

printf("输入BB返回选择界面");

lable7:

scanf("%c",&f);

getchar();

if(f=='B')

gotolable2;/*goto语句实现返回功能*/

else

{

printf("");

gotolable7;/*goto语句实现返回功能*/

};

break;

case5:

/*模块5实现退出功能(不含goto语句)*/

{

printf("\n\n\n\n");

doubleX,Y;

intH=3;

for(Y=-4;Y<=0;Y+=0.3)

{

for(X=-4;X<=4;X+=0.2)

if(fabs(sqrt(X*X+Y*Y)-H*sin(2*atan(Y/X)))<=1

||fabs(sqrt(X*X+Y*Y)-H*sin(2*atan(-Y/X)))<=1)

printf("*");

else

printf("");

printf("\n");

}

for(Y=-1;Y<=0;Y+=0.2)

{

for(X=-4;X<=4;X+=0.2)

if(fabs(Y)-0.65*X*X>=0.2)

printf("*");

else

printf("");

printf("\n");

}

printf("感谢使用,再见!

\n");

return0;

}/*以上代码输出图形*/

break;

default:

/*模块6输入错误重新输入*/

gotolable2;/*goto语句实现返回功能*/

break;

}

}

 

本实验由管宇和卢俊共同完成。

管宇负责设计框架和构思,模块2、4、5的设计。

卢俊负责模块1和模块3的设计。

功能调试两人一起完成。

 

四、运行的图文分析

打开程序后按照预期输出了封面

执行功能1(正常运行)

执行功能2(正常运行)

执行功能3(正常运行)

执行功能4(正常运行)

执行功能5(正常运行)

 

本次实验程序正常运行。

五、使用说明

 

打开程序后首先输出图片

按回车键后依次输入学生信息

输完学生信息进入菜单栏选择功能

输入1实现功能1

 

可输入BB执行返回功能

输入后回到菜单栏

输入2实现功能2,学生成绩从大到小排序

返回后

输入3实现功能3

返回后

输入4实现功能4

输入错误学号则提示

输入正确学号则输出该学生信息

 

返回后

输入5实现功能5

若输入1-5之外的数不会执行功能,需要重新输入。

 

六、课程设计心得

大一刚开始接触这个C语言的时候,我内心是崩溃的......后来慢慢发现有点意思哈,老师也讲得津津有味,我们听着也很有兴致。

现在有关C语言的基础差不多都会吧,什么头文件#include,scanf(“%...”,&...),还有我们平时说的等号“=”,在C语言中就是赋值的意思啦,而C语言中的等号则是“==”,还有就是一些基础的,比如分号哪些时候不该加,但大多数情况都要记得加上那个分号。

还有switch语句后面忘记加break语句而不能循环语句。

还有定义形参的时候应该在函数体外面,而局部变量应该在函数体内定义。

总之,这些困难都不算困难,如果你抽一点玩的时间出来看一下书,有时候可以在课堂上打盹,但是无论学什么东西都要经过自己的大脑过滤一遍,这样下来自己看书也会好一些。

编这个程序我一开始也有点无所适从,但还是跟小伙伴一起努力做了出来,有些还是在网上查找了资料,不懂的再咨询一下老师,结果大功告成了。

合作的力量是强大的,自身的基础也是必不可少的。

当困难都一个个解决了之后,不由自主想起一句歌词:

天空飘来五个字儿--那都不是事。

团结!

团结!

团结!

七、参考文献

[1]杨文君,杨柳.C语言程序设计教程[M].清华大学出版社.2010.3

[2]谭浩强.C语言程序设计教程[M].清华大学出版社.2007.6

[3]《C语言程序设计》精品课程

[4]谭浩强.C语言程序设计教程学习辅导[M].北京:

清华大学出版社,2005.

[5]陈朔鹰等编著,C语言程序设计基础教程,兵器工业出版社,1994年9月

[6]《C语言趣味程序百例精解》,陈朔鹰陈英主编,北京理工大学出版社,1996.

[7]《TheCProgrammingLanguage》,byBrianW.Kerni

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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