C语言通讯录实例分享

本文实例为大家分享了C语言通讯录实例的具体代码,供大家参考,具体内容如下

main.c文件:

//
// main.c
// c语言通讯录
//
// Created by stevenchang on 9/6/15.
// Copyright (c) 2015 cz. All rights reserved.
// 

/**
 1.添加联系人
 2.删除联系人
 3.更新联系人
 4.显示所有联系人
 5.查找联系人
 6.退出系统
 */
#include <stdio.h> 

int main(int argc, const char * argv[]) {
  //程序的初始化
  initContacts(); 

  while(1) {
    int flag = 0;
    printf("*************C语言通讯录*************\n");
    printf("************1.添加用户***************\n");
    printf("************2.删除用户***************\n");
    printf("************3.更新用户***************\n");
    printf("************4.查找用户***************\n");
    printf("************5.显示所有用户************\n");
    printf("************6.退出系统***************\n");
    printf("************************************\n"); 

    printf("请输入1-6的功能编号 :\n");
    scanf("%d",&flag);
    //判断编号是否合法
    validateNum(flag, 1, 6); 

    switch (flag) {
      case 1:
        addContact();  //添加用户
        break;
      case 2:
        deleteContact();   //删除用户
        break;
      case 3:
        updateContact();    //更新用户
        break;
      case 4:
        searchContact();    //查找用户
        break;
      case 5:
        listContact();   //显示所有用户
        break;
      case 6:
        printf("系统正在退出!\n");
        printf("成功退出系统!\n");
        return 0;
        break;
      default:
        break;
    } 

  }
  return 0;
} 

MyFile.c文件:

//
// MyFile.c
// c语言通讯录
//
// Created by stevenchang on 9/6/15.
// Copyright (c) 2015 cz. All rights reserved.
// 

#include "MyFile.h" 

//**************函数的实现**********************// 

/**
 * 添加联系人
 */
void addContact() {
  int flag = 0;
  printf("您选择的是添加联系人,请按操作进行!\n");
  printf("请输入用户姓名(*注意联系人姓名中间不能有空格):\n");
  scanf("%s",contacts[totalContactsCount].name);
  printf("请输入电话(*注意联系人电话中间不能有空格): \n");
  scanf("%s",contacts[totalContactsCount].tel);
  printf("是否确认添加!1:是  0:否\n");
  scanf("%d",&flag);
  if (flag) {
    //联系人个数加1
    totalContactsCount++; 

    //将联系人信息保存到文件中
    writeFile();
  }
  printf("已经放弃添加!\n");
  return ;
} 

/**
 * 删除联系人
 */
void deleteContact() {
  int no;
  printf("您选择的是删除联系人,请按操作进行!\n");
  printf("请输入要删除的编号:\n");
  scanf("%d",&no); 

  //判断输入的编号是否合法
  if (!validateNum(no, 1, totalContactsCount)) {
    printf("您输入的编号不合法!\n");
    return ;
  }
  //合法
  //如果删除的是最后一个元素
  if (no == totalContactsCount) {
    totalContactsCount--;
  } else {
    //如果删除的不是最后一个元素
    for (int i = no; i < totalContactsCount; i++) {
      contacts[no-1] = contacts[no];  //元素的移动和覆盖
    }
    totalContactsCount--;
  } 

  //同步文件
  writeFile();
} 

/**
 * 更新联系人
 */
void updateContact() {
  int no;
  char newName[NAMELENGTH];
  char newTel[TELLENGTH];
  printf("您选择的是更新联系人,请按操作进行!\n");
  printf("请输入要修改的联系人编号:\n");
  scanf("%d",&no); 

  //判断编号是否合法
  if (!validateNum(no, 1, totalContactsCount)) {
    return ;
  } 

  //合法
  printf("请重新输入用户名:\n");
  scanf("%s",newName);
  printf("请重新输入电话号码\n");
  scanf("%s",newTel); 

  strcpy(contacts[no-1].name, newName);
  strcpy(contacts[no-1].tel, newTel); 

  //写入文件
  writeFile();
} 

/**
 * 显示所有联系人
 */
void listContact() {
  printf("您选择的是显示所有联系人,联系人如下!\n"); 

  if (totalContactsCount > 0) {
    printf("序号\t姓名\t电话\n");
    for (int i = 0 ; i < totalContactsCount; i++) {
      printf("%d\t%s\t%s\n",i+1,contacts[i].name, contacts[i].tel);
    }
  } else {
    printf("联系人为空,请添加联系人!\n");
    return ;
  }
} 

/**
 * 查找联系人
 */
void searchContact() {
  printf("您选择的是查找联系人,请按操作进行!\n");
  char searchName[NAMELENGTH];
  printf("请输入要查找的联系人姓名:\n");
  scanf("%s",searchName);
  for (int i = 0 ; i < totalContactsCount; i++) {
    if (strcmp(searchName, contacts[i].name)==0) { //说明相同
      printf("联系人姓名为:%s,电话号码为:%s\n",contacts[i].name,contacts[i].tel);
      return ;
    }
    if (i == totalContactsCount-1) {
      printf("此联系人不存在!\n");
    }
  }
} 

/**
 * 通讯录的初始化
 */
void initContacts() {
  printf("通讯录正在初始化!\n");
  FILE *fp = fopen(filePath, "r");
  if (fp!=NULL) { //读取文件成功
    //读取联系人的个数
    fread(&totalContactsCount, sizeof(totalContactsCount), 1, fp);
    //读取每个联系人
    for (int i = 0; i < totalContactsCount; i++) {
      //读取联系人数据,到联系人数组中
      fread(&contacts[i], sizeof(Person), 1, fp);
    }
  } else {
    //读取文件失败
    //创建文件
    fp = fopen(filePath, "wb");
    //写入联系人的个数
    fwrite(&totalContactsCount, sizeof(totalContactsCount), 1, fp); 

    printf("通讯录文件创建成功!\n");
  } 

  //关闭文件指针
  fclose(fp);
  printf("通讯录初始化成功!\n");
} 

/**
 * 判断功能编号是否合法 1:合法  0:非法
 */
int validateNum(int num, int min, int max) {
  if (num < min || num > max) {
    printf("输入的功能编号不正确,请重新输入!\n");
    return 0;
  }
  return 1;
} 

/**
 *将联系人写入文件
 */
void writeFile() {
  //以二进制文件打开文件
  FILE *fp = fopen(filePath, "wb"); 

  if (fp != NULL) {
    //写入联系人个数
    fwrite(&totalContactsCount, sizeof(totalContactsCount), 1, fp);
    //写入每个联系人个数
    for (int i = 0; i < totalContactsCount; i++) {
      fwrite(&contacts[i], sizeof(Person), 1, fp);
    }
  } 

  fclose(fp);
  printf("文件更新成功\n");
} 

MyFile.h文件:

//
// MyFile.h
// c语言通讯录
//
// Created by stevenchang on 9/6/15.
// Copyright (c) 2015 cz. All rights reserved.
// 

#ifndef __c_______MyFile__
#define __c_______MyFile__ 

#include <stdio.h>
#include <string.h> 

#define N 100     //宏定义一个通讯录的容量
#define NAMELENGTH 22  //宏定义一个名字的长度
#define TELLENGTH 12   //宏定义一个电话号码的长度 

//********************函数的声明*********************//
void addContact();  //添加联系人
void deleteContact();  //删除联系人
void updateContact();  //更新联系人
void listContact();  //显示所有联系人
void searchContact();  //查找联系人
void initContacts();   //通讯录的初始化
int validateNum(int num, int min, int max);  //判断功能编号是否合法 1:合法  0:非法
void writeFile();  //将联系人写入文件 

typedef struct Person {  //定义一个结构体
  char name[NAMELENGTH];   //定义姓名数组
  char tel[TELLENGTH];   //定义结构体数组
} Person; 

//定义文件路径
char *filePath = "telData.data";
int totalContactsCount = 0;
Person contacts[N];  //定义Person结构体数组 

