【通讯录管理系统】C语言双向链表实现,拿走不谢~

这是一个使用C语言编写的通讯录管理系统,采用双向链表数据结构。文章介绍了系统的功能,包括添加、删除用户,动态搜索,显示全部联系人等,并提供了关键代码段。适合学习C语言和链表操作的读者参考。
摘要由CSDN通过智能技术生成

人生如梭,天长日久,何须朝朝暮暮

嗨,这里是狐狸~~ 我是狐狸的长兄虎狸~~

 

好久不见呀!这么久没更新大家有没有想我,哈哈哈,今天给大家带来的是大学课设必做的一个项目——通讯录管理系统!

纯C语言实现的通讯录系统,可键盘操作。也有大几百行代码~ 高能预警

界面截图如下:

我们就不整别的,直接上代码: 

/*****************************************************************************************/         /*程序采用双向循环链表结构,来满足目录可以满足自由上下过渡,遍历的需求.头结点用来表示当前通讯录的人数等信息  */
/*程序有添加,查询,浏览的功能,基本满足通讯录的要求.                                                         */
/*程序最大特点是主菜单,用户列表以及每个结点的操作属性菜单均采用上W-A-S-D才选择,回车确认                   */
/*程序核心功能有search()动态搜索函数,creat()创建函数,list()浏览函数构成                                   */
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<string.h>
//==============================================
#define LENTH 20
char path[20]="d:\\通讯录.txt";

 结构体属性

typedef struct person
{
    char  count[10];                //序号
    char name[LENTH];                   //姓名
    char number[LENTH];                       //电话号码
    struct person *prior;              //前驱指针
    struct person *next;           //后继指针
 
}node;
 
void control(int x,int p);
void list();
void faceopration(char a[][60],int w);
void opration(int x);
void controlmain(int x);

全局变量-头节点 

node *head=NULL;   

自检函数   标签至首

void check()                             
{
    node *p=head;
    do
    {
      
      p->count[1]=' ';
      p->count[2]=' ';
     // p->number[LENTH-2]=' ';
     // p->number[LENTH-3]=' ';
      if(p->next)
            p=p->next;
      
      
    }while(p->next && p->next!=head->next);
    if(head->next)
    {
     p=head->next;
     p->count[1]=16;
     p->count[2]=16;
    // p->number[LENTH-2]=17;
     //p->number[LENTH-3]=17;
    }
 
}

文件重写

void filesite()                                 
{
    int i=0;
    node *p=head;
 
    FILE *fp=fopen(path,"at");
    if(fp)
    {
        while(p->next && p->next!=head)
        {
            p=p->next;
            if(0==i) fprintf(fp,"%-4s    %-12s     %-12s\n","序号","姓名","电话号码");
            fprintf(fp,"%-8s      %-12s     %-12s \n",p->count,p->name,p->number);
            i++;
 
        }
    }
    else 
        printf("file  memory error! please check\n");
 
}

导航界面的两个函数

void face(char a[][80])
{
    int j=0;
    char x;
    int i=8,BC=8;   //BC为control实参
    while(x=getch())
    {
        BC=8;
        if(x=='\r')
        {
            while(a[BC][5]!=16)
                BC=BC+2;
            controlmain(BC);
        }
        if(x=='w' || x=='a' )
        {
 
            if(a[8][5]==16 )
            continue;
            a[i][5]=' ';
            a[i][6]=' ';
            a[i][59]=' ';
            a[i][58]=' ';
            i=i-2;
            a[i][5]=16;
            a[i][6]=16;
            a[i][59]=17;
            a[i][58]=17;
            j=0;
            system("cls");
            while(j<20)
                printf("%s\n",a+j++);
        }
        else if(x=='s' || x=='d')
        {
 
            if(a[14][5]==16)
             continue;
            
             a[i][5]=' ';
             a[i][6]=' ';
             a[i][59]=' ';
             a[i][58]=' ';
             i=i+2;
             a[i][5]=16;
             a[i][6]=16;
             a[i][59]=17;
             a[i][58]=17;
             j=0;
             system("cls");
             
             while(j<20)
                 printf("%s\n",a+j++);
        }
        else continue;
    }
}

主界面

void  picture()
{
 
    int i=0;
 
    char a[20][80]={"\0",  //0
    "\0&#
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值