用C/C++写一个电子名片管理系统

  • 要包含的头文件
  • 首先定义联系人的结构体、根据需要定义结构体内容和声明所需要的功能函数
  • 其次是菜单函数用来选择各种功能
  • 下面是各个功能函数
  • 然后是以联系人电话为名字,将联系人信息储存到电脑中
  • 最后做一个美观一点的开始界面
  • 一个程序的入口 主函数

手机已成为生活中必不可少的,管理其中的联系人信息,包括常用的社交信息更是不可或缺的。下面是如何用 C/C++实现联系人信息的管理。

要包含的头文件

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include <iostream>
#include<stdio.h>
#include <fstream>
using namespace std;
#define N 15               //最多储存人数
string classify[20];

首先定义联系人的结构体、根据需要定义结构体内容和声明所需要的功能函数

struct person             //结构体定义个人信息
{int number;string Name;string place;string Phonenumber[3];  //每人最多存三个电话号码,用于实现一人多号string QQ;string Wechat;string e_mile;string blog;string classify;
}per[N];
void meun();
void search();
void add();
void modify();
void delect();
void show();
void wr();
void save();
void definetype();

其次是菜单函数用来选择各种功能

void menu()
{system("cls");int n, w;              //菜单选项do{puts("\t\t****************通讯录界面******************");puts("\t\t\t\t1.添加联系人");puts("\t\t\t\t2.搜索联系人");puts("\t\t\t\t3.修改资料");puts("\t\t\t\t4.删除资料");puts("\t\t\t\t5.查看全部联系人");puts("\t\t\t\t6.进行分组");puts("\t\t\t\t7.存储");puts("\t\t\t\t8.退出");puts("\t\t*******************************************\n");cout << "选择功能:【】\b\b" << endl;cin >> n;if (n < 1 || n>8){w = 1; getchar();}else w = 0;} while (w == 1);switch (n){case 1:system("cls");add(); break;  //查找case 2:system("cls");search(); break;     //增加case 3:system("cls");modify(); break;  //修改case 4:system("cls");delect(); break;   //删除 case 5:system("cls");show(); break;    //展示所有联系人姓名、分组case 6:system("cls");definetype(); break;case 7:system("cls");save(); break;case 8:system("cls");cout << "********************程序结束,谢谢使用********************";exit(0);defult:cout << "输入正确数字" << endl;}
};

下面是各个功能函数

