背景:
使用C++编写一个个人通信录管理系统,来完成作业上的一些需求。
1-提供录入个人信息、修改个人信息(姓名和出生日期除外)、删除个人信息等编辑功能
2-提供按姓名查询个人信息的功能
3-提供查找在5天之内过生日的人员的信息,以便发出祝贺电话或 E_mail
4-按照姓名或出生日期排序,显示输出【这里我们选择使用出生日期】
5-统计在给定月份出生的人数,并显示输出
6-能列出全体人员的姓名、出生日期、电话和email地址
7-能分别列出同学、同事、朋友、亲戚的所有信息
8-用菜单形式提供程序的各种功能的选择
提示:
(1)将同学、同事、朋友和亲戚的信息分别存入通信录文件 AddressBook1.txt ,AddressBook2.txt,AddressBook3.txt和AddressBook4.txt中。文件中除了包含每人的姓名、出生日期、电话和 Email地址等信息外,对同学还要包含一起上学的学校名称,对同事还要包含共事的单位名称,对朋友还要包含认识的地点,对亲戚包含称呼。其中姓名用汉语拼音或英文表示。
(2)在查出的5天内过生日的人员信息中,要包括该日期是星期几的信息。例如:3月21日(星期四) 哥哥:张晓阳 Tel: 39380285, Email:zxy@163.com
(3)能够自动生成祝贺生日的电子邮件的文本文件,文件由被祝贺人姓名和祝贺词等组成。其内容为:【这看起来还要单独生成文件- -~~】
--这俩是一起的!!!
被祝贺人姓名:
祝生日快乐,健康幸福。
祝贺人姓名
效果:
主菜单
录入联系人
查看所有联系人
修改联系人
删除联系人
按姓名查询
五天内生日联系人
按出生日期排序
根据月份查询联系人
根据同学-同事-朋友-亲戚分组查看
退出系统
主要代码:
本系统ide为vision studio2020,如果是vision studio,基本都能运行
vx-zew1040994588
主菜单
cout << "\t\t\t\t**************************************************" << endl;
cout << "\t\t\t\t***** 个人通讯录软件 *****" << endl;
cout << "\t\t\t\t*****========================================*****" << endl;
cout << "\t\t\t\t***** 1.录入联系人信息 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 2.修改联系人信息 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 3.删除联系人 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 4.查询联系人 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 5.显示所有联系人 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 6.查询最近五天生日联系人 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 7.查询给定月份生日人数 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 8.按出生日期排序 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 9.分组查询 *****" << endl;
cout << "\t\t\t\t***** *****" << endl;
cout << "\t\t\t\t***** 0.退出通讯录 *****" << endl;
cout << "\t\t\t\t**************************************************" << endl;
vx-zew1040994588
void birthday_sort() {
//默认值赋为-1,默认他通信录数据不超过100条
time_t a[100] = {0};
int flag = 0;
int h = 1;
int n = 1;
class Person* p1;
p1 = new Person;
p1 = head->next;
do
{
//给数组赋时间戳的值
a[++flag] = p1->birthday_number;
p1 = p1->next;
n++;
} while (p1 != NULL);
/*
时间戳越大越年轻,那么我们需要先输出时间戳小的那一方,
用逆冒泡无问题
n多了一个!!!!
*/
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if (a[j] < a[j + 1])//降序排序就用: <
{
time_t temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
//for (int i = 0; i < n - 1; i++) {
// cout << a[i] <<endl;
//}
for (int i = 0; i < n - 1; i++) {
class Person* p3;
p3 = new Person;
p3 = head->next;
do
{
if (p3->birthday_number == a[i]) {
cout << "该联系人的姓名为:" << p3->name << endl;
cout << "该联系人的出生日期为:" << p3->birthday_str << endl;
cout << "该联系人的电话号为:" << p3->mobile << endl;
cout << "该联系人email地址为:" << p3->address << endl;
if (p3->relationship == 1)
cout << "该联系人是:同学" << endl;
else if (p3->relationship == 2)
cout << "该联系人是:同事" << endl;
else if (p3->relationship == 3)
cout << "该名联系人是:朋友" << endl;
else if (p3->relationship == 4)
cout << "该名联系人是:亲戚" << endl;
cout << "该联系人的联系提示为:" << p3->tip << endl;
break;
}
p3 = p3->next;
} while (p3 != NULL);
}
}