Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2010, 21:46   #1
nomaddc
Новичок
Джуниор
 
Регистрация: 27.04.2010
Сообщений: 1
Восклицание С++ классы, взаимодействие классов

В общем условия следующие:
Строки исходного файла содержать записи из телефонной книжки примерно следующего формата:
Иванов 79211112233 (mobile) 8125554433 (home) 2970000 (job) 1000000 (fax)
Продумайте строгий формат представления (структуру записи, типы номеров и т.д.). У каждого абонента не обязательно присутствуют все типы номеров.
Разработайте классы, обеспечивающие решение следующих задач:
• Класс PhoneNumber для представления о номере;
• Класс Abonent для представления информации об абоненте;
• Класс PhoneList, обеспечивающий представление списка абонентов и номеров;
• Класс PhoneListLoader для загрузки информации из файла;
• Класс PhoneListFormatter для формирования списка абонентов в xml-подобномф формате;
• Компоненты, реализующие взаимодействие пользователя с приложением (загрузка информации из файла, формирование списка номеров, поиск номеров по имени абонента, поиск абонентов по номеру, вывод найденных сведений с помощью PhoneListFormatter).

Сам пока справился с 1,2,4 и частично 5 пунктами. Но судя по всему программу требуется переделывать с 0.
Сам код:
main.cpp
PHP код:
#include "head.h"
#include "PhoneListLoader.h"

void main()
{
    
PhoneList List;
    
PhoneListLoader PHL;
    
int men;

    
PHL.readff(List);
    
    for ( ; ; )
    {
        
cout << "Menu" << endl << "1.Find by name" << endl << "2.Find by number" << endl << "3.Exit" << endl;
        
cin >> men;
        if (
men == 1) {cout << "in construction"; break;}
        if (
men == 2) {cout << "in construction"; break;}
        if (
men == 3) {cout << "Bye!" << endl; exit( );}
    }

head.h
PHP код:
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std
Abonent.cpp
PHP код:
#include "head.h"

class Abonent
{
private:
    
string name;
public:
    
Abonent() : name("anonim")
    { }
    
void readA (string na)
    {
        
name=na;
    }
    
string writeA()
    {
        return 
name;
    }
}; 
PhoneNumber.cpp
PHP код:
#include "head.h"

class PhoneNumber
{
private:
    
string mohojofa;
public:
    
PhoneNumber() : mo("no"), ho("no"), jo("no"), fa("no")
    { }
    
void readPNm (string m)
    {
        
mo=m;
    }
    
void readPNh (string h)
    {
        
ho=h;
    }
    
void readPNj (string j)
    {
        
jo=j;
    }
    
void readPNf (string f)
    {
        
fa=f;
    }
    
string writePNm()
    {
        return 
mo;
    }
    
string writePNh()
    {
        return 
ho;
    }
    
string writePNj()
    {
        return 
jo;
    }
    
string writePNf()
    {
        return 
fa;
    }
}; 
PhoneListLoader.cpp
PHP код:
#include "head.h"
#include "PhoneList.h"

class PhoneListLoader
{
private:

public:
    
void readff(PhoneList &lst);
};

void PhoneListLoader::readff(PhoneList &lst)
{
    
string dummy;
    
int n 0;
    
string namemobhomejobfax;
    
ifstream in("phlst.txt");

    if( !
in )
    {
        
cout << "Unable to open input file \"phlst.txt\"" << endl;
        exit( 
10 );
    }
    try
    {
        for( ; ; )
        {
            
in >> name;
            if( 
in.eof() )
            {
                
cout << "No end mark found" << endl;
                throw ::
logic_error"Unexpected eof" );
            }
            if( !
in )
            {
                
cout << "Bad data format" << endl;
                throw ::
logic_error"Bad data format" );
            }
            if( 
name == "#" )
            {
                
cout << "Loaded " << << " record(s): Ok" << endl;
                break;
            }
            
in >> mob >> dummy >> home >> dummy >> job >> dummy >> fax >> dummy;
        
            
cout << name << " mob - " << mob << " home - " << home << " job - " << job << " fax - " << fax << endl;
            
lst.readPLf(namemobhomejobfaxn);
            
n++;
        }

        
in.close();
        
        
    }
    catch( 
logic_errorex )
    {
        
cout << "Error: " << ex.what() << endl;
        exit( 
20 );
    }
    

Подскажите пожалуйста, что можно (и как) упростить или заменить.
По поводу класса PhoneList - "То, что сделано в PhoneList, списком не является", его надо как-то переделать.
PhoneListFormatter еще не написан.
Почтовый адрес: g.freemanhl@gmail.com
Заранее всем спасибо.

Последний раз редактировалось nomaddc; 27.04.2010 в 21:48. Причина: обновить код
nomaddc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Взаимодействие C# и 1с Sparky Свободное общение 1 05.02.2010 04:31
Создание классов и использование объектов классов при написании программ в среде C++. Frozen inside Помощь студентам 0 16.04.2009 23:18
Межпроцессное взаимодействие ilham Win Api 5 16.12.2008 13:01
Взаимодействие flash и C#? mrakaziabra Общие вопросы .NET 3 16.07.2008 07:16