加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

C语言通讯录实例分享

发布时间:2020-12-15 01:00:01 所属栏目:C语言 来源:网络整理
导读:本文实例为大家分享了C语言通讯录实例的具体代码,供大家参考,具体内容如下 main.c文件: // // main.c // c语言通讯录 // // Created by stevenchang on 9/6/15. // Copyright (c) 2015 cz. All rights reserved. // /** 1.添加联系人 2.删除联系人 3.更新

本文实例为大家分享了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,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,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("%dt%st%sn",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,电话号码为:%sn",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),fp); 
    //读取每个联系人 
    for (int i = 0; i < totalContactsCount; i++) { 
      //读取联系人数据,到联系人数组中 
      fread(&contacts[i],sizeof(Person),fp); 
    } 
  } else { 
    //读取文件失败 
    //创建文件 
    fp = fopen(filePath,"wb"); 
    //写入联系人的个数 
    fwrite(&totalContactsCount,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,fp); 
    //写入每个联系人个数 
    for (int i = 0; i < totalContactsCount; i++) { 
      fwrite(&contacts[i],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 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__) */ 

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

您可能感兴趣的文章:

  • C语言通讯录管理系统课程设计
  • C语言通讯录管理系统完整版
  • C语言实现通讯录功能
  • C语言使用结构体实现简单通讯录
  • 用C语言实现简易通讯录
  • C语言实现一个通讯录
  • C语言实现通讯录系统
  • C语言实现简单的通讯录
  • 使用C语言打造通讯录管理系统和教学安排系统的代码示例
  • C语言基于哈希表实现通讯录

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读