C语言-通讯录管理系统
- 格式:doc
- 大小:522.50 KB
- 文档页数:49
课程设计报告实例: 《C程序设计》课程设计报告 题目——通讯录管理系统 专 业: 计算机科学与技术 学 号: 设 计 者:
时 间: 1. 系统设计目标及功能 1.1. 系统目标 使用数组设计一个实用的小型学生通讯录管理系统,它有联系人录入、检索、删除和修改等功能,并且能够对指定文件操作。 1.2. 功能设计要求 1. 增加通讯录成员记录 成员基本信息:姓名、现就读大学名称及专业、班名、家庭住址、邮编、本人联系电话、QQ等。 在已有的记录后面追加新的记录 可以随时用它增加新的记录,它们仅保存在结构数组中 有错误提示功能,例如电话号码长度及格式检查,输入错误提示重新输入
2. 显示通讯录成员记录 能按姓名、专业对成员信息检索并显示 如果没有记录可供显示,给出提示信息 可以随时显示内存中的记录 显示表头 3. 删除通讯录成员记录 可以按“姓名”方式删除记录 给出将被删除记录的信息,经确认后在删除 如果已经是空表,删除时应给出提示信息并返回主菜单 如果没有要删除的信息,输出没有找到的信息。 删除操作仅限于内存,只有执行存记录时,才能覆盖原记录 4. 修改通讯录成员记录 可以按 “姓名”方式修改记录 给出将被修改记录的信息,经确认后进行修改 如果已经是空表,应给出提示信息并返回主菜单 如果没有要修改的信息,输出提示信息。 修改操作仅限于内存,只有执行存记录时,才能覆盖原记录 5. 查询通讯录成员信息 可以按 “姓名”方式查询记录 给出查询记录的信息 如果查询的信息不存在,输出提示信息 6. 文件存储 可以按默认名字或指定名字存储记录文件 存储成功返回0,否则返回-1 更新存储标志 7. 读取文件 可以按默认名字或指定名字将记录文件读入内存 读取成功返回0,否则返回-1 更新存储标志 8. 成员信息位序调整 按编号输入想调整的成员和调整到第几位 打印找到要调整的信息 输出调整成功与否提示信息
2. 系统设计 2.1. 总体设计 系统总体功能模块如下图: 系统文件及函数组成如下表: 源文件 函数名或其他成分 功能 负责人 Member.c Main() 总控函数 menu 菜单选择
Add_disp.c ShowTable 输出表头 AddInfo 信息录入 PrintInfo 显示信息 stringinput 输入格式长度检查
Search_del_modi.c Del 删除指定记录 Search 查询指定记录 Modify 修改指定记录
Save_Load.c Save 文件保存 Load 文件读取
Member.h 常量 提供全局变量 结构声明 通讯录结构体 库函数与函数原型声引用库函数及函
增 加 成员 显 示 数 据 删 除 数 据 修 改 数 据 保 存 数 据 加 载 数 据 查 找 数 据
通讯录管理系统 位 序 调 整 明 数 Sort.c Sort 位序调整
2.2. 函数设计 1. 文件读取操作函数 函数原型:void load(MEM *head); 功能:将默认文件men_info或指定文件里的记录读入内存。 参数:MEM *head为记录数组的首地址 返回值:成功0,失败-1 工作方式:从指定目录加载文件 要求:报告是否有记录可存、是否能正常打开文件、是否覆盖已有记录以及读取记录的条数 2. 文件存储操作函数 函数原型:void save(STU *head); 功能:将记录存入默认文件stu_info或指定文件。 参数:STU *head为记录数组的首地址 返回值:成功0,失败-1 工作方式:数组records被保存至指定文件 要求:报告是否有记录可存、是否能正常建立或打开文件、根据要求执行存入操作并报告存入记录的条数 3. 增加信息操作函数 函数原型:void AppendInfo(MEM *head) 功能:增加记录 参数: MEN *head为数组的首地址 返回值:void 工作方式:从最后一个记录开始逐个增加 要求:将新记录追加在记录的尾部,并对记录进行计数 4. 显示学生信息函数 函数原型:void PrintInfo(MEN *head, int n); 功能:显示内存里的n个记录信息 参数:MEM *head为开始打印位置 int n 实际打印记录个数 返回值:void 工作方式:从开始位置逐个显示记录内容 5. 删除学生信息函数 函数原型:void Del(MEN *head); 功能:删除指定记录信息 参数:MEN *head为数组的首地址 返回值:void 工作方式:从开始位置逐个读取内容,找到指定记录将其后面记录前移
6. 修改学生信息函数 函数原型:void Modify(MEN *head, int n); 功能:修改指定记录信息 参数:MEN *head为数组的首地址 返回值:void 工作方式:从开始位置逐个读取内容,找到指定记录并修改 7. 查询学生信息函数 函数原型:void Search(MEN *head, int n); 功能:查询指定记录信息 参数:MEN *head为数组的首地址 返回值:`返回找到的i,即地址位置 工作方式:从开始位置逐个读取内容,找到指定内容并打印 8. 输出表头信息 函数原型:void showTable(void) 功能:输出表头信息 参数:void 返回值:void 工作方式:输出一行表头信息 要求:输出一行表头信息
2.3. 系统主要功能模块流程图 a) 增加通讯录成员信息Appendinfo流程图(图1) b) 打印通讯录所有信息PrintInfo流程图(图2) c) 查找通讯录成员信息Search流程图(图3) d) 查找通讯录成员信息所在地址Search*(图4) e) 删除通讯录成员信息Del流程图(图5) f) 调整通讯录成员位置sort流程图(图6) g) 修改通讯录成员信息modify流程图(图7) 图1 添加新成员Appendinfo 图2 打印PrintInfo流程图 图3 查找Search流程图 图4 查找所在地址Search* 图5 删除Del流程图 图6 调整位置sort流程图 图7 修改modify流程图 3. 课程设计心得体会 (略,需说明系统设计、开发过程中遇到的问题及创新点,课程设计心得体会) 这次课题设计无疑对本组成员说是一个不小的挑战,因为中部分成员本小组对C语言相关知识的功底不深。但在编写程序的同时,我们也感受到了团队的力量。在一开始的时候,看到所要编写的函数,只有大概的图形,但当真正编写时确编写不出来。后来我们用了网络的工具、小组人员之间的探讨、查阅相关书籍,对中间的函数才编出了大概。 本小组设计函数的功能有1、增加成员 2、显示成员 3、查找(按编号、按姓名、按号码) 4、修改 5、删除、6、文件的处理(加载、保存)7、关闭系统 在程序编写时我们遇到的问题有: 1、输入长度格式最难检查。通过阅读相关书籍,我们找到了解决的方法。 2、其他软件的操作,因为流程图要用VISIO,如果对软件不熟悉,也很难完成工作。 3、文件名的命名。本小组在做函数时,用了很文件命名方式,对于文件命名方式如果不事先预定好,各自的文件组起来就要修改很多命名。如果一开始就按照程序设计的方案做就不会出现那么多不必要的麻烦。这也说明,在按要求编写程序的时候要先看清楚,再对子函数进行设计。同时,命名的时候要加上额外函数和变量命名要有统一风格,看上去通俗易懂 4、在使用指针的时候,总有或多或少的错误。为了减少在编写程序时的错误,我们学着课本中表格的方法边画边写,这样做确实有些效果。 5、对于部分函数设计时会遗忘返回值。 通过这次的小组设计,我们学会了通过阅读,在别人的基础上做适当修改最后写出了自己的程序。 源代码
/*Add_disp.c*/ #include "Member.h"
extern int n; /*函数功能:输出表头 函数参数:无 函数返回值:无 */
void ShowTable(void) { printf("\t编号\t\t姓名\t大学\t专业\t班级\t地址\t邮编\t联系\t电话\tQQ\n"); }
/* 函数功能:添加用户
函数参数:结构体指针head,指向通讯录成员信息的结构体数组的首地址
函数返回值:空 */