Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- using namespace std;
- //structure of kittens
- struct kitten
- {
- string name;
- string color;
- int score;
- };
- struct roster
- {
- kitten kittens[10];
- int size = 0;
- };
- //pass by reference because we need to modify. can initialize a data memeber within the definition
- void addKitten(kitten &newKitten, roster &r){
- r.kittens[r.size].name = newKitten.name;
- r.kittens[r.size].color = newKitten.color;
- r.kittens[r.size].score = newKitten.score;
- r.size += 1;
- };
- int findKitten(string &name, roster &r){
- int kittenNF = -1;
- for (int i = 0; i < r.size; i++){
- if (name.compare(r.kittens[i].name) == 0) {
- return i;
- }
- }
- return kittenNF;
- };
- bool updateKitten(kitten &kitten, roster &r){
- int output;
- output = findKitten(kitten.name, r);
- if (output == -1){
- return false;
- } else {
- //update corresponding information of kitten
- r.kittens[output].name = kitten.name;
- r.kittens[output].color = kitten.color;
- r.kittens[output].score = kitten.score;
- return true;
- }
- };
- void printRoster(roster &r){
- cout << "ROSTER" << endl;
- for (int i=0; i < r.size; i++){
- cout << "Kitten " << i+1 << " -- Name: " << r.kittens[i].name << ", Color: " << r.kittens[i].color << ", Score: " << r.kittens[i].score << endl;
- }
- };
- void getKittenFromFile(string &fileN, roster &r){
- ifstream myStream;
- myStream.open(fileN);
- r.size = 0;
- if(myStream.is_open()){
- while (!myStream.eof()) {
- getline(myStream, r.kittens[r.size].name);
- myStream.ignore(1, '\n');
- getline(myStream, r.kittens[r.size].color);
- //myStream.ignore(1, '\n');
- myStream >> r.kittens[r.size].score;
- addKitten(r.kittens[r.size], r);
- r.size+=1;
- }
- } else{
- cout << "Error! File not found." << endl;
- }
- myStream.close();
- };
- void printKittenToFile(string &fileN, roster &r){
- ofstream file;
- file.open(fileN);
- if (file.is_open()){
- file << "ROSTER" << endl;
- while(!file.eof()){
- for (int i; i < r.size; i++){
- file << "Kitten " << i+1 << " -- Name: " << r.kittens[i].name << ", Color: " << r.kittens[i].color << ", Score: " << r.kittens[i].score << endl;
- }
- }
- }
- file.close();
- };
- bool deleteKitten(string &name, roster &r){
- int result;
- result = findKitten(name, r);
- if (result == -1){
- return false;
- } else {
- r.kittens[result].name = "";
- r.kittens[result].color = "";
- r.kittens[result].score = 0;
- r.kittens[result].name = r.kittens[r.size].name;
- r.kittens[result].color = r.kittens[r.size].color;
- r.kittens[result].score = r.kittens[r.size].score;
- r.size-=1;
- return true;
- }
- };
- void printMenu(){
- cout << "MENU" << endl;
- cout << "a - Add kitten" << endl;
- cout << "d - Delete kitten" << endl;
- cout << "u - Update kitten color and cuteness score" << endl;
- cout << "f - Find kitten" << endl;
- cout << "l - Load kitten from file" << endl;
- cout << "s - Save kitten info to file" << endl;
- cout << "o - Output roster" << endl;
- cout << "q - Quit" << endl;
- cout << endl;
- cout << "Choose an option:" << endl;
- };
- int main() {
- roster kittenRoster;
- kitten a_kitten;
- string a_name;
- string a_color;
- string filename;
- int a_score;
- int result;
- bool menuInProgress = true;
- do {
- printMenu();
- char menu_option;
- cin >> menu_option;
- switch(menu_option){
- //add kitten
- case 'a':
- if (kittenRoster.size < 10) {
- cout << "Enter a new kitten's name:" << endl;
- cin.ignore(1, '\n');
- getline(cin, a_name, '\n');
- cout << "Enter a new kitten's color: " << endl;
- //cin.ignore(1, '\n');
- getline(cin, a_color, '\n');
- cout << "Enter a new kitten's score:" << endl;
- cin >> a_score;
- a_kitten.name = a_name;
- a_kitten.color = a_color;
- a_kitten.score = a_score;
- addKitten(a_kitten, kittenRoster);
- cout << "Successfully added new kitten to roster." << endl;
- } else {
- cout << "Impossible to add new kitten: roster is full." << endl;
- }
- break;
- //delete kitten
- case 'd':
- if (kittenRoster.size == 0){
- cout << "Cannot delete from empty roster." << endl;
- } else {
- cout << "Enter kitten name to delete: " << endl;
- cin.ignore(1, '\n');
- getline(cin, a_name, '\n');
- if(!deleteKitten(a_name, kittenRoster)){
- cout << "Error! Kitten not found." << endl;
- } else {
- cout << "Kitten deleted successfully." << endl;
- }
- }
- break;
- //update kitteh
- case 'u':
- cout << "Enter a kitten name: " << endl;
- cin.ignore(1, '\n');
- getline(cin, a_kitten.name, '\n');
- cout << "Enter a new color for the kitten: " << endl;
- //cin.ignore(1, '\n');
- getline(cin, a_kitten.color, '\n');
- cout << "Enter a new cuteness score for the kitten: " << endl;
- //cin.ignore(1, '\n');
- cin >> a_kitten.score;
- if (updateKitten(a_kitten, kittenRoster)){
- cout << "Successfully updated kitten info." << endl;
- } else {
- cout << "Cannot find kitten." << endl;
- }
- break;
- //find kitt
- case 'f':
- cout << "Enter kitten name" << endl;
- cin.ignore(1, '\n');
- getline(cin, a_name, '\n');
- result = findKitten(a_name, kittenRoster);
- if (result == -1){
- cout << "Kitten not found" << endl;
- } else {
- cout << a_name << " info: " << kittenRoster.kittens[result].color << ", " << kittenRoster.kittens[result].score << endl;
- }
- break;
- //load kitt from foile
- case 'l':
- cout << "Enter file name: " << endl;
- cin.ignore(1, '\n');
- getline(cin, filename, '\n');
- getKittenFromFile(filename, kittenRoster);
- break;
- // save kitts to foile
- case 's':
- cin.ignore(1,'\n');
- cout << "Enter file name:" << endl;
- cin.ignore(1,'\n');
- printKittenToFile(filename, kittenRoster);
- break;
- //output roster
- case 'o':
- printRoster(kittenRoster);
- break;
- //quit
- case 'q':
- return 0;
- default:
- cout << "Invalid option. Please try again" << endl;
- }
- } while(menuInProgress);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement