河南科技大学C语言课程设计文档格式.docx
- 文档编号:19594749
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:12
- 大小:345.46KB
河南科技大学C语言课程设计文档格式.docx
《河南科技大学C语言课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《河南科技大学C语言课程设计文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
......
1100stuname10087
请按照如下要求编写程序:
a. 定义一个结构体类型数组,结构体类型含有学号、姓名和成绩三个域;
b.将文本文件的内容读入到结构体数组中;
c.显示成绩最高的人的学号、姓名和成绩(如果有相同的人要全部显示);
d.显示平均成绩高于、低于和等于平均成绩的人数;
e.显示成绩为优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)的人数和所占百分比;
f.将以上显示的信息存放到stuout.txt文件中;
2、C语言综合训练设计报告要求
a.结合教材第二章的内容,写出本次综合训练的分析文档;
b.文档要求以WORD排版,语言简练,条理清楚;
c.测试过程中遇到的主要问题及采取的解决措施;
e.文档以“设计报告.DOC”名字保存。
3、作业提交要求:
a.需要提交的文件:
源程序、可执行文件以及stuin.txt、stuout.txt文件和设计报告.DOC文件、设计报告txt版。
b.所有提交文件保存在一个文件夹中,文件夹名字为“专业班级姓名”,如“电气162张三”;
c.《设计报告.txt》使用《设计报告.doc》另存为TXT类型得到,《课程设计报告.txt》将用计算机做复制比检测。
特别强调所有命名文件不要加空格。
4、作业提交截止日期:
2017/5/22,以班级为单位提交。
二、总体设计(框图请用web版视图查看)
(1)功能设计
(2)数据设计
根据问题设计,进行数据设计定义一个包含学号,姓名,成绩三个成员的结构体类型,作为学生信息的储存类型;
定义一个结构体的数组存放若干学生记录;
(3)函数设计
根据功能设计,为学生成绩分析软件设计如下函数来实现程序各模块的功能。
open():
函数原型voidRead(),是数据输入函数,从磁盘数据文件stuin.txt中读取学生初始信息,储存到程序中对应的结构体数组中。
deal():
函数原型voidsolve(),显示统计各分数段学生人数及所占百分比,显示高于,等于,低于平均成绩的的人数和最高成绩同学的学号,姓名,成绩(同时显示)并且将所得到信息存储到stuout.txt文件中。
main():
函数原型voidmain,是学生成绩分析系统的主函数,控制各功能函数模块的调用,实现整个程序的各项功能。
(4)函数的调用关系
以上函数的调用关系如图所示。
三、详细设计
(1)函数的设计
1.Voidmian()函数
main函数的模块流程图如图所示
2.voidopen()函数流程图模块流程图如图所示
函数内部定义n=0;
(3)voiddeal()函数模块的设计如图所示
函数内部定义;
inti;
inth=0,e=0,l=0;
intscore90_100=0,score80_89=0,score70_79=0,score60_69=0,score0_59=0;
charsss[81]="
"
;
(2)结构体设计
根据问题分析,进行数据的设计,定义一个包含学号,姓名,成绩三个成员的结构体类型,作为学生信息记录的存储类型;
定义一个符号常量作为数组的长度。
定义一个学生信息的结构体类型:
typedefstructstudent
{/*定义结构体*/
charname[50];
charnum[50];
doublescore;
}stu;
stustudent,s[1000];
四、源代码
#include"
stdio.h"
stdlib.h"
typedefstructstudent
intn;
doublemax;
doubleaverage;
charfile1[100]="
stuin.txt"
charfileO[100]="
stuout.txt"
voidopen()
{
n=0;
FILE*fp;
if((fp=fopen(file1,"
r"
))==NULL)
{/*以只读打开文件*/
printf("
cannotopenfile"
);
getchar();
exit(0);
}
while(fscanf(fp,"
%s%s%lf\n"
s[n].num,s[n].name,&
s[n].score)!
=EOF/*从文件读*/)
{
n++;
}
fclose(fp);
}
//函数功能将文件中的数据写入结构体中
voiddeal()
inti;
charsss[81]="
FILE*fp;
if((fp=fopen(fileO,"
w"
average=0;
max=0;
for(i=0;
i<
n;
i++)
if(s[i].score>
max)max=s[i].score;
average+=s[i].score;
average/=n;
puts("
最高分的人:
fputs("
\n"
fp);
if(s[i].score<
average)l++;
elseif(s[i].score>
average)h++;
elsee++;
if(s[i].score>
=90)score90_100++;
elseif(s[i].score>
=80)score80_89++;
=70)score70_79++;
=60)score60_69++;
elsescore0_59++;
max)continue;
%s%s%.0lf\n"
s[i].num,s[i].name,s[i].score);
fprintf(fp,"
平均成绩:
%lf\n"
average);
高于平均%d人\n"
h);
等于平均%d人\n"
e);
低于平均%d人\n"
l);
优秀(90~100)%d人数,百分比;
%.1f%%\n"
score90_100,100.0*score90_100/n);
良好(80~89)%d人数,百分比;
score80_89,100.0*score80_89/n);
中等(70~79)%d人数,百分比;
%.1f\n"
score70_79,100.0*score70_79/n);
及格(60~69)%d人数,百分比;
score60_69,100.0*score60_69/n);
不及格(00~50)%d人数,百分比;
score0_59,100.0*score0_59/n);
\n结果已经写入文件%s\n"
fileO);
//函数的功能将最高成绩的人的信息输出,输出高于,低于,等于平均成绩的人数,求出不同分数段的人所占的比例
voidmain()
inti=0;
open();
deal();
五、调试过程中的问题
在调试的过程中出现了不少的bug,警告和一些其他的问题。
(1)首先,为了进行百分比的显示,进行了一番的调试,首先需要进行百分号的显示,用两个百分号进行百分号的打印,然后再定义一下数字的输出格式,拿各分数段成绩除以总的人数再乘以100。
这样得到的组合就是一个百分比数。
(2)在定义数组存储数据的时候我只定义了存放50个数据的一维数组结果出现了错误,我的数据是100个不能存放完我的所有的数据,所以我根据vc提供的提示将file1和file2的长度改为了100,这样就能很好的运行。
(3)对于deal函数的设计,deal函数是我这个函数设计的关键也是最复杂的部分。
如果不定义typedefstruct类型的数组就会有后面无法输出,还有就是如何输出分数最高人的信息我运用了比较的方法,将最高人的信息赋予了max,再输出这个信息。
(4)对于一些警告和小的bug,根据vc++的反馈双击信息,然后根据提示进行逐条的修改。
比如说:
没有对定义的字符inti赋予初始值就会有一个警告等一些小的问题。
六、总结
课程设计是锻炼同学们实践能力的重要环节,是对学生实践能力的考察,应用,和锻炼。
对以后我们从事相关工作的能力的一次锻炼和提升,对我们未来的发展十分重要。
C语言课程设计不仅是一门理论课还是一门实践课,不仅需要扎实的理论基础,没有实践的动手能力和独立思考的能力是远远不够的,难免会遇到各种各样的问题,同时在设计之中发现了自己的不足之处,对以前的所学过的知识理解得不够深刻,掌握的不够牢固,不如说指针通过这次课程设计之后,在一定程度上我把以前的C语言知识重新的温故了一遍。
本次课程设计用到了指针和结构体这对于我来说是一门全新的知识,开始设计难免会遇到特别大的问题,经过了很长时间通过资料的学习,和不断地实践操作我慢慢的熟悉了基本的指针和结构体的使用,能进行简单的函数操作。
同时在本次课程实践中多谢我的计算机系的同学的帮助,我从同学那得到了许多的帮助,在此表示感谢。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河南 科技大学 语言 课程设计