1. 程式人生 > 程式設計 >C語言設計簡易電話簿

C語言設計簡易電話簿

本文例項為大家分享了C語言實現電話簿的具體程式碼,供大家參考,具體內容如下

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
#include <getch.h>

typedef struct Contact{ //定義聯絡人結構體
 char name[20]; //姓名
 char sex; //性別
 char tel[12]; //電話
}Contact;

Contact contacts[100];

void show_contact(Contact* conp){ //顯示聯絡人資訊
 printf("姓名:%s\t性別:%s\t電話:%s\n",conp->name,'w'==conp->sex?"女":"男",conp->tel); 
}

void scan_contact(Contact* conp){ //輸入聯絡人資訊
 printf("請輸入姓名,性別(w:女m:男),電話:");
 scanf("%s%s%s",&conp->sex,conp->tel);
}

void add_contacts(void){ //新增聯絡人
 for(int i=0;i<100;i++){
 if(0 == contacts[i].sex){
  scan_contact(contacts+i);
  printf("新增成功!\n");
  return;
 }
 } 
 printf("新增人已滿\n");
}

void del_contacts(void){ //刪除聯絡人
 char str[20] = {};
 printf("請輸入刪除人姓名:\n"); 
 scanf("%s",str);
 for(int i=0;i<100;i++){
 if(0 == strcmp(str,contacts[i].name)){
  contacts[i].sex = 0;
  printf("刪除聯絡人成功\n");
  return;
 } 
 }
 printf("聯絡人不存在\n");
}
void find_contacts(void){ //查詢聯絡人
 char str[20] = {};
 printf("請輸入要查詢的手機號\n");
 scanf("%s",str);
 getchar();
 for(int i=0;i<100;i++){
 if(strstr(contacts[i].tel,str)){
  show_contact(contacts+i);
 } 
 }
 printf("請輸入任意鍵繼續...\n");
 getch();
}

void list_contacts(void){ //顯示聯絡人資訊
 for(int i=0;i<100;i++){
 if(contacts[i].sex){
  show_contact(contacts+i);
 } 
 }
 printf("請輸入任意鍵繼續...\n");
 getch();
 
}
 
void change_contacts(void){ //修改聯絡人資訊
 char str[20] = {};
 printf("請輸入要修改的聯絡人姓名:\n"); 
 scanf("%s",contacts[i].name)){
  show_contact(contacts+i);
  scan_contact(contacts+i);
  return; 
 } 
 }
 printf("沒有找到要修改的聯絡人");
}
char menu(void){
 system("clear");
 printf("歡迎使用電話蒲\n");
 printf("--------------\n");
 printf("1、新增聯絡人 \n");
 printf("2、刪除聯絡人\n");
 printf("3、修改聯絡人資訊\n");
 printf("4、查詢聯絡人\n");
 printf("5、顯示所有聯絡人\n");
 printf("--------------\n");
 printf("請輸入指令:");
 char cmd = getch();
 printf("%c\n",cmd);
 return cmd;
}

int main(){
 while(true){
 switch(menu()){
  case '1':add_contacts(); break; 
  case '2':del_contacts(); break; 
  case '3':change_contacts(); break; 
  case '4':find_contacts(); break; 
  case '5':list_contacts(); break; 
  //case '6':exit(); break;
  default: printf("cmd error!\n");
 }
 } 
}
//------------------------------------總結------------------------------------------
//新增與刪除聯絡人的突破口:可以選擇性別的返回值來實現新增與刪除。
//查詢聯絡人 strstr()函式的作用:
//strstr(str1,str2) 函式用於判斷字串str2是否是str1的子串。如果是,則該函式返回str2在str1中首次出現的地址;否則,返回NULL。
//因此查詢聯絡人時便可只打出電話的一部分就能查詢到聯絡人。

//該程式的弊端:不能每次開啟就有之前儲存的聯絡人。
//優化: 可以將聯絡人儲存到檔案中,並且在程式開啟的時候開啟檔案。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。