C语言小项目通讯录源码

目录

1.test.c

2.contacts.h

3.contacts.c

4.总结


        本篇文章是C语言的通讯录源码。

1.test.c

#include "contacts.h"

void table() {

	printf("************************\n");
	printf("***** 1.ADD  2.del *****\n");
	printf("***** 3.sear 4.modi*****\n");
	printf("***** 5.show 6.cls *****\n");
	printf("***** 7.sort 0.quit*****\n");
	printf("************************\n");

}



int main() {

	int input = 0;
	do {	

		table();
		scanf("%d", &input);
		switch (input) {
		case 1: {
			int ret = contacts_add(&cont);
			if (-1 == ret) {
				printf("增加失败,用户已满\n");
			}
			break;
		}
		case 2: {
			int de = contacts_dele(&cont);
			if (-1 == de) {
				printf("通讯录为空,不能删除\n");
			}
			else if(0 == de) {
				printf("需要删除的人名不存在,请您核实后重新输入\n");
			}
			else {
				printf("删除成功\n");
			}
			break;
		}
		case 3: {
			search_by_name(&cont);
			break;
		}
		case 4:
			modify_contacts(&cont);
			break;
		case 5:
			show_add(&cont);
			break;
		case 6:
			clear(&cont);
			break;
		case 7:
			sort_by_age(&cont);
			break;
		case 0:
			printf("已退出\n");
			break;
		default:
			printf("输入错误,请重新输入\n");
			break;
		}
	} while(input);

	return 0;

}

2.contacts.h

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define NameMax 20
#define SexMax 20
#define TeleMax 20
#define AdressMax 20
#define MAX 1000
#include <string.h>


typedef struct inf {

	char name[NameMax];
	char sex[SexMax];
	int age;
	char tele[TeleMax];
	char address[AdressMax];

}inf;

struct contacts {

	inf cts[1000];
	int sz;

}cont;

int contacts_add(struct contacts* cont);

int contacts_dele(struct contacts* cont);

void show_add(struct contacts* cont);

void search_by_name(struct contacts* cont);

void modify_contacts(struct contacts* cont);

void clear(struct contacts* cont);

void sort_by_age(struct contacts* cont);

3.contacts.c

#include "contacts.h"

int contacts_add(struct contacts* cont) {

	if (MAX == cont->sz) {
		return -1;
	}
	else {
		printf("请输入新成员姓名:\n");
		scanf("%s",cont->cts[cont->sz].name);
		printf("请输入新成员性别:\n");
		scanf("%s", cont->cts[cont->sz].sex);
		printf("请输入新成员年龄:\n");
		scanf("%d", &(cont->cts[cont->sz].age));
		printf("请输入新成员电话:\n");
		scanf("%s", cont->cts[cont->sz].tele);
		printf("请输入新成员地址:\n");
		scanf("%s", cont->cts[cont->sz].address);
		cont->sz++;
		return cont->sz;
	}

}

int contacts_dele(struct contacts* cont) {

	char name1[NameMax] = { 0 };
	if (cont->sz == 0) {
		return -1;
	}
	else {
		printf("请输入需要删除人的姓名:\n");
		scanf("%s",name1);
		int i = 0;
		int n = 0;
		for (i = 0;i < cont->sz;i++) {
			if (strcmp(cont->cts[i].name,name1) == 0) {
				n = i;
			}
		}
		for (i = n;i < cont->sz - 1;i++) {
			strcpy(cont->cts[i].name, cont->cts[i + 1].name);
			strcpy(cont->cts[i].sex, cont->cts[i + 1].sex);
			cont->cts[i].age = cont->cts[i + 1].age;
			strcpy(cont->cts[i].tele, cont->cts[i + 1].tele);
			strcpy(cont->cts[i].address, cont->cts[i + 1].address);
		}
		cont->sz--;
	}
	
	return 1;

}

