⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 person.cpp

📁 一个通讯录的小程序
💻 CPP
字号:
#include <stdio.h>
#include <string.h>
#include "person.h"
#include "talk.h"

////////////////////////////////////////////////////////////////////////////////
// 人个信息处理函数
////////////////////////////////////////////////////////////////////////////////

static int serialNumber; // 自动编号

// 设置自动编号
void SetPersonSn(int sn) {
	serialNumber = sn;
}

// 读取自动编号
int GetPersonSn() {
	return serialNumber;
}

// 输入个人信息
// 若栏目号cn为0, 则输入全部信息, 否则只输入指定栏目
void PersonInput(PERSON *p, int cn) {
	switch (cn) {
	case 0: // 全部栏目
		p->sn = ++ serialNumber; // 自动生成编号
		printf("\n编号: %d\n", p->sn);
		printf("姓名: ");
		fflush(stdin);
		gets(p->name);
		p->sex = Menu("性别: (1-男 2-女): ", "12") == '1';
		DateInput("出生日期: ", &p->birth);
		fflush(stdin);
		printf("电子邮件: ");
		gets(p->email);
		printf("QQ号: ");
		gets(p->qq);
		printf("固定电话: ");
		gets(p->tel);
		printf("移动电话: ");
		gets(p->mobile);
		break;
	case 1: // 编号
		printf("编号: ");
		scanf("%d", &p->sn);
		break;
	case 2: // 姓名
		printf("姓名: ");
		fflush(stdin);
		gets(p->name);
		break;
	case 3: // 性别
		p->sex = Menu("性别: (1-男 2-女): ", "12") == '1';
		break;
	case 4: // 出生日期
		DateInput("出生日期: ", &p->birth);
		break;
	case 5: // 电子邮件
		printf("电子邮件: ");
		fflush(stdin);
		gets(p->email);
		break;
	case 6: // QQ号
		printf("QQ号: ");
		fflush(stdin);
		gets(p->qq);
		break;
	case 7: // 电话
		printf("固定电话: ");
		fflush(stdin);
		gets(p->tel);
		break;
	case 8: // 移动电话
		printf("移动电话: ");
		fflush(stdin);
		gets(p->mobile);
		break;
	default:
		printf("栏目参数错!\a\n");
	}
}

// 输出个人信息
void PersonOutput(const PERSON *p, bool title) {
	if (title) {
		printf("\n编号 姓名-- 性别 出生日期-- 电子邮件-------- QQ号------ 固定电话- 移动电话----\n");
	}
	if (p) {
		printf("%4d %-6.6s %-4.4s ", p->sn, p->name, p->sex ? "男" : "女");
		DateOutput(&p->birth);
		printf(" %-16.16s %-10.10s %-9.9s %-12.12s\n", p->email, p->qq, p->tel, p->mobile);
	}
}

// 个人信息按cn栏目比较
// 若*p1 > *p2, 则返回正数
// 若*p1 < *p2, 则返回负数
// 若*p1 = *p2, 则返回零值
int PersonCmp(const PERSON *p1, const PERSON *p2, int cn) {
	int r = 0;
	switch (cn) {
	case 1: // 编号
		r = p1->sn - p2->sn;
		break;
	case 2: // 姓名
		r = strcmp(p1->name, p2->name);
		break;
	case 3: // 性别
		r = (int) p1->sex - (int) p2->sex;
		break;
	case 4: // 出生日期
		r = DateCmp(&p1->birth, &p2->birth);
		break;
	case 5: // 电子邮件
		r = strcmp(p1->email, p2->email);
		break;
	case 6: // QQ号
		r = strcmp(p1->qq, p2->qq);
		break;
	case 7: // 固定电话
		r = strcmp(p1->tel, p2->tel);
		break;
	case 8: // 移动电话
		r = strcmp(p1->mobile, p2->mobile);
		break;
	default:
		printf("栏目参数错误!\a\n");
	}
	return r;
}

// 个人信息交换
void PersonSwap(PERSON *p1, PERSON *p2) {
	PERSON t;
	t = *p1; *p1 = *p2; *p2 = t;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -