目錄
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為渝北企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站制作,渝北網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。1.基本框架的實(shí)現(xiàn)
1.1?基本內(nèi)容test.c
2.?函數(shù)的聲明contact.h
3.函數(shù)的實(shí)現(xiàn)
3.1 初始化/清空聯(lián)系人
3.2增加通訊錄的聯(lián)系人
3.3展示通訊錄中所以聯(lián)系人的信息
3.4通過(guò)名字找到指定的聯(lián)系人
3.5通過(guò)名字搜索聯(lián)系人
3.6刪除聯(lián)系人
3.7修改聯(lián)系人
3.8通過(guò)選擇的方式排序聯(lián)系人
實(shí)現(xiàn)一個(gè)通訊錄:
通訊錄可以用來(lái)存儲(chǔ)1000個(gè)人的信息,每個(gè)人的信息包括:姓名、性別、年齡、電話、住址
提供方法:
1.添加聯(lián)系人信息
2.刪除指定聯(lián)系人信息
3.查找指定聯(lián)系人信息
4.修改指定聯(lián)系人信息
5.顯示所有聯(lián)系人信息
6.清空所有聯(lián)系人
7.以名字排序所有聯(lián)系人
我們首先在vs里創(chuàng)建一個(gè)test.c? 和 contact .c? 和 contact.h
首先我們需要打印一個(gè)菜單
void print_menu()
{
printf("*************************************************\n");
printf("******** 1.add 2.search ******\n");
printf("******** 3.del 4.modify ******\n");
printf("******** 5.show 6.empty ******\n");
printf("******** 7.sort 0.exit ******\n");
printf("*************************************************\n");
}
以上的內(nèi)容就是我們需要實(shí)現(xiàn)的基本功能,接著我們就完善test.c中基本框架的實(shí)現(xiàn)
//test.c
#include"contact.h"
//實(shí)現(xiàn)一個(gè)通訊錄;
//
//通訊錄可以用來(lái)存儲(chǔ)1000個(gè)人的信息,每個(gè)人的信息包括:姓名、性別、年齡、電話、住址
//
//提供方法:
//
//添加聯(lián)系人信息
//刪除指定聯(lián)系人信息
//查找指定聯(lián)系人信息
//修改指定聯(lián)系人信息
//顯示所有聯(lián)系人信息
//清空所有聯(lián)系人
//以名字排序所有聯(lián)系人
void print_menu()
{
printf("*************************************************\n");
printf("******** 1.add 2.search ******\n");
printf("******** 3.del 4.modify ******\n");
printf("******** 5.show 6.empty ******\n");
printf("******** 7.sort 0.exit ******\n");
printf("*************************************************\n");
}
void test()
{
int input = 0;
Contact con;
//初始化通訊錄
init_contact(&con);
do
{
//打印菜單
print_menu();
scanf("%d", &input);
switch (input)
{
case 1:
//增加函數(shù)
add_contact(&con);
break;
case 2:
//尋找
search_contact(&con);
break;
case 3:
//刪除聯(lián)系人
del_contact(&con);
break;
case 4:
//修改聯(lián)系人
modify_contact(&con);
break;
case 5:
//展示通訊錄
show_contact(&con);
break;
case 6:
init_contact(&con);
printf("清除成功\n");
break;
case 7:
sort_contact(&con);
break;
case 0:
printf("退出成功\n");
break;
default :
printf("輸入有誤\n");
break;
}
} while (input);
}
int main()
{
test();
return 0;
}
2.?函數(shù)的聲明contact.h然后需要我們?cè)赾ontact.h中聲明這些函數(shù),并創(chuàng)建好通訊錄需要的內(nèi)容,就可以用結(jié)構(gòu)體來(lái)實(shí)現(xiàn)。
//contact.h
#pragma once
#include#include#include
#include//通訊錄可以用來(lái)存儲(chǔ)1000個(gè)人的信息,每個(gè)人的信息包括:姓名、性別、年齡、電話、住址
#define NAME_MAX 20
#define SEX_MAX 8
#define TELE_MAX 15
#define ADDR_MAX 20
#define MAX 100
typedef struct Peoinfo
{
char name[NAME_MAX];
char sex[SEX_MAX];
int age;
char tele[TELE_MAX];
char addr[ADDR_MAX];
}Peoinfo;
typedef struct Contact
{
Peoinfo data[MAX];
int sz;
}Contact;
//初始化/清空
void init_contact(Contact* pc);
//通訊錄中增加
void add_contact(Contact* pc);
//show通訊錄
void show_contact( const Contact* pc);
//通訊錄尋找人
int find_by_name(const Contact* pc);
//通訊錄里search
void search_contact(const Contact* pc);
//刪除聯(lián)系人
void del_contact(Contact* pc);
//修改聯(lián)系人
void modify_contact(Contact* pc);
//排序
void sort_contact(Contact* pc);
3.函數(shù)的實(shí)現(xiàn)
3.1 初始化/清空聯(lián)系人//初始化/清空
void init_contact(Contact* pc)
{
assert(pc);
pc->sz = 0;
memset(pc->data, 0, sizeof(pc->data));
}
3.2增加通訊錄的聯(lián)系人//add
void add_contact(Contact* pc)
{
assert(pc);
if (pc->sz >MAX)
printf("通訊錄已滿,無(wú)法添加\n");
printf("請(qǐng)輸入姓名:>\n");
scanf("%s", pc->data[pc->sz].name);
printf("請(qǐng)輸入性別;>\n");
scanf("%s", pc->data[pc->sz].sex);
printf("請(qǐng)輸入年齡;>\n");
scanf("%d", &(pc->data[pc->sz].age));
printf("請(qǐng)輸入電話:>\n");
scanf("%s", pc->data[pc->sz].tele);
printf("請(qǐng)輸入住址:>\n");
scanf("%s", pc->data[pc->sz].addr);
pc->sz++;
}
3.3展示通訊錄中所以聯(lián)系人的信息//show
void show_contact(const Contact* pc)
{
assert(pc);
int i = 0;
printf("%-10s\t%-5s\t%-4s\t%-15s\t%-10s\n", "姓名", "性別", "年齡", "電話", "住址");
for (i = 0; i< pc->sz; i++)
{
printf("%-10s\t%-5s\t%-4d\t%-15s\t%-10s\n", pc->data[i].name, pc->data[i].sex, pc->data[i].age, pc->data[i].tele, pc->data[i].addr);
}
}
3.4通過(guò)名字找到指定的聯(lián)系人//通訊錄找人
int find_by_name(const Contact* pc)
{
assert(pc);
char findPeo[20];
printf("請(qǐng)輸入需要搜索/刪除/修改數(shù)據(jù)的名字:>");
scanf("%s", findPeo);
int i = 0;
for (i = 0; i< pc->sz; i++)
{
if (strcmp(pc->data[i].name, findPeo)==0)
{
return i;
}
}
return -1;
}
3.5通過(guò)名字搜索聯(lián)系人//通訊錄中搜索
void search_contact(const Contact* pc)
{
assert(pc);
int ret = find_by_name(pc);
if (ret == -1)
{
printf("不存在此人\n");
}
else
{
printf("%-10s\t%-5s\t%-4s\t%-15s\t%-10s\n", "姓名", "性別", "年齡", "電話", "住址");
printf("%-10s\t%-5s\t%-4d\t%-15s\t%-10s\n",
pc->data[ret].name,
pc->data[ret].sex,
pc->data[ret].age,
pc->data[ret].tele,
pc->data[ret].addr);
}
}
3.6刪除聯(lián)系人//del
void del_contact(Contact*pc)
{
assert(pc);
int ret=find_by_name(pc);
if (ret == -1)
printf("不存在此人\n");
else
{
int i = 0;
for (i = ret; isz; i++)
{
pc->data[i] = pc->data[i + 1];
}
printf("刪除成功\n");
pc->sz -= 1;
}
}
3.7修改聯(lián)系人//modify修改
void modify_contact(Contact* pc)
{
assert(pc);
int ret = find_by_name(pc);
if (ret == -1)
printf("不存在此人\n");
else
{
printf("請(qǐng)輸入姓名:>\n");
scanf("%s", pc->data[ret].name);
printf("請(qǐng)輸入性別;>\n");
scanf("%s", pc->data[ret].sex);
printf("請(qǐng)輸入年齡;>\n");
scanf("%d", &(pc->data[ret].age));
printf("請(qǐng)輸入電話:>\n");
scanf("%s", pc->data[ret].tele);
printf("請(qǐng)輸入住址:>\n");
scanf("%s", pc->data[ret].addr);
printf("修改成功\n");
}
}
3.8通過(guò)選擇的方式排序聯(lián)系人//sort
void sort_contact( Contact* pc)
{
assert(pc);
if (pc->sz == 0)
{
printf("通訊錄為空,無(wú)法排序\n");
}
int k = 0;
printf("1.按名字排序 2.按年齡排序 0.退出\n");
printf("請(qǐng)選擇:>");
scanf("%d", &k);
if (k == 0)
printf("退出成功\n");
else if (k == 1)
{
Peoinfo tmp;
int i = 0;
for (i = 0; i< pc->sz - 1; i++)
{
int j = 0;
for (j = 0; j< pc->sz -i- 1; j++)
{
if (strcmp(pc->data[j].name, pc->data[j + 1].name)>0)
{
tmp = pc->data[j];
pc->data[j] = pc->data[j + 1];
pc->data[j + 1] = tmp;
}
}
}
}
else if (k == 2)
{
int i = 0;
Peoinfo tmp;
for (i = 0; i< pc->sz - 1; i++)
{
for (int j = 0; j< pc->sz - i-1; j++)
{
if ((pc->data[j].age - pc->data[j + 1].age) >0)
{
tmp = pc->data[j];
pc->data[j] = pc->data[j + 1];
pc->data[j + 1] = tmp;
}
}
}
}
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