二○一一年九月
设计要求
题目三通讯录管理系统
任务:自学C语言中相关知识,设计出通讯录管理系统。要求如下所述:
◆建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子
邮箱等;;
◆能够提供添加、删除和修改通讯录信息的功能,并给出确认是否保存或删除
记录的提示信息;
◆能够提供按姓名或电话等查询并显示相应记录信息;
◆将通讯录保存在文件中;
◆能够按表格方式输出通讯录信息。
二、要求
◆为了保证所有的数据可以长期被使用,要求程序能将相关数据存储在外部数
据文件中,具体数据格式和文件名、路径等自定;
◆根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主
程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后可返回到主菜单,继续选择其他功能执行。源程序要求书写规范,结构清晰。重点函数的重点变量,重点功能部分均要求给出清晰的程序注释。
程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。如果程序不能正常运行或结果不正确,则需对程序进行单步调试,在调试过程中认真查算法实现中存在的问题,并加以分析和修正。
程序详解
首先,定义结构体
struct student
{
long num;//用于存储学号
char name[20];//姓名
int age;//年龄
long telephone;//电话号码
char adress[40];//地址
char E_mail[30];//邮箱
int QQ[12];//增设的QQ一栏
struct student *next;//用于存放下一级指针
}first;
first为第一个节点,继而在其后动态的开创若干节点。
以下是用于链表处理的各个函数:
struct student * creat(struct student *p) //输入函数
void printall(struct student * head) //显示所有记录
struct student * delet(struct student *head) //删除函数
struct student * insert(struct student *head) //插入函数
struct student *searchbynum(struct student *head) //按学号查
struct student *searchbyname(struct student *head) //按姓名查
struct student *search(struct student *head) //查函数
menu_select() //选择函数
以下是各个函数的详细说明:
Creat()函数用于创建链表,其中以n记录节点的个数,并在创建时实现自加,以便于后面函数的处理,其循环输入的实现,依靠库函数malloc()和后面的while循环。
Printall函数用于显示当前的的所有记录,依靠头指针到链表首地址,有while循环实现所有记录的输出。
Delet ()函数用于删除某个记录,删除可以按姓名或学号这两种方式进行的,但本程序中没有这个功能即只可以按学号进行删除(因为学号唯一)。
Insert ()函数用于插入,同样以头指针到链表的首地址,并将要插入的学号依次与各个节点中得num 比较,然后按顺序将一个节点插入。
Search ()函数用于查,查函数提供了两种方式,即按姓名查和按学号查。在search ()函数中可以按提示调用searchbyname ()和searchbynum ()。
Menu_select() 函数用于提供函数选项,旨在简化主函数。
流程图
2 1
主函数
Menu_selec t() Printall () Search ()
Delet () Insert () Creat () 1
2    4
3 0
此即为该程序的主流程图。
源程序以下是详细的源程序及部分注释:
#include<stdio.h>
#include<string.h>
molloc函数#include<malloc.h>
#include<conio.h>
#include<stdlib.h>
#define NULL 0
#define LEN sizeof(struct student)
#define SHU "%d\n%s\n%5d\n%ld\n%s\n%s\n%s" int n;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。