当前位置:文档之家› 模块化程序设计实验

模块化程序设计实验


int iScoreHigh[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科最高分 int iScoreLow[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科最低分 int iScoreAve[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科平均分 int iHighNo[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科最高分学生学号 int iFineCount[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科达优秀人数 int iFailCount[SubCount]; //以计算机、数学、英语、语文、体育的顺序存放各科不及格人数 /************************************************** 函数功能:显示菜单并返回选择的菜单项编号 参数说明:无 返回值: 菜单项编号 ****************************************************/ int MenuSelect(void) { int option; int input;
《C 语言程序设计》实验指导书
实验 7 模块化程序设计
一、实验目的
【知识点】
1. 掌握全局变量、 局部变量的作用域和存储类别的区别, 以及它们在程序中的使用方法。 2. 掌握函数间数据传递的 3 种方式:传值、利用返回值、利用全局变量。 【技能】 1. 理解模块化程序设计的思想,掌握模块划分的原则; 2. 利用全局变量和函数实现模块化程序设计; 3. 结合具体的编程环境,掌握多文件编程的方法,为编制实用程序打下基础。
程序编写要求如下: (1)分析程序功能设计要求,按照模块化程序设计的方法,划分各功能模块; 提示 1:程序可划分为录入数据、统计处理、排序处理、显示结果、菜单处理等 模块,其中统计处理还可以细化为统计分数(统计最高分、统计最低分、统计平均分) 和统计人数(统计优秀人数、统计不及格人数) 。 (2)分析程序中所涉及的各种数据,并选择适当的数据类型来表示; 提示 2:因最后排序结果以表格形式,为方便统计结果的排序操作,可将各科最 高分、最低分、平均成绩、最高分学生学号、优秀人数、不及格人数的统计结果分别保 存在大小为 5(5 门课程)的数组中。在按平均分排序处理时,应同时对其它统计结果作 相应处理; 提示 3:科目名称为字符串常量,可用字符指针指示。因题中涉及 5 门课程,应 有 5 个字符指针指示,所以可用字符指针数组表示。 char *cSubject[5]={“计算机”, “数学”, “英语”, “语文”, “体育”}; 提示 4:程序涉及多文件操作,用头文件进行数据声明。 (3)分析各个模块之间的接口,完成函数原型的设计,说明函数完成的功能、所需 参数和返回值。比如: int Menu(void); //显示菜单并返回选择的菜单编号 提示 5:对公共数据的处理可使用全局变量实现,也可用局部变量实现。若使用 全局变量,无需函数参数,函数调用的效率高,但数据安全性差;若使用局部变量,数 据安全性好,但函数设计较复杂,公共数据必须通过函数参数进行传递 , 函数参数可以 是数组或指针。 (4)每个模块用一个单独的 c 文件实现,以多文件方式实现整个设计,每个文件及 函数的参考设计如下表三所示; (5)用菜单的形式组织各功能模块。
二、实验要求
1. 复习函数定义和调用方法; 2. 复习 switch 语句的实现菜单程序用法; 3. 综合编程题,先分别编写头文件和各功能模块,再通过菜单程序调用各功能模块。
三、实验内容
1.函数定义和调用: 完善下面程序,其功能是输入一个 ASCII 码值,输出从该 ASCII 码开始的连续 10 个 字符。在横线处填写正确的语句或表达式,使程序完整。上机调试程序,使程序的运行 结果与给出的结果一致。 #include<stdio.h> void put (____ n) { int i,a; for(i=1;______________;i++) { a=n+i-1; putchar(______________); } } void seven_prog1() { int ascii; /* 变量 ascii 存放输入的 ASCII 码值 */ printf(“输入 ASCII 码值:”); ____________________; put(___________); } 【运行结果一】 输入 ASCII 码值:97↙ abcdefghij 【运行结果二】 输入 ASCII 码值:33↙ !”#$%&’()*
extern int iScoreHigh[]; //以计算机、数学、英语、语文、体育的顺序存放各科最高分 extern int iScoreLow[]; //以计算机、数学、英语、语文、体育的顺序存放各科最低分 extern int iScoreAve[]; //以计算机、数学、英语、语文、体育的顺序存放各科平均分 extern int iHighNo[]; //以计算机、数学、英语、语文、体育的顺序存放各科最高分学生学号 extern int iFineCount[];
sort.c display.c student.h
SortByAve Display 数据结构声明 函数声明
四、参考程序
下面给出的程序,实际上是一个程序框架,可以了解整个程序的结构。请同学们自己 完成部分函数的具体实现和进一步思考。 1.student.h 文件 #include <stdio.h> #include <stdlib.h> #include <conio.h> #define StuCount 5 #define SubCount 5 extern char *cSubject[]; //指示课程名称 extern int iStuNo[]; extern int Computer[]; extern int Math[]; extern int English[]; extern int Chinese[]; extern int Physics[]; //全班学号 //全班计算机课程成绩 //全班数学课程成绩 //全班英语课程成绩 //全班语文课程成绩 //全班体育课程成绩
第 4 页 共 14 页
《C 语言程序设计》实验指导书
源程序 student.c input.c static.c
表三 文件及函数组成 函数名及其它成份 功能描述 main 程序初始化,总控函数 MenuHandle 菜单处理 MenuSelect 显示和选择菜单 InputData 输入原始数据 StaticScore 统计各科成绩信息 GetHigh 统计最高分及对应学生学号 GetLow 统计最低分 GetAve 统计平均分 StaticPerson 统计各科优秀和不及格人数 以平均分为关键字对统计结果进行排序 显示学生成绩统计表 公共数据 引用库函数和函数
第 5 页 共 14 页
《C 语言程序设计》实验指导书
//以计算机、数学、英语、语文、体育的顺序存放各科达优秀人数 extern int iFailCount[]; //以计算机、数学、英语、语文、体育的顺序存放各科不及格人数 int MenuSelect(); //显示和返回选择的菜单项编号 int MenuHandle(int); //菜单处理 int InputData(); //输入原始数据,成功返回 1,否则返回 0 void StaticScore(); //统计最高分、最低分、平均分、最高分学号 int GetHigh(int *Score,int *Highest); //统计最高分及最高分学号 int GetLow(int *Score); //统计最低分 int GetAve(int *Score); //统计平均分 void StaticPerson(); //统计优秀和不及格人数 void SortByAve(); //以平均分为关键字对统计结果进行排序 void Display(); //显示学生成绩统计表 2.student.c 文件 #include "student.h" int iStuNo[StuCount]; int iComputer[StuCount]; int iMath[StuCount]; int iEnglish[StuCount]; int iChinese[StuCount]; int iPhysics[StuCount]; //全班学号 //全班计算机课程成绩 //全班数学课程成绩 //全班英语课程成绩 //全班语文课程成绩 //全班体育课程成绩
第 2 页 共 14 页
《C 语言程序设计》实验指导书
3. 多文件操作: 将下面的代码保存为源程序 file2.c,并添加到 seven 项目文件中。 static int k=10; extern void fan(); void seven_prog3() { fan(6); k=3; fan(3); } 编辑 file1.c,如下: void main() { void seven_prog3(); printf("%4c%4c%4c%4c ", 'k','m','n','l'); seven_prog2(); seven_prog3(); } seven 项目完成结果如下图:
在每个函数的入口处设置断点,并用单步运行的方式运行程序,使用 watch 窗口观察程 序运行过程中观察变量 k 值的变化,进一步理解变量作用域的概念。

请你小结动态局部变量、全局变量、静态全局变量、静态局部变量的作用域和生命 周期。
第 3 页 共 14 页
《C 语言程序设计》实验指导书
4. 综合编程 使用数组编写一个程序完成班级学生成绩统计的工作。 程序功能情况如下: (1) 学生人数为 30 人,成绩包括计算机、数学、英语、语文、体育五门课程的成 绩(用 int 类型表示) ; (2) 录入学生学号及各门课程的成绩; (3) 统计各门课程的最高分、最低分和平均成绩; (4) 统计各门课程达到优秀(>=90)和不及格的人数; (5) 对五门课程以平均成绩从高到低的顺序排序; (6) 按平均成绩从高到低的顺序,以表格的形式输出统计结果。 表二 学生成绩统计表 科 目 最高分 最低分 平均分 优秀人数 不及格人数 最高分学生学号
相关主题