分析设计与说明
分别建立两个数据文件
文件1(c.txt)用于存放学生成绩;
文件2(xuefen.txt)用于存放课程及其学分。
程序设计思想
(1)学生成绩管理系统
1读入原始数据并显示(将其读入另外的“c1.txt”中);
2编写函数用于计算平均分及名次(将其读入另外的”mingci.txt”中);
每个学生各科分数乘以相应的学分并相加除以学分总和;先令每个学生的名次都
是1,在把一个学生的加权平均分与其他的所有学生的进行比较,遇到一个比
该学生平均分高的,该学生的名次加1。循环依次得出全班人的名次;并将这种
结果输出到文本文件mingci.txt
3编写函数计算分数段人数(将其读入另外的”chengjifenbu.txt”中);
先令每一个分数段(>=90;>=80;>=70;>=60;<60)的人数都是0,然后利用循环结
构,遇到一个在某个分数段的成绩,那个分数段的计数变量加1,最后可得每门
科目每个分数段人数;并将这种结果输出到文本文件chengjifenbu.txt
利用循环结构,将所有人的同一科成绩相加,再除以总人数,课程平均.txt中;
编写函数统计不及格情况(将其读入另外的”bujige.txt”中) ;
利用循环,将每个人的各科成绩和60相比较,若小于60,则输出名单 (学号、
姓名、不及格课程名称、课程学分及成绩)结果存放在文本文件:bujige.txt
6编写函数输出优秀学生(将其读入另外的”youxiu.txt”中);
1平均分≥90,2.名次在本班前三名,3.平均分≥85,并且至少有一门课的成绩为100分,4平均分≥85,并且至少有二门课的成绩为≥90分。将上述条件作为逻辑或的判别式,找到符合条件的所有学生,输出并同时存放到youxiu.txt中;
7.编写函数作出每门课程各分数段人数分布的饼状图;
通过调用“计算分数段人数程序”内容的结果,将其与各科目参加考试的总人数
相除,再乘以360转换成角度,用arc(int x,int y ,int stangle,int endangle,int radius);//
以(x,y)为圆心,以//radius为半径,从角stangle到endangle(用度表示)处画一圆弧;
绘制饼状图;
(2)解线性方程组
用高斯消去法解线性方程组;
程序实现功能
1)学生成绩管理系统
1.班级成绩单查看见文件(c.txt);
2.课程学分详情见(xuefen.txt);
3.班级成绩排名表单(mingci.txt);
4.成绩分数分布段见(chengjifenbu.txt)
5.课程平均分见(kepingjunchengji.txt)
6.不及格学生的名单(bujige.txt);
7.优秀生的名单(youxiu.txt);
8.每门课程各分数段人数分布的饼状图;
9.退出。
2) 解线性方程组
1.解方程组;
2.返回上级菜单
(3).程序框
主菜单功能模块图
一级菜单结构图
四.源程序清单
#define pai 3.1415926
#include"stdio.h"
#include"conio.h"
#include"math.h"
#include"graphics.h"
#include"stdlib.h"
struct student
{
int num;
char name[20];
int a[5];
float ave;
int m;
int mc;
}stud[30],k;
main() /*主菜单*/
{ char ch1;
do{ clrscr(); system("graftabl 936") ;
printf("\n\n\n\n\n\n\n\n\n");
printf(" ************** C 语 程序设计上机实习 ****************\n");
printf(" ---------------------------------------------------\n\n");
printf(" 1 学生成绩管理\n\n");
printf(" 2 解线性方程组\n\n");
printf(" 3 动画\n\n");