用c語言實現 一個通訊錄(實現 增加、刪除、查詢、修改、顯示、清空功能)
阿新 • • 發佈:2019-01-05
源程式標頭檔案contact.h
#ifndef _CONTACT_H__ #define _CONTACT_H__ #define NAME_MAX 20 #define SEX_MAX 5 #define TELE_MAX 15 #define ADDR_MAX 50 #define PEO_MAX 1000 #include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct people { char name[NAME_MAX]; char sex[SEX_MAX]; int age; char tele[TELE_MAX]; char addr[ADDR_MAX]; }*pPeople; typedef struct contact { struct people dhb[PEO_MAX]; int count; }*pCon; void add_peo(pCon pcon); void del_peo(pCon pcon); void search_peo(pCon pcon); void modify_peo(pCon pcon); void show_peo(pCon pcon); void clear_peo(pCon pcon); #endif
</pre>源程式函式段實現<p></p><p></p><p></p><pre name="code" class="cpp">#include "contact.h" int find(pCon pcon,char * name) { int i=0; while(i<pcon->count) { if(strcmp(name,pcon->dhb[i].name)==0)//查詢到匹配的姓名就輸出i return i; i++; } return -1; } void add_peo(pCon pcon)//增加儲存人函式 { //判斷 if(pcon->count==PEO_MAX) { printf("儲存空間已滿\n"); return ; } printf("name:>"); scanf("%s",(pcon->dhb[pcon->count]).name); printf("sex:>"); scanf("%s",(pcon->dhb[pcon->count]).sex); printf("age:>"); scanf("%d",&((pcon->dhb[pcon->count]).age)); printf("tele:>"); scanf("%s",(pcon->dhb[pcon->count]).tele); printf("addr:>"); scanf("%s",(pcon->dhb[pcon->count]).addr); pcon->count++; } void del_peo(pCon pcon)//刪除函式 { char tmpName[NAME_MAX]; int ret=0; printf("請輸入你所要刪除的姓名:>"); scanf("%s",tmpName); ret=find(pcon,tmpName); if(-1 != ret) { int j=ret; for(;j<pcon->count-1;j++) { pcon->dhb[j]=pcon->dhb[j+1];//用後面的資料覆蓋所要刪除的資料 } pcon->count--;//儲存人數減少一位 } else { printf("找不到所要刪除的資訊\n"); } } void search_peo(pCon pcon)//查詢函式 { char tmpName[NAME_MAX]; int ret=0; printf("請輸入你所要查詢的姓名:>"); scanf("%s",tmpName); ret = find(pcon,tmpName); if(ret != -1) { printf("%s\t%s\t%d\t%s\t%s\t\n", pcon->dhb[ret].name, pcon->dhb[ret].sex, pcon->dhb[ret].age, pcon->dhb[ret].tele, pcon->dhb[ret].addr); } else { printf("不存在所要查詢的資訊\n"); } } void modify_peo(pCon pcon)//修改資料函式 { char tmpName[NAME_MAX]; int ret=0; printf("請輸入你所要修改的姓名:>"); scanf("%s",tmpName); ret = find(pcon,tmpName); if(-1 != ret)//找到修改姓名之後重新賦值 { printf("name:>"); scanf("%s",(pcon->dhb[ret]).name); printf("sex:>"); scanf("%s",(pcon->dhb[ret]).sex); printf("age:>"); scanf("%d",&((pcon->dhb[ret]).age)); printf("tele:>"); scanf("%s",(pcon->dhb[ret]).tele); printf("addr:>"); scanf("%s",(pcon->dhb[ret]).addr); } } void show_peo(pCon pcon)//顯示函式 { int i; for(i=0;i<pcon->count;i++) //顯示並列印說有聯絡人資訊 { printf("%s\t%s\t%d\t%s\t%s\t\n", pcon->dhb[i].name, pcon->dhb[i].sex, pcon->dhb[i].age, pcon->dhb[i].tele, pcon->dhb[i].addr); } } void clear_peo(pCon pcon)//清除所有聯絡人資訊 { pcon->count = 0; }
</pre><p></p><p>源程式主函式呼叫段</p><p></p><p></p><pre name="code" class="cpp">#include "contact.h" void show_menu() { printf("***************************\n"); printf("* 1>add 2>del *\n"); printf("* 3>search 4>modify *\n"); printf("* 5>show 6>clear *\n"); printf("***************************\n"); } int main() { struct contact my_contact; int input=1; my_contact.count = 0; while(input) { show_menu(); printf("please input:>"); scanf("%d",&input); switch(input)//判斷並呼叫函式 { case 1: { add_peo(&my_contact); system("cls");//呼叫清屏函式 break; } case 2: { del_peo(&my_contact); system("cls");//呼叫清屏函式 break; } case 3: search_peo(&my_contact); break; case 4: { modify_peo(&my_contact); system("cls");//呼叫清屏函式 break; } case 5: show_peo(&my_contact); break; case 6: clear_peo(&my_contact); break; default: break; } } return 0; }
增加聯絡人函式
void add_peo(pCon pcon)//增加儲存人函式
{
//判斷
if(pcon->count==PEO_MAX)
{
printf("儲存空間已滿\n");
return ;
}
printf("name:>");
scanf("%s",(pcon->dhb[pcon->count]).name);
printf("sex:>");
scanf("%s",(pcon->dhb[pcon->count]).sex);
printf("age:>");
scanf("%d",&((pcon->dhb[pcon->count]).age));
printf("tele:>");
scanf("%s",(pcon->dhb[pcon->count]).tele);
printf("addr:>");
scanf("%s",(pcon->dhb[pcon->count]).addr);
pcon->count++;
}
刪除聯絡人函式
void del_peo(pCon pcon)//刪除函式
{
char tmpName[NAME_MAX];
int ret=0;
printf("請輸入你所要刪除的姓名:>");
scanf("%s",tmpName);
ret=find(pcon,tmpName);
if(-1 != ret)
{
int j=ret;
for(;j<pcon->count-1;j++)
{
pcon->dhb[j]=pcon->dhb[j+1];//用後面的資料覆蓋所要刪除的資料
}
pcon->count--;//儲存人數減少一位
}
else
{
printf("找不到所要刪除的資訊\n");
}
}
查詢聯絡人函式段
void search_peo(pCon pcon)//查詢函式
{
char tmpName[NAME_MAX];
int ret=0;
printf("請輸入你所要查詢的姓名:>");
scanf("%s",tmpName);
ret = find(pcon,tmpName);
if(ret != -1)
{
printf("%s\t%s\t%d\t%s\t%s\t\n",
pcon->dhb[ret].name,
pcon->dhb[ret].sex,
pcon->dhb[ret].age,
pcon->dhb[ret].tele,
pcon->dhb[ret].addr);
}
else
{
printf("不存在所要查詢的資訊\n");
}
}
修改聯絡人函式段
void modify_peo(pCon pcon)//修改資料函式
{
char tmpName[NAME_MAX];
int ret=0;
printf("請輸入你所要修改的姓名:>");
scanf("%s",tmpName);
ret = find(pcon,tmpName);
if(-1 != ret)//找到修改姓名之後重新賦值
{
printf("name:>");
scanf("%s",(pcon->dhb[ret]).name);
printf("sex:>");
scanf("%s",(pcon->dhb[ret]).sex);
printf("age:>");
scanf("%d",&((pcon->dhb[ret]).age));
printf("tele:>");
scanf("%s",(pcon->dhb[ret]).tele);
printf("addr:>");
scanf("%s",(pcon->dhb[ret]).addr);
}
}
顯示聯絡人函式段
void show_peo(pCon pcon)//顯示函式
{
int i;
for(i=0;i<pcon->count;i++) //顯示並列印說有聯絡人資訊
{
printf("%s\t%s\t%d\t%s\t%s\t\n",
pcon->dhb[i].name,
pcon->dhb[i].sex,
pcon->dhb[i].age,
pcon->dhb[i].tele,
pcon->dhb[i].addr);
}
}
清空聯絡人函式段
void clear_peo(pCon pcon)//清除所有聯絡人資訊
{
pcon->count = 0;
}