C语言课程设计实验报告4297210文档格式.docx
《C语言课程设计实验报告4297210文档格式.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验报告4297210文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
“MC0116”。
用来存放班级排名后的成绩,要求按以下形式存放。
名次
学号
姓名
英语
C语言
离散数学
线形代数
大学物理
密码学
平均成绩
1
01
缪军
96
95
94
93
94.7
3
02
陈军
90
84
91
78
92
68
85.1
16
03
曹军
69
81
86
82
64
79.1
9
04
胡均
87
89
58
71
83.3
18
05
武军
57
76
83
77.1
14
06
陶均
72
77
80.7
8
07
喻均
74
66
81.4
11
08
周均
75
80.4
19
09
吴军
59
77.8
6
10
张俊
67
83.7
王俊
79
61
82.3
22
12
李军
54
75.4
5
13
赵俊
83.6
15
郑君
73
85
80.0
20
钱均
75.8
24
欧均
74.2
17
汤俊
80.2
4
廖均
62
83.5
21
扬峻
51
76.3
2
孙俊
86.1
23
冯均
25
周君
73.9
7
曾俊
63
81.0
董均
高军
2)分别统计全班每门课的平均分和标准差,并计算个分数段的学生人数;
课程标准差的计算公式为:
Y=s^2=1n[(x1-m)^2+(x2-m)^2+...+(xn-m)^2]
3)用C语言创建一个数据文件,文件名为:
“KC0116”。
将文件中存放的数据以如下形式存放
编号
课程名称
平均分
标准差
优秀
良好
中等
及格
不及格
82.9
21.8
81.6
20.0
80.6
20.3
线性代数
79.5
25.1
79.2
24.3
76.8
22.5
4)打印每名学生成绩条,结果存放到用C语言创建的一个数据文件中,文件名为:
“cj0116”。
成绩条格式自定。
5)屏幕上显示所有存在不及格的课程的学生的名单(含学号、不及格的课程名称、课程的学分及成绩)。
6)屏幕上显示优等生名单(含学号、6门课程成绩、平均分、名次)。
(二)系统设计
准备工作:
编写两个记事本文件作为原始数据源。
本程序中建立两个文件,第一个中的内容是全班同学的5功课的成绩(英语,C语言,数学,大学物理,线性代数),保存在D盘下,其完整的路径名为D:
\wl0116.txt.第二个中的内容是所有的五门功课的属性(编号,名称,学分),同样保存在D盘下内,起完整的路径名为D:
\wl01kc.txt.
1.系统功能模块框架图
2.菜单结构图。
3.数据结构说明
*学生结构体*
structstudent
{
longnum;
*学号*
charname[20];
*姓名*
intscore[N];
*各科分数构成的一维数组*
doubleave;
*每名学生所有科目的加权平均分*
intt;
*名次*
}st[M];
structsubject
intnum;
*课程编号*
intexcellent;
*成绩优秀*
intgood;
*成绩良好*
intmid;
*成绩中等*
intpass;
*成绩及格*
intfail;
*不及格*
charkc[30];
*课程名称*
floatxuefen;
*课程学分*
*课程平均分*
doublebzc;
*课程标准差*
}course[N];
整个系统的设计,可以将所有数据划分到两个结构体中,一个与学生有关,一个与课程有关。
数据的引入,可以从两个文件中读入,一个是学生成绩表,一个是课程与学分相关。
然后,将数据进行
(1)加权平均;
(2)标准差处理,排出每个学生在班级的名次。
最后,写出文件。
(三)系统实现
(一).部分函数的实现过程:
1.读入数据函数ReadDat1()和ReadDat2()
用函数打开目标文件,通过文件指针指向目标文件,然后调用库函数(fscanf,fgets)将数据读入到定义的结构体当中。
第一步用fgets函数将文件中的的第一行的字符串读入到数组中,然后用一个for循环控制每个人的变化,将各种数据按照不同的类型规格赋值给结构体。
2.求平均分和标准差:
求五门功课的平均分,用一个for循环控制着科目的变化,然后在内部再一个for循环控制人的变化将全班的人的某门功课的成绩累加起来,再除以总人数即得平均分,类似的即可求的各门课的标准差。
3.求每个人的加权平均成绩:
首先用for循环得到五门课程的学分的总和,然后再通过for循环控制每个人的不断变化,把每个人的每门成绩乘以各门课的学分,将其累加起来,再除以学分的和即得各个人的加权平均成绩
4.排名次:
首先用for循环控制各个人的变化,每一次将其名次赋值为1,然后将其平均成绩通过for循环于其他人进行比较,若小就将其自加1,最终即可得名次。
5.统计各分数段的人数:
首先通过两个for循环检查每个人的每门课程,再通过switch语句判断起属于的类型。
6.C语言创建全班同学成绩单的数据文件和全班成绩分析:
首先通过函数建立一个新的文件,for循环控制将分数输出到指定的文件中
(二)程序调试过程中的要点和难点:
在程序调试过程中,经常出现警告,这是因为数据类型不一致导致而成的。
由于不小心输入法的改变,容易造成一些不易发现的问题,比如在英文输入中的引号与在中文输入中的引号就是又区别的,应该保持在英文输入的环境中编辑此程序。
难点是,各个函数运行,要注意先后顺序。
因为一个函数的运行,需要上一个函数运行的结果为数据。
另外,还注意主函数的编写,是各个函数相互联系在一起。
(四)系统使用说明
源代码编写完成后,可以存放在记事本中,保存起来。
然后,选择打开方式为TC环境,打开运行程序。
在打开的界面上会显示如下菜单界面:
A在光标处输入:
2在屏幕上显示未及格学生名单;
B在光标处输入:
3在屏幕上显示优等生名单;
C在光标处输入:
4显示成绩分布(一个“=”代表一个人);
D在光标处输入:
5查询成绩
a在光标处输入:
1安学号查寻
b在光标处输入:
2按姓名查寻
E在光标处输入:
0退出界面;
F在光标处输入:
1进入子菜单选项
在光标处输入:
1创建班级名次文档到D盘;
2创建课程成绩文档到D盘;
3在屏幕上显示每个学生的成绩条;
5返回主菜单;
0退出编辑界面;
(五)测试数据
1.两个原始数据
(1)学生成绩表