今天我們試著用c語言實現(xiàn)簡單通訊錄的制作,功能大致如下:
//1.存放好友信息
//2.增加好友信息
//3.刪除好友信息
//4.查找好友信息
//5.修改好友信息
了解相應(yīng)功能后我們試著構(gòu)建一個菜單:
void menu()//菜單
{
?printf("*************************************\n");
?printf("******1.add ? ? ? ? ? ?2.del ?*******\n");
?printf("******3.search ? ? ? ? 4.modify ?****\n");
?printf("******5.show ? ? ? ? ? 0.exit ? ? ?**\n");
?printf("*************************************\n");
}
接下來就是創(chuàng)建通訊錄了,先定義用戶相關(guān)信息,并枚舉相關(guān)變量
enum MY { MAX = 100,MAX_NAME=20,MAX_SEX=5,MAX_TELE=12,MAX_ADDR=30 };
struct people?
{
?char name[MAX_NAME];
?int age;
?char sex[MAX_SEX];
?char tele[MAX_TELE];
?char addr[MAX_ADDR];
};?
接著定義通訊錄的類型
struct Contact
{
?struct people data[MAX]; //存放用戶信息
?int size;? ? ? ? ? ? ? ? ? ? ? ? ? ? //記錄當前已經(jīng)有的用戶數(shù)量
};
然后初始化通訊錄,默認所有信息為0
void InitContact(struct Contact* ps)
{
?memset(ps->data, 0, sizeof(ps->data));
?ps->size = 0;
}
通訊錄初始化后,就要開始完善它的功能的
//增加好友信息
void addContact(struct Contact* ps)
{
?if (ps->size == MAX)
?{
??? ?printf("通訊錄已滿\n");
?}
?else
?{
??? ?printf("請輸入名字:");
??? ?scanf("%s", ps->data[ps->size].name);
??? ?printf("請輸入年齡:");
??? ?scanf("%d", &(ps->data[ps->size].age));
??? ?printf("請輸入性別:");
??? ?scanf("%s", ps->data[ps->size].sex);
??? ?printf("請輸入電話:");
??? ?scanf("%s", ps->data[ps->size].tele);
??? ?printf("請輸入地址:");
??? ?scanf("%s", ps->data[ps->size].addr);
??? ?ps->size++;
??? ?printf("添加成功\n");
?}
}
//顯示好友信息
void ShowContact(struct Contact* ps)
{
?if (ps->size == 0)
?{
??? ?printf("通訊錄為空\n");
?}
?else
?{
??? ?printf("%20s\t %4s\t %5s\t %12s\t %20s\n","名字","年齡","性別","電話","地址");
??? ?for (int i = 0; i< ps->size; i++)
??? ?{
??? ??? ?printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
??? ??? ??? ?ps->data[i].name,
??? ??? ??? ?ps->data[i].age,
??? ??? ??? ?ps->data[i].sex,
??? ??? ??? ?ps->data[i].tele,
??? ??? ??? ?ps->data[i].addr );
??? ?}
?}
}
//刪除好友信息
void DelContact(struct Contact* ps)
{
?char name[MAX_NAME];
?printf("請輸入要刪除人的名字:");
?scanf("%s", name);
?int i = 0;
?//1.查找要刪除的人在什么位置
?for (int i = 0; i< ps->size; i++)
?{
??? ?if (strcmp(ps->data[i].name, name) == 0)
??? ?{
??? ??? ?break;
??? ?}
?}
?//2.刪除
?if (i == ps->size)
?{
??? ?printf("要刪除的人不存在\n");
?}
?else
?{
??? ?int j = 0;
??? ?for (j = i; j< ps->size-1; j++)
??? ?{
??? ??? ?ps->data[j] = ps->data[j + 1];
??? ?}
??? ?ps->size--;
??? ?printf("刪除成功\n");
?}
?
}
//查找指定的人
void SearchContact(struct Contact* ps)
{
?char name[MAX_NAME];
?printf("請輸入查找人的名字");
?scanf("%s", name);
?int i = 0;
?//1.查找的人在什么位置
?for (int i = 0; i< ps->size; i++)
?{
??? ?if (strcmp(ps->data[i].name, name) == 0)
??? ?{
??? ??? ?break;
??? ?}
?}
?if (i == ps->size)
?{
??? ?printf("查找的人不存在\n");
?}
?else
?{
??? ?printf("%20s\t %4s\t %5s\t %12s\t %20s\n", "名字", "年齡", "性別", "電話", "地址");
??? ?printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
??? ??? ?ps->data[i].name,
??? ??? ?ps->data[i].age,
??? ??? ?ps->data[i].sex,
??? ??? ?ps->data[i].tele,
??? ??? ?ps->data[i].addr);
??? ?
?}
};
//修改好友信息
void ModifyContact(struct Contact* ps)
{
?char name[MAX_NAME];
?printf("請輸入修改人的名字");
?scanf("%s", name);
?int i = 0;
?//1.修改的人在什么位置
?for (int i = 0; i< ps->size; i++)
?{
??? ?if (strcmp(ps->data[i].name, name) == 0)
??? ?{
??? ??? ?break;
??? ?}
?}
?if (i == ps->size)
?{
??? ?printf("修改的人不存在\n");
?}
?else
?{
??? ?printf("請輸入名字:");
??? ?scanf("%s", ps->data[i].name);
??? ?printf("請輸入年齡:");
??? ?scanf("%d", &(ps->data[i].age));
??? ?printf("請輸入性別:");
??? ?scanf("%s", ps->data[i].sex);
??? ?printf("請輸入電話:");
??? ?scanf("%s", ps->data[i].tele);
??? ?printf("請輸入地址:");
??? ?scanf("%s", ps->data[i].addr);
??? ?printf("修改成功\n");
?}
}
最后就是將其全部存入主函數(shù)中
int main()
{
?int input = 0;
?struct Contact con;//con就是通訊錄
?InitContact(&con);
?do
?{
??? ?menu();
??? ?printf("請選擇:");
??? ?scanf("%d", &input);
??? ?switch (input)
??? ?{
??? ?case 1:
??? ??? ?addContact(&con);
??? ??? ?break;
??? ?case 2:
??? ??? ?DelContact(&con);
??? ??? ?break;
??? ?case 3:
??? ??? ?SearchContact(&con);
??? ??? ?break;
??? ?case 4:
??? ??? ?ModifyContact(&con);
??? ??? ?break;
??? ?case 5:
??? ??? ?ShowContact(&con);
??? ??? ?break;
??? ?case 0:
??? ??? ?printf("退出通訊錄\n");
??? ??? ?break;
??? ?default:
??? ??? ?printf("選擇錯誤\n");
??? ??? ?break;
??? ?}
?} while (input);
?return 0;
}?
總體代碼就是這樣,如果大家發(fā)現(xiàn)bug或者有更好的方法 ,歡迎大家一起來討論呀,一起加油
#define _CRT_SECURE_NO_WARNINGS 1
#include#include#include//1.存放好友信息
//2.增加好友信息
//3.刪除好友信息
//4.查找好友信息
//5.修改好友信息
enum MY { MAX = 100,MAX_NAME=20,MAX_SEX=5,MAX_TELE=12,MAX_ADDR=30 };
void menu()//菜單
{
printf("*************************************\n");
printf("******1.add 2.del *******\n");
printf("******3.search 4.modify ****\n");
printf("******5.show 0.exit **\n");
printf("*************************************\n");
}
//創(chuàng)建通訊錄
struct people
{
char name[MAX_NAME];
int age;
char sex[MAX_SEX];
char tele[MAX_TELE];
char addr[MAX_ADDR];
};
//通訊錄類型
struct Contact
{
struct people data[MAX];//存放用戶信息
int size;//記錄當前已經(jīng)有的用戶數(shù)量
};
//初始化通訊錄
void InitContact(struct Contact* ps)
{
memset(ps->data, 0, sizeof(ps->data));
ps->size = 0;
}
//增加好友信息
void addContact(struct Contact* ps)
{
if (ps->size == MAX)
{
printf("通訊錄已滿\n");
}
else
{
printf("請輸入名字:");
scanf("%s", ps->data[ps->size].name);
printf("請輸入年齡:");
scanf("%d", &(ps->data[ps->size].age));
printf("請輸入性別:");
scanf("%s", ps->data[ps->size].sex);
printf("請輸入電話:");
scanf("%s", ps->data[ps->size].tele);
printf("請輸入地址:");
scanf("%s", ps->data[ps->size].addr);
ps->size++;
printf("添加成功\n");
}
}
//顯示好友信息
void ShowContact(struct Contact* ps)
{
if (ps->size == 0)
{
printf("通訊錄為空\n");
}
else
{
printf("%20s\t %4s\t %5s\t %12s\t %20s\n","名字","年齡","性別","電話","地址");
for (int i = 0; i< ps->size; i++)
{
printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
ps->data[i].name,
ps->data[i].age,
ps->data[i].sex,
ps->data[i].tele,
ps->data[i].addr );
}
}
}
//刪除好友信息
void DelContact(struct Contact* ps)
{
char name[MAX_NAME];
printf("請輸入要刪除人的名字:");
scanf("%s", name);
int i = 0;
//1.查找要刪除的人在什么位置
for (int i = 0; i< ps->size; i++)
{
if (strcmp(ps->data[i].name, name) == 0)
{
break;
}
}
//2.刪除
if (i == ps->size)
{
printf("要刪除的人不存在\n");
}
else
{
int j = 0;
for (j = i; j< ps->size-1; j++)
{
ps->data[j] = ps->data[j + 1];
}
ps->size--;
printf("刪除成功\n");
}
}
//查找指定的人
void SearchContact(struct Contact* ps)
{
char name[MAX_NAME];
printf("請輸入查找人的名字");
scanf("%s", name);
int i = 0;
//1.查找的人在什么位置
for (int i = 0; i< ps->size; i++)
{
if (strcmp(ps->data[i].name, name) == 0)
{
break;
}
}
if (i == ps->size)
{
printf("查找的人不存在\n");
}
else
{
printf("%20s\t %4s\t %5s\t %12s\t %20s\n", "名字", "年齡", "性別", "電話", "地址");
printf("%20s\t %4d\t %5s\t %12s\t %20s\n",
ps->data[i].name,
ps->data[i].age,
ps->data[i].sex,
ps->data[i].tele,
ps->data[i].addr);
}
};
//修改好友信息
void ModifyContact(struct Contact* ps)
{
char name[MAX_NAME];
printf("請輸入修改人的名字");
scanf("%s", name);
int i = 0;
//1.修改的人在什么位置
for (int i = 0; i< ps->size; i++)
{
if (strcmp(ps->data[i].name, name) == 0)
{
break;
}
}
if (i == ps->size)
{
printf("修改的人不存在\n");
}
else
{
printf("請輸入名字:");
scanf("%s", ps->data[i].name);
printf("請輸入年齡:");
scanf("%d", &(ps->data[i].age));
printf("請輸入性別:");
scanf("%s", ps->data[i].sex);
printf("請輸入電話:");
scanf("%s", ps->data[i].tele);
printf("請輸入地址:");
scanf("%s", ps->data[i].addr);
printf("修改成功\n");
}
}
int main()
{
int input = 0;
struct Contact con;//con就是通訊錄
InitContact(&con);
do
{
menu();
printf("請選擇:");
scanf("%d", &input);
switch (input)
{
case 1:
addContact(&con);
break;
case 2:
DelContact(&con);
break;
case 3:
SearchContact(&con);
break;
case 4:
ModifyContact(&con);
break;
case 5:
ShowContact(&con);
break;
case 0:
printf("退出通訊錄\n");
break;
default:
printf("選擇錯誤\n");
break;
}
} while (input);
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
分享標題:c語言小項目--通訊錄-創(chuàng)新互聯(lián)
文章路徑:http://jinyejixie.com/article38/deogsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站排名、服務(wù)器托管、網(wǎng)頁設(shè)計公司、定制開發(fā)、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容