在C语言的学习过程中,经常会让我们自己编写一个小项目,其中,通讯录的编写就是其中的一个经典作业。下面我就献上自己编写的通讯录代码。
注:本程个人亲测有效,没有任何问题,可以实现以下的基本的功能。
1:添加个人信息;
2:查询个人信息,可供两种选择方法,一种按姓名查询,一种按电话号码查询;
3:删除个人信息;
4:修改个人信息;
5:实现信息排序;
6:输出全部信息;
7:采用文件形式对通讯录进行操作,包括 写入文件 和 读取文件 ,从而保证能对添加的联系人进行保存。即在下一次打开vim编辑器的时候,依旧能看到上次添加的联系人的相关信息。
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define FALSE 0
#define TRUE 1
#define MAXSIZE 20
typedef int Status;
typedef char Elemtype;
typedef struct Node
{
Elemtype name[MAXSIZE];
Elemtype number[MAXSIZE];
Elemtype sex[MAXSIZE];
struct Node *next;
}Node;
typedef Node *Linklist;
Status Inserlist(Linklist *Lp); //插入联系人
void Initlist(Linklist *Lp);//对链表进行初始化
void mydisplay(Linklist *Lp); //显示通讯录
void Deletelist(); //删除联系人
Status Findlist(Linklist *Lp); //查找联系人
void Reviselist(); //修改联系人
Status Sortlist();//对通讯录进行排序
Status Length();//判断文件字符个数
void savelinkman();//保存链表中的结点到文件
void loadlinkman(Linklist Lp);//加载联系人
int main()
{
printf("*************************\n");
Linklist Lp;
Initlist(&Lp);
loadlinkman(Lp);//调用加载联系人到链表的函数,确保显示联系人的时候,链表不为空
int sel;
Elemtype a[MAXSIZE],b[MAXSIZE];
while(1)
{
printf("\t\tmenu: \n");
printf("\t\t1:添加联系人\n");
printf("\t\t2:查找联系人\n");
printf("\t\t3:删除联系人\n");
printf("\t\t4:修改联系人\n");
printf("\t\t5:显示联系人\n");
printf("\t\t6:对通讯录进行排序\n");
printf("\t\t7:保存并退出通讯录\n");
printf("请输入要执行的功能所对应的序号,以回车键结束!\n");
scanf("%d",&sel);
getchar();
switch(sel)
{
case 1:
Inserlist(&Lp);
printf("*************************\n");//无实际意义,仅为输出界面美化
break;
case 2:
Findlist(&Lp);
printf