C結構體實現一個通訊錄 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.solarmaxlimited.com - 電腦資料】

    題目:實現一個通訊錄,通訊錄可以用來存儲1000個人的信息,每個人的信息包括:姓名,性別,年齡,電話,住址,

C結構體實現一個通訊錄

    提供方法:1.添加聯系人信息 2.刪除指定聯系人的信息 3.查找指定聯系人的信息 4.修改指定聯系人的信息 5.顯示所有聯系人信息 6.清空所有聯系人 7.以名字排序所有聯系人

    思路分析:1. 首先我們可以分三個模塊來解決這個問題,第一個模塊我們需要一個頭文件,這個頭文件里可以包含一些相應信息,當實現文件和測試文件包含自己定義的頭文件時便可以獲得一些相關的信息。所以頭文件里應該包括一個結構體,這個結構體里應包含姓名,性別,年齡,電話,住址。同時還可以定義一個結構體,這個結構體里包含通訊錄,同時通訊錄里人員的計數變量,將通訊錄的地址傳到別的地方便可以實現對它遍歷或者其他操作。 2.第二個模塊便是我們的測試函數,測試函數便可以實現我們的菜單打印,同時由我們接收不同的值便可以實現不同的操作,就是相應的方法的實現,這里很明顯可以通過一個switch語句來進行控制。 3.第三個模塊便是我們的方法實現的函數,將模塊2里定義的類型為通訊錄的地址傳到各個方法里,這樣便可以實現對通訊錄的操作。

    代碼實現:

    模塊1:

   

#pragma oncetypedef struct Peo//每一個人的信息用一個結構來接收,包括姓名,性別,年齡,電話,地址{char name[20];char sex[4];int age;char tell[12];char address[20];}Peo;typedef struct Contact//將通訊錄和人員計數也聲明在結構體里{Peo Dhb[1000];int count;}Contact;void add_stu(Contact *p);//相應函數void del_stu(Contact *p);void find_stu(Contact *p);void modify_stu(Contact *p);void show_stu(Contact *p); void clear_stu(Contact *p);void sort_stu(Contact *p);

    模塊2:(測試功能)

   

#include<stdio.h>#include"contact.h"#include<stdlib.h>Contact con;//類型為Contact變量,里面包含電話本和計數變量void menu(){printf("menu:\n");printf("**********1.添加聯系人信息************\n");printf("********2.刪除指定聯系人信息**********\n");printf("********3.查找指定聯系人信息**********\n");printf("********4.修改指定聯系人信息**********\n");printf("********5.顯示所有聯系人信息**********\n");printf("**********6.清空聯系人信息************\n");printf("******7.以名字排序所有聯系人信********\n");}void test()//測試函數{int input = 1;menu();while (input){printf("請輸入選項:");scanf_s("%d", &input);switch (input)//方法選擇功能的實現{case 1:add_stu(&con);break;case 2:del_stu(&con);break;case 3:find_stu(&con);break;case 4:modify_stu(&con);break;case 5:show_stu(&con);break;case 6:clear_stu(&con);break;case 7:sort_stu(&con);break;case 0:exit(1);break;}}}int main(){test();     return 0;}

    模塊3:(方法的具體實現)

   

#include"contact.h"#include<string.h>int search(Contact *p,char *pname)//分裝的函數利于刪除,查找,修改方法的實現{int ret;int i;for (i = 0; i < p->count; i++){if(strcmp(p->Dhb[i].name, pname)==0)return i;}return -1;}void add_stu(Contact *p)//添加聯系人{printf("請輸入姓名:");scanf("%s", p->Dhb[p->count].name);printf("請輸入性別:");scanf("%s", p->Dhb[p->count].sex);printf("請輸入年齡:");scanf("%d", &p->Dhb[p->count].age);printf("請輸入電話:");scanf("%s", p->Dhb[p->count].tell);printf("請輸入地址:");scanf("%s", p->Dhb[p->count].address);p->count++;printf("聯系人添加成功\n");}void del_stu(Contact *p)//刪除聯系人{int ret;int n;int i = 0;char name[20];printf("請輸入要刪除人的姓名:");scanf("%s",name);ret=search(p,name);if (ret !=-1){printf("要刪除的人存在\n");printf("你是否確定刪除該聯系人?\n");printf("確定輸入1,不刪除輸入0\n");scanf("%d",&n);if (n == 1){for (i = 0; i < p->count; i++){p->Dhb[i] = p->Dhb[i + 1];//使i后面的元素向前覆蓋便可以刪掉}printf("刪除成功\n");}else{printf("刪除失敗\n");}}}void find_stu(Contact *p)//查找聯系人{int ret;char name[20];printf("請輸入要查找人的姓名:");scanf("%s", name);ret = search(p, name);if (ret !=-1){printf("要查找的人存在\n");printf("%s  ", p->Dhb[ret].name);printf("%s  ", p->Dhb[ret].sex);printf("%d  ", p->Dhb[ret].age);printf("%s  ", p->Dhb[ret].tell);printf("%s  ", p->Dhb[ret].address);}}void modify_stu(Contact *p)//修改聯系人{int ret;char name[20];printf("請輸入要修改人的姓名:");scanf("%s", name);ret = search(p, name);if (ret != -1){printf("請把姓名修改成:");scanf("%s", p->Dhb[ret].name);printf("請把性別修改成:");scanf("%s", p->Dhb[ret].sex);printf("請把年齡修改成:");scanf("%d", &p->Dhb[ret].age);printf("請把電話修改成:");scanf("%s", p->Dhb[ret].tell);printf("請把地址修改成:");scanf("%s", p->Dhb[ret].address);}else{printf("不存在此人\n");}}void show_stu(Contact *p)//顯示聯系人信息{int i = 0;printf("輸出所有人的信息:");for (i = 0; i <( p->count); i++){printf("%s  ",p->Dhb[i].name);printf("%s  ", p->Dhb[i].sex);printf("%d  ", p->Dhb[i].age);printf("%s  ", p->Dhb[i].tell);printf("%s  ", p->Dhb[i].address);}printf("\n");}void clear_stu(Contact *p)//清空聯系人{p->count = 0;//是人員計數的變量置0就可以實現清空}void sort_stu(Contact *p)//以名字排序所有聯系人{int i = 0;int j = 0;for (i = 0; i < p->count-1;i++)//冒泡法for (j = 0; j < p->count - 1 - i;j++){if (strcmp(p->Dhb[j].name, p->Dhb[j + 1].name)>0){Peo tmp;tmp=p->Dhb[j];p->Dhb[j] =p-> Dhb[j + 1];p->Dhb[j + 1] = tmp;}}void show_stu( p);}

    總結:此題只是利用了相關結構體的知識,主要難處就是三個模塊各自的分工不好想到,其他地方便只是基本方法的實現,

電腦資料

C結構體實現一個通訊錄》(http://www.solarmaxlimited.com)。

最新文章
国产v亚洲v天堂无码网站,综合亚洲欧美日韩一区二区,精品一级毛片A久久久久,欧美一级待黄大片视频
久久国产精品久久久 | 午夜福利理论片中文字幕 | 亚洲欧洲日韩淙合久久 | 一区中文字幕在线日本 | 欧美自拍清纯日韩一区二区三区 | 色窝窝播放视频在线观看 |