Как я могу получить входные данные с помощью массива и сохранить переменную в моем основном классе из моего класса record.h? - PullRequest
0 голосов
/ 06 января 2019

Как получить входные данные и сохранить их в каждой переменной, определенной в файле Record.h?

Я пытался сделать это с помощью массива, чтобы упростить его, но я не могу понять, как это сделать. Я часами пытался понять это. Я не уверен, возможно ли это вообще.

Это задание, над которым я работаю, чтобы дать понимание

Для этого упражнения вы создадите консольную программу адресной книги. тот 1. Использует базовый массив в основной программе для хранения нескольких объектов класса Record. 2. Класс записи должен быть создан со следующими переменными членами. Номер записи, имя, фамилия, возраст и номер телефона.

3.Класс Record должен иметь собственный конструктор, который инициализирует переменные-члены.

4. Объявление класса Record должно быть отделено от реализации класса Record и помещено в файлы .h и .cpp. соответственно.

5.Программа должна иметь вечное меню, позволяющее на выбор:

а. Введите информацию в запись, (Это моя проблема)

б. Показать всю информацию во всех записях и

с. Выйдите из программы.

6. Программа должна содержать как минимум 10 записей.

7. Перед отправкой файлов .cpp и .h для этого задания вывод результатов теста с вводом 0 человек, вводом 5 человек и вводом 10 человек.

main.cpp

//
//  Main.cpp
//
//
//  Created by Jake Huckestein on 1/3/19.
//
#include <string>
#include <cstdlib>
#include <iostream>
#include "Record.h"
using namespace std;
int choice;
int main()
{

    do {
        cout << ("Menu") << endl;
        cout << ("1.Input information into an record.") << endl;
        cout << ("2.Display all information in all records.") << endl;
        cout << ("3.Exit the program") << endl;
        cout << ("Please enter your choice:") << endl;
        cin >> choice;
        switch (choice) {
            case 1:
            {
                std::string fnameIN,lnameIN,idIN,telephoneIN,ageIN;

                Record Item[10];

                for (int i = 1; i < 11; i++)
                {
                    cout <<("Employee ID:")<<endl;
                    cin >> Item;
                }

                break;
            }
            case 2:

                for (int i = 1; i < 11; i++)
                {
                    cout << Item[i].getemployeeID(idIN) << endl;
                }
                getchar();

                break;
            case 3:
                return 0;
                break;
        }

    } while (choice != 0);
}

Record.cpp

//
//  Record.cpp
//  Jake
//
//  Created by Jake Huckestein on 1/3/19.
//  Copyright © 2019 Jake Huckestein. All rights reserved.
//


#include "Record.h"

#include <string>

void Record::setemployeeID (string idIn)
{
    employeeID = idIn;
}
void Record::setfirstName (string fnameIn)
{
    firstName = fnameIn;
}
void Record::setlastName (string lnameIn)
{
    lastName = lnameIn;
}
void Record::settelephone (string phoneIn)
{
    telephone = phoneIn;
}
void Record::setage (string ageIn)
{
    age = ageIn;
}
//get functions
string Record::getemployeeID()
{
    return employeeID;
}
string Record::getfirstName()
{
    return firstName;
}
string Record::getlastName()
{
    return lastName;
}
string Record::gettelephone()
{
    return telephone;
}
string Record::getage()
{
    return age;
}

Record.h

//Author: Created by Jake Huckestein on 1/3/19.Date:
//FileName: Record.h
//Purpose: Creates an Record Class.
//Input: Data values input via set functions and assigned to member
vars.
//Output: Data values retrieved by get functions and returned to
caller.Exceptions:

#ifndef Record_h
#define Record_h

#include <stdio.h>
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

class Record
{
private:
    string employeeID;
    string firstName;
    string lastName;
    string telephone;
    string age;

public:
    Record()
    {
    }

    Record(string idIn) :employeeID(idIn)
    {
    }

    Record(string idIn, string fnameIn, string lnameIn)
        :employeeID(idIn),firstName(fnameIn),lastName(lnameIn)
    {
    }
    Record(string idIN, string fnameIN, string lnameIN, string telephoneIN)
        :employeeID(idIN),firstName(fnameIN),
    lastName(lnameIn),telephone(telephoneIN)
    {
    }

