C++단순 주소록 구현

8047 단어 C++통신 록
본 논문 의 사례 는 여러분 에 게 C+간단 한 주소록 을 실현 하 는 구체 적 인 코드 를 공유 하 였 으 며,여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
설명:
1.프로그램 에서 두 가지 유형 에 사용 되 는데 하 나 는 Person 류 이 고 다른 하 나 는 List 류 이다.전 자 는 사용자 정 보 를 저장 하고 후 자 는 주로 조작 에 사용 되 는데 예 를 들 어 삭제 와 수정 등 이다.그러나 이 프로그램 에서 너무 복잡 한 기능 과 관련 되 지 않 았 기 때문에 사용자 정 보 는 간단 한 구조 체 에 의 해 표시 할 수 있 지만 앞으로 편 의 를 확대 하고 연산 자 를 다시 불 러 오 는 목적 을 달성 하기 위해 유형 을 사용 했다.
2 List 클래스 의 Reflush()방법 은 사용자 가 파일 내용 을 새로 고 치 는 것 입 니 다.즉,vector 를 수정 할 때마다 최신 내용 을 파일 에 기록 해 야 합 니 다.따라서 첨삭 과 수정 작업 에서 모두 이 조작 을 호출 해 야 한다.이런 방법 은 데이터 베이스 개발 에서 자주 사용 되 고 작은 것 으로 큰 것 을 볼 수 있다.
3 setout()방법 은 문 자 를 왼쪽 으로 정렬 하여 아름 답 게 설정 합 니 다.또한 std::cout.width(15)출력 문자 필드 폭 을 설정 하여 다음 출력 에 만 유효 합 니 다.
4.텍스트 파일 이 비어 있 는 지 여 부 를 판단 하 는 또 다른 방법 이 있 습 니 다.즉,string 류 의 empty()방법 이지 만 읽 기 편 하도록 사용 하지 않 았 습 니 다.
5.통신 록 에 대한 작업 은 클래스 내 vector 용기 에서 만 진행 되 며,마지막 으로 새로 고 칠 때 만 디스크 파일 에 동기 화 됩 니 다.
6 일부 함수 에서 여러 개의 반환 값 을 설정 하면 조작 상황 을 판단 하 는 데 유리 하 다.
Person.h 와 cpp 파일: 

#ifndef PERSON_H_
#define PERSON_H_
#include <string>
 
class Person
{
public:
 std::string name;
 std::string tel;
public:
 Person();
 ~Person();
 int operator==(const Person& p);//  ==   ,         
private:
 
};
 
 
#endif // !PERSON_H_

#include "Person.h"
 
Person::Person()
{
}
 
Person::~Person()
{
}
 
int Person::operator==(const Person& p)
{
 if (this->name == p.name)
 {
 if (this->tel == p.tel)
  return 0;
 else
  return -1;
 }
 else
 return -2;
}
List.h 파일: 

#ifndef LIST_H_
#define LIST_H_
#include <vector>
#include "Person.h"
class List
{
public:
 List();
 ~List();
 void Showfile();//     
 int Readfile();//       
 void Add();
 void Reflush();//    ,       
 void Del();
 void Search();
private:
 std::vector<Person> myfile;
};
 
inline void setout();//      
#endif
List.cpp 파일: 

#include "List.h"
#include <iostream>
#include <fstream>
#include <string>
 
List::List()
{
}
 
List::~List()
{
}
 
void setout()//      ,    
{
 std::cout.setf(std::ios_base::left, std::ios_base::adjustfield);
}
void List::Showfile()
{
 std::vector<Person>::iterator iter;
 setout();
 for (iter = this->myfile.begin(); iter != this->myfile.end(); iter++)
 {
 std::cout.width(15);//     15
 std::cout << iter->name;
 std::cout.width(15);
 std::cout << iter->tel << "
"; } } int List::Readfile() { std::fstream readfile("mylist.txt"); int rows = 0; if (readfile)// { std::cout << "*******Telephone book********
"; std::cout << "name:" << "\t\t" << "phone:" << "
"; Person p; if (!(readfile >> p.name >> p.tel))// { std::cout << "\tNULL
"; return 1; } myfile.push_back(p); rows++; while(readfile>>p.name>>p.tel)// vector { rows++; myfile.push_back(p); } this->Showfile(); std::cout << "Total:\t" << rows << "\tinfos
"; readfile.close(); return rows; } else { std::ofstream outfile;// outfile.open("mylist.txt"); if (!outfile.is_open()) { std::cout << "file is not created!
"; return -1; } else { std::cout << "file not exist but we have created one for you!
"; std::cout << "*******Telephone book********
"; std::cout << "name:" << "\t\t" << "phone:" << "
"; std::cout << "\tNULL
"; } outfile.close(); } return 2; } void List::Reflush() { std::ofstream outfile("mylist.txt"); std::vector<Person>::iterator iter; setout(); for (iter = this->myfile.begin(); iter != this->myfile.end(); iter++) { outfile.width(15); outfile << iter->name; outfile.width(15); outfile << iter->tel << "
"; } outfile.close(); } void List::Add() { Person p; std::cout << "please input the name:
"; std::cin >> p.name; std::cout << "please input the phone
"; std::cin >> p.tel; std::cout << "sucessfully created!
"; myfile.push_back(p); this->Reflush(); } void List::Del() { if (myfile.empty()) { std::cout << "no info to del!
"; return; } std::string name; std::cout << "please input the name you want you del:
"; std::cin >> name; std::vector<Person>::iterator iter; for (iter = this->myfile.begin(); iter != this->myfile.end();) { if (iter->name == name) { myfile.erase(iter);// std::cout << "sucessfully delete!
"; this->Reflush(); return; } else ++iter; } std::cout << "no info matches!
"; } void List::Search() { std::string name; std::cout << "please input the name you want to search:
"; std::cin >> name; std::vector<Person>::iterator iter; for (iter = this->myfile.begin(); iter != this->myfile.end(); iter++) { if (name == iter->name) { std::cout << iter->name << "\t\t" << iter->tel << "
"; return; } } std::cout << "no info matches!
"; }
주 파일: 

// contact.cpp :              。
//
 
#include "stdafx.h"
#include "List.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
 
int Menu()
{
 int num;
 cout << "********************" << endl;
 cout << "*  1   ADD   *" << endl;
 cout << "*  2   DEL   *" << endl;
 cout << "*  3  SEARCH  *" << endl;
 cout << "*  4   SHOW   *" << endl;
 cout << "*  5   EXIT   *" << endl;
 cout << "********************" << endl;
 cout << "input the num:";
 cin >> num;
 return num;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 List mylist;
 mylist.Readfile();
 int num = Menu();
 bool flags = 1;
 while (flags)
 {
 switch (num)
 {
 case 1:
  mylist.Add();
  break;
 case 2:
  mylist.Del();
  break;
 case 3:
  mylist.Search();
  break;
 case 4:
  mylist.Showfile();
  break;
 case 5:
  cout << "Bye.
"; return 0; default: cout<<" !
"; break; } cout << " :
"; cin >> num; } system("pause"); return 0; }
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기