1、题目:学生信息管理系统题目:学生信息管理系统 一、需求分析一、需求分析 任务要求:任务要求: 自学 C 语言中有关链表及外部文件的内容,设计学生信息管理系统。 具体要求如下: 建立学生信息,信息至少包括名字、性别、年龄、学号、系别、家庭信息等 内容; 能够提供添加、删除和修改学生信息等功能; 能将通讯录保存在文件中; 能够按指定方式输出学生信息。 系统功能需求分析:系统功能需求分析: 1、为存储学生信息,需定义一个结构体类型,成员名字、性别、 年龄、学号、系别、家庭信息等,并建立链表,定义该结构体类型的 指针,用于指向各结点; 2、分别建立具有添加、删除、修改、查询等功能的子函数,完成 相应功
2、能,对程序实现模块化。这其中要用到对链表的删除、插入等 知识。删除时用一结构体指针指向链表的第一个结点,检查该节点的 值是否等于输入的要删除的学号, 若相等就删除, 不相等则后移指针, 直至表尾。插入时也要先找到相应结点,再添加。 3、为实现存储功能,需用到文件的相关函数,打开文件,将添加、 修改或删除的信息存入磁盘中。 4、为以表格的形式输出文件,宏定义格式化输出语句,指定输出学 生信息。 2 二、概要设计二、概要设计 系统总体设计框架:系统总体设计框架: 对程序进行模块化,建立添加、修改、删除、查找和显示功能的 子函数,各子函数中运用链表存储数据。从主函数开始执行,调用各 个子函数,并运用
3、文件相关知识将信息存入磁盘中。 系统功能模块图系统功能模块图: 主菜单主菜单 学 生 形 象 查 询 学 生 信 息 添 加 学 生 信 息 删 除 学 生 信 息 添 加 是否保存 关闭关闭文件文件 3 三、详细设计三、详细设计 主要功能模块的算法设计思路如下: 1、查询通讯录信息(void chakan()) (1)为开辟一个新单元 (2)输入查询关键字: (3)读取保存的文件数据输入 ASCLL 字符: (4)在链表中寻找相应结点; (5)调用输出函数,输出结点信息。 2、添加信息函数(void add()) (1)定义指向结构体变量的指针; (2)移动指针,找到插入结点; (3)在要插
4、入的结点输入信息; (4)调用保存函数,打开文件,保存输入信息。 3、删除信息函数(void del()) (1)定义指向结构体变量的指针; (2)用指针检验链表中是否有记录,若没记录,返回主函数; (3)根据要修改的编号查找要删除的结点; (4)修改链表,删除对应结点。 4、修改信息函数(void xiugai()) (1)定义指向结构体变量的指针; (2)读取保存的文件数据输入 ASCLL 字符: (3)用指针检验链表中是否有记录,若没记录,返回主函数; (4)根据要修改的编号查找对应结点; (5)修改信息; (6)打开文件,保存修改记录。 5、保存信息函数(baocun()) (1)定义指向结构体变量的指针; (2)用文件指针指向要读写的磁盘文件名,若没有则新建此文件名: (3)用指针检验链表中是否有记录,若没记录,返回主函数: (4)打开文件,保存记录: 6、屏幕操作函数(void stubent187()) (1)以一定格式输出所想要的图形: 4 四、四、主要源程序代码主要源程序代码 定义变量:定义变量:(对整个程序定义全局变量