    Record(string idIn, string fnameIn, string 
    lnameIn,stringtelephoneIn, string ageIn)
        :employeeID(idIn),firstName(fnameIn),
    lastName(lnameIn),telephone(telephoneIn),age(ageIn)
    {
        if (telephoneIn.length() == 12
            && telephoneIn.at(3) == '-'
            && telephoneIn.at(7) == '-')
        {
            telephone = telephoneIn;
        }
        else
        {
            telephone = "000-000-0000";
        }
    }
    void setemployeeID (string idIn);

    void setfirstName (string fnameIn);

    void setlastName (string lnameIn);

    void settelephone (string phoneIn);

    void setage (string ageIn);

    string getemployeeID();

    string getfirstName();

    string getlastName();

    string gettelephone();

    string getage();

};
#endif /* Record_hpp */

Код, который я пробовал в main.cpp без определенного порядка

Record Employee1("Ab123","Jake","Jones","205-612-5519","30");
Record Employee2("Ab124","Jakey","Jonesy","205-612-5518","31");
Record Employee3("Ab125","Jake","Jones","205-612-5519","30");
Record Employee4("Ab126","Jake","Jones","205-612-5519","30");
Record Employee5("Ab127","Jake","Jones","205-612-5519","30");
Record Employee6("Ab128","Jake","Jones","205-612-5519","30");
Record Employee7("Ab123","Jake","Jones","205-612-5519","30");
Record Employee8("Ab12310","Jake","Jones","205-612-5519","30");
Record Employee9("Ab1231","Jake","Jones","205-612-5519","30");
Record Employee10("Ab1232","Jake","Jones","205-612-5519","30");
Record Item[10];

for (int i = 0; i < 10; i++)
{
    Item[i].setemployeeID("NA");
}

for (int i = 0; i < 10; i++)
{
    cout << Item[i].getemployeeID() << endl;
    cout << Employee1.getemployeeID() << endl;
    cout << Employee1.getfirstName() << endl;
    cout << Employee1.getlastName() << endl;
    cout << Employee1.gettelephone() << endl;
    cout << Employee1.getage() << endl;
    cout << Employee2.getemployeeID() << endl;
    cout << Employee2.getfirstName() << endl;
    cout << Employee2.getlastName() << endl;
    cout << Employee2.gettelephone() << endl;
    cout << Employee2.getage() << endl;
    cout << Employee3.getemployeeID() << endl;
    cout << Employee3.getfirstName() << endl;
    cout << Employee3.getlastName() << endl;
    cout << Employee3.gettelephone() << endl;
    cout << Employee3.getage() << endl;
    cout << Employee4.getemployeeID() << endl;
    cout << Employee4.getfirstName() << endl;
    cout << Employee4.getlastName() << endl;
    cout << Employee4.gettelephone() << endl;
    cout << Employee4.getage() << endl;
    cout << Employee5.getemployeeID() << endl;
    cout << Employee5.getfirstName() << endl;
    cout << Employee5.getlastName() << endl;
    cout << Employee5.gettelephone() << endl;
    cout << Employee5.getage() << endl;
    cout << Employee6.getemployeeID() << endl;
    cout << Employee6.getfirstName() << endl;
    cout << Employee6.getlastName() << endl;
    cout << Employee6.gettelephone() << endl;
    cout << Employee6.getage() << endl;
    cout << Employee7.getemployeeID() << endl;
    cout << Employee7.getfirstName() << endl;
    cout << Employee7.getlastName() << endl;
    cout << Employee7.gettelephone() << endl;
    cout << Employee7.getage() << endl;
    cout << Employee8.getemployeeID() << endl;
    cout << Employee8.getfirstName() << endl;
    cout << Employee8.getlastName() << endl;
    cout << Employee8.gettelephone() << endl;
    cout << Employee8.getage() << endl;
    cout << Employee9.getemployeeID() << endl;
    cout << Employee9.getfirstName() << endl;
    cout << Employee9.getlastName() << endl;
    cout << Employee9.gettelephone() << endl;
    cout << Employee9.getage() << endl;
    cout << Employee10.getemployeeID() << endl;
    cout << Employee10.getfirstName() << endl;
    cout << Employee10.getlastName() << endl;
    cout << Employee10.gettelephone() << endl;
    cout << Employee10.getage() << endl;

    for (int i = 1; i < 11; i++)
    {
        cout <<("Employee ID:")<<endl;
        cin >> idIN;
        cout <<("First Name:")<<endl;
        cin >> fnameIN;
        cout <<("Last Name:")<<endl;
        cin >> lnameIN;
        cout <<("Telephone #:")<<endl;
        cin >> telephoneIN;
        cout <<("Age:")<<endl;
        cin >> ageIN;

    }
}

