通讯录的制作
前言:
今天我們制作一個
c語言版簡單的通訊錄(最多有一千個聯系人):
主要有一下功能:
1.增加聯系人.
2.刪除聯系人.
3.查找聯系人.
4.修改聯系人.
5.排序聯系人
6. 顯示聯系人信息
目錄:
一、創建目錄:
二、主函數
三、結構體定義
四、結構體初始化
五、查找姓名
六、函數功能更部分
七、完整代碼
一、創建目錄
為了可以讓用戶可以明顯的看清楚我們通訊錄的功能,所以我們需要創建目錄,那么我們應該如何創建目錄呢?
?
演示效果:
?
二、主函數
?三、結構體定義
四、結構體的初始化?
五、查找姓名
六、函數功能?
1.增加聯系人.
演示效果:
?
?2.刪除聯系人
?
?演示如下:
?
3.修改聯系人.
?
演示如下:?
?
4.查找聯系人 :
演示如下:?
5.排序聯系人
?
1.按年齡排序
演示如下:
?
?
?
?2.按名字排序
?
?
演示如下:
?6.顯示聯系人.
演示如下:
?
?效果如下:
?
?
七、完整代碼?
#define MAX_NAME 20 #define MAX_SEX 6 #define MAX_NUMBER 20 #define MAX_ADRESS 30#define MAX 1000 struct content {char name[MAX_NAME];char sex[MAX_SEX];char number[MAX_NUMBER];int age;char adress[MAX_ADRESS]; }; struct contact {struct content tent[MAX];int num; };#include<stdio.h> #include<string.h>//初始化結構體 void Ini_contact(struct contact* pc);//增加通訊錄人員 void addcontact(struct contact* pc);//刪除通訊錄人員 void delcontact(struct contact* pc);//查找被刪除人的姓名 int findbyname(struct contact* pc, char* pch);//查找聯系人的信息 void searchcontact(struct contact* pc); //改變聯系人信息 void changecontact(struct contact* pc); //顯示聯系人信息 void showcontact(struct contact* pc); //排序聯系人信息 void sortcontact(struct contact* pc); int CmpByAge(const void* e1, const void* e2); int CmpByName(const void* e1, const void* e2); void Ini_contact(struct contact* pc) {pc->num = 0;memset(pc->tent, 0, sizeof(pc->tent)); }//增加通訊錄人員 void addcontact(struct contact* pc) {if (pc->num == MAX){printf("通訊錄已滿\n");return;}printf("請輸入姓名:>\n");scanf("%s",pc->tent[pc->num].name);printf("請輸入性別:>\n");scanf("%s",pc->tent[pc->num].sex);printf("請輸入電話:>\n");scanf("%s",pc->tent[pc->num].number);printf("請輸入年齡:>\n");scanf("%d", &(pc->tent[pc->num].age));printf("請輸入地址:>\n");scanf("%s", pc->tent[pc->num].adress);pc->num++;printf("添加成功\n"); } //查找姓名 int findbyname(struct contact* pc, char ch[20]) {int i = 0;for (i = 0; i < pc->num; i++){if (strcmp(pc->tent[i].name, ch) == 0){return i;}}return -1; } //刪除通訊錄人員 void delcontact(struct contact* pc) {if (pc->num == 0){printf("通訊錄為空無法刪除\n");return -1;}char name[20];printf("請輸入刪除人的姓名\n");scanf("%s", name);//查找被刪除人信息的下標int ret = findbyname(pc,name);//替換下標for (int j = ret; j <= pc->num-1; j++){pc->tent[j] = pc->tent[j + 1];}pc->num--;printf("刪除成功\n"); }//查找聯系人的信息 void searchcontact(struct contact* pc) {printf("請輸入查找人的姓名\n");char name[20];scanf("%s", name);int ret = findbyname(pc,name);if (ret == -1){printf("查找的人不存在\n");return;}else{printf("%5s\t%5s\t%20s\t%5d\t%20s\t", pc->tent[ret].name, pc->tent[ret].sex, pc->tent[ret].number, pc->tent[ret].age, pc->tent[ret].adress);printf("查找成功\n");} } //改變聯系人信息 void changecontact(struct contact* pc) {char name[20];printf("請輸入修改聯系人的姓名:>\n");scanf("%s", name);int ret = findbyname(pc, name);if (ret == -1){printf("找不到\n");}else{printf("請輸入姓名:>\n");scanf("%s", pc->tent[ret].name);printf("請輸入性別:>\n");scanf("%s", pc->tent[ret].sex);printf("請輸入電話:>\n");scanf("%s", pc->tent[ret].number);printf("請輸入年齡:>\n");scanf("%d", &(pc->tent[ret].age));printf("請輸入地址:>\n");scanf("%s", pc->tent[ret].adress);printf("修改完成:>\n");} }//顯示聯系人信息 void showcontact(struct contact* pc) {printf("%-20s%-20s%-12s%-5s%-20s\n", "姓名", "性別", "電話", "年齡", "地址");int i = 0;for (i = 0; i < pc->num; i++){printf("%-20s%-20s%-12s%-5d%-20s\n", pc->tent[i].name,pc->tent[i].sex,pc->tent[i].number,pc->tent[i].age,pc->tent[i].adress);} }//排序聯系人 void sortcontact(struct contact* pc) { qsort(pc->tent, pc->num, sizeof(struct content), CmpByAge);//qsort(pc->tent, pc->num, sizeof(struct content), CmpByName);printf("排序成功\n"); } int CmpByAge(const void* e1, const void* e2) {return ((struct content*)e1)->age - ((struct content*)e2)->age; } int CmpByName(const void* e1, const void* e2) {return strcmp(((struct content*)e1)->name , ((struct content*)e2)->name); } void meau() {printf("************1.增加聯系人**************\n");printf("************2.刪除聯系人************\n");printf("************3.修改聯系人************\n");printf("************4.查找聯系人************\n");printf("************5.排序聯系人************\n");printf("************6.展示聯系人************\n");printf("************0.退出程序 ************\n");printf("************************************\n"); } enum option {EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,SORT }; int main() {int input = 0;struct contact con;//結構體初始化Ini_contact(&con);do{meau();printf("請選擇你要進行的操作:>\n");scanf("%d", &input);switch (input){case 1://增加聯系人的信息addcontact(&con);break;case 2://刪除聯系人的信息delcontact(&con);break;case 4://查找聯系人的信息searchcontact(&con);break;case 3://改變聯系人信息changecontact(&con);break;case 5://排序聯系人信息sortcontact(&con);break;case 6://顯示聯系人信息showcontact(&con);break;case 0:break;default :printf("輸入無效,請重新輸入\n");break;}} while (input); return 0; }總結
- 上一篇: 矩阵分析与应用(一)
- 下一篇: 计算机组成原理 第二版 课后答案 (唐朔