| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C语言成绩管理系统实例 附源码(二) -> 正文阅读 |
|
[C++知识库]C语言成绩管理系统实例 附源码(二) |
目录语言:C语言 四、系统设计中的要点4.1 系统分块开发C语言允许加工对象不是一个完整的程序,而是多个源程序文件。在程序规模比较大时,一般是根据结构化程序设计方法将程序划分成多个源文件。在编译该程序时,可以以源文件为单位分别进行编译并产生与之对应的目标文件,然后再用链接程序把所生成的多个目标文件进接成一个可执行文件。C语言的这种编译过程称为分块编译,这种开发方法称为分块开发。 C语言的这种分块开发和编译处理方法使一个程序可以同时由多个人进行开发,为大型软件的集体开发提供了有力支持。分块编译的优点还在于修改一个源文件中的程序后,并不需要重新编译整个程序的所有文件,这就大大节省了时间。 分块开发中最重要的工作是程序结构的"物理"组织。虽然对于同一个程序,完全可能采用不同的物理组织结构,但都必须遵循这样一个原则:使同一个程序对象的定义点和所有使用点都能参照同一个描述。例如,让它们参照同一个头文件。 按照惯例,常把C程序分为后级为.c和.h文件的两类文件。前者是包含实际程序代码基本程序文件,后者是为基本程序文件提供必要信息的辅助性文件。 4.1.1.头文件编译程序库中的许多函数都要与它们自己的专门类型的数据和变量一起工作,用户的程序也必须访问这些数据和变量。这些变量和类型由编译程序提供的"头文件"所定义。在任可一个使用这些特定函数的文件中,必须嵌入涉及这些特定函数的头文件(用#include语句包含)。此外,对于C库中的所有函数,均在相应的头文件中有它们的原型定义,以便提供一个更强的类型检查手段。把程序中使用的标准函数与对应的头文件链接进来,就可以查出溶在的类型不匹配错误。例如,库函数中战入字符串函数的头文件string.h,使下面的程序在编译时产生警告信息。 因为明确的数据类型对检查和防止程序出错具有积极的作用,所以最好开放所有的编译程序警告信息,利用所有必要的嵌入文件来说明所用函数的参数,而不要管该函数是C标准库的还是一些C工具库的。用户在自己的战人文件中说明自定义的函数的参数,把做人文件用作程序模块之间对类型定义的唯一访问点。若编译程序指出类型冲突错误,而这些错误又确实存在,就需要仔细修改程序,直到警告信息不再出现为止。 若使用头文件来做类型定义,则由于这些定义是模块间共享的,所以能防止程序出玛的编译错误,且能及早查出某些不易察觉的错误。 强类型方式甚至能及早查出潜在的错误,尽管这些错误可能在目前情况下还没有产生不良的后果,但在将来却一定会产生不良后果。 C语言预处理器是C编译程序的一部分,在编制C程序时,应注意使用它们来提高程序质量。 4.1.2.程序物理组织正如函数分解一样,文件的分解也没有万能的准则,一般来说,首先划分".c"文件。可以从如下两个方面来考虑。 然后根据源程序的文件数量和功能,设计头文件。如果源文件比较复杂,完全可能需要为每个源文件设计一个头文件。对于一般情况,需要根据具体情况而定。一般可以参考如下原则决定头文件的数量和编写内容。 应正确设计源文件,以便与头文件配合。一般要注意如下问题。 4.1.3.避免对头文件的重复编译因为一个程序文件可能包含多个头文件,由此可能引起同一个头文件的重复包含问题。对头文件使用预处理命令可以避免这一问题。 标准头文件结构。 同一个编译单元里,同名的结构不能被重复声明。如果你的头文件里有结构的声明,很难这个头文 件不会在一个编译单元里被#include多次,所以需要“标准头文件结构”。
4.2 实现代码时的重点4.2.1 student.h文件使用条件编译。头文件中的语句 #ifndef H_STUDENT_HH 也是用来防止重复包含的。这种比较怪异的形式,不如STUDENT_H那样比较清楚明了,目的是为了尽量避免可能出现的重复的宏定义。 4.2.2 student.c文件在主函数中,首先用malloc函数分配INITIAL_SIZE个stuInfo大小的数组给records,对各个全局变量进行初始化赋值后,反复进行菜单处理,直至选择退出命令。 4.2.3 add_disp.c文件显示学生信息的display函数是通过循环遍历数组中第0~numStus-1个函数,逐条显示学生信息。 4.2.4 sav_load.c文件文件存储操作函数saveRecords是通过fwrite函数一次写人从records开始numstus个stuInfo大小的字节。 4.2.5 quee_remv_modi.c文件查找指定记录函数为: 然后反复调用i=findRecord(target,targetType,1+1)直至1为-1即可,这样每得的i就都是符合条件的记录的序号了。 4.2.6 sort.c文件可以选择按学号进行升序排序,按学号进行降序排序,按姓名进行升序排序,按姓名进行降序排序,按名次进行升序排序或者按名次进行降序排序,使用比较排序法,比较数组中的任两个记录,对于不符合顺序的两个记录对换位置。 未完持续… |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 11:59:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |