1. 程式人生 > >2、C語言實現通訊錄

2、C語言實現通訊錄

scan *** define 初始化 退出 序號 test delete ddr

main函數入口:

//test.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "address.h"

//顯示界面
void Interface_Display()            
{
    printf("**********通訊錄**********\n");
    printf("****1.添加聯系人信息******\n");
    printf("****2.刪除指定聯系人信息**\n");
    printf("****3.查找指定聯系人信息**\n
"); printf("****4.修改指定聯系人信息**\n"); printf("****5.顯示所有聯系人信息**\n"); printf("****6.清空所有聯系人******\n"); printf("****7.按名字排序所有聯系人\n"); printf("****8.退出通訊錄**********\n"); printf("\n"); printf("請輸入要操作的序號:\n"); } int main() { Con pcon; int choice=1; Init(
&pcon); while (choice) { Interface_Display(); printf("請選擇操作序號:>"); scanf("%d", &choice); switch (choice) { case 1: Insert(&pcon); //插入 system("cls"); //清屏 break
; case 2: Delete(&pcon); //刪除 system("cls"); break; case 3: Search(&pcon); //查找 break; case 4: Change(&pcon); //修改 system("cls"); break; case 5: Show(&pcon); //打印 break; case 6: Clear(&pcon); break; //清除 case 7: Sort(&pcon); // 以姓名排序 break; case 8: exit(0); //退出 default: printf("輸入有誤請重新輸入!\n"); break; } printf("\n"); } return 0; }
//address.h
#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_SIZE  1000

typedef struct pCON     
{
    char name[20];   //姓名
    char sex[2];      //性別
    char age[3];         //年齡
    char tele[15];    //電話
    char address[25] ;   //地址
}pCon;


typedef struct CONTACT
{
     struct pCON data[MAX_SIZE];    //存儲最大容量
     int  size;           //當前存儲容量
}Con; 

void Init(Con* pcon);  //初始化
void Insert(Con* pcon);  //插入
void Delete(Con* pcon);  //刪除
void Search(Con* pcon);  //查找
void Change(Con* pcon);   //更改
void Show(Con* pcon);  //打印
void Clear(Con* pcon);   //清除
void Sort(Con* pcon); //以姓名排序
//address.c
#include"address.h"
void Init(Con* pcon)  //初始化
{
    if (pcon == NULL)
    {
        printf("非法輸入!\n");
        return;
    }
    pcon->size = 0;
}

int find(Con *pcon, char *name)   //根據姓名查找位置
{
    int i = 0;
    for (i = 0; i < pcon->size; i++)
    {
        if (strcmp(name, pcon->data[i].name)==0)
        {
            return i;
        }
    }
    return -1;
}

void Insert(Con *pcon)   //插入   
{
    if (pcon->size == MAX_SIZE)
    {
        printf("通訊錄已經滿了!\n");
        return;
    }
    printf("請輸入名字:");
    scanf("%s", (pcon->data[pcon->size]).name);
    printf("請輸入性別:");
    scanf("%s", (pcon->data[pcon->size]).sex);
    printf("請輸入年齡:");
    scanf("%s", (pcon->data[pcon->size]).age);
    printf("請輸入電話:");
    scanf("%s", (pcon->data[pcon->size]).tele);
    printf("請輸入地址:");
    scanf("%s", (pcon->data[pcon->size]).address);
    pcon->size++;
}

void Delete(Con *pcon)   //刪除
{
    char name[20];
    int ret = 0;
    printf("請輸入要刪除人的名字:");
    scanf("%s", name);
    ret = find(pcon, name);
    if (ret!=-1)
    {
        int i = 0;  
        for (i = ret; i <  pcon->size-1; i++)
            {
                pcon->data[ret] = pcon->data[ret + 1];
            }
            pcon->size--;
            printf("已刪除該聯系人\n");
    }
    else
    {
        printf("此人不存在,刪除失敗!\n");
    }
}

void Search(Con *pcon)    //查找信息
{
    char name[20];
    int ret = 0;
    printf("請輸入聯系人姓名\n");
    scanf("%s", name);
    ret = find(pcon, name);
    if (ret!=-1)
    {
        printf("姓名:%s  性別: %s  年齡 :%s  電話:%s  地址: %s \n",
                pcon->data[ret].name, pcon->data[ret].sex,
                pcon->data[ret].age, pcon->data[ret].tele,
                pcon->data[ret].address );
    }
    else
    {
        printf("沒有找到\n");
    }

}

void Change(Con* pcon)    //修改
{
    char name[20];
    int ret = 0;
    printf("請輸入聯系人姓名:\n");
    scanf("%s", name);
    ret = find(pcon, name);
    if (ret!=-1)
    {
        printf("請輸入修改後名字:");
        scanf("%s", (pcon->data[ret]).name);
        printf("請輸入修改後性別:");
        scanf("%s", (pcon->data[ret]).sex);
        printf("請輸入修改後年齡:");
        scanf("%s", (pcon->data[ret]).age);
        printf("請輸入修改後電話:");
        scanf("%s", (pcon->data[ret]).tele);
        printf("請輸入修改後地址:");
        scanf("%s", (pcon->data[ret]).address);
        printf("已經修改\n");
    }
}

void Show(Con * pcon)   //顯示
{
    if (pcon->size == 0)
    {
        printf("通訊錄為空!\n");
    }
    int i = 0;
    for (i = 0; i <  pcon->size; i++)
    {
        printf("姓名:%s  性別: %s  年齡 :%s  電話:%s  地址: %s \n",
            pcon->data[i].name, pcon->data[i].sex,
            pcon->data[i].age, pcon->data[i].tele,
            pcon->data[i].address
            );
    }
}

void Clear(Con *pcon)    //清除
{
    pcon->size = 0;
}

void Sort(Con *pcon)   //以名字排序
{
    int i = 0;
    int j = 0;
    for (i = 0; i < pcon->size-1; i++)
    {
        for (j = 0; j < pcon->size - i - 1; j++)
        {
            if (strcmp(pcon->data[j].name, pcon->data[j + 1].name)>0)
            {
                pCon tmp;
                tmp = pcon->data[j];
                pcon->data[j] = pcon->data[j + 1];
                pcon->data[j + 1] = tmp;
            }
        }
    }
}

2、C語言實現通訊錄