我应该如何在不使用数组的情况下缩短我的 C++ 代码?

How should I make my C++ code shorter without using arrays?

我目前正在做我的大学教授给我的练习,其中一个问题是使用数据结构创建一个程序,该程序输入任何主题的数据并以整洁的格式输出它们。问题是这个问题明确指出不使用数组,而较短的代码会给予加分。 我应该如何缩短下面的代码?

#include <iostream>
#include <iomanip> 
#include <string>
using namespace std;

struct musicRecord //structure name
{
    //structure members
    string title;
    string artist;
    string album;
    string genre;
    string releaseYear;
};

int main()
{
    int numRecords;
    musicRecord music1, music2, music3, music4, music5; //structure variables

    //input
    cout << "===================================================";
    cout << "\nRecord No. 1"<< endl;
    cout << "\nEnter the title : ";
    getline(cin, music1.title);
    cout << "\nEnter the artist's name : ";
    getline(cin, music1.artist);
    cout << "\nEnter the album name : ";
    getline(cin, music1.album);
    cout << "\nEnter the genre of the title : ";
    getline(cin, music1.genre);
    cout << "\nEnter the year the title was released : ";
    getline(cin, music1.releaseYear);
    cout << endl << "===================================================";
    cout << "\nRecord No. 2" << endl;
    cout << "\nEnter the title : ";
    getline(cin, music2.title);
    cout << "\nEnter the artist's name : ";
    getline(cin, music2.artist);
    cout << "\nEnter the album name : ";
    getline(cin, music2.album);
    cout << "\nEnter the genre of the title : ";
    getline(cin, music2.genre);
    cout << "\nEnter the year the title was released : ";
    getline(cin, music2.releaseYear);
    cout << endl << "===================================================";
    cout << "\nRecord No. 3" << endl;
    cout << "\nEnter the title : ";
    getline(cin, music3.title);
    cout << "\nEnter the artist's name : ";
    getline(cin, music3.artist);
    cout << "\nEnter the album name : ";
    getline(cin, music3.album);
    cout << "\nEnter the genre of the title : ";
    getline(cin, music3.genre);
    cout << "\nEnter the year the title was released : ";
    getline(cin, music3.releaseYear);
    cout << endl << "===================================================";
    cout << "\nRecord No. 4" << endl;
    cout << "\nEnter the title : ";
    getline(cin, music4.title);
    cout << "\nEnter the artist's name : ";
    getline(cin, music4.artist);
    cout << "\nEnter the album name : ";
    getline(cin, music4.album);
    cout << "\nEnter the genre of the title : ";
    getline(cin, music4.genre);
    cout << "\nEnter the year the title was released : ";
    getline(cin, music4.releaseYear);
    cout << endl << "===================================================";
    cout << "\nRecord No. 5" << endl;
    cout << "\nEnter the title : ";
    getline(cin, music5.title);
    cout << "\nEnter the artist's name : ";
    getline(cin, music5.artist);
    cout << "\nEnter the album name : ";
    getline(cin, music5.album);
    cout << "\nEnter the genre of the title : ";
    getline(cin, music5.genre);
    cout << "\nEnter the year the title was released : ";
    getline(cin, music5.releaseYear);

    //output
    cout << endl << "================================================================================================================";
    cout << endl << "\t\t\t\t\t\tMUSIC RECORDS";
    cout << endl << "================================================================================================================";
    cout << endl << setw(5) << "Record No. |" << setw(10) << " Title" << setw(25) << "| Artist " << setw(20) << "| Album " << setw(20) << "| Genre " << setw(25) << "| Release Year |";
    cout << endl << "----------------------------------------------------------------------------------------------------------------";
    
    cout << endl << setw(12) << left << " 1";
    cout << setw(27) << left << music1.title;
    cout << setw(21) << left << music1.artist;
    cout << setw(20) << left << music1.album;
    cout << setw(20) << left << music1.genre;
    cout << setw(15) << left << music1.releaseYear;
    cout << endl << "----------------------------------------------------------------------------------------------------------------";
    cout << endl << setw(12) << left << " 2";
    cout << setw(27) << left << music2.title;
    cout << setw(21) << left << music2.artist;
    cout << setw(20) << left << music2.album;
    cout << setw(20) << left << music2.genre;
    cout << setw(15) << left << music2.releaseYear;
    cout << endl << "----------------------------------------------------------------------------------------------------------------";
    cout << endl << setw(12) << left << " 3";
    cout << setw(27) << left << music3.title;
    cout << setw(21) << left << music3.artist;
    cout << setw(20) << left << music3.album;
    cout << setw(20) << left << music3.genre;
    cout << setw(15) << left << music3.releaseYear;
    cout << endl << "----------------------------------------------------------------------------------------------------------------";
    cout << endl << setw(12) << left << " 4";
    cout << setw(27) << left << music4.title;
    cout << setw(21) << left << music4.artist;
    cout << setw(20) << left << music4.album;
    cout << setw(20) << left << music4.genre;
    cout << setw(15) << left << music4.releaseYear;
    cout << endl << "----------------------------------------------------------------------------------------------------------------";
    cout << endl << setw(12) << left << " 5";
    cout << setw(27) << left << music5.title;
    cout << setw(21) << left << music5.artist;
    cout << setw(20) << left << music5.album;
    cout << setw(20) << left << music5.genre;
    cout << setw(15) << left << music5.releaseYear;

    cout << endl << "================================================================================================================";
    cout << endl << "\t\t\t\t\tEND OF PROGRAM, THANK YOU";
    cout << endl << "================================================================================================================";

    return 0;
}

您可能会注意到,您 copy/paste 为每个变量编写代码。

因此创建函数以避免重复代码,例如:

musicRecord inputMusicRecord(int recordNb)
{
    musicRecord res;
    cout << "===================================================";
    cout << "\nRecord No. " << recordNb << endl;
    cout << "\nEnter the title : ";
    getline(cin, res.title);
    cout << "\nEnter the artist's name : ";
    getline(cin, res.artist);
    cout << "\nEnter the album name : ";
    getline(cin, res.album);
    cout << "\nEnter the genre of the title : ";
    getline(cin, res.genre);
    cout << "\nEnter the year the title was released : ";
    getline(cin, res.releaseYear);
    return res;
}

void print(const musicRecord& music)
{
    cout << endl << setw(12) << left << " 1";
    cout << setw(27) << left << music.title;
    cout << setw(21) << left << music.artist;
    cout << setw(20) << left << music.album;
    cout << setw(20) << left << music.genre;
    cout << setw(15) << left << music.releaseYear;
}

然后,您可能会这样做:

void print_header()
{
    cout << endl << "================================================================================================================";
    cout << endl << "\t\t\t\t\t\tMUSIC RECORDS";
    cout << endl << "================================================================================================================";
    cout << endl << setw(5) << "Record No. |" << setw(10) << " Title" << setw(25) << "| Artist " << setw(20) << "| Album " << setw(20) << "| Genre " << setw(25) << "| Release Year |";
}

void print_separator()
{
    cout << endl << "----------------------------------------------------------------------------------------------------------------";
}

void print_footer()
{
    cout << endl << "================================================================================================================";
    cout << endl << "\t\t\t\t\tEND OF PROGRAM, THANK YOU";
    cout << endl << "================================================================================================================";
}

int main()
{
    const musicRecord music1 = inputMusicRecord(1);
    const musicRecord music2 = inputMusicRecord(2);
    const musicRecord music3 = inputMusicRecord(3);
    const musicRecord music4 = inputMusicRecord(4);
    const musicRecord music5 = inputMusicRecord(5);

    print_header();
    print_separator();
    print(music1);
    print_separator();
    print(music2);
    print_separator();
    print(music3);
    print_separator();
    print(music4);
    print_separator();
    print(music5);
    print_footer();
}