首页 > 编程 > C++ > 正文

C语言实现通讯录系统

2020-05-23 13:32:26
字体:
来源:转载
供稿:网友

C语言通讯录系统实现,供大家参考,具体内容如下

需求分析:

利用文件读,写的方法

实现增加通讯录联系人信息

实现删除通讯录联系人信息

实现查找通讯录联系人信息

实现修改通讯录联系人信息

实现查看现有通讯录联系人信息

代码实现:

// main.c // C语言通讯录实现 // // Created by Brisinga on 15/10/14. // Copyright © 2015年 yan. All rights reserved. //  #include <stdio.h> #include<string.h> #define LEN 10 #define NAMELEN 22 #define TELLEN 12  //*************结构体变量定义**************** //定义联系人的个数 int contactCount = 0; //定义结构体 typedef struct{    //定义联系人姓名   char name[NAMELEN];   //定义联系人电话   char tel[TELLEN];  }Person;  //初始化联系人数组 Person contact[LEN]; //定义文件名 charchar *path = "a.data";  //接收用户输入的编号 int no; //**************函数声明********************  //初始化声明 void init(); //校验声明 int isValid(int n,int min,int max); //添加联系人 void addContact(); //删除联系人 void deleteContact(); //修改联系人 void updateContact(); //查看所有联系人 void doList(); //搜索联系人 void searchContact(); //退出系统 void quit(); //联系人写入文件 void writeFile(); //***************************************   int main(int argc, const charchar * argv[]) {        //通讯录初始化   init();   printf("通讯录初始化成功!/n");            while (1) {          //定义界面   printf("**********************************/n");   printf("***********欢迎使用通讯录***********/n");   printf("***********1.添加联系人*************/n");   printf("***********2.删除联系人*************/n");   printf("***********3.修改联系人*************/n");   printf("***********4.查看所有联系人**********/n");   printf("***********5.搜索联系人*************/n");   printf("***********6.退出系统***************/n");   printf("**********************************/n");               //提示用户输入编号     printf("请输入要进行操作的编号:/n");     scanf("%d",&no);     //判断输入是否合法     isValid(no, 1, 6);     //判断用户的操作     switch (no) {       case 1:         //添加联系人         addContact();         break;       case 2:         //删除联系人         deleteContact();         break;       case 3:         //更新联系人         updateContact();         break;       case 4:         //查看联系人         doList();         break;       case 5:         //搜索联系人         searchContact();         break;       case 6:         //退出         quit();         return 0;                default:         break;     }        }   return 0; }  //通讯录初始化 void init(){    //定义文件指针   FILEFILE *fp = fopen(path, "r");   //判断通讯录是否存在   if (fp!=NULL) {   //如果存在   //1.读取联系人个数     fread(&contactCount, sizeof(contactCount), 1, fp);   //2.读取每一个联系人nts     for (int i=0; i<contactCount; i++) {       fread(&contact[i], sizeof(Person), 1, fp);     }        }else{      //如果不存在   //创建通讯录     fp = fopen(path, "wb");   //写入当前联系人的个数     fwrite(&contactCount, sizeof(contactCount), 1, fp);    }   fclose(fp);  }  //校验输入是否合法 int isValid(int n,int min,int max){      //如果输入的编号大于min小于max,则返回0   if (n>=min&&n<=max) {     return 0;   }      //否则返回1   printf("输入非法!/n");   return 1;  }  //添加联系人 void addContact(){      //提示用户输入要添加联系人的姓名   printf("请输入要添加的联系人姓名:*注意姓名之间不能有空格/n");   //接收联系人姓名   scanf("%s",contact[contactCount].name);   //提示用户输入要添加联系任的电话   printf("请输入要添加联系人的电话: *注意电话号码之间不能有空格/n");   //接收联系人电话   scanf("%s",contact[contactCount].tel);   //询问是否确定添加   printf("确定要添加么?1.确定 0.取消/n");   scanf("%d",&no);   if (no) {     contactCount++;     //写入文件     writeFile();     printf("添加成功!/n");   }   }  //删除联系人 void deleteContact(){      //显示联系人   doList();   int flag;   //提示用户输入要删除联系人的编号   printf("请输入要删除联系人的编号:/n");   //接收用户输入的编号   scanf("%d",&no);   //判断编号是否合法   if(!isValid(no, 1, contactCount)){   //编号合法     printf("确定要删除么?删除后将无法恢复!1.确定 0.取消/n");     scanf("%d",&flag);     if (flag) {       //如果要删除的联系人在末尾     if (no==contactCount) {       //则contactCount-1       contactCount--;     }else{      //如果要删除的联系人不在末尾   //移动数组元素       for (int i=no-1; i<contactCount-1; i++) {         contact[i]=contact[i+1];       }            }   //contactCount--       contactCount--;   //写文件     writeFile();     }      }else   //编号不合法,则退出     printf("编号不合法!/n");     return ;  }  //修改联系人 void updateContact(){      //显示联系人   doList();   //提示用户输入要修改联系人的编号   printf("请输入要修改的联系人的编号:/n");   //接收用户输入的编号   scanf("%d",&no);   //判断编号是否合法   int flag;   if (!isValid(no, 1, contactCount)) {     //提示用户输入新的的联系人的姓名       printf("请输入新的姓名:*注意:姓名之间不能有空格/n");      //接收用户输入的姓名       scanf("%s",contact[no-1].name);      //提示用户输入新的电话号码       printf("请输入新的电话号码:*注意:电话号码之间不能有空格/n");      //接收用户输入的电话号码       scanf("%s",contact[no-1].tel);           //询问用户确定修改么?     printf("确定要修改么?1.确定 0.取消/n");     scanf("%d",&flag);     if (flag) {            //写文件       writeFile();       printf("联系人修改成功!/n");     }else{          printf("编号不合法!!/n");       return ;          }      }     }  //查看所有联系人 void doList(){      printf("显示所有联系人:/n");   printf("编号/t姓名/t电话/n");   for (int i=0; i<contactCount; i++) {     printf("%d/t%s/t%s/n",i+1,contact[i].name,contact[i].tel);   }  }  //搜索联系人 void searchContact(){      int flag = 1;   //接收用户输入的姓名   char searchName[NAMELEN];   //接收用户输入的电话   char searchTel[TELLEN];   //询问用户搜索方式   printf("请输入查找的方式: 1.按姓名查找 2.按电话号码查找/n");   //接收用户的搜索方式   scanf("%d",&no);   if (no==1) {     //请用户输入要查找的姓名     printf("请输入要查找到姓名:/n");     scanf("%s",searchName);     for (int i=0; i<contactCount; i++) {       if (!strcmp(searchName,contact[i].name)) {         printf("您查找的联系人为:/n");         printf("%d/t%s/t%s/n",i+1,contact[i].name,contact[i].tel);         return ;       }else{                flag = 0;       }     }        }else if(no==2){          //请用户输入要查找的电话号码     printf("请输入要查找的电话号码:/n");     scanf("%s",searchTel);     for (int i=0; i<contactCount; i++) {       if (!strcmp(searchTel,contact[i].tel)) {         printf("您查找的联系人为:/n");         printf("%d/t%s/t%s/n",i+1,contact[i].name,contact[i].tel);         return ;       }else{                  flag = 0;       }     }         }else{     printf("非法输入!/n");     return ;   }   if (!flag) {     printf("很抱歉!小伙伴不在通讯录中!/n");   }          }  //退出系统 void quit(){      printf("系统正在退出.../n");   printf("系统已经退出!/n");     }  //联系人写入文件 void writeFile(){    //定义文件指针   FILEFILE *fp = fopen(path, "wb");   if (fp!=NULL) {     //写入联系人个数     fwrite(&contactCount, sizeof(contactCount), 1, fp);     //写入每个联系人     for (int i=0; i<contactCount; i++) {              fwrite(&contact[i], sizeof(Person),1, fp);     }        }   fclose(fp);  }

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表