22. maj 2003 - 12:04
Der er
7 kommentarer
HJÆLP! c++ program a´la cd arkiv.
Hjælp!! Jeg står og skal bruge et c++ program der skal virke som cd-kartotek. Skal indeholde en klasse, sortering, slet og filskrivning. Er der nogen der kan hjælpe mig please???????????
Annonceindlæg fra Deloitte
Hvad har du lavet indtil videre ? (så kan vi arbejde videre ud fra det) Skal det være console eller GUI ?
Jeg er på 1 semester Dataingeniør og har programmeret 2 projekter før. Det skal være console.. Projektet går ud på at opbygge en simpel CD-kartotek der kan hente fra en fil, vise hovedmenu hvorfra man kan indtaste kunstner og titel, sortere i kunstner(a-z) samt slette. Og det er påkrævet at der er en klasse og jeg sidder bare FAST.
En definition på et album kunne se sådan ud: class Album { public: Album(); Album(string artist, string title); ~Album(); void setArtist(string artist); string getArtist(); void setTitle(string title); string getTitle(); void addTrack(string track); int getNumberOfTracks(); string getTrackNumber(i); private: string artist; string title; vector<string> tracks; }; Man kunne også lave en klasse der repræsenterer et track. Men det har jeg ikke gjort. Så skal du lave en container klasse: class Kartotek { public: Kartotek(); ~Kartotek(); void addAlbum(Album album); int getNumberOfAlbums(); Album getAlbum(i); private: vector<Album> vect; } Kan du selv implementere funktionerne ?
Jeg kan godt selv implementere funkt. har bare store problemer med at få det hele hæklet sammen, men klassen virker fint, har lige impl. den tak for det
Det er jo en klassisk aggregerings konstruktion. Et Kartotek kan indeholde 0-n Album. Du kan bruge klasserne sådan: Album albums[10]; //tilføj lidt data for(int i=0;i<10;i++) { string temp = "artist" + i; albums[i].setArtist(temp); temp = "title" + i; albums[i].setTitle(temp); for(int j=0;j<10;j++) { temp = "track" + j; albums[i].addTrack(temp); } } Kartotek kartotek; //tilføj album til kartotek for(int i=0;i<10;i++) { kartotek.addAlbum(albums[i]); } //Udskriv kartotek for(int i=0;i<kartotek.getNumberOfAlbums();i++) { Album album = kartotek.getAlbum(i); cout << "Artist: " << album.getArtist() << endl; cout << " Title: " << album.getTitle() << endl; for(int j=0;j<album.getNumberOfTracks();j++) { cout << '\t' << album.getTrackNumber(j) << endl; } } Skal du have et eksempel der også compiler ? :-)
Det ville jeg være meget taknemmelig for hvis du har mulighed for dette, jeg er som sagt meget presset og taknemmelig for enhver hjælp
Ok, jeg har lavet noget der compiler baseret på ovenstående dekleration. #include <iostream> #include <string> #include <vector> using namespace std; //----------------------------Album class Album { public: Album(); Album(string artist, string title); ~Album(); void setArtist(string artist); string getArtist(); void setTitle(string title); string getTitle(); void addTrack(string track); int getNumberOfTracks(); string getTrackNumber(int index); private: string artist; string title; vector<string> tracks; }; Album::Album() { } Album::Album(string artist, string title) { this->artist = artist; this->title = title; } Album::~Album() { } void Album::setArtist(string artist) { this->artist = artist; } string Album::getArtist() { return artist; } void Album::setTitle(string title) { this->title = title; } string Album::getTitle() { return title; } void Album::addTrack(string track) { tracks.push_back(track); } int Album::getNumberOfTracks() { return tracks.size(); } string Album::getTrackNumber(int index) { return tracks[index]; } //----------------------------Kartotek class Kartotek { public: Kartotek(); ~Kartotek(); void addAlbum(Album album); int getNumberOfAlbums(); Album getAlbum(int index); private: vector<Album> albums; }; Kartotek::Kartotek() { } Kartotek::~Kartotek() { } void Kartotek::addAlbum(Album album) { albums.push_back(album); } int Kartotek::getNumberOfAlbums() { albums.size(); } Album Kartotek::getAlbum(int index) { return albums[index]; } //----------------------------Main void generateAlbums(Kartotek &kartotek, int amount); void printKartotek(Kartotek &kartotek); int main(int argc, char *argv[]) { Kartotek kartotek; generateAlbums(kartotek, 10); printKartotek(kartotek); return 0; } void generateAlbums(Kartotek &kartotek, int amount) { for(int i=0;i<amount;i++) { Album album; char buffer[128]; char tempBuffer[16]; strcpy(buffer, "Album: "); itoa(i, tempBuffer, 10); strcat(buffer, tempBuffer); album.setTitle(buffer); strcpy(buffer, "Artist: "); itoa(i, tempBuffer, 10); strcat(buffer, tempBuffer);; album.setArtist(buffer); for(int j=0;j<10;j++) { strcpy(buffer, "Track: "); itoa(j, tempBuffer, 10); strcat(buffer, tempBuffer); album.addTrack(buffer); } kartotek.addAlbum(album); } } void printKartotek(Kartotek &kartotek) { for(int i=0;i<kartotek.getNumberOfAlbums();i++) { Album album = kartotek.getAlbum(i); cout << "Artist: " << album.getArtist() << endl; cout << " Title: " << album.getTitle() << endl; for(int j=0;j<album.getNumberOfTracks();j++) { cout << '\t' << album.getTrackNumber(j) << endl; } } }
Kurser inden for grundlæggende programmering