• 课程设计
  • 新增Win32GUI设计版本

主函数

#include <iostream>
#include "PersonBook.h"using namespace std;int menu_select()
{//显示主菜单int c;cout << "*******************************\n";cout << "* 模拟电话簿 v1.0*\n";cout << "* *\n";cout << "* 1. 添加通信录*\n";cout << "* 2. 删除通信录*\n";cout << "* 3. 修改通信录*\n";cout << "* 4. 显示通信录*\n";cout << "* 5. 电话簿存盘*\n";cout << "* 6. 读出电话簿*\n";cout << "* 7. 退出*\n";cout << "*******************************\n";cout << "\n 请输入(1~7): ";do   //键盘输入循环{cin>>c;}while(c<1 || c>7);return c;
}
void menu()
{char choice;PersonBook maillist;for(;;)   //循环,直到键盘输入结束代码{try{choice = menu_select();switch(choice)   //根据键盘输入,调用相应的功能{case 1:maillist.Enter();break;case 2:maillist.Erase();break;case 3:maillist.Modify();break;case 4:maillist.List();break;case 5:maillist.Save();break;case 6:maillist.Load();break;case 7:throw 7;}}catch(int n){if(n==7)break;}}
}int main()
{menu();return 0;
}

Person.h文件

#ifndef PERSON_H
#define PERSON_H
#include <iostream>
using namespace std;class Person
{
private:string name,gender;int age;string phone,address;
public:Person();void setName(string name);void setGender(string gender);void setAge(int age);void setPhone(string phone);void setAddress(string address);string getName();string getGender();int getAge();string getPhone();string getAddress();void show();virtual ~Person();
};#endif // PERSON_H

Person.cpp文件

#include <iostream>
#include "Person.h"
using namespace std;Person::Person()
{name=gender=phone=address="NULL";age=-1;
}
void Person::setName(string name)
{this->name=name;
}
void Person::setGender(string gender)
{this->gender=gender;
}
void Person::setAge(int age)
{this->age=age;
}
void Person::setPhone(string phone)
{this->phone=phone;
}
void Person::setAddress(string address)
{this->address=address;
}
string Person::getName()
{return name;
}
string Person::getGender()
{return gender;
}
int Person::getAge()
{return age;
}
string Person::getPhone()
{return phone;
}
string Person::getAddress()
{return address;
}
void Person::show()
{cout<<name<<"\t"<<gender<<"\t"<<age<<"\t"<<phone<<"\t"<<address<<endl;
}
Person::~Person()
{//dtor
}

PersonBook.h文件

#ifndef PERSONBOOK_H
#define PERSONBOOK_H
#include<vector>
#include"Person.h"const int itemNum = 100;
class PersonBook
{
public:PersonBook();void Enter();void Erase();void Modify();void Load();void Save();void List();virtual ~PersonBook();protected:private:Person item[itemNum];int num;
};#endif // PERSONBOOK_H

PersonBook.cpp文件