1 Ответ

0 голосов
/ 07 января 2019

Насколько я понял вопрос, Вы можете сделать что-то вроде этого:

main.cpp

#include <iostream>
#include "Record.h"
#define RECORD_SIZE 10

using namespace std;

int main()
{
    int choice;
    Record items[RECORD_SIZE];

    do {
        cout << "Menu\n";
        cout << "1.Input information into an record.\n";
        cout << "2.Display all information in all records.\n";
        cout << "3.Exit the program\n";
        cout << "Please enter your choice:\n";
        cin >> choice;

        switch (choice) {
            case 1: {
                std::string fnameIN, lnameIN, idIN, telephoneIN, ageIN;

                for (int i = 0; i < RECORD_SIZE; i++) {
                    cout << "Enter Employee ID:\n";
                    cin >> idIN;

                    cout << "Enter Employee's First Name:\n";
                    cin >> fnameIN;

                    cout << "Enter Employee's Last Name:'\n";
                    cin >> lnameIN;

                    cout << "Enter Employee's Phone Number':\n";
                    cin >> telephoneIN;

                    cout << "Enter Employee's Age:\n";
                    cin >> ageIN;

                    items[i].setemployeeID(idIN);
                    items[i].setfirstName(fnameIN);
                    items[i].setlastName(lnameIN);
                    items[i].settelephone(telephoneIN);
                    items[i].setage(ageIN);
                }

                break;
            }
            case 2: {
                for (int i = 0; i < RECORD_SIZE; i++) {
                    cout << "Employee " << (i + 1) << " details: \n"
                         << items[i].getemployeeID() << "\n"
                         << items[i].getfirstName() << "\n"
                         << items[i].getlastName() << "\n"
                         << items[i].gettelephone() << "\n"
                         << items[i].getage() << "\n";
                }
                getchar();

                break;
            }
            case 3: {
                break;
            }

            default: {
                cout << "Invalid Choice entered!";  
            }
        }
    } while (choice != 3);

    return 0;
}

Предложения:

1) В классе записи вы можете сделать функции получателя такими, как const. Как это:

string getfirstName() const;

2) В этом случае вы можете использовать аргументы по умолчанию вместо определения отдельных конструкторов. Вы можете сделать что-то вроде этого:

Record.h

#ifndef Record_h
#define Record_h

#include <string>
using namespace std;

class Record
{
private:
    string employeeID;
    string firstName;
    string lastName;
    string telephone;
    string age;

public:
    explicit Record(string idIn = "NA", string fnameIn = "NA", string lnameIn = "NA",
           string telephoneIn = "NA", string ageIn = "NA") {
        setemployeeID(idIn);
        setfirstName(fnameIn);
        setlastName(lnameIn);
        settelephone(telephoneIn);
        setage(ageIn);
    }

    void setemployeeID (string idIn);

    void setfirstName (string fnameIn);

    void setlastName (string lnameIn);

    void settelephone (string phoneIn);

    void setage (string ageIn);

    string getemployeeID() const;

    string getfirstName() const;

    string getlastName() const;

    string gettelephone() const;

    string getage() const;
};

#endif /* Record_hpp */

3) Для проверки всегда используйте сеттеры.

Record.cpp

#include "Record.h"

void Record::setemployeeID (string idIn) {
    employeeID = idIn;
}

void Record::setfirstName (string fnameIn) {
    firstName = fnameIn;
}

void Record::setlastName (string lnameIn) {
    lastName = lnameIn;
}

void Record::settelephone (string phoneIn) {
    // TODO: I would highly recommend you to do this using REGEX
    if (phoneIn.length() == 12
            && phoneIn.at(3) == '-'
            && phoneIn.at(7) == '-') {
        telephone = phoneIn;
    } else {
        telephone = "000-000-0000";
    }
}

void Record::setage (string ageIn) {
    age = ageIn;
}
//get functions
string Record::getemployeeID() const {
    return employeeID;
}

string Record::getfirstName() const {
    return firstName;
}

string Record::getlastName() const {
    return lastName;
}

string Record::gettelephone() const {
    return telephone;
}

string Record::getage() const {
    return age;
}

4) Как я уже упоминал в коде, вы должны заменить telephone связанную проверку на альтернативу, включающую RegEx.

5) Используйте стандартные соглашения об именах для имен методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...