制作一个简单的通讯录

制作一个简单的通讯录:
一.总体方针

1.test.c
测试
2.contact.c
实现函数的功能
3.contact.h
声明函数

二.通讯录的主要内容简介

1.存放1000个好友信息
名字
电话
性别
住址
年龄
2.增加好友信息
3.删除指定名字的好友信息
4.查找好友信息
5.修改好友信息
6.打印好友信息
7.排序

三.制作
1.test.c
测试

#define _CRT_SECURE_NO_WARNINGS 1
#include"contact.h"
void menu()
{
	printf("************************************\n");
	printf("*****1.add          2.del      *****\n");
	printf("*****3.search       4.modify   *****\n");
	printf("*****5.show         6.sort     *****\n");
	printf("*****0.exit                    *****\n");
	printf("************************************\n");

}
int main()
{
	int input = 0;
	//创建通讯录
	//int size = 0;
	//struct PeoInfo con[MAX];//存放一千个人信息
	struct Contact con;//相当于上两行//con就是通讯录,里面包含:1000个元素的数和size 
	//初始化通讯录
	InitContact(&con);
	 
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d",&input);
		switch (input)
		{
		case ADD:
			AddContact(&con);
			break;
		case DEL:
			DelContact(&con);
			break;
		case SEARCH:
			SearchContct(&con);
			break;
		case MODIFY:
			ModfyContact(&con);
			break;
		case SHOW:
			ShowContact(&con);
			break;
		//case SORT:
			//SortContact(&con);
			break;
		case EXIT:
			printf("退出通讯录\n");
			break;
		default:
			printf("输入错误\n");
			break;
		}
	}while(input);
	return 0;
}

2.contact.c
实现函数的功能

#define _CRT_SECURE_NO_WARNINGS 1

#include"contact.h"

void InitContact(struct Contact* ps)
{
	memset(ps->data, 0, sizeof(ps->data));
	ps->size = 0;//设置通讯录最初只有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(const struct Contact* ps)
{
	if (ps->size == 0)
	{
		printf("通讯录为空\n");
	}
	else
	{
		int i = 0;
		printf("%-20s\t%-4s\t%-5\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");
		for (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);
		}
	}
}

static int FindByName(const struct Contact* ps, char name[MAX_NAME])
{
	int i = 0;
	for (i = 0; i < ps->size; i++)
	{
		if (0 == strcmp(ps->data[i].name, name))
			return i;
		return -1;
	} 
}


void DelContact(struct Contact* ps)
{
	char name[MAX_NAME];
	printf("请输入删除人的名字:>");
	scanf("%s", name);
	//1.查找需要删除的人的位置
	//int i = 0;
	//for (i = 0; i < ps->size; i++)
	//{
	//	if (0 == strcmp(ps->data[i].name, name))
	//		break;
	//}
	//找到返回名字所在元素的下标
	//找不到返回-1
	int pos = FindByName(ps,name);
	//2.删除
	if (pos == -1)
	{
		printf("需要删除的人不存在\n");
	}
	else
	{
		//删除数据
		int j = 0;
		for (j = pos; j < ps->size-1; j++)
		{
			ps->data[j] = ps->data[j + 1];
		}
		ps->size--;
		printf("删除成功\n");
	}

}

void SearchContct(const struct Contact* ps)
{
	char name[MAX_NAME];
	printf("请输入需要查找让你的名字:>");
	scanf("%s", name);
	//int i = 0;
	//for (i = 0; i < ps->size; i++)
	//{
	//	if (0 == strcmp(ps->data[i].name, name))
	//		break;
	//}
	int pos = FindByName(ps, name);
	if (pos == -1)
	{
		printf("要查找的人不存在\n");
	}
	else
	{
		printf("%-20s\t%-4s\t%-5\t%-12s\t%-20s\n", "名字", "年龄", "性别", "电话", "地址");
        printf("%-20s\t%-4d\t%-5s\t%-12s\t%-20s\n",
			ps->data[pos].name,
			ps->data[pos].age,
			ps->data[pos].sex,
			ps->data[pos].tele,
			ps->data[pos].addr);

	}
} 

void ModfyContact(struct Contact* ps)
{
	char name[MAX_NAME];
	printf("请输入需要修改人的名字");
	scanf("%s", name);
	int pos = FindByName(ps, name);
	if (pos == -1)
	{
		printf("需要修改的人信息不存在\n");
	}
	else
	{
		printf("请输入名字:>");
		scanf("%s", ps->data[pos].name);
		printf("请输入年龄:>");
		scanf("%d", &(ps->data[pos].age));
		printf("请输入性别:>");
		scanf("%s", ps->data[pos].sex);
		printf("请输入电话:>");
		scanf("%s", ps->data[pos].tele);
		printf("请输入地址:>");
		scanf("%s", ps->data[pos].addr);

		printf("修改完成\n");
	}
}

3.contact.h
声明函数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#define MAX 1000

//写在这里是因为方便以后修改内容
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX_TELE 12
#define MAX_ADDR 30

enum Option
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW
	//SORT
};

struct PeoInfo
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
};

//通讯录类型
struct Contact
{
	struct PeoInfo data[MAX];
	int size;
};

//声明函数
//初始化通讯录的函数
void InitContact(struct Contact* ps);

//增加一个信息到通讯录
void AddContact(struct Contact* ps);

//打印通讯录中的信息
void ShowContact(const struct Contact* ps);

//删除指定的联系人
void DelContact(struct Contact* ps);

//查找指定的人的信息
void SearchContct(const struct Contact* ps);

//修改指定联系人
void ModfyContact(struct Contact* ps);

注:个人结合老师上课内容对结构体的认识,本人萌新可能有许多不正到之处,望周正。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Java通讯录示例: ```java import java.util.ArrayList; import java.util.Scanner; public class AddressBook { private static ArrayList<Contact> contacts = new ArrayList<>(); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请选择操作:"); System.out.println("1. 添加联系人"); System.out.println("2. 查找联系人"); System.out.println("3. 删除联系人"); System.out.println("4. 显示所有联系人"); System.out.println("5. 退出"); int choice = scanner.nextInt(); switch (choice) { case 1: addContact(scanner); break; case 2: findContact(scanner); break; case 3: deleteContact(scanner); break; case 4: displayContacts(); break; case 5: System.out.println("程序已退出。"); scanner.close(); System.exit(0); break; default: System.out.println("无效的选择。"); break; } } } public static void addContact(Scanner scanner) { System.out.println("请输入联系人姓名:"); String name = scanner.next(); System.out.println("请输入联系人电话:"); String phoneNumber = scanner.next(); Contact contact = new Contact(name, phoneNumber); contacts.add(contact); System.out.println("联系人添加成功。"); } public static void findContact(Scanner scanner) { System.out.println("请输入要查找的联系人姓名:"); String name = scanner.next(); for (Contact contact : contacts) { if (contact.getName().equals(name)) { System.out.println("联系人信息:"); System.out.println("姓名:" + contact.getName()); System.out.println("电话:" + contact.getPhoneNumber()); return; } } System.out.println("未找到该联系人。"); } public static void deleteContact(Scanner scanner) { System.out.println("请输入要删除的联系人姓名:"); String name = scanner.next(); for (Contact contact : contacts) { if (contact.getName().equals(name)) { contacts.remove(contact); System.out.println("联系人删除成功。"); return; } } System.out.println("未找到该联系人。"); } public static void displayContacts() { if (contacts.isEmpty()) { System.out.println("通讯录为空。"); return; } System.out.println("所有联系人信息:"); for (Contact contact : contacts) { System.out.println("姓名:" + contact.getName()); System.out.println("电话:" + contact.getPhoneNumber()); } } } class Contact { private String name; private String phoneNumber; public Contact(String name, String phoneNumber) { this.name = name; this.phoneNumber = phoneNumber; } public String getName() { return name; } public String getPhoneNumber() { return phoneNumber; } } ``` 这个通讯录程序可以进行添加、查找、删除和显示联系人的操作。你可以根据需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值