(这个是我们c++作业)
此电话本可完成以下功能:
(1) 实现简单电话本功能,用姓名来搜索电话号码;
(2) 用户输入姓名,程序查找并输出结果;
(3) 用户可以通过输入,添加姓名和电话号码;
(4) 用户可以删除姓名和电话号码;
(5) 电话本可以保存在指定文件中;
(6) 电话可被从指定文件中读入到内存。
/*电话本程序 用户输入F表示用文件输入文件保存 用户输入输入K表示用键盘输入文件保存 用户输入Q表示查询电话号码 用户输入D表示删除记录 用户输入I表示插入电话号码 以空格分隔姓名和电话号码*/
#include<iostream>
#include<map>
#include<string>
#include<fstream>
using namespace std;
ofstream myFile1;//键盘输入指令时所保存的电话本 对应文件file1
ofstream myFile2;//文件输入指令时所保存的电话本 对应文件file2
ifstream myFile3;//文件输入指令时指令文件 对应文件file3
ifstream myFile4;//事先写好的一个电话本(按“名字、空格、电话号码”的形式) 对应文件file4
class Phonebook{
public:
map<string,string> phonebook;
void Init1();
void Insert1();
void Find1();
void Delete1();
void Init2();
void Insert2();
void Find2();
void Delete2();
};
void Phonebook::Init1(){
myFile4.open("file4.txt");
string str1,str2;
while(myFile4>>str1>>str2){
phonebook.insert(pair<string,string>(str1,str2));
myFile1<<str1<<" "<<str2<<endl;
}
}
void Phonebook::Insert1(){
string str1,str2;
cin>>str1>>str2;
map<string,string>::iterator it;
it = phonebook.find(str1);
if(it!=phonebook.end()){
cout<<"This person"<<"("<<str1<<")"<<"doesn't exist"<<endl;
}
else{
phonebook.insert(pair<string,string>(str1,str2));
myFile1<<str1<<" "<<str2<<endl;
}
}
void Phonebook::Find1(){
string str;
cin>>str;
map<string,string>::iterator it;
it = phonebook.find(str);
if(it==phonebook.end()){
cout<<"This person"<<"("<<str<<")"<<"doesn't exist"<<endl;
}
else{
cout<<it->second<<endl;
}
}
void Phonebook::Delete1(){
string str;
cin>>str;
map<string,string>::iterator it;
it = phonebook.find(str);
if(it==phonebook.end()){
cout<<"This person"<<("<<str<<")<<"doesn't exist"<<endl;
}
else{
phonebook.erase(it);
myFile1.close();
myFile1.open("file1.txt");
map<string,string>::iterator its;
for(its=phonebook.begin();its!=phonebook.end();its++){
myFile1<<its->first<<" "<<its->second<<endl;
}
cout<<str<<" "<<"已被删除"<<endl;
}
}
void Phonebook::Init2(){
myFile4.open("file4.txt");
string str1,str2;
while(myFile4>>str1>>str2){
phonebook.insert(pair<string,string>(str1,str2));
myFile2<<str1<<" "<<str2<<endl;
}
}
void Phonebook::Insert2(){
string str1,str2;
myFile3>>str1>>str2;
map<string,string>::iterator it;
it = phonebook.find(str1);
if(it!=phonebook.end()){
cout<<"This person"<<"("<<str1<<")"<<"doesn't exist"<<endl;
}
else{
phonebook.insert(pair<string,string>(str1,str2));
myFile2<<str1<<" "<<str2<<endl;
}
}
void Phonebook::Find2(){
string str;
myFile3>>str;
map<string,string>::iterator it;
it = phonebook.find(str);
if(it==phonebook.end()){
cout<<"This person"<<"("<<str<<")"<<"doesn't exist"<<endl;
}
else{
cout<<it->second<<endl;
}
}
void Phonebook::Delete2(){
string str;
myFile3>>str;
map<string,string>::iterator it;
it = phonebook.find(str);
if(it==phonebook.end()){
cout<<"This person"<<("<<str<<")<<"doesn't exist"<<endl;
}
else{
phonebook.erase(it);
myFile2.close();
myFile2.open("file2.txt");
map<string,string>::iterator its;
for(its=phonebook.begin();its!=phonebook.end();its++){
myFile2<<its->first<<" "<<its->second<<endl;
}
cout<<str<<" "<<"已被删除"<<endl;
}
}
int main(){
Phonebook book;
string str;
cin>>str;
if(str[0]=='K'){
myFile1.open("file1.txt");
book.Init1();
while(cin>>str){
if(str[0]=='I'){
book.Insert1();
}
else if(str[0]=='Q'){
book.Find1();
}
else if(str[0]=='D'){
book.Delete1();
}
}
}
else if(str[0]=='F'){
myFile3.open("file3.txt");
myFile2.open("file2.txt");
book.Init2();
while(myFile3>>str){
if(str[0]=='I'){
book.Insert2();
}
else if(str[0]=='Q'){
book.Find2();
}
else if(str[0]=='D'){
book.Delete2();
}
}
}
return 0;
}