void show_add(struct contacts* cont) {

	if (cont->sz == 0) {
		printf("通讯录为空\n");
		return;
	}
	int i = 0;
	printf("%-20s %-20s %-20s %-20s %-20s\n", "姓名", "性别", "年龄", "电话", "地址");
	for (i = 0;i < cont->sz;i++) {
		
		printf("%-20s %-20s %-20d %-20s %-20s\n", cont->cts[i].name, 
			cont->cts[i].sex, 
			cont->cts[i].age,
			cont->cts[i].tele, 
			cont->cts[i].address);
	}

}

void search_by_name(struct contacts* cont) {

	char name2[NameMax] = { 0 };
	printf("请输入需要查找人的姓名:\n");
	scanf("%s",name2);
	int i = 0;
	for (i = 0;i < cont->sz;i++) {
		if (strcmp(cont->cts[i].name, name2) == 0) {
			printf("%-20s %-20s %-20s %-20s %-20s\n", "姓名", "性别", "年龄", "电话", "地址");
			printf("%-20s %-20s %-20d %-20s %-20s\n", cont->cts[i].name,
				cont->cts[i].sex,
				cont->cts[i].age,
				cont->cts[i].tele,
				cont->cts[i].address);
		}
	}
	if (i == cont->sz) {
		printf("抱歉,查无此人。\n");
	}

}

void modify_contacts(struct contacts* cont) {

	char name3[NameMax] = { 0 };
	printf("请输入您要修改者的姓名:\n");
	scanf("%s",name3);
	int i = 0;
	int pos = 0;
	for (i = 0;i < cont->sz;i++) {
		if (strcmp(cont->cts[i].name, name3) == 0) {
			pos = i;
			break;
		}
	}
	if (pos == 0) {
		printf("查无此人。\n");
		return;
	}
	printf("请问您要将他/她的姓名修改为:\n");
	scanf("%s", cont->cts[pos].name);
	printf("请问您要将他/她的性别修改为:\n");
	scanf("%s", cont->cts[pos].sex);
	printf("请问您要将他/她的年龄修改为:\n");
	scanf("%d", &(cont->cts[pos].age));
	printf("请问您要将他/她的电话修改为:\n");
	scanf("%s", cont->cts[pos].tele);
	printf("请问您要将他/她的地址修改为:\n");
	scanf("%s", cont->cts[pos].address);
	printf("修改成功\n");

}

void clear(struct contacts* cont) {

	int i = 0;
	for (i = 0;i < cont->sz;i++) {
		strcpy(cont->cts[i].name, "0");
		strcpy(cont->cts[i].sex, "0");
		cont->cts[i].age = 0;
		strcpy(cont->cts[i].tele, "0");
		strcpy(cont->cts[i].address, "0");
	}
	cont->sz = 0;
	printf("已清空\n");
	return;

}



void sort_by_age(struct contacts* cont) {

	int count = 0;
	int i = 0;
	for (i = 0;i < cont->sz;i++) {
		int j = 0;
		for (j = 0;j < cont->sz - 1 - i;j++) {
			if (cont->cts[j].age > cont->cts[j + 1].age) {
				int tem_age = 0;
				tem_age = cont->cts[j].age;
				cont->cts[j].age = cont->cts[j + 1].age;
				cont->cts[j + 1].age = tem_age;
				char arr[20] = { 0 };
				strcpy(arr, cont->cts[j].name);
				strcpy(cont->cts[j].name, cont->cts[j + 1].name);
				strcpy(cont->cts[j + 1].name, arr);
				strcpy(arr, cont->cts[j].sex);
				strcpy(cont->cts[j].sex, cont->cts[j + 1].sex);
				strcpy(cont->cts[j + 1].sex, arr);
				strcpy(arr, cont->cts[j].tele);
				strcpy(cont->cts[j].tele, cont->cts[j + 1].tele);
				strcpy(cont->cts[j + 1].tele, arr);
				strcpy(arr, cont->cts[j].address);
				strcpy(cont->cts[j].address, cont->cts[j + 1].address);
				strcpy(cont->cts[j + 1].address, arr);\\建议函数封装重复的操作。
			}
		}
	}
	printf("排序完成\n");

	return;

}

4.总结

        easy.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值