目录
一、前言
这个是学习c++的时候顺手写的一个练习小demo,发出来希望有需要的朋友可以用到。
也可以直接到我的github仓库中拉取源码和可运行程序。
https://github.com/Mjbetter/AddressBookManagementSystem
二、项目文件构成
项目的话,有三个头文件
1、function.h:封装的是功能函数的声明
2、show_menu.h:封装的是菜单函数的声明
3、structure.h:封装的是定义的结构体
有3个cpp文件
1、function.cpp:实现功能函数
2、main.cpp:主函数
3、show_menu.cpp:实现菜单显示
项目的运行环境是在VS2019上面。
三、项目实现功能
项目一共实现7个功能
1、添加联系人
2、显示联系人
3、删除联系人
4、查找联系人
5、修改联系人
6、清空联系人
7、退出通讯录
四、项目代码
function.h:
#include <iostream>
#include <string>
#include <Windows.h>
#include <iomanip>
#include "structure.h"
using namespace std;
/*Add new person to the address book*/
void add_person(struct Person *p,int *count);
/*show all person of the address book*/
void show_person(const struct Person* p,int count);
/*delete specified person of the address book*/
void delete_person(struct Person* p,string name,int *count);
/*find specified person of the address book*/
void find_person(const struct Person* p,string name,int count);
/*modify specified person of the address book*/
void modify_person(struct Person* p,string name,int count);
/*clean all person of the address book*/
void clean_person(struct Person* p,int *counts);
show_menu.h
#include <iostream>
#include <Windows.h>
using namespace std;
int main_menu();
structure.h
#ifndef _XXXX_
#define _XXXX_
#include <string>
#include <iostream>
using namespace std;
struct Person{
string name;
int age;
string sex;
string phone_number;
string address;
};
#endif
function.cpp
#include "function.h"
#define MAXSIZE 1000
/*Add new person to the address book*/
void add_person(struct Person* p,int *count) {
if (*count >= MAXSIZE) {
cout << "通讯录已满,无法添加" << endl;
system("pause");
return;
}
cout << "请输入姓名:";
cin >> p[*count].name;
cout << endl;
cout << "请输入性别:(男或女)";
while (cin >> p[*count].sex) {
if (p[*count].sex == "男" || p[*count].sex == "女") {
break;
}
else {
cout << "请输入正确的性别:(男或女)" << endl;
}
}
cout << endl;
cout << "请输入年龄:(0-110)";
while (cin >> p[*count].age) {
if (p[*count].age >= 0 && p[*count].age <= 110) {
break;
}
else {
cout << "请输入正确的年龄:(0-110)" << endl;
}
}
cout << endl;
cout << "请输入联系电话:";
cin >> p[*count].phone_number;
cout << endl;
cout << "请输入家庭住址:";
cin >> p[(*count)++].address;
cout << endl;
cout << endl << endl << "添加成功,即将返回主菜单...";
system("pause");
}
/*show all person of the address book*/
void show_person(const struct Person* p,int count) {
if (count == 0) {
cout << "您的通讯录中暂无信息,请添加信息" << endl;
system("pause");
return;
}
cout << "您的通讯录中有如下亲朋好友:" << endl;
cout << left << setw(8) << "姓名" << setw(8) << "性别" << setw(8) << "年龄" << setw(26) << "联系电话" << setw(40) << "家庭住址" << endl;
for (int i = 0; i < count; i++) {
/*aligned to the left*/
cout << left << setw(8) << p[i].name << setw(8) << p[i].sex << setw(8) << p[i].age << setw(26) << p[i].phone_number << setw(40) << p[i].address << endl;
}
system("pause");
}
/*delete specified person of the address book*/
void delete_person(struct Person* p,string name,int *count) {
int judge = 0;
for (int i = 0; i < *count; i++) {
if (p[i].name == name) {
judge = 1;
for (int j = i; j < (*count)-1; j++) {
p[j] = p[j + 1];
}
*count = *count - 1;
}
}
if (judge == 0) cout << "对不起,你的通讯录中不存在此人" << endl;
else cout << "已经删除所有名字为" << name << "的联系人";
system("pause");
}
/*find specified person of the address book*/
void find_person(const struct Person* p,string name,int count) {
for (int i = 0; i < count; i++) {
if (p[i].name == name) {
cout << left << setw(8) << "姓名" << setw(8) << "性别" << setw(8) << "年龄" << setw(8) << "联系电话" << setw(8) << "家庭住址" << endl;
cout << left << setw(8) << p[i].name << setw(8) << p[i].sex << setw(8) << p[i].age << setw(8) << p[i].phone_number << setw(8) << p[i].address << endl;
break;
}
}
system("pause");
}
/*modify specified person of the address book*/
void modify_person(struct Person* p,string name,int count) {
for (int i = 0; i < count; i++) {
if (p[i].name == name) {
cout << "请输入姓名:";
cin >> p[i].name;
cout << endl;
cout << "请输入性别:";
cin >> p[i].sex;
cout << endl;
cout << "请输入年龄:";
cin >> p[i].age;
cout << endl;
cout << "请输入联系电话:";
cin >> p[i].phone_number;
cout << endl;
cout << "请输入家庭住址:";
cin >> p[i].address;
cout << endl;
cout << endl << endl << "修改成功,即将返回主菜单...";
Sleep(3000);
break;
}
}
}
/*clean all person of the address book*/
void clean_person(struct Person* p,int *counts) {
for (int i = 0; i < *counts; i++) {
memset(&p[i], '\0', sizeof(struct Person));
}
cout << "已经清空所有联系人" << endl;
*counts = 0;
system("pause");
}
main.cpp
#include <iostream>
#include <string>
#include <Windows.h>
#include "show_menu.h"
#include "function.h"
#include "structure.h"
#include<stdlib.h>
using namespace std;
struct Person persons[1000];
int counts;
int main() {
while (1) {
int number = main_menu();
string name;
//according to the serial number to jump interface
switch (number)
{
case 1:
system("cls");
add_person(persons, &counts);
break;
case 2:
system("cls");
show_person(persons, counts);
break;
case 3:
cout << "请输入想要删除的联系人的姓名:" << endl;
cin >> name;
delete_person(persons, name, &counts);
break;
case 4:
cout << "请输入想要查找的联系人的姓名:" << endl;
cin >> name;
find_person(persons, name, counts);
break;
case 5:
cout << "请输入想要修改的联系人的姓名:" << endl;
cin >> name;
modify_person(persons, name, counts);
break;
case 6:
clean_person(persons, &counts);
break;
case 7:
cout << "3秒后退出系统";
Sleep(3000);
exit(0);
break;
}
}
}
show_menu.cpp
#include "show_menu.h"
int main_menu() {
system("cls");
cout << "--------欢迎使用MJ牌通讯录管理系统--------" << endl;
cout << "----------------------------------------" << endl;
cout << "----1.添加联系人--------------" << endl;
cout << "----2.显示联系人--------------" << endl;
cout << "----3.删除联系人--------------" << endl;
cout << "----4.查找联系人--------------" << endl;
cout << "----5.修改联系人--------------" << endl;
cout << "----6.清空联系人--------------" << endl;
cout << "----7.退出通讯录--------------" << endl;
cout << "-----------------------------" << endl;
cout << "请输入选择的功能序号:";
int number;
cin >> number;
return number;
}
希望对大家有帮助。