2013级标准C语言程序设计综合设计实验十上机报告模板201406013

上传人:jiups****uk12 文档编号:40042665 上传时间:2018-05-22 格式:DOC 页数:17 大小:98.50KB
返回 下载 相关 举报
2013级标准C语言程序设计综合设计实验十上机报告模板201406013_第1页
第1页 / 共17页
2013级标准C语言程序设计综合设计实验十上机报告模板201406013_第2页
第2页 / 共17页
2013级标准C语言程序设计综合设计实验十上机报告模板201406013_第3页
第3页 / 共17页
2013级标准C语言程序设计综合设计实验十上机报告模板201406013_第4页
第4页 / 共17页
2013级标准C语言程序设计综合设计实验十上机报告模板201406013_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《2013级标准C语言程序设计综合设计实验十上机报告模板201406013》由会员分享,可在线阅读,更多相关《2013级标准C语言程序设计综合设计实验十上机报告模板201406013(17页珍藏版)》请在金锄头文库上搜索。

1、标准标准 C 语言程序设计语言程序设计上机报告上机报告实验十实验十 综合设计实验综合设计实验 专业:专业: 电子信息工程 班级:班级: 通信 1302 完成日期:2014-7-1一、一、 实验目的实验目的1、进一步熟悉开发环境,掌握编译、连接和调试的技巧; 2、综合运用数组、指针、函数、结构体和文件,通过综合设计掌握数组、结构 体、指针和函数之间的相互关系,掌握函数实参与形参的对应关系,理解传 值、传指针的区别(允许使用传引用) 3、熟悉具有复杂需求的程序设计过程和注意事项; 4、使用多文件的工程设计二、二、 实验内容及要求实验内容及要求下面程序运行中所有学生信息均存入文件 studengda

2、ta.txt,程序每次运行 时从文件中提取数据存入内存结构体数组中(指定文件不存在则新建) 。 题目:某班有最多不超过 30 人(具体人数由键盘输入)参加期末考试,考 试科目最多不超过 6 门(具体门数由键盘输入) 。编程实现如下菜单驱动的学生 成绩管理系统: (1) 录入学生学号、姓名和各科考试成绩; (2) 计算每门课程的总分和平均分; (3) 计算每个学生的总分和平均分; (4) 按每个学生的总分由高到低排出名次表; (5) 按学号由小到大排出成绩表; (6) 按姓名的字典顺序排出成绩表; (7) 按学号查询学生排名及其考试成绩; (8) 按姓名查询学生排名及其考试成绩; (9) 按优秀

3、(90-100) 、良好(80-89) 、中等(70-79) 、及格(60-69) 、 不及格(0-59)5 个类别,对每门课程分别统计各类别人数和所占比例;(10) 输出每个学生学号、姓名、各科考试成绩和总分排名。 (11) 学生记录信息写入文件 studengdata.txt (12) 从文件中读出学生记录信息并显示; (13) 退出系统 程序要求: 1.程序运行后先显示菜单列出上面 13 项操作选项,并提示用户输入 1-13 值; 2.考虑对用户输入的数据进行有效性校验,提高程序的健壮性;总体要求:总体要求: 1、按模块化设计方法,对问题进行分解,提出模块划分并绘制模块划分框 图。给出各

4、子函数模块的输入输出接口设计(即函数原型)以及用到的 主要数据类型或数据结构的选择;(注:输入数据、折半查找、统计个 人平均分、统计班级总平均分、排序、打印等均采用子函数设计,文 件操作允许在 main 函数内完成) (不得采用直接选择法进行排序子函数不得采用直接选择法进行排序子函数 设计设计) 2、给出程序清单,添加注释; 3、不允许使用全局变量,避免破坏程序结构; 4、允许采用传引用方式定义子函数; 5、注意编程规范,包括书写格式遵循缩进规则和空行规则;6 6、提交要求:提交要求: 提交:报告纸质打印档、报告电子档、源码(含 cpp 和 h 文件) 、 student data.txt 文

5、件。所有电子档压缩归档,压缩档命名格式为 “2013 级综合设计代码报告汇总班号学号姓名提交年月日.rar” ,纸质 档提交截至时间 2014/7/1,提交唯一邮箱:提交唯一邮箱:zhang_zhang_三、三、 程序设计注意事项程序设计注意事项1、大型程序通常采用模块化,每个模块通常至少有一个函数组成;大型程 序是以工程 project 来组织的,一个 project 又是由几个源程序文件 (. .cpp)组成的。因此,学会编写多源文件和多函数的 C+程序,不要 一味地用唯一的 main 函数来组织程序设计。 本设计要求 2 个以上的源文件,规定所有子函数原型说明语句、结 构体类型定义以及#

6、define 宏、typedef 类型别名说明语句等放在 myproject.h 文件中,main 函数和各子函数定义放在源文件中,源文件 开头用#include “myproject.h”包含。 2、尽量少用全局变量(外部存储类型变量) 。过多使用外部类型的全局变 量,将使函数模块之间的耦合性加强,从而降低函数的独立性以及通用 型。尽管采用全局变量编程相对容易,但对 C+程序员,更应注意采用 符合模块化的设计理念来完成设计,正确的设计方法论是我们在学习过 程首先要掌握并以此为主要学习任务,不能为了解决问题而“凑”程序。3、采用软件工程学的准则来完成整个设计过程,一般的软件开发过程包括 了:确

