江苏教育学院信息技术专业
课程设计报告
姓名 班级 学号 课程设计信息 课程名称 C语言 课程设计题目 通讯管理系统 课程设计时间 2011-12-20 成绩 评阅教师
2011-2012学年第一学期
课程设计报告名称
一、课程设计内容
通讯录管理系统 具体要求如下:
1、建立通讯录信息,信息至少包括编号、姓名、年龄、电话、通讯地址、电子邮箱等内容;
2、 能够提供添加、删除和修改通讯录信息等功能;
3、能够提供按照不同方式查询的功能,如按姓名或年龄、电话查询; 4、 能将通讯录保存在文件中; 5、 能够按表格方式输出通讯录信息。
二、课程设计目的
1、为存储通讯录信息,需定义一个结构体类型,成员包括编号、姓名、年龄、电话、通讯地址、电子邮箱等,并建立链表,定义该结构体类型的指针,用于指向各结点;
2、分别建立具有添加、删除、修改、查询等功能的子函数,完成相应功能,对程序实现模块化。这其中要用到对链表的删除、插入等知识。删除时用一结构体指针指向链表的第一个结点,检查该节点的值是否等于输入的要删除的学号,若相等就删除,不相等则后移指针,直至表尾。插入时也要先找到相应结点,再添加。查询功能要设置姓名、编号、地址等多种方式。
3、为实现存储功能,需用到文件的相关函数,打开文件,将添加、修改或删除的信息存入磁盘中。
4、为以表格的形式输出文件,宏定义格式化输出语句,用横线和竖线构成表格
三、算法的基本思想
系统总体设计框架:
对程序进行模块化,建立添加、修改、删除、查找和显示功能的子函数,
各子函数中运用链表存储数据。从主函数开始执行,调用各个子函数,并运用文件相关知识将信息存入磁盘中。
系统功能模块图:
创建通讯录 通讯录管理 通讯录查询 添加信息 修改记录删除记录显示记录 按姓名查询 按编号查询 按地址查询 将信息存入文件
详细设计
主要功能模块的算法设计思路如下:
1、添加信息函数(void Add(Link l)) (1)定义指向结构体变量的指针; (2)移动指针,找到插入结点; (3)在要插入的结点输入信息;
(4)调用保存函数,打开文件,保存输入信息。 2、修改信息函数(void Modify(Link l)) (1)定义指向结构体变量的指针;
(2)用指针检验链表中是否有记录,若没记录,返回主函数; (3)根据要修改的编号查找对应结点; (4)修改信息;
(5)打开文件,保存修改记录。 3、删除信息函数(void Del(Link l)) (1)定义指向结构体变量的指针;
(2)用指针检验链表中是否有记录,若没记录,返回主函数; (3)根据要修改的编号查找要删除的结点;
(4)修改链表,删除对应结点。 4、显示记录函数(void Disp(Link l)) (1)打开文件;
(2)用指针检验是否有记录;
(3)若无记录,输出提示信息,返回主函数;若有记录,移动指针,依次输出记录;
(4)关闭文件。
5、查询通讯录信息(void Find(Link l)) (1)选择查询方式(按姓名、编号或地址); (2)输入查询关键字: (3)在链表中寻找相应结点; (4)调用输出函数,输出结点信息。
以上各个函数的流程图如下:
(添加信息)
FILE *p,打开该磁盘文件 是 插入表头 从键盘输入数据 链表为空 否 插入表尾 输出数据,存入磁盘文件 关闭文件
(显示信息)
FILE *fp,打开该文件 p=head,使p指向第一个结点 P指向的不是尾结点 真 假
输出p所指向的结点 P指向下一个结点 关闭文件 (按姓名查找)
打开磁盘文件 是 链表为空 否 输出 p=head “尚无记 当name2=p->name 录信息” 是 P是要找的结点 否
输出此结点 输出“查无此人 “的信息 关闭文件 (按编号查找)
打开磁盘文件 是 链表为空 否 输出 p=head “尚无记 当num2=p->nun 录信息” 是 P是要找的结点 否
输出此结点 输出“查无此人 “的信息 关闭文件