编写一个通信录
来源:互联网 发布:吉首大学教务网络系统 编辑:程序博客网 时间:2024/05/22 07:55
题目要求:
编写一个关于通讯录的程序
1. 可输入姓名、电话(可多个)、通讯地址、Email等必要的信息;
2. 可根据姓名查询电话等信息(最好还能根据电话查询姓名),并显示在屏幕上;
3. 要求通讯录保存成文件,如张三.txt,用文件流的方式实现;
4. 最好用面向对象方法编写。
开发环境:
QT Creator
但是建立的是纯C++工程
//person.h 人 类#ifndef PERSON_H#define PERSON_H#include <vector>#include <string>#include <iostream>#include <map>using namespace std;class Person{public: void setPerson(string name,vector<string> phone,string address,string email); string getName(); vector<string> getPhone(); string getAddress(); string getEmail();private: string m_name; vector<string> m_phone; string m_address; string m_email;};#endif // PERSON_H
//person.cpp#include "person.h"void Person::setPerson(string name,vector<string> phone,string address,string email){ m_name = name; m_phone = phone; m_address = address; m_email = email;}string Person::getName(){ return m_name;}vector<string> Person::getPhone(){ return m_phone;}string Person::getAddress(){ return m_address;}string Person::getEmail(){ return m_email;}
//direct.h 通信录类头文件#ifndef DIRECT_H#define DIRECT_H#include "person.h"class Direct{public: int menu();//显示通信录功能菜单 void addperson(Person* person);//添加联系人 void browse();//浏览通信录 void findperson();//查找联系人 void deleteperson();//删除联系人};#endif // DIRECT_H
//direct.cpp#include "direct.h"#include <stdlib.h>#include <fstream>#include <iostream>using namespace std;//显示通信录功能菜单int Direct::menu(){ cout<<"***************************************************************"<<endl; cout<<"*********************** 功能菜单:*****************************"<<endl; cout<<"********************* 1.新建联系人 ****************************"<<endl; cout<<"********************* 2.删除联系人 ****************************"<<endl; cout<<"********************* 3.查找联系人 ****************************"<<endl; cout<<"********************* 4.浏览通信录 ****************************"<<endl; cout<<"********************* 5.退出通信录 ****************************"<<endl; cout<<"***************************************************************"<<endl; cout<<"******************* 请选择您要进行的操作:*********************"<<endl; int order = 0; cin>>order; return order;}//添加联系人void Direct::addperson(Person* person){ person = new Person(); string name,number,address,email; vector<string> phone; cout<<"请输入姓名:"; cin>>name; cout<<"您要存几条电话号码: "; int count; cin>>count; for(int i=1;i<=count;i++) { cout<<"请输入电话号码"<<i<<": "; cin>>number; phone.push_back(number); } cout<<"请输入地址:"; cin>>address; cout<<"请输入邮箱:"; cin>>email; person->setPerson(name,phone,address,email); ofstream outfile; outfile.open("通信录.txt",ios::app); if(!outfile) { cout<<"通信录.txt can't open. "<<endl; abort(); } else { outfile<<"姓名: "<<person->getName()<<" "; for(int i=0;i<person->getPhone().size();i++) { outfile<<"电话号码"<<i+1<<": "<<person->getPhone().at(i)<<" "; } outfile<<"地址: "<<person->getAddress()<<" "; outfile<<"Email: "<<person->getEmail()<<endl; outfile.close(); }}//浏览通信录void Direct::browse(){ ifstream infile; infile.open("通信录.txt"); if(!infile) { cout<<"通信录.txt can't open. "<<endl; abort(); } else { char people[100]; while (!infile.eof()) { infile.getline(people,100); cout<<people<<endl; } } infile.close();}//查找联系人void Direct::findperson(){ ifstream infile; infile.open("通信录.txt"); if(!infile) { cout<<"通信录.txt can't open. "<<endl; abort(); } else { cout<<"请输入要查找人的信息(姓名、电话、住址或者邮箱): "<<endl; string str_find; cin>>str_find; char people[100]; int i=0; while(!infile.eof()) { infile.getline(people,100); string str_people = people; size_t n = str_people.find(str_find,0); int N = (int)n; if(N>=0) { cout<<str_people<<endl; ++i; } } if(0==i) { cout<<"查无此人......"<<endl; } }}//删除联系人void Direct::deleteperson(){ ifstream infile; infile.open("通信录.txt"); if(!infile) { cout<<"通信录.txt can't open. "<<endl; abort(); } else { cout<<"请输入要删除人的信息(姓名、电话、住址或者邮箱): "<<endl; string str_find; cin>>str_find; char people[100]; int i=0; vector<string> str_people2; vector<string> str_people3; string s = "N"; while(!infile.eof()) { infile.getline(people,100); str_people3.push_back(people); string str_people1 = people; size_t n = str_people1.find(str_find,0); int N = (int)n; if(N>=0) { cout<<"是否要删除此人信息?Y/N"<<endl; cout<<str_people1<<endl; cin>>s; ++i; } else if(N==-1&&people!="\n") { if(people!="0") { str_people2.push_back(people); } } } ofstream ofile("通信录.txt",ios::trunc); string str; if(s == "Y") { ofstream outfile; outfile.open("通信录.txt",ios::app); for(int i=0;i<str_people2.size()-1;i++)//此处size-1是由于getline()会多读一行空行,使容器内多压入一行空行 { str = str_people2.at(i); outfile<<str<<endl; } str_people2.clear(); outfile.close(); } else if(s == "N") { ofstream outfile; outfile.open("通信录.txt",ios::app); for(int i=0;i<str_people3.size()-1;i++)//此处size-1是由于getline()会多读一行空行,使容器内多压入一行空行 { str = str_people3.at(i); outfile<<str<<endl; } str_people3.clear(); outfile.close(); } else { cout<<"输入有误......"<<endl; } ofile.close(); }}
//main.cpp#include "direct.h"int main(){ Direct* direct = new Direct(); Person* person; int userOrder = 0; while(userOrder!=5) { userOrder = direct->menu(); switch(userOrder) { case 1: cout<<"********************** 新建联系人 *****************************"<<endl; direct->addperson(person); break; case 2: cout<<"********************** 删除联系人 *****************************"<<endl; direct->deleteperson(); break; case 3: cout<<"********************** 查找联系人 *****************************"<<endl; direct->findperson(); break; case 4: cout<<"********************** 浏览通信录 *****************************"<<endl; direct->browse(); break; case 5: cout<<"********************** 退出通信录 *****************************"<<endl; break; default: break; } } return 0;}
阅读全文
1 0
- 编写一个通信录
- 用文件编写通信录
- 建立的一个通信录管理系统:
- 用c语言实现一个通信录
- 通信录
- 通信录
- 通信录
- Socket编写一个局域网通信聊天软件
- MINA框架编写一个通信系统
- 个人通信录
- Android通信录
- 通信录获取
- Android通信录操作
- 通信录操作
- Android通信录
- iOS6访问通信录
- 读取通信录
- Android 通信录操作
- json字符串转JSONObject及JSONArray
- Centos的阿里源-yellowcong
- Java线程池原理与使用实例
- 深圳H5精英班户外活动
- 模拟实现memcpy和memmove函数
- 编写一个通信录
- Spring4.0 的validation验证
- c语言---位域
- 前台JSON对象和JSON字符串互转
- 二叉树的建立与遍历详解 菜鸟都能看懂的教程
- aliyun的centOS的yum源地址
- 应届毕业生如何通过学习Linux系统选择一份高薪职业
- days3
- 洛谷 P1379 八数码难题