C语言程序设计
——第9章 C语言程序设计实例
本章主要内容提示
学生成绩管理系统
本章学习目标
知识目标
掌握采用链表完成数据的增、删、改、查操作
总结结构体的定义、函数调用、函数参数、函数返回值类型
掌握顺序查找、直接插入法排序的算法思路
文件的读写等操作
理解程序的模块化设计思路
能力目标
掌握菜单的实现和功能调用
能够熟练对链表完成增、删、改、查操作
能够应用模块化设计思路完成系统设计
能够考虑系统数据验证并完成相应的设计工作
【学习提示】本章设计一个利用单链表结构实现学生成绩管理的小型学生成绩管理系统,让大家对前面所学知识点整理与回顾,同时,学习本章也是对大家今后的模块化设计软件系统的概念做一个补充,因此,本章是一个C语言知识的综合应用,其中的较难的部分是指针变量作函数参数,函数值为指向结构体的指针及单链表结构的应用等知识。
学生成绩管理系统
一般来说,开发一个软件要经过以下步骤:
1> 确定软件的功能并进行功能模块划分
2> 定义核心数据结构
3> 编写程序实现各功能模块
4> 对源程序进行编译和调试,形成软件产品
开发方法:自上向下,逐步细化,模块化设计,结构化编码
功能设计
学生成绩管理系统
输入记录模块
输出记录模块
查询记录模块
search()
插入insert()
修改
modify()
删除
del()
排序
sort()
更新记录模块
从文件读入load()
从键盘输入create()
输出到文件save()
输出到屏幕
print()
数据结构
no
name
score
sum
average
order
no
name
score
sum
average
order
no
name
score
sum
average
order
no
name
score
sum
average
order
设计这样的一个结构体类型:
#define N 3
typedef struct z1
{
char no[11]; /*学号由10个字符组成*/
char name[15]; /* 学生姓名*/
int score[N]; /*各门课成绩,前面定义一个常量N=3*/
float sum; /*总分*/
float average; /*平均分*/
int order; /*名次*/
struct z1 *next; /*指向后继结点的指针,即指向下一个学生的指针*/
}STUDENT;上述的结构体定义表示的链表如图所示,每个节点属于struct STUDENT类型,它的成员next是存放的下一个节点的地址,即指向下一个学生记录的,用这种方法建立链表。
函数考虑
如何动态实现分配存储空间呢?操作的办法就是在需要的时候开辟一个节点的存
储空间,将其添加到已有的链表中,而开辟控件C语言提供的库函数可以实现:
(1)malloc函数:
函数原型:void *malloc(unsigned int size);
其作用是在内存的动态存储空间中分配一个长度为size的连续空间。当分配成功时,函数的返回值为指向该节点的指针,否则返回null。
(2)calloc函数:
函数原型:void *c
C语言程序设计-第9章 C语言程序设计实例 来自淘豆网m.daumloan.com转载请标明出处.