#endif /* defined(__c_______MyFile__) */ 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言通讯录管理系统完整版

    C语言实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计算字节//

  • C语言使用结构体实现简单通讯录

    C语言用结构体实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 代码实现: 头文件: #ifndef __HEAD_H__ ////防止头文件被多次调用 #define __HEAD_H__ #include<stdio.h> #include<string.h> #in

  • 使用C语言打造通讯录管理系统和教学安排系统的代码示例

    通讯录管理系统 实现了通讯录的录入信息.保存信息.插入.删除.排序.查找.单个显示等功能.. 完整的代码如下: #include <stdio.h> #include <malloc.h> //得到指向大小为Size的内存区域的首字节的指针// #include <string.h> #include <stdlib.h> //标准库函数// #define NULL 0 #define LEN sizeof(struct address_list) //计

  • C语言实现通讯录功能

    本文实例为大家分享了C语言实现通讯录功能的具体代码,供大家参考,具体内容如下 先定义头文件 #ifndef __CONTACT_H__ #define __CONTACT_H__ #define NAME_LEN 10 #define SEX_LEN 6 #define TELE_LEN 12 #define ADDR_LEN 20 #define MAX_PEO 1000 typedef struct PEO { char name[NAME_LEN]; int age; char sex[S

  • C语言通讯录管理系统课程设计

    本文实例为大家分享了C语言通讯录管理系统课程设计,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <windows.h> struct Sign{ char name[8]; char sex[4]; char birthday[12]; char phone[11]; char postcode[7]; char addr[30]; struct Sign *next; }pe; char Ph

  • C语言实现一个通讯录

    实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6.  清空所有联系人 7. 以名字排序所有联系人 没有开辟动态内存的方法: 头文件:test.h #ifndef __CONTACT #define __CONTACT #define _CRT_SECURE_NO_WARNINGS 1 #include<

  • 用C语言实现简易通讯录

    C语言实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名.性别.年龄.电话.住址 **提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人** 思路分析: 首先我们可以分三个模块来解决这个问题,第一个模块我们需要一个头文件,这个头文件里可以包含一些相应信息,当实现文件和测试文件包含自己定义的头文件时便可以获得一些相关的信息.所以头文件里

  • C语言实现简单的通讯录

    用C语言写了一个简单的通讯录,说简单一是功能简单,二是也没有加读写文件操作,只是作为链表操作的一个练习,希望能给这方面的新手一此引导和帮助. 代码: /* 转贴请注明出处 */ /* 作者:小浦原(ID:blueboy82006) */ /* http://blog.csdn.net/blueboy82006 */ #include <stdio.h> #include <stdlib.h> #include<string.h> #include<ctype.h&

  • C语言实现通讯录系统

    C语言通讯录系统实现,供大家参考,具体内容如下 需求分析: 利用文件读,写的方法 实现增加通讯录联系人信息 实现删除通讯录联系人信息 实现查找通讯录联系人信息 实现修改通讯录联系人信息 实现查看现有通讯录联系人信息 代码实现: // main.c // C语言通讯录实现 // // Created by Brisinga on 15/10/14. // Copyright © 2015年 yan. All rights reserved. // #include <stdio.h> #incl

  • C语言基于哈希表实现通讯录

    本文为大家分享了C语言基于哈希表实现通讯录的具体代码,供大家参考,具体内容如下 1.需求分析 本演示程序用C语言编写,完成哈希表的生成,电话号码的插入.以及查找等功能. (1)按提示输入相应的联系人的相关资料: (2)以相应的输出形式输出所存储的的联系人的资料: (3)程序可以达到建立.添加.查找.打印的功能: (4)程序可以判断用户输入的非法数据并引导正确的输入. 2.概要设计 存储电话号码的记录时,若在存储位置和其关键字之间建立某种确定的对应关系使得每个关键字和存储结构中一个唯一的存储位置相

  • 利用C语言结构体实现通讯录

    本文实例为大家分享了C语言结构体实现通讯录的具体代码,供大家参考,具体内容如下 用来存储1000个人的信息的通讯录,每个人的信息包括: 姓名.性别.年龄.电话.住址 程序如下: #include<stdio.h> #include<string.h> #include<stdlib.h> struct People { char name[20]; char sex[5]; int age; char tel[15]; char addr[50]; }; //定义人的信

随机推荐