void showone(int x, person per[])
{cout << "姓名:    " << per[x].Name << endl;cout << "电话:    " << per[x].Phonenumber[0] << "   " << per[x].Phonenumber[1] << "   " << per[x].Phonenumber[2] << endl;cout << "博客:     " << per[x].blog << endl;cout << "类别:    " << per[x].classify << endl;cout << "邮箱:    " << per[x].e_mile << endl;cout << "QQ:      " << per[x].QQ << endl;cout << "微信:    " << per[x].Wechat << endl;cout << "地址:    " << per[x].place << endl;
}
void definetype()                //自定义分组函数
{int n, i;cout << "输入分组数量:" << endl;cin >> n;for (i = 1; i <= n; i++){cout << "输入第";cout << i;cout << "组名称" << endl;cin >> classify[i - 1];}cout << "分组完成" << endl;system("pause");system("cls");menu();
}
void search()                  //查询
{int x, count = 0;int countNUM;int countCLA=0;string name;string num;int a, b;string cla;cout << "\n\t\t*********************查找菜单**********************";cout << "\n\t\t*******************1--按名字查找*******************";cout << "\n\t\t*******************2--按电话查找*******************";cout << "\n\t\t*******************3--按分组查找*******************";    cin >> a;if (a == 1)   //查名字{cout << "输入联系人姓名:" << endl;cin >> name;for (x = 0; x < N; x++){if (per[x].Name == name)//历遍结构体成员{showone(x, per);count++;}}if (count == 0)cout << "查无此人!" << endl;}if(a==2)                     //查电话{cout << "请输入要查电话:" << endl;cin >> num;for (x = 0; x < N; x++){for (countNUM = 0; countNUM < 3; countNUM++)//历遍每个电话号码if (per[x].Phonenumber[countNUM] == num)//历遍结构体成员{showone(x, per);countNUM++;}}if (countNUM == 0)cout << "查无此人!" << endl;}if (a == 3)               //查分组{cout << "请输入分组名称:" << endl;cin >> cla;for (x = 0; x < N; x++){if (per[x].classify == cla){showone(x, per);countCLA++;}}if (countCLA == 0)cout << "查无此人!" << endl;}cout << "1----继续查找" << "    " << "2----返回菜单" << endl;cin >> b;if (b == 2){system("cls");menu();}else{search();}}
void show() //查看全部资料
{int i, p, u;static int t;cout << endl;cout <<"      "<< "类别" << "--" << "姓名" << "--" << "编号" << endl;if (per[0].classify == ""){cout << "未添加联系人" << endl;system("pause");system("cls");menu();}for (i = 0; i < N; i++){t = 0;for (p = i; p < N; p++)if (per[i].classify == per[p].classify)//输出同分组联系人{if (i == 0)//直接输出第一组cout << "      "<< per[p].classify << "--" << per[p].Name << "--" << p << endl;else if (i > 0){for (u = p; u >= 0; u--)//第一组后,对比位置靠前的联系人,分组不同即输出{if (t == 0){if (per[u - 1].classify == per[p].classify)break;if (u == 0)//若与前面所有分组都不同{cout << "      " << per[p].classify << "--" << per[p].Name << "--" << p << endl;t++;}}elseif (per[u - 1].classify == per[p].classify){cout << "      " << per[p].classify << "--" << per[p].Name << "--" << p << endl;break;}}}}}cout << "输入要查询的联系人的编号";int index;cin >> index;showone(index, per);system("pause");system("cls");menu();}
void add()  //增加
{int i, x,p;for (i = 0; ; i++){cout << "请输入要增加联系人的信息" << endl;cout << "姓名:   ";cin >> per[i].Name;cout << "电话号码:   " << endl;;cout << "选择输入电话号码的个数(最多可输入三个)" << endl;cout << "--1--2--3--"<<endl;cin >> p;if (p > 3){cout << "wrong number!"<<endl;}switch (p){case 1:cout << "选择成功 请输入电话号码" << endl;cin >> per[i].Phonenumber[0];break;case 2:cout << "选择成功 请输入电话号码" << endl;cin >> per[i].Phonenumber[0] >> per[i].Phonenumber[1];break;case 3:cout << "选择成功 请输入电话号码" << endl;cin >> per[i].Phonenumber[0] >> per[i].Phonenumber[1] >> per[i].Phonenumber[2];break;}cout << "地址:   ";cin >> per[i].place;cout << "QQ:   ";cin >> per[i].QQ;cout << "微信:   ";cin >> per[i].Wechat;cout << "邮箱:   ";cin >> per[i].e_mile;cout << "博客:   ";cin >> per[i].blog;cout << "分类:   ";cin >> per[i].classify;for (int m = 0;m < i;m++){if (classify[m] == per[i].classify){break;}classify[i] = per[i].classify;}cout << "添加成功" << endl;cout << "1----继续添加" << endl << "2----返回菜单" << endl;cin >> x;if (x == 2){break;}system("cls");}system("cls");menu();}
void   delect()   //删除
{string deName;cout << "请输入要删除的对象姓名"<<endl;cin >> deName;int k=0, n;for (int j = 0;j<N; j++){if (deName == per[j].Name){for (int z = j; z < N; z++){per[z] = per[z + 1];}k = 1;}}cout << "删除成功" << endl;if (k == 0)printf("查无此人");system("pause");system("cls");menu();
}
void modify()      //修改
{string deName;cout << "请输入要修改的对象"<<endl;cin >> deName;for (int j = 0; j < 100; j++){if (per[j].Name == deName){int p;cout << "请输入要修改联系人的信息"<<endl;cout << "姓名:    ";cin >> per[j].Name;cout << "电话号码:   " << endl;;cout << "选择输入电话号码的个数(最多可输入三个)" << endl;cout << "--1--2--3--" << endl;cin >> p;if (p > 3){cout << "wrong number!" << endl;modify();}switch (p){case 1:cout << "选择成功 请输入电话号码" << endl;cin >> per[j].Phonenumber[0];break;case 2:cout << "选择成功 请输入电话号码" << endl;cin >> per[j].Phonenumber[0] >> per[j].Phonenumber[1];break;case 3:cout << "选择成功 请输入电话号码" << endl;cin >> per[j].Phonenumber[0] >> per[j].Phonenumber[1] >> per[j].Phonenumber[2];break;}cout << "地址:    ";cin >> per[j].place;cout << "QQ:    ";cin >> per[j].QQ;cout << "微信:    ";cin >> per[j].Wechat;cout << "邮箱:    ";cin >> per[j].e_mile;cout << "博客:    ";cin >> per[j].blog;cout << "分类:    ";cin >> per[j].classify;system("cls");cout << "您的修改结果为:" << endl;showone(j, per);}}cout << "修改成功";system("pause");system("cls");menu();
}

然后是以联系人电话为名字,将联系人信息储存到电脑中

这里用到了C++中的流的知识

void save()    //储存文件
{for (int i = 0;i < N;i++){ofstream out(("d:\\"+per[i].Phonenumber[0] + ".txt").c_str());if (!out) {cout << "文件打开失败\n";return;}out <<"姓名: "<< per[i].Name<<"    电话: "<<per[i].Phonenumber[0] << "    " << per[i].Phonenumber[1] << "    " << per[i].Phonenumber[2];out <<"地址: " <<per[i].place << "    QQ: " << per[i].QQ<<"    微信: "<< per[i].Wechat << "    博客: " << per[i].blog << "    所属分类: " << per[i].classify << "    邮箱: " << per[i].e_mile;out.close();cout << "文件" << i << "储存完成" << endl;cout << "按任意键返回菜单";}system("cls");system("pause");menu();
}

最后做一个美观一点的开始界面

void start()
{system("cls");cout << "\t\t*********************************************************" << endl;cout << "\t\t*                                                       *" << endl;cout << "\t\t*                                                       *" << endl;cout << "\t\t*                                                       *" << endl;cout << "\t\t*                欢迎使用电子名片管理系统               *" <<endl;cout << "\t\t*                                                       *" << endl;cout << "\t\t*                                                       *" << endl;cout << "\t\t*                                                       *" << endl;cout << "\t\t*                                                       *" << endl;cout << "\t\t*                                                       *" << endl;cout << "\t\t*********************************************************" << endl;system("pause");}

一个程序的入口 主函数

这里是先调用了开始函数,然后调用菜单函数 后面的所有操作都在菜单函数中进行了。

int main()                    //主函数
{system("title 电子名片管理");//设置cmd窗口标题system("mode con cols=95 lines=30");//窗口宽度高度system("color 0A");//设置颜色start();menu();
}

用C/C++写一个电子名片管理系统相关推荐

  1. 用c语言给心仪的女生写一个电子钢琴

    导火线 2020/3/26 周四的晚上,上完公选课的我跑去打了几局排位,还遇到对面开挂.我心里那个气啊,就差2颗星了,还让不让人玩了.直接举报! 完了之后.某某人给我发了一条微信,说某某人其实比较喜欢 ...

  2. VUE写一个本地教室管理系统

    VUE写一个本地教室管理系统 实现效果 主体 模态框 Vue JS主体 Vue实现删除功能 splice语法 Vue实现添加功能 push()语法 Vue实现修改功能 源码 实现效果 点击添加按钮后, ...

  3. 用Java写一个公司员工管理系统!

    用Java写一个公司员工管理系统! 今天看CSDN发现写管理系统的文章不少,我在这里也给大家用java写一篇!(当然这里只是最简单的那种qwq) 核心功能:对员工各项信息的管理 采用属性文件+资源文件 ...

  4. c语言怎么表示字节集,用易语言写一个电子钢琴软件

    这只是一个窗口程序集,是整个软件的一部分,算是核心吧 易语言不同于C语言.java,易语言是全中文编写,说实话,我感觉中文编写还不如英文编写顺手.我感觉最简单的还是我当初自己学的Python语言. 下 ...

  5. 用C语言写一个人员文件管理系统(一)

    题目如下: 1.输入三个人的信息(姓名,年龄.性别.家庭住址),并保存到txt文件中.再从文件中读取信息显示在屏幕上: 2.实现人员信息重复显示功能: 3.实现人员信息的添加. 过程如下: 首先建立一 ...

  6. 用PHP写一个学生学籍管理系统

    为了搭建一个完整的学生学籍管理系统,需要分模块进行设计和实现.这里我们按照以下模块来讲解: 数据库设计 用户登录和权限控制 学生信息管理 班级信息管理 课程信息管理 成绩信息管理 1. 数据库设计 我 ...

  7. 用 python写一个学生信息管理系统

    好的,首先需要设计学生信息管理系统的数据结构. 假设我们需要记录每个学生的姓名.学号.年龄.性别以及成绩,我们可以使用 Python 的字典来表示一个学生的信息,字典的键表示信息的名称,值表示信息的内 ...

  8. 利用html加css以及JavaScript写一个学生后台管理系统简单平台

    之前学习的时候做了一个简单的crud,下面是效果图 html内容如下 <div class="conter"><div><button id=&quo ...

  9. mysql 设计超市订单图_利用maven模板写一个超市订单管理系统(1)项目基础搭建

    步骤: 1.创建并配置maven,(这里我用的是maven3.6.1版本,没用idea自带maven) 1.1配置web.xml版本(因为使用idea模板时默认配置的是web 1版本),在这里我自定义 ...

最新文章

  1. ×××第三话:基础Ez×××配置
  2. 算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)
  3. Struts中用bean:size和bean:write的使用,用于显示集合的总记录数
  4. w25n01g 代码_W25N01GV 驱动
  5. 解决maven项目Cannot change version of project facet Dynamic web module to 3.0
  6. 基于Hmily实现TCC分布式事务解决方案
  7. Python实现计算机屏幕任意区域截图
  8. 转帖:DotNet 资源大全中文版
  9. sv信道模型是什么_信道模型(信道模型分类)
  10. 【MATLAB】几种特殊矩阵,Hilbert矩阵,Toeplitz矩阵,Vandermonde矩阵......
  11. 【spring cloud】(四)服务网关——gateway
  12. 生成二维码与条形码的各种方法
  13. 银联支付前端页面跳转
  14. element-ui calendar 日历控件实现编辑假期功能以及样式修改
  15. maxcompute-入门-数据下载
  16. 常用oracle命令
  17. 如何在enable了database vault的数据库里运行datapump
  18. 【蓝桥杯真题】成绩统计
  19. 【python】print函数的用法示例与讲解
  20. 青龙面板获取京东ck的新老方法

热门文章

  1. STC51入门笔记(郭天祥C语言)---第四节:键盘检测原理及应用实现
  2. 每天一道英文题,ICPC不自闭(14)
  3. 这个网站安全吗?您的完整网站安全检查指南
  4. Symbol Factory.NET 仿真SDK
  5. mybatis plus查询上个月和本月的数据
  6. 餐饮管理系统开源java_java课程设计餐饮管理系统
  7. Go语言基础篇 (一)初识Golang
  8. FCW Forward Collision Warning 前车碰撞预警
  9. Sep 15 FullCalendar日历插件说明文档
  10. msgsnd()函数 msgrcv()函数