1. 程式人生 > >No.24 我與程式碼的日常:C語言實現簡易通訊錄

No.24 我與程式碼的日常:C語言實現簡易通訊錄

#define SIZE 1000
#define _CRT_SECURE_NO_WARNINGS 1

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

typedef struct PersonInfo{
	char name[1024];
	char phone[1024];
} PersonInfo;

typedef struct AddrBook{
	PersonInfo person_info[SIZE];
	int size;
}AddrBook;

AddrBook g_addr_book;

enum{
	EXIT =
0, ADD, DEL, MODIFY, FIND, PRINT, CLEAR, }; void Init() { //初始化通訊錄 int i = 0 ; g_addr_book.size = 0 ; for(i=0; i<SIZE; i++) { strcpy(g_addr_book.person_info[i].name , " ") ; strcpy(g_addr_book.person_info[i].phone , " ") ; } } void AddPersonInfo() { //先判斷通訊錄此時是否已滿,若滿,則返回錯誤資訊 if(g_addr_book.
size >= SIZE) { printf("通訊錄已滿,新增失敗!\n") ; } //若通訊錄沒滿,則提示使用者輸入資訊進行新增操作 printf("\n------新增一個新使用者------\n") ; printf("請輸入使用者名稱:") ; scanf("%s", g_addr_book.person_info[g_addr_book.size].name) ; printf("請輸入電話號碼:") ; scanf("%s", g_addr_book.person_info[g_addr_book.size].phone) ; g_addr_book.
size ++ ; printf("插入成功!\n") ; return ; } int Menu() { int choice = 0; printf("\t***********************************************\n"); printf("\t* \t \t *\n"); printf("\t* \t 歡迎使用通訊錄系統 *\n"); printf("\t* \t \t *\n"); printf("\t*\t\t 1.新增 2.刪除 * \n"); printf("\t*\t\t 3.修改 4.查詢 * \n"); printf("\t*\t\t 5.顯示 6.清除 * \n"); printf("\t*\t\t 0.退出 * \n"); printf("\t* \t *\n"); printf("\t* \t 作者:Romeo *\n"); printf("\t* \t \t *\n"); printf("\t* \t \t *\n"); printf("\t***********************************************\n"); printf("\n請輸入相應的選擇:"); scanf("%d", &choice); return choice; } void PrintPersonInfo() { //列印所有使用者資訊 int i = 0 ; printf("------列印所有使用者資訊------\n") ; for(i=0; i<g_addr_book.size; i++) { printf("[%d] %s %s\n", i, g_addr_book.person_info[i].name, g_addr_book.person_info[i].phone) ; } printf("列印完成。共列印了%d條記錄!\n", g_addr_book.size) ; printf("\n") ; } void DelPersonInfo() { //按照使用者編號來刪除 int num = 0 ; printf("------刪除指定記錄------\n") ; printf("請輸入欲刪除的編號:") ; scanf("%d", &num) ; //判斷輸入的編號是否合法 if(num < 0 || num >= g_addr_book.size) { printf("輸入的編號不合法,刪除失敗!\n") ; return ; } //1.若要刪除最後一個資訊,則直接 size--; //2.若要刪除中間某個資訊,則把最後一個資訊覆蓋到要刪除的位置,再size--; if(num == g_addr_book.size - 1) { g_addr_book.size -- ; } else { strcpy(g_addr_book.person_info[num].name, g_addr_book.person_info[g_addr_book.size - 1].name) ; strcpy(g_addr_book.person_info[num].phone, g_addr_book.person_info[g_addr_book.size - 1].phone) ; g_addr_book.size -- ; } printf("刪除成功!\n") ; } void ModPersonInfo() { //按編號來修改某條使用者的資訊 int num = 0 ; printf("------修改某條記錄------\n") ; printf("請輸入欲修改的編號:") ; scanf("%d", &num) ; //要先判斷輸入的編號是否合法 if(num < 0 || num >= g_addr_book.size) { printf("輸入的編號不合法,修改失敗!\n") ; return ; } printf("請輸入新使用者名稱:") ; scanf("%s", g_addr_book.person_info[num].name) ; printf("請輸入新電話號碼:") ; scanf("%s", g_addr_book.person_info[num].phone) ; printf("修改成功!\n") ; } void FindPersonInfo() { //根據使用者名稱查詢 char name[1024] = {0} ; int count = 0 ;//計數器 int i = 0 ; printf("------查詢電話號碼------\n") ; printf("請輸入要查詢的姓名:") ; scanf("%s", name) ; for(i=0; i<g_addr_book.size; i++) { if(strcmp(name,g_addr_book.person_info[i].name) == 0) { printf("找到1條結果!電話號碼為:%s\n",g_addr_book.person_info[i].phone) ; count ++ ; } } if(0 == count) { printf("未找到記錄!請檢查使用者名稱是否合法!\n") ; } else { printf("查詢成功,共有%d條記錄!\n", count) ; } } void ClearPersonInfo() { char input[1024] = {0} ; printf("------清除所有使用者資訊------\n") ; printf("您真的要刪除所有使用者資訊嗎?(Yes/No)\n") ; scanf("%s", input) ; if(strcmp(input,"Yes") != 0) { printf("您已取消操作!\n") ; return ; } g_addr_book.size = 0 ; printf("清空成功!\n") ; } int main() { Init(); //初始化通訊錄 while(1) { int choice = Menu(); switch(choice) { case ADD : AddPersonInfo(); break; case DEL : DelPersonInfo(); break; case MODIFY : ModPersonInfo(); break; case FIND : FindPersonInfo(); break; case PRINT : PrintPersonInfo(); break; case CLEAR : ClearPersonInfo();![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20181113203031272.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0dWR5aGFyZGk=,size_16,color_FFFFFF,t_70) break; case EXIT : printf("Good-Bye!\n"); return 0; default : break; } } return 0; }

在這裡插入圖片描述