7、定需求分析过程、逐步细化的系统设计过程(包含总体设计、概 要设计、详细设计等) 、程序生产过程(编写代码) 、调试和测试以及运 行和维护过程这几个阶段。对于初学者,我们不必严格按照这些步骤, 但简单的问题理解、通过系统设计给出各模块的函数原型说明以及用到 的主要数据类型或数据结构、编程、调试运行等需要掌握。四、四、 设计思路分析设计思路分析1、 简单需求分析:先设计出 13 个函数 再写主程序引用函数(先打印操作内容 再用分支语句写主程序)2、 总体设计确定功能模块划分: 要求:根据需求分析,确定所有函数模块,对各模块功能作简单描述,根据 函数模块之间的调用与被调用关系,分析出彼此数据传递关系

8、,然后为每个 函数模块确定输入/输出接口参数定义,写出完整的函数原型说明。最终根 据上面得到的函数模块调用关系及接口参数定义画出具体的功能模块划分框 图图(方框内为模块名,方框之间的连线注明数据传递)函数原型说明: 函数 input:调用函数录入学生信息函数 N2:调用函数计算每门课程总分和平均值并输出函数 N3:调用函数计算每个学生的总分和平均成绩函数 N4:调用函数按总分由高到低排出名次表函数 N5:调用函数按学号由小到大排出成绩表函数 N6:调用函数按姓名的字典顺序排出成绩表函数 searchnumber:调用函数按学号查找学生成绩函数 searchname:调用函数按姓名查找学生成绩函

9、数 classify:调用函数按 5 个等级对每门课程分别统计各类别人数和所占比例函数 output:调用函数输出学生信息函数 save:调用函数将信息存入文件函数 read:调用函数读取存入文件中的信息函数 menu:打印菜单模块分框图:Main 函数N2 N3 Searchnumber searchname classify output save readN4 N5 N6menuexchange3、 模块内部流程图或伪代码 要求:除输入输出子函数外都要给出函数内部流程图或伪代码(关于伪代码 参考 wikipedia,内部搜索词:Pseudocode 或直接谷歌)project():pro

10、ject(): for j0 to mdo for sum0,i0 to ndo sumsum+scoreaversum/n printf 课程总成绩和平均成绩N2:N2: 打印:姓名 总成绩 平均成绩 循环打印:该学生的姓名 总成绩 平均成绩N3:N3: for i 从 0 开始循环 n 次单科按成绩高低逐个交换按总分排名逐个交换 按学号大小逐个交换 按姓名字典顺序逐个交换N4:N4: for i 从 0 开始 循环 n-1 次for ji+1 to nif 总分 1 小于总分 2then 交换总分 1、2 printf 姓名 学号 排名 总分 单科成绩 for i0 to n 打印:姓名

11、学号 排名 总分 单科成绩循环打印:各科成绩N5:N5: for i0 to n-1do for ji+1 to ndo if 学号 i 大于学号 jthen 交换其相应的排名和成绩的位置 printf 学号 姓名 排名 总分 单科成绩 for i0 to nN6N6 for(i 从开始循环 n-1 次)for(j=i+1;jpi+1.name)exchange 函数(交换顺序打印:姓名 学号 排名 总分 单科成绩循环打印:结构体的内容 循环打印:各科成绩searchnumbersearchnumber(数组指针,学生个数 n,课程数) 打印:请输入你想查询的学生的学号: 录入:一个数 1 f

12、or(i 从零开始 循环 n 次 ) if(数 1=学号) 打印:该学号的学生排名 用循环打印:该学生四门课的成绩 Else 打印:查无此人SearchnameSearchname(数组指针,学生个数,课程数) 打印:请输入你想查询的学生姓名 录入:学生姓名 For(i 从 0 开始 循环 n 次) If(!(录入姓名与结构体的数组比较=0) ) 打印:该学生的排名 用循环打印:该学生的四门成绩 Else 打印:查无此人ClassifyClassify for(j 从 0 开始;循环 m 次)for(i=0;i=90)访问下一个else if(pi.scorej=80 同时有 pi.score

13、j=70 同时有 pi.scorej=60 同时有 pi.scorej #include #include #include #define N 30 /定义学生个数 int n,m; struct student /结构定义 char name20; int number; float score6; float sum; /该学生总成绩 int ranking; /该学生排名 ;/定义函数原型声明 void input(struct student *p,int n,int m); void N2(struct student *p,int n,int m); void N3(struct

14、 student *p,int n,int m); void N4(struct student *p,int n,int m); void N5(struct student *p,int n); void N6(struct student *p,int n); void searchnumber(struct student *p,int n,int m); void searchname(struct student *p,int n,int m); void classify(struct student *p,int n,int m); void output(struct stu

15、dent *p,int n,int m); void save(struct student *p,int n,int m); void read(struct student *p,int n,int m); void menu();/打印菜单 void exchange(struct student *a,struct student *b); int main() int k=0;struct student *stu; /定义结构数组,存储学生信息 stu=(struct student*)malloc(sizeof(struct student);printf(“输入学生人数:“);

16、scanf(“%d“,printf(“输入考试科目数:“);scanf(“%d“,dosystem(“cls“);menu();printf(“ 请输入选项0-12:“);scanf(“%d“,switch(k)case 0:break;case 1:input(break;case 2:N2(stu,n,m);break;case 3:N3(stu,n,m); break;case 4:N4(stu,n,m); break;case 5:N5(stu,n); break;case 6:N6(stu,n); break;case 7:searchnumber(stu,n,m); break;case 8:searchname(st

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号