1、第 1 页/共 5 页 一、题目:教务信息管理(27) 二、设计思路 1、总体设计 1)分析程序的功能 统计并输出全班同学的数学平均成绩,语文平均成绩,总平均成绩。 统计低于总平均成绩的同学人数,平列出这些学生的信息(学号、姓名) 。 基于数据的查询:如,从键盘输入学号,屏幕输出该学生的所有信息。 排序:按平均成绩从高到低的次序输出每个学生的所有信息。 插入一新的学生信息后,该序列仍然有序(即仍然为按照平均成绩从高到低的有序序列) 。 2)系统总体结构:设计程序的组成模块,简述各模块功能。 结构体:存放学生信息。 函数:用于冒泡法排序。 主函数:实现要求的基本功能。 2、各功能模块的设计:说明
2、各功能模块的实现方法 3、设计中的主要困难及解决方案 在这部分论述设计中遇到的主要困难及解决方案。 1)困难 1 冒泡法排序的变量设置问题:通过思考、查资料和不断尝试解决。 2)困难 2 对新学生信息的插入:准确的找到插入位置,平保证信息的有序。 4、你所设计的程序最终完成的功能 1)说明你编制的程序能完成的功能 统计并输出全班同学的数学平均成绩,语文平均成绩,总平均成绩。 统计低于总平均成绩的同学人数,平列出这些学生的信息(学号、姓名) 。 基于数据的查询:如,从键盘输入学号,屏幕输出该学生的所有信息。 排序:按平均成绩从高到低的次序输出每个学生的所有信息。 插入一新的学生信息后,该序列仍然
3、有序(即仍然为按照平均成绩从高到低的有序序列), 2)准备的测试数据及运行结果 1.准备数据 2全班数学平均成绩、语文平均成绩、总平均成绩。 3.输入学生学号输出学生信息。 4.按平均分从高到低排序。 第 2 页/共 5 页 5.输入新学生信息后仍有序。 三、程序清单 #include struct birth /定义结构体数组 int year; /年 int mouth; /月 int day; /日 ; struct student int num; /学号 char name20; /姓名 struct birth bt; /出生日期 double math1; /数学考试成绩 dou
4、ble math2; /数学平时成绩 double chinese1; /语文考试成绩 double chinese2; /语文平时成绩 double math3; /数学综合成绩 double chinese3; /数学综合成绩 double aver; /平均成绩 ; void sort(student stu ,int n); /函数原型说明 const int N=4; void main() double mathaver,chineseaver,allaver;/定义全班学生数学平均成绩、语文平均成绩、 mathaver=chineseaver=allaver=0; /总平均成绩
5、student stuN-1; coutstui.numstui.namestui.bt.yearstui.bt.mouthstui.bt.daystu i.math1stui.math2stui.chinese1stui.chinese2; /学生基本信息输入 stui.math3=0.7*stui.math1+0.3*stui.math2; /求数学综合成绩 stui.chinese3=0.7*stui.chinese1+0.3*stui.chinese2; /求语文综合成绩 stui.aver=(stui.math3+stui.chinese3)/2; /求平均成绩 mathaver+=stui.math3; chineseaver+=stui.chinese3; allaver+=stui.aver; mathaver/=3; /求全班数学平均成绩 chineseaver/=3; /求全班语文平均成绩 allaver/=3; /求全班总平均成绩 coutnum; /输入要查询学生的学号 for(i