diff --git a/Coding/Examples/16 结构&联合&枚举/02 Address_Book/AddressBook.c b/Coding/Examples/16 结构&联合&枚举/02 Address_Book/AddressBook.c deleted file mode 100644 index 605b694..0000000 --- a/Coding/Examples/16 结构&联合&枚举/02 Address_Book/AddressBook.c +++ /dev/null @@ -1,276 +0,0 @@ -#include -#include - -#define Max_SIZE 50 //ͨѶ¼ĴС - -typedef struct PersonInfo { - char name[100]; - char phone[100]; -}PersonInfo; - -typedef struct AddressBook { - PersonInfo all_address[Max_SIZE]; - int size; -}AddressBook; -//size ĺǣ -// all_address ±귶Χ [0,size) ڵԪ -// [size, 200) ûõ - -//ʼ -void init(AddressBook* address_book) { - - address_book->size = 0; - // magic number() - for (int i = 0; i < Max_SIZE; i++) { - strcpy(address_book->all_address->name, " "); - strcpy(address_book->all_address->phone, " "); - } - -} - -int Menu(void) { - - printf("======================\n"); - printf("*** 0.˳ ***\n"); - printf("*** 1.ϵ ***\n"); - printf("*** 2.ɾϵ ***\n"); - printf("*** 3.ϵ ***\n"); - printf("*** 4.޸ϵ ***\n"); - printf("*** 5.ӡϵ ***\n"); - printf("*** 6.ϵ ***\n"); - printf("*** 7.ϵ ***\n"); - printf("======================\n"); - - printf("ѡ"); - int choice; - scanf("%d", &choice); - - return choice; -} - -void AddPersonInfo(AddressBook* address_book) { - - printf("ϵ\n"); - - if (address_book->size >= Max_SIZE) { - printf("ͨѶ¼\n"); - return; - //Ȼ void Ҳǿ return - } - PersonInfo* info = &address_book->all_address[address_book->size]; - - printf("ϵ"); - scanf("%s", info->name); - printf("ϵ˵绰"); - scanf("%s", info->phone); - - address_book->size++; -} - -void DelPersonInfo(AddressBook* address_book) { - - //ɾķܶ࣬Ը绰ŵȵɾ - //ǾҸ˱Ƚϳõ ֵɾ - - char search_name[100] = { 0 }; - - printf("ɾϵ\n"); - printf("ϵ"); - scanf("%s", search_name); - - int name_exist = FindName(address_book, search_name); - - //ע FindName ֵ趨ҪɾԪ± 0»᷵ 0 - if (name_exist == -1) { - printf("ϵ˲ڣ\n"); - return; - } - - //ɾͬĵһ󣬼ѰҸ֣ҵˣظIJûҵ˳ѭ - //ͬȽϸӣ޸ģңȵȳ鷳 - //ƽʱͨѶ¼ѵὫͬ˵ıעдһ - //ԣҽɾʵһͬ˼·Ĭûظ - while (name_exist != -1) { - - // all_address һԪظֵҪɾԪأɾ - //ṹǿֱӸֵ - address_book->all_address[name_exist] = address_book->all_address[address_book->size - 1]; - address_book->size--; - name_exist = FindName(address_book, search_name); - } - - printf("ɾɹ\n"); - -} - -int FindName(AddressBook* address_book, char search_name[100]) { - - for (int i = 0; i < address_book->size; i++) { - //ҵ± - if (strcmp(address_book->all_address->name, search_name) == 0) { - return i; - } - } - //ûҵ -1 - return -1; -} - -void FindPersonInfo(AddressBook* address_book) { - - char search_name[100] = { 0 }; - - //˵ķʽҲֵܶ࣬ķ - printf("ϵ\n"); - printf(""); - scanf("%s", search_name); - - for (int i = 0; i < address_book->size; i++) { - PersonInfo* info = &address_book->all_address[i];// һ PersonInfo ͵ı򻯳򣬲Ȼʾ̫ - if (strcmp(info->name, search_name) == 0) { - printf("[%d] %s %s\n", i, info->name, info->phone); - } - } - - -} - -void ModifyPersonInfo(AddressBook* address_book) { - - char search_name[100] = { 0 }; - int isjump = 1; - - printf("ɾϵ\n"); - printf("ϵ"); - scanf("%s", search_name); - - int name_exist = FindName(address_book, search_name); - - if (name_exist == -1) { - printf("ϵ˲ڣ\n"); - return; - } - - //Żû - printf("µ 0 "); - scanf("%d", &isjump); - if (isjump) { - scanf("%s", address_book->all_address[name_exist].name); - } - printf("µĵ绰 0 "); - scanf("%d", &isjump); - if (isjump) { - scanf("%s", address_book->all_address[name_exist].phone); - } - - printf("³ɹ\n"); - -} - -void PrintPersonInfo(AddressBook* address_book) { - - PersonInfo* info; - - if (address_book->size == 0) { - printf("ǰûϵˣ\n"); - return; - } - - printf("ϵϢ£\n"); - - for (int i = 0; i < address_book->size; i++) { - info = &address_book->all_address[i]; - printf("[%2d]%4s %s\n", i, info->name, info->phone); - } -} - -void ClearPersonInfo(AddressBook* address_book) { - - //Ϣһ ΣյΪûȷһ - //ӦԼֻϻظãϵͳӦûȷϲֹһΣ - int is_continue = 0; - - printf("ϵˣȷ 0 : "); - scanf("%d", &is_continue); - if(is_continue == 0) { - // size Ϊ 0 ɣҲԽÿԪض - address_book->size = 0; - } - printf("ɣ\n"); -} - -void SortPersonInfo(AddressBook* address_book) { - - printf("ͨѶ¼\n"); - - for (int i = 0; i < address_book->size - 1; i++) { - for (int j = 0; j < address_book->size - 1 - i; j++) { - PersonInfo* info = &address_book->all_address[j]; - PersonInfo* info_next = &address_book->all_address[j + 1]; - //򵥵 strcmp 򣬲Ϊоǡδ塱ģ - //йɣٶԻֺᷢܶûйɡ - //ҲкܶѪĺ磺strcoll,wcsscoll,wcscmp ЩֻҪŪҲá - //õʵְ취Ⲣص㡣 - if (strcmp(info->name, info_next) > 0) { - PersonInfo tmp; - tmp = *info; - *info = *info_next; - *info_next = tmp; - } - } - } - printf("ɹ\n"); -} - -int main(int argc, char* argv[]) { - - AddressBook address_book; - - //һָ - typedef void (*Func)(AddressBook*); - Func func_table[] = { - NULL, - AddPersonInfo, - DelPersonInfo, - FindPersonInfo, - ModifyPersonInfo, - PrintPersonInfo, - ClearPersonInfo, - SortPersonInfo, - }; - //Ҳô - //һͣ - //typedef void (Func)(AddressBook*); - //õָ飬ͱָͣӦü * - //Func* func_table[] = { - //NULL, - //AddPersonInfo, - //DelPersonInfo, - //FindPersonInfo, - //ModifyPersonInfo, - //PrintPersonInfo, - //ClearPersonInfo, - //SortPersonInfo, - //}; - - init(&address_book); - - - while (1) { - int choice = Menu(); - - if (choice < 0 || choice > 7) { - printf("\n"); - continue; - } - - if (choice == 0) { - printf("ټ\n"); - break; - } - - func_table[choice](&address_book); - - } - - return 0; -} diff --git a/Coding/Examples/16 结构&联合&枚举/02 Address_Book/readme.md b/Coding/Examples/16 结构&联合&枚举/02 Address_Book/readme.md deleted file mode 100644 index c713ba5..0000000 --- a/Coding/Examples/16 结构&联合&枚举/02 Address_Book/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -## 简易版通讯录 - -第一版通讯录的实现是定义一个结构体里面包含一个数组。技巧不高,其实就是结构体的一个应用 - -后面可能会优化,可能不会。。 diff --git a/Coding/readme.md b/Coding/readme.md index b510f8b..badb5ad 100644 --- a/Coding/readme.md +++ b/Coding/readme.md @@ -3,9 +3,9 @@
### 导航 -#### C 慕课 -#### C 入门到精通 -#### C 进阶 +#### C 慕课 +#### C 入门到精通 +#### C 进阶