實現一個通信錄;
通信錄能夠用來存儲1000我的的信息,每一個人的信息包括:
姓名、性別、年齡、電話、住址ide
實現功能:
1. 添加聯繫人信息
2. 刪除指定聯繫人信息
3. 查找指定聯繫人信息
4. 修改指定聯繫人信息
5. 顯示全部聯繫人信息
6. 清空全部聯繫人
7. 以名字排序全部聯繫人函數
程序說明:blog
分模塊實現
Phonelist.h 頭文件——存放函數聲明
fun.c ——函數實現
test.c——主函數排序
!Phonelist.h!字符串
//Phonelist.h #pragma once #ifndef __ARROPT_H__ #define __ARROPT_H__ typedef struct PHONE { char Name[10]; int Age; char Sex[3]; //男/女 char Tele[13]; char Address[20]; //struct PHONE *next; }PHONE,*Phone; void ADD(PHONE *p);//添加 int DEL(Phone p, char*);//刪除 void SEEK(Phone p, char *);//查找 void REVISE(Phone p, char *);//修改 void SHOW(Phone p);//顯示 void FREE_ALL(Phone p);//清空 void SORT(Phone p, const size_t );//用快排排序必須將結構體第一個成員設爲 Name,才能夠實現 void menu(); #endif //__ARROPT_H__
fun.c ——函數實現get
//fun.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include"Phonelist.h" #define MAX 1000 //通信錄最大存儲人數 //*****************添加************** void ADD(Phone p) { printf("請輸入要錄入聯繫人的姓名\n"); scanf_s("%s", p->Name, 10);//用scanf_s 函數實現字符串的輸入 printf("請輸入要錄入聯繫人的性別(男/女)\n"); scanf_s("%s", p->Sex,3); printf("請輸入要錄入聯繫人的年齡\n"); scanf_s("%d", &p->Age); printf("請輸入要錄入聯繫人的電話\n"); scanf_s("%s",p->Tele, 13); printf("請輸入要錄入聯繫人的住址\n"); scanf_s("%s", p->Address, 20); } //****************刪除************************** int DEL(Phone p,char *name) { int i = 0; int tmp = 0; Phone j = p; while (i++ < MAX) { if (strcmp(j->Name, name) == 0) { j->Age = 0; tmp = 1; break; } j++; } if (tmp == 1) { printf("%s信息刪除成功!\n", name); return 1; } else { printf("%s信息刪除失敗,無此人!\n", name); return 0; } } //*********查找************* void show_one(Phone j) { printf("Name: %s ", j->Name); printf(" Age: %d ", j->Age); printf(" Tele: %s ", j->Tele); printf(" Sex: %s ", j->Sex); printf(" Address: %s \n", j->Address); } void SEEK(Phone p, char *name) { int i = 0; int tmp = 0; Phone j = p; while (i++ < MAX) { if (strcmp(j->Name, name) == 0) { tmp = 1; break; } j++; } if (tmp == 1) { printf("%s信息存在!\n", name); show_one(j); } else printf("%s信息查找失敗,無此人!\n", name); } //***********修改********** void REVISE(Phone p, char *name) { int i = 0; int tmp = 0; Phone j = p; while (i++ < MAX) { if (strcmp(j->Name, name) == 0) { ADD(j); tmp = 1; break; } j++; } if (tmp == 1) printf("%s信息修改爲功!\n", name); else printf("%s信息修改失敗,無此人!\n", name); } //************顯示全部聯繫人******** void SHOW(Phone p) { Phone j = p; int i = 0; int count = 0; while (i++ < MAX) { if (j->Age != 0) { show_one(j); count++; } j++; } if(0==count) printf("通信錄裏尚未人,請選擇1,添加您的好友\n"); } //************清空**************** void FREE_ALL(Phone p) { Phone j = p; int i = 0; while (i < MAX&&j->Age != 0) { j->Age = 0; j++; } printf("通信錄已清空!\n"); } //*************以名字排序全部聯繫人******** void SORT(Phone p,const size_t num) { qsort(p, num, sizeof(*p), strcmp);//用快排排序必須將結構體第一個成員設爲 Name,才能夠實現 } //***************菜單****************** void menu() { printf("***********************************************\n"); printf("* MENU *\n"); printf("***********************************************\n"); printf("* 1.添加聯繫人信息 *\n"); printf("* 2.刪除指定聯繫人信息 *\n"); printf("* 3.查找指定聯繫人信息 *\n"); printf("* 4.修改指定聯繫人信息 *\n"); printf("* 5.顯示全部聯繫人信息 *\n"); printf("* 6.清空全部聯繫人 *\n"); printf("* 7.以名字排序全部聯繫人 *\n"); printf("* 0.退出 *\n"); printf("***********************************************\n"); printf("***********************************************\n"); printf("請輸入選擇序號:->"); }
test.c——主函數string
#include<stdio.h> #include<stdlib.h> #include<string.h> #include"Phonelist.h" #define MAX 1000 PHONE PEO[MAX] = {0}; int main() { int choose = 1; int i = 0; int ret = 0; while (choose) { menu(); scanf_s("%d", &choose); char name[10]; if (choose >= 0 && choose < 8) { switch (choose) { i = 0; case 1: if (PEO[i].Age == 0 && i < MAX)//設:若Age信息爲"0"則對應信息爲空 ADD(&PEO[i++]); break; case 2: printf("請輸入要刪除學生的名字\n"); scanf_s("%s", name, 10); ret = DEL(PEO, name); if (ret == 1) i--; break; case 3: printf("請輸入要查找學生的名字\n"); scanf_s("%s", name, 10); SEEK(PEO, name); break; case 4: printf("請輸入要修改學生的名字\n"); scanf_s("%s", name, 10); REVISE(PEO, name); break; case 5: SHOW(PEO); break; case 6: FREE_ALL(PEO); break; case 7: SORT(PEO, i - 1); printf("排序結果: \n"); SHOW(PEO); break; default: break; } } } system("pause"); return 0; }