资源描述
课程设计(论文)任务书
信息工程 学 院 通信工程 专 业 15-1 班
一、课程设计(论文)题目 :学生成绩管理
二、课程设计(论文)工作自 2016 年 6 月27日起至 2016 年 7 月 1 日止
三、课程设计(论文) 地点: 8栋601
四、课程设计(论文)内容要求:
1. 本课程设计的目的
(1)进一步巩固和加深对“C程序设计”课程基本知识的理解和掌握,了解C语言在项目开发中的应用。
(2)学习程序设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。
(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发
能力,同时提倡团队合作精神。
2. 课程设计的任务及要求
1) 基本要求:
(1) 对系统功能进行需求分析;
(2) 使用Visual C++编译器进行程序编译;
(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<stdio.h>
#include<string.h>
#include<math.h>
struct student /*创建结构体1 */
{
int num;
char name[99];
float Chinese;
float English;
float Math;
}st[30];
struct student2 /* 创建结构体2*/
{
int num;
char name[99];
float Chinese;
float English;
float Math;
}st2[30];
main()
{int a,i,j,b,d,e,m,n,o,z;
char c[99],f;
float AVE,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;else jC[i-15001]=(st[i-15001].Chinese-60)/10;
if(st[i-15001].English<60)
jE[i-15001]=0;else jE[i-15001]=(st[i-15001].English-60)/10;
if(st[i-15001].Math<60)
jM[i-15001]=0;else jM[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)
{
case 1: /* 模块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')
goto lable2; /*goto语句实现返回功能 */
else
{
printf("");
goto lable3; /*goto语句实现返回功能 */
};
break;
case 2: /*模块二实现排序功能 */
{
for(m=0;m<30;m++)
{
o=m;
for(n=m+1;n<30;n++)
{
if(sum2[o]<sum2[n])
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')
goto lable2; /*goto语句实现返回功能 */
else
{
printf("");
goto lable4; /*goto语句实现返回功能 */
};
break;
case 3: /*模块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')
goto lable2; /*goto语句实现返回功能 */
else
{
printf("");
goto lable5; /*goto语句实现返回功能 */
};
break;
case 4: /*模块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("请重新输入学号");
goto lable6; /*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");
else printf("该学生不能拿到学位证\n");
}
}
};
printf("输入BB返回选择界面");
lable7:
scanf("%c",&f);
getchar();
if(f=='B')
goto lable2; /*goto语句实现返回功能 */
else
{
printf("");
goto lable7; /*goto语句实现返回功能 */
};
break;
case 5: /*模块5实现退出功能(不含goto语句)*/
{
printf("\n\n\n\n");
double X, Y;
int H = 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 ");
return 0;
} /*以上代码输出图形 */
break;
default: /*模块6输入错误重新输入 */
goto lable2; /*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<stdio.h>,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] 《The C Programming Language》,by Brian W. Kernighan and Dennis M. Ritchie.,Pubilished by Prentice-Hall in 1988.
[8] 《C语言编程常见问题解答》,[美]Paul S. R. Chishohm等著,张芳妮 吕波译,清华大学出版社,11996年12月.
[9] 裘宗燕 著,从问题到程序科学出版社,北京大学出版社,1999.
[10] [Cline] Marshall P. Cline and Greg A. Lomow, C++ FAQs, Addison-Wesley, 1995
[11] [Eckel] Bruce Eckel, Thinking in C++(C++ 编程思想,刘宗田 等译),机械工业出版社,2000
[12] [Maguire] Steve Maguire, Writing Clean Code(编程精粹,姜静波 等译),电子工业出版社,1993
[13] [Meyers] Scott Meyers, Effective C++, Addison-Wesley, 1992
[14] [Murry] Robert B. Murry, C++ Strategies and Tactics, Addison-Wesley, 1993
[15] [Summit] Steve Summit, C Programming FAQs, Addison-Wesley, 1996
[16] 李海文,吴乃陵.C++程序设计实践教程. 北京:高等教育出版社,2003
张荣梅. Visual C++实用教程。中国铁道出版社,2008.9目 录
第一章 总 论 1
一、项目提要 1
二、可行性研究报告编制依据 2
三、综合评价和论证结论 3
四、存在问题与建议 4
第二章 项目背景及必要性 5
一、项目建设背景 5
二、项目区农业产业化经营发展现状 11
三、项目建设的必要性及目的意义 12
第三章 建设条件 15
一、项目区概况 15
二、项目实施的有利条件 17
第四章 建设单位基本情况 19
一、建设单位概况 19
二、研发能力 20
三、财务状况 20
第五章 市场分析与销售方案 21
一、市场分析 21
二、产品生产及销售方案 22
三、销售策略及营销模式 22
四、销售队伍和销售网络建设 23
第六章 项目建设方案 24
一、建设任务和规模 24
二、项目规划和布局 24
三、生产技术方案与工艺流程 25
四、项目建设标准和具体建设内容 26
五、项目实施进度安排 27
第七章 投资估算和资金筹措 28
一、投资估算依据 28
二、项目建设投资估算 28
三、资金来源 29
四、年度投资与资金偿还计划 29
第八章 财务评价 30
一、财务评价的原则 30
二、主要参数的选择 30
三、财务估算 31
四、盈利能力分析 32
五、不确定性分析 33
六、财务评价结论 34
第九章 环境影响评价 35
一、环境影响 35
二、环境保护与治理措施 35
三、环保部门意见 36
第十章 农业产业化经营与农民增收效果评价 37
一、产业化经营 37
二、农民增收 38
三、其它社会影响 38
第十一章 项目组织与管理 40
一、组织机构与职能划分 40
二、项目经营管理模式 42
三、技术培训 42
四、劳动保护与安全卫生 43
第十二章 可行性研究结论与建议 46
一、可行性研究结论 46
二、建议 47
[17]
第 32 页
展开阅读全文