C语言用结构体实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
代码实现:
头文件:
#ifndef __HEAD_H__ ////防止头文件被多次调用 #define __HEAD_H__ #include<stdio.h> #include<string.h> #include<stdlib.h> #define PEOPLE_MAX 1000 #define NAME_LENTH 20 #define SEX_LENTH 5 #define AGE_LENTH 10 #define TEL_LENTH 15 #define ADDR_LENTH 50 //宏定义各个数据所需的大小,后续引用直接可以使用名称,或需修改时只用修改这里就可以了 struct People {
char name[NAME_LENTH];
char sex[SEX_LENTH];
int age;
char tel[TEL_LENTH ];
char addr[ADDR_LENTH];
}
;
//定义人的信息结构体(包含各种信息) struct Contact {
struct People person[PEOPLE_MAX];
int user_count;
}
;
//定义通讯录结构体(包含人的信息的结构体和用户个数) typedef struct Contact * pContact;
int add_contact(pContact pcon);
//pContact是一个结构体指针类型,pcon是一个指向struct Contact的一个指针 int dele_contact(pContact pcon);
//例如:typedef int * int 即 int *p ==> int p int find_contact(pContact pcon);
int modify_contact(pContact pcon);
int show_contact(pContact pcon);
int clear_contact(pContact pcon);
void menu();
//函数的声明 #endif
各种函数实现:
#include"head.h" int add_contact(pContact pcon) {
if(pcon->user_count >= PEOPLE_MAX) {
printf("contact is full!n");
return -1;
}
else {
printf("input name,please!n");
scanf("%s",pcon->person[pcon->user_count].name);
printf("input sex,please!n");
scanf("%s",pcon->person[pcon->user_count].sex);
printf("input age,please!n");
scanf("%d",&pcon->person[pcon->user_count].age);
//这里用%d输出int printf("input tel,please!n");
scanf("%s",pcon->person[pcon->user_count].tel);
printf("input addr,please!n");
scanf("%s",pcon->person[pcon->user_count].addr);
(pcon->user_count)++;
}
return 0;
}
//添加信息的实现 int dele_contact(pContact pcon) {
int ret = find_contact(pcon);
//调用查找函数并保存其值 if(ret != -1) {
int i = 0;
i = ret;
//这里要用另一个变量来保存输入的姓名 for(i = 0;
i < pcon->user_count-1;
i++) {
pcon->person[i] = pcon->person[i+1];
//用后一个覆盖前边的,如果要删除的是最后一个不进行此步骤 }
pcon->user_count --;
//直接减去最后一个即count-- }
return 0;
}
int find_contact(pContact pcon) {
int i = 0;
char ret[NAME_LENTH];
//用另一个数组来保存name printf("input name,please!n");
scanf("%s",ret);
while(i <= pcon->user_count) {
if(strcmp(ret,pcon->person[i].name)== 0) //比较输入的姓名和通讯录中已有的姓名 {
printf("nametsextagetteltaddrtn");
printf("%st",pcon->person[i].name);
printf("%st",pcon->person[i].sex);
printf("%dt",pcon->person[i].age);
printf("%st",pcon->person[i].tel);
printf("%stn",pcon->person[i].addr);
return i;
}
i++;
}
printf("sorry,the name you find is not exist!n");
return -1;
}
int modify_contact(pContact pcon) //修改函数,首先找到如要修改的姓名,然后重新输入 {
int ret = find_contact(pcon);
if(ret != -1) {
printf("input name,please!n");
scanf("%s",pcon->person[ret].name);
printf("input sex,please!n");
scanf("%s",pcon->person[ret].sex);
printf("input age,please!n");
scanf("%d",&(pcon->person[ret].age));
printf("input tel,please!n");
scanf("%s",pcon->person[ret].tel);
printf("input addr,please!n");
scanf("%s",pcon->person[ret].addr);
}
else {
printf("sorry,the name you find is not exist!n");
}
return 0;
}
int show_contact(pContact pcon) {
int i = 0;
printf("nametsextagettelttaddrtn");
//制表符来制作表头 for(i = 0;
i < pcon->user_count;
i++) {
printf("%st",pcon->person[i].name);
printf("%st",pcon->person[i].sex);
printf("%dt",pcon->person[i].age);
printf("%st",pcon->person[i].tel);
printf("%stn",pcon->person[i].addr);
}
printf("n");
return 0;
}
int clear_contact(pContact pcon) {
pcon->user_count = 0 ;
return 0;
}
//清除所有人,直接让成员个数变为0即可 void menu() {
printf("-------contact---------n");
printf(" 1.添加联系人信息 n");
printf(" 2.删除指定联系人信息 n");
printf(" 3.查找指定联系人信息 n");
printf(" 4.修改指定联系人信息 n");
printf(" 5.显示所有联系人信息 n");
printf(" 6.清空所有联系人 n");
printf(" 0.谢谢使用 n");
printf("-------contact---------n");
}
主函数:
#include"head.h" int main() {
int n=1;
struct Contact people;
//调用通讯录结构体 people.user_count = 0;
//初始化user_count while(n) {
menu();
printf("please inputn");
scanf("%d",&n);
switch(n) {
case 1: {
add_contact(&people);
break;
}
case 2: {
dele_contact(&people);
break;
}
case 3: {
find_contact(&people);
break;
}
case 4: {
modify_contact(&people);
break;
}
case 5: {
show_contact(&people);
break;
}
case 6: {
clear_contact(&people);
break;
}
default: {
return 0;
break;
}
//switch case语句分支选择不同函数实现不同作用 }
}
return 0;
}
结果实现:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- C语言通讯录管理系统课程设计
- C语言通讯录管理系统完整版
- C语言实现通讯录功能
- C语言通讯录实例分享
- 用C语言实现简易通讯录
- C语言实现一个通讯录
- C语言实现通讯录系统
- C语言实现简单的通讯录
- 使用C语言打造通讯录管理系统和教学安排系统的代码示例
- C语言基于哈希表实现通讯录