#include "PersonBook.h"
#include<iostream>
#include<vector>
#include<cstring>
#include"Person.h"
#include <iomanip>
#include <fstream>using namespace std;PersonBook::PersonBook()
{num=0;
}
void PersonBook::Enter()
{string name,gender,phone,address;int age;try{cout<<" 添加联系人"<<endl;cout<<" \t请输入姓名:";cin>>name;if(name.length()<=0||name.length()>10)throw 1;cout<<" \t请输入性别:";cin>>gender;/*if(gender!="男"||gender!="女")throw 2;*/cout<<" \t请输入年龄:";cin>>age;if(age<0||age>150)throw 3;cout<<" \t请输入手机号:";cin>>phone;if(phone.length()!=11)throw 4;cout<<" \t请输入地址:";cin>>address;if(address.length()<=0||address.length()>30)throw 5;Person p;p.setName(name);p.setGender(gender);p.setAge(age);p.setPhone(phone);p.setAddress(address);item[num]=p;num++;cout<<endl;}catch(int n){if(n==1)cout<<" \t姓名长度在1 到 10 之间."<<endl;else if(n==2)cout<<" \t性别应输入”男“或”女“."<<endl;else if(n==3)cout<<" \t年龄大小在0 到150 之间."<<endl;else if(n==4)cout<<" \t手机号为11 位."<<endl;else if(n==5)cout<<" \t地址长度在1 到 30 之间."<<endl;elsecout<<" \t程序运行错误"<<endl;cout<<"\n \t请再一次输入."<<endl;Enter();}
}
void PersonBook::Erase()
{string name;try{if(num==0)throw 0;cout<<" 请输入删除联系人的姓名:";cin>>name;if(name.length()<=0||name.length()>10)throw 1;else{for(int i=0; i<num; i++){if(item[i].getName()==name){item[i].setName("NULL");item[i].setGender("NULL");item[i].setPhone("NULL");item[i].setAddress("NULL");item[i].setAge(-1);num--;cout<<" 删除成功!"<<endl;cout<<endl;}else{cout<<" 未找到该联系人!"<<endl;}}}}catch(int n){if(n==1)cout<<" 姓名长度在1 到 10 之间."<<endl;else if(n==0)cout<<" 通讯录为空!"<<endl;elsecout<<" 程序运行错误"<<endl;cout<<" 请再一次输入."<<endl;Erase();}
}
void PersonBook::Modify()
{string name,gender;int age;string phone,address;try{if(num==0)throw 0;cout<<" 请输入修改联系人的姓名:";cin>>name;cout<<" 请输入修改联系人的性别:";cin>>gender;cout<<" 请输入修改联系人的年龄:";cin>>age;cout<<" 请输入修改联系人的手机号:";cin>>phone;cout<<" 请输入修改联系人的地址:";cin>>address;if(name.length()<=0||name.length()>10)throw 1;else{for(int i=0; i<num; i++){if(item[i].getName()==name){item[i].setName(name);item[i].setGender(gender);item[i].setPhone(phone);item[i].setAddress(address);item[i].setAge(age);cout<<" 修改成功!"<<endl;cout<<endl;}else{cout<<" 未找到该联系人!"<<endl;}}}}catch(int n){if(n==1){cout<<" 姓名长度在1 到 10 之间."<<endl;cout<<" 请再一次输入."<<endl;Modify();}else if(n==0)cout<<" 通讯录为空!"<<endl;elsecout<<" 程序运行错误"<<endl;}
}
void PersonBook::Load()
{ifstream file;int i;char fname[]="F:\\Files\\codeblockFile\\exp\\book.txt";/*cout << " 输入读取的文件名: ";cin >> fname;*/file.open(fname,ios::in);if(!file){cout << " 打开文件失败!\n";cin.get();}else{num = 0;for(i=0; i<itemNum; i++){if(file&&!file.eof()){file.read(reinterpret_cast<char*>(&item[i]), sizeof(Person) );}if(item[i].getName()!="NULL"){num++;}}cout<<" 导入成功!\n"<<endl;file.close();}
}
void PersonBook::Save()
{ofstream file;int i;char fname[]="F:\\Files\\codeblockFile\\exp\\book.txt";/*cout << " 输入保存的文件名: ";cin >> fname;*/file.open(fname,ios::out);if(!file){cout << " 打开文件失败!\n";cin.get();}else{for(i=0; i<itemNum; i++){if(file&&!file.eof())file.write(reinterpret_cast<const char*>(&item[i]), sizeof(Person) );}file.close();cout<<" 保存成功!\n"<<endl;}
}
void PersonBook::List()
{cout<<" 通讯录"<<endl;cout<<" 序号\t姓名\t性别\t年龄\t手机号\t\t地址"<<endl;for(int i=0; i<num; i++){cout<<" "<<i+1<<"\t";cout<<item[i].getName()<<"\t";cout<<item[i].getGender()<<"\t";cout<<item[i].getAge()<<"\t";cout<<item[i].getPhone()<<"\t";cout<<item[i].getAddress()<<endl;}cout<<"\n";
}
PersonBook::~PersonBook()
{//dtor
}

C++实现简单电话通讯录相关推荐

  1. 简单的通讯录程序系统python

    用python做一个简单的通讯录程序系统 主要功能∶ 1.查询联系人资料 2.插入新的联系人 3.删除已有联系人 4.退出通讯录程序 print('''|---欢迎进入通讯录程序---| |---1. ...

  2. 用C语言编写简单的通讯录(大一课程作业)

    用C语言编写简单的通讯录(大一课程作业) 该系统概述: 因本人只学习了C语言的基础部分,所以编写该系统时只使用了一个C文件.存储通讯录信息以txt文件方式保存. 系统设计: 显示主菜单主函数:int ...

  3. java开发一个简单的通讯录

    java开发一个简单的通讯录 ArrayList的综合应用 import java.util.*; public class ContactNote{static Scanner sc=new Sca ...

  4. C++实现简单的通讯录系统

    需求 利用C++写一个简单的通讯录系统,具体需求如下: 系统中需要实现的功能如下: 添加联系人:向通讯录中添加新人,信息包括(姓名.性别.年龄.联系电话.家庭住址)最多记录100人 显示联系人:显示通 ...

  5. C编程实践:简单的通讯录

    分享一个之前学C语言时练习写的一个简单的通讯录程序.程序功能: 1.添加联系人信息(姓名.电话号码.城市.公司). 2.保存联系人信息至本地文件. 3.打印输出联系人列表. 4.删除某个联系人信息或删 ...

  6. 用结构体写一个简单的通讯录

    一个简单的通讯录 通讯录应该具备简单的一些功能 1 增添联系人 2 删除联系人 3 查找联系人 4 修改联系人 5 按名字给联系人排序 6 查看通讯录 除此之外,应该在实现上还应该具备一些其他的功能函 ...

  7. Java课设-简单的通讯录系统(增删改查连接数据库)

    一.题目介绍 二.实验思路 这里主要是运用到了jdbc来连接数据库,而在数据库中存在的是通讯录的记录,有id,姓名,手机号,创建时间,修改时间.同时使用的是swing的来做可视化界面,其中运用到了弹窗 ...

  8. 用结构体编写电话通讯录

    用结构体数组编写电话通讯录,必须得知道结构体的形式,那先把结构体定义回顾一下: 一般形式为:(1)struct 结构体名称 {成员表列}  数组名 [数组长度] 如:struct  Person le ...

  9. 用python的字典实现简单的通讯录

    性能要求: 源代码如下: print("|---欢迎进入通讯录程序---|") print("|---1:查询联系人资料 ---|") print(" ...

最新文章

  1. java mysql in_MySQL中Exists和In的使用
  2. AI把爱豆变胖视频火遍B站,我们找到了背后的技术团队:你是怎么把刘亦菲变胖的?...
  3. HUST 1588 辗转数对
  4. 《移山之道》第十一章:两人合作 读书笔记 PB16110698 第六周(~4.15)
  5. spring-boot-devtools
  6. myBatis xml if、where、if-else?、foreach 心得
  7. 林达华:Computer Vision的尴尬
  8. 【算法】159题 Longest Substring with at Most Two Distinct Characters 最大的子串
  9. channel9.msdn.com 微软虚拟学院MVA系列视频课程
  10. 【Expression 序列化】WCF的简单使用及其Expression Lambada的序列化问题初步解决方案(三)...
  11. 【算法】排序_快速排序
  12. 2020哪款蓝牙耳机更值得入手?新款上市高续航游戏专属蓝牙耳机不要错过
  13. html设置回到顶部按钮,给网站添加回到顶部按钮
  14. Python爬取携程和同程的景点评论并实现词云
  15. excel拆分单元格内容_Excel 快捷键合集
  16. PS 如何制作Vista的毛玻璃效果
  17. 基于二叉排序树的高校分数查询系统
  18. 压力传感器与数据采集
  19. OpenWRT网页设置
  20. 历年四级作文真题范文

热门文章

  1. Spring中事务提交成功后处理的异步调用方法
  2. Jarvisoj_WP
  3. python需要多久-python培训需要多久
  4. (1)英特尔工业边缘洞见平台(EII)安装指南
  5. 仰慕 Queens,先从 OpenStack Cinder 开始吧!
  6. 浅谈Servlet与JSP
  7. Apache Flink写入Clickhouse报错 code: 1002, ip:8123 failed to respond
  8. uniapp获取用户昵称头像
  9. java多线程售票问题_使用java多线程实现火车站售票的问题
  10. ESP32 寻迹模块测试