Advertisement
Guest User

Untitled

a guest
Feb 17th, 2020
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. //structure of kittens
  8.  
  9. struct kitten
  10. {
  11.     string name;
  12.     string color;
  13.     int score;
  14. };
  15.  
  16. struct roster
  17. {
  18.     kitten kittens[10];
  19.     int size = 0;
  20. };
  21. //pass by reference because we need to modify. can initialize a data memeber within the definition
  22.  
  23.  
  24.  
  25. void addKitten(kitten &newKitten, roster &r){
  26.     r.kittens[r.size].name = newKitten.name;
  27.     r.kittens[r.size].color = newKitten.color;
  28.     r.kittens[r.size].score = newKitten.score;
  29.     r.size += 1;
  30.    
  31. };
  32.  
  33. int findKitten(string &name, roster &r){
  34.     int kittenNF = -1;
  35.  
  36.     for (int i = 0; i < r.size; i++){
  37.         if (name.compare(r.kittens[i].name) == 0) {
  38.             return i;
  39.         }
  40.     }
  41.     return kittenNF;
  42. };
  43.  
  44. bool updateKitten(kitten &kitten, roster &r){
  45.     int output;
  46.     output = findKitten(kitten.name, r);    
  47.     if (output == -1){
  48.         return false;
  49.     } else {
  50.         //update corresponding information of kitten
  51.         r.kittens[output].name = kitten.name;
  52.         r.kittens[output].color = kitten.color;
  53.         r.kittens[output].score = kitten.score;
  54.        
  55.         return true;
  56.     }
  57. };
  58.  
  59. void printRoster(roster &r){
  60.     cout << "ROSTER" << endl;
  61.     for (int i=0; i < r.size; i++){
  62.         cout << "Kitten " << i+1 << " -- Name: " << r.kittens[i].name << ", Color: " << r.kittens[i].color << ", Score: " << r.kittens[i].score << endl;
  63.     }
  64. };
  65.  
  66. void getKittenFromFile(string &fileN, roster &r){
  67.     ifstream myStream;
  68.     myStream.open(fileN);
  69.     r.size = 0;
  70.  
  71.     if(myStream.is_open()){
  72.         while (!myStream.eof()) {    
  73.            
  74.             getline(myStream, r.kittens[r.size].name);
  75.            
  76.             myStream.ignore(1, '\n');
  77.             getline(myStream, r.kittens[r.size].color);
  78.            
  79.             //myStream.ignore(1, '\n');
  80.             myStream >> r.kittens[r.size].score;
  81.            
  82.             addKitten(r.kittens[r.size], r);
  83.             r.size+=1;
  84.         }
  85.     } else{
  86.         cout << "Error! File not found." << endl;
  87.     }
  88.     myStream.close();
  89.  
  90. };
  91.  
  92. void printKittenToFile(string &fileN, roster &r){
  93.     ofstream file;
  94.     file.open(fileN);
  95.     if (file.is_open()){
  96.         file << "ROSTER" << endl;
  97.         while(!file.eof()){
  98.             for (int i; i < r.size; i++){
  99.             file << "Kitten " << i+1 << " -- Name: " << r.kittens[i].name << ", Color: " << r.kittens[i].color << ", Score: " << r.kittens[i].score << endl;
  100.             }
  101.         }
  102.     }
  103.     file.close();
  104. };
  105.  
  106. bool deleteKitten(string &name, roster &r){
  107.     int result;
  108.     result = findKitten(name, r);    
  109.     if (result == -1){
  110.         return false;
  111.     } else {
  112.         r.kittens[result].name = "";
  113.         r.kittens[result].color = "";
  114.         r.kittens[result].score = 0;
  115.  
  116.         r.kittens[result].name = r.kittens[r.size].name;
  117.         r.kittens[result].color = r.kittens[r.size].color;
  118.         r.kittens[result].score = r.kittens[r.size].score;
  119.  
  120.         r.size-=1;
  121.         return true;
  122.     }
  123. };
  124.  
  125. void printMenu(){
  126.     cout << "MENU" << endl;
  127.     cout << "a - Add kitten" << endl;
  128.     cout << "d - Delete kitten" << endl;
  129.     cout << "u - Update kitten color and cuteness score" << endl;
  130.     cout << "f - Find kitten" << endl;
  131.     cout << "l - Load kitten from file" << endl;
  132.     cout << "s - Save kitten info to file" << endl;
  133.     cout << "o - Output roster" << endl;
  134.     cout << "q - Quit" << endl;
  135.     cout << endl;
  136.     cout << "Choose an option:" << endl;
  137. };
  138.  
  139. int main() {
  140.  
  141.     roster kittenRoster;
  142.     kitten a_kitten;
  143.     string a_name;
  144.     string a_color;
  145.     string filename;
  146.     int a_score;
  147.     int result;
  148.    
  149.    bool menuInProgress = true;
  150.     do {
  151.         printMenu();
  152.         char menu_option;
  153.         cin >> menu_option;
  154.  
  155.         switch(menu_option){
  156.             //add kitten
  157.             case 'a':
  158.                
  159.                 if (kittenRoster.size < 10) {
  160.                     cout << "Enter a new kitten's name:" << endl;
  161.                     cin.ignore(1, '\n');
  162.                     getline(cin, a_name, '\n');
  163.                                      
  164.                     cout << "Enter a new kitten's color: " << endl;
  165.                     //cin.ignore(1, '\n');
  166.                     getline(cin, a_color, '\n');
  167.                    
  168.                     cout << "Enter a new kitten's score:" << endl;
  169.                     cin >> a_score;
  170.  
  171.                     a_kitten.name = a_name;
  172.                     a_kitten.color = a_color;
  173.                     a_kitten.score = a_score;
  174.  
  175.                     addKitten(a_kitten, kittenRoster);
  176.                     cout << "Successfully added new kitten to roster." << endl;
  177.                    
  178.                 } else {
  179.                     cout << "Impossible to add new kitten: roster is full." << endl;    
  180.                 }
  181.             break;
  182.    
  183.             //delete kitten
  184.             case 'd':
  185.                 if (kittenRoster.size == 0){
  186.                     cout << "Cannot delete from empty roster." << endl;
  187.                 } else {
  188.                     cout << "Enter kitten name to delete: " << endl;
  189.                     cin.ignore(1, '\n');
  190.                     getline(cin, a_name, '\n');
  191.                    
  192.                     if(!deleteKitten(a_name, kittenRoster)){
  193.                         cout << "Error! Kitten not found." << endl;
  194.                     } else {
  195.                         cout << "Kitten deleted successfully." << endl;
  196.                     }
  197.                 }
  198.                 break;
  199.             //update kitteh    
  200.             case 'u':
  201.                 cout << "Enter a kitten name: " << endl;
  202.                 cin.ignore(1, '\n');
  203.                 getline(cin, a_kitten.name, '\n');
  204.  
  205.                 cout << "Enter a new color for the kitten: " << endl;
  206.                 //cin.ignore(1, '\n');
  207.                 getline(cin, a_kitten.color, '\n');
  208.  
  209.                 cout << "Enter a new cuteness score for the kitten: " << endl;
  210.                 //cin.ignore(1, '\n');
  211.                 cin >> a_kitten.score;
  212.  
  213.                 if (updateKitten(a_kitten, kittenRoster)){
  214.                     cout << "Successfully updated kitten info." << endl;
  215.                 } else {
  216.                     cout << "Cannot find kitten." << endl;
  217.                 }
  218.  
  219.                 break;
  220.                 //find kitt
  221.             case 'f':
  222.                 cout << "Enter kitten name" << endl;
  223.                 cin.ignore(1, '\n');
  224.                 getline(cin, a_name, '\n');
  225.                
  226.                 result = findKitten(a_name, kittenRoster);    
  227.                 if (result == -1){
  228.                     cout << "Kitten not found" << endl;
  229.                 } else {
  230.                     cout << a_name << " info: " << kittenRoster.kittens[result].color << ", " << kittenRoster.kittens[result].score << endl;
  231.                 }
  232.                 break;
  233.                
  234.             //load kitt from foile
  235.             case 'l':
  236.                 cout << "Enter file name: " << endl;
  237.                 cin.ignore(1, '\n');
  238.                 getline(cin, filename, '\n');
  239.  
  240.                 getKittenFromFile(filename, kittenRoster);
  241.                 break;
  242.                
  243.             // save kitts to foile
  244.             case 's':
  245.                 cin.ignore(1,'\n');
  246.                 cout << "Enter file name:" << endl;
  247.                 cin.ignore(1,'\n');
  248.                 printKittenToFile(filename, kittenRoster);
  249.                 break;
  250.             //output roster
  251.                
  252.             case 'o':
  253.                 printRoster(kittenRoster);
  254.                 break;
  255.                 //quit
  256.             case 'q':
  257.                 return 0;
  258.             default:
  259.                 cout << "Invalid option. Please try again" << endl;
  260.             }
  261.        
  262.         } while(menuInProgress);
  263.    
  264.        
  265.    
  266.     return 0;
  267. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement