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__) */ 

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

不要轻言放弃,否则对不起自己

C语言通讯录实例分享

相关文章:

你感兴趣的文章:

标签云: