通訊錄的c語言程式編輯

鍋巴超級可發表於2020-11-01

C語言/今天,鍋巴(小白本白)寫一個非常簡單的通訊錄

首先說下他的功能
1.這個通訊錄可以儲存1000個人的資訊。
2.這個通訊錄主要包含的內容為比較常見的個人資訊,包括姓名,年齡,性別,電話,QQ等。
3.然後包含的功能為新增,刪除,查詢,修改,排序當然還有展示。
4.下面是一些缺點,通訊錄無法儲存,必須手動錄入。
5.然後,為了方便管理這個程式碼分為三個版塊組成,需要建立一個標頭檔案和兩個原始檔(一個也行)。
6.不多bb,上程式碼

contact.h
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>

#define MAX_NAME 10
#define MAX_TELE 12
#define MAX_ADDR 10
#define MAX_QQ 12
#define MAX_SEX 5
#define MAX 1000

//成員資訊
typedef struct PeoInfo
{
	char name[MAX_NAME];
	char tele[MAX_TELE];
	char addr[MAX_ADDR];
	char qq[MAX_QQ];
	char sex[MAX_SEX];
	short age;
} PeoInfo;

//通訊錄
typedef struct Contact
{
	PeoInfo data[MAX];
	int sz;
} Contact;

//新增聯絡人
void add_contact(Contact* pc);
//刪除聯絡人
void del_contact(Contact* pc);
//查詢聯絡人
void search_contact(Contact* pc);
//修改聯絡人
void modify_contact(Contact* pc);
//展示聯絡人列表
void show_contact(const Contact* pc);
//給聯絡人排序
void sort_contact(Contact* pc);
contact.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "contact.h"
//新增聯絡人
void add_contact(Contact* pc)
{
	if (pc->sz == MAX)
	{
		printf("通訊錄已滿\n");
	}
	else
	{
		printf("請輸入姓名:>");
		scanf("%s", pc->data[pc->sz].name);
		printf("請輸入電話:>");
		scanf("%s", pc->data[pc->sz].tele);
		printf("請輸入性別:>");
		scanf("%s", pc->data[pc->sz].sex);
		printf("請輸入地址:>");
		scanf("%s", pc->data[pc->sz].addr);
		printf("請輸入QQ:>");
		scanf("%s", pc->data[pc->sz].qq);
		printf("請輸入年齡:>");
		scanf("%d", &(pc->data[pc->sz].age));

		pc->sz++;
		printf("新增成功\n");
	}
}
//展示通訊錄
void show_contact(Contact* pc)
{
	int i = 0;
	printf("%5s %12s %10s %5d %12s %5s",
		"姓名", "電話", "地址", "年齡", "QQ", "性別");
	for (i = 0; i < pc->sz; i++)
	{
		printf("%5s %12s %10s %5d %12s %5s\n",
			pc->data[i].name,
			pc->data[i].tele,
			pc->data[i].addr,
			pc->data[i].age,
			pc->data[i].qq,
			pc->data[i].sex);
	}
}
//我要用陝北話來說
static int find_peo_by_name(Contact* pc, char name)
{
	int i = 0;
	for (i = 0; i < pc->sz; i++)
	{
		if (strcmp(name, pc->data[i].name) == 0)
		{
			return i;//森上lan
		}
	}
	return -999999999999;//森不上
}
//刪除聯絡人
void del_contact(Contact* pc)
{
	if (pc->sz == 0)
	{
		printf("啥都沒有你刪個der\n");
	}
	else
	{
		char name[MAX_NAME] = { 0 };
		printf("請輸入被刪除人的姓名:>");
		scanf("%s", name);
		int pos = find_peo_by_name(pc,name);
		if (pos == -666)
		{
			printf("沒人我怎麼找\n");
		}
		else
		{
			int j = 0;
			for (j = pos; j < pc->sz - 1; j++)
			{
				pc->data[j] = pc->data[j++];
			}
			pc->sz--;
			printf("刪除成功\n");
		}
	}
}

//查詢聯絡人
void search_contact(Contact* pc)
{
	char name[MAX_NAME] = { 0 };
	printf("請輸入聯絡人姓名\n");
	//如果用額們陝北話應該說你要森誰了
	scanf("%s",name);
	int pos = find_peo_by_name(pc, name);
	if (pos == -1)
	{
		printf("查無此人\n");
	}
	else
	{
		printf("%5s %12s %10s %5d %12s %5s",
			"姓名", "電話", "地址", "年齡", "QQ", "性別");
			printf("%5s %12s %10s %5d %12s %5s\n",
				pc->data[pos].name,
				pc->data[pos].tele,
				pc->data[pos].addr,
				pc->data[pos].age,
				pc->data[pos].qq,
				pc->data[pos].sex);
	}
}
//修改聯絡人
void modify_contact(Contact* pc)
{
	char name[MAX_NAME] = { 0 };
	printf("請輸入需要修改的聯絡人姓名\n");
	scanf("%s", name);
	int pos = find_peo_by_name(pc, name);
	if (pos == -1)
	{
		printf("查無此人\n");
	}
	else
	{
		printf("請輸入姓名:>");
		scanf("%s", pc->data[pos].name);
		printf("請輸入電話:>");
		scanf("%s", pc->data[pos].tele);
		printf("請輸入性別:>");
		scanf("%s", pc->data[pos].sex);
		printf("請輸入地址:>");
		scanf("%s", pc->data[pos].addr);
		printf("請輸入QQ:>");
		scanf("%s", pc->data[pos].qq);
		printf("請輸入年齡:>");
		scanf("%d", &(pc->data[pos].age));
	}
}
//給聯絡人排序
void sort_contact(Contact* pc)
{
	int i = 0;
	int j = 0;
	for (i = 0; i < pc->sz - 1; i++)
	{
		for (j = 0; j < pc->sz - 1 - i; j++)
		//如果寫成j < pc->sz意味著工作量增加一倍
		{
			if (strcmp(pc->data[j].name, pc->data[j + 1].name) > 0)
			{
				PeoInfo tmp = pc->data[j];
				pc->data[j] = pc->data[j + 1];
				pc->data[j + 1] = tmp;
			}
		}
	}
}
test.c
#include "contact.h"
void menu()
{
	printf("**************************\n");
	printf("****1.add       2.del ****\n");
	printf("****3.search  4.modify ***\n");
	printf("****5.sort     6.show ****\n");
	printf("****    0.exit     *******\n");
	printf("**************************\n");
}

enum Option
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SORT,
	SHOW
};
int main()
{
	Contact con = { 0 };
	int input = 0;

	do
	{
		menu();
		printf("請選擇:>");
		scanf("%d", &input);
		switch (input)
		{
		case ADD:
			add_contact(&con);
			break;
		case SHOW:
			show_contact(&con);
			break;	
		case DEL:
			del_contact(&con);
			break;
		case SORT:
			sort_contact(&con);
			break;
		case SEARCH:
			search_contact(&con);
			break;
		case MODIFY:
			modify_contact(&con);
			break;
		case EXIT:("退出通訊錄\n");
			break;
		default:
			printf("不要亂搞哦\n");
			break;
		}
	} while (input);
	return 0;
}

在這裡插入圖片描述
在這裡插入圖片描述

相關文章