Guest User

Untitled

a guest
Apr 20th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.11 KB | None | 0 0
  1. // Programko projekt.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. /** @ Programko projekt.cpp
  5. *! \mainpage Hudebni databaze
  6. * \section intro_sec Program pro praci s databazi
  7. *   - Vytvoreno jako semestralni projekt na skole VSB-TU Ostrava , fakulta FEI
  8. *   - Finalni verze programu vytvorena dne 1.12.2011
  9. *   - Vytvoril David Holec  ( ID : HOL0151 )
  10. */
  11.  
  12.  
  13. #include "StdAfx.h"
  14. #include <iostream>
  15. #include <fstream>
  16. #include <string>
  17. #include <iomanip>
  18.  
  19. using namespace std;
  20.  
  21. /**
  22.     * Struktura prvku potrebnych ke spravnemu behu programu.
  23.     * @param string interpret - do nej se uklada 1 prvek souboru na radku az po ;
  24.     * @param string skladba - do nej se uklada 2 prvek souboru na radku az po ;
  25.     * @param string album - do nej se uklada 3 prvek souboru na radku az po ;
  26.     * @param string rok - do nej se uklada 4 prvek souboru na radku az po ;
  27.     */
  28. struct t_data_muzika
  29. {
  30.     string interpret;
  31.     string skladba;
  32.     string album;
  33.     string rok;
  34. };
  35.  
  36. /*!
  37.     Funkce pro zmenu malych pismen na velke.
  38. */
  39. string prevodnavelke(string vstup){
  40.     string vystup=vstup;
  41.     for (int i=0;i!=vstup.size();i++)
  42.         if(vstup[i]>91) vystup[i]=vstup[i]-32;
  43.     return vystup;
  44. }
  45.  
  46. int main(int argc, char*argv[])
  47. {
  48.     char menu2;
  49.     string radek; // jeden radek v databazi
  50.     bool naslo=false,vyhledavani=false;
  51.     int cnt = 0,cnt2=0;
  52.     string hledany_interpret;
  53.     string hledana_skladba;
  54.     int soubor_delka;
  55.     string vstup,vystup; // vstup = vstupni databaze (txt)  vystup = vystupni (html)
  56.     char odpoved; // odpoved ano, ne v mazani zaznamu
  57.     //muj vstupni soubor
  58.     ifstream vstupniSoubor;
  59.     ofstream vystupniSoubor;
  60.     fstream vystupni2;
  61.     //data muzika je struktura t_data_muzika
  62.     t_data_muzika data_muzika;
  63.  
  64.    
  65.    
  66.  
  67.     // hlavni nabidka programu
  68.     while(menu2 =! 0)
  69.     {
  70.         cout << "********************************************************" << endl;
  71.         cout << "\t\t\t MENU" << endl;
  72.         cout << "********************************************************" << endl;
  73.         cout << endl;
  74.         cout << "\t\t1 Zobrazeni databaze" << endl;
  75.         cout << "\t\t2 Vyhledani interpreta" << endl;
  76.         cout << "\t\t3 Pridani skladby" << endl;
  77.         cout << "\t\t4 Smazani skladby" << endl;
  78.         cout << "\t\t5 Prevod databaze do HTML" << endl;
  79.         cout << "\t\t6 O programu" << endl;
  80.         cout << "\t\t0 pro konec" << endl;
  81.         if(!vyhledavani)cin >> menu2;
  82.         else menu2='5';
  83.        
  84.         switch(menu2)
  85.         {
  86.        
  87.         case '1':
  88.             vstupniSoubor.open("DATABAZE.TXT");
  89.             if (vstupniSoubor.is_open()){
  90.                
  91.                 //cteni souboru
  92.                 while(!vstupniSoubor.eof()){
  93.                    
  94.                     /** interpret
  95.                     *@data_muzika.interpret - ulozen prvni string
  96.                     */
  97.                     getline(vstupniSoubor, radek, ';'); //nacitam hodnoty co jsou oddelene strednikem
  98.                     if(radek=="")break;
  99.                     data_muzika.interpret = radek;
  100.                        
  101.                     /** skladba
  102.                     *@data_muzika.skladba - ulozen druhy string
  103.                     */
  104.                     getline(vstupniSoubor, radek, ';');
  105.                     data_muzika.skladba = radek;
  106.                    
  107.                     /** album
  108.                     *@data_muzika.album - ulozen treti string
  109.                     */
  110.                     getline(vstupniSoubor, radek, ';');
  111.                     data_muzika.album = radek;
  112.                        
  113.                     /** rok
  114.                     *@data_muzika.rok - ulozen ctvrty string
  115.                     */
  116.                     getline(vstupniSoubor, radek, ';');
  117.                     data_muzika.rok = radek;
  118.                    
  119.  
  120.                     //vypisuju vsechny udaje pod sebe
  121.                     cout << data_muzika.interpret << ", " << data_muzika.skladba << ", " << data_muzika.album << ", " << data_muzika.rok << endl;
  122.                     getline(vstupniSoubor, radek); //odradkuje nacitani
  123.                     }  
  124.                
  125.             }
  126.             else {
  127.                 cerr << "Chyba pri otevirani souboru" << endl;
  128.                 getchar();
  129.                 getchar();
  130.                 return (1);
  131.             }
  132.  
  133.             //zavru soubor
  134.             vstupniSoubor.close();
  135.                
  136.             break;
  137.        
  138.         case '2':
  139.        
  140.             //otevru stream *File soubor
  141.             vstupniSoubor.open("DATABAZE.TXT");
  142.             naslo=false;
  143.             cnt=0;
  144.             //cteni souboru
  145.                 if (vstupniSoubor.is_open()){
  146.                     cout << "Soubor " << "DATABAZE.TXT" << " se podarilo otevrit\n";
  147.  
  148.                     vstupniSoubor.seekg (0, ios::end); // nastavi konec souboru
  149.                     soubor_delka = vstupniSoubor.tellg(); // zapise pozici konce souboru
  150.                     vstupniSoubor.seekg (0, ios::beg); // vrati se na zacatek souboru
  151.  
  152.                     cout << "Nacitam " << soubor_delka << " znaku dlouhy soubor" << endl;
  153.                
  154.                     cout << "Zadejte hledaneho interpreta" << endl;
  155.                     getchar();
  156.                     getline (cin,hledany_interpret);
  157.                     cout << "Vyhledavam interpreta " << hledany_interpret << endl;
  158.                     vystupniSoubor.open("hledani.txt");
  159.                     while(!vstupniSoubor.eof()){
  160.                             // hodnota 0 = interpret
  161.                             getline(vstupniSoubor, radek, ';'); //nacitam hodnoty co jsou oddelene strednikem
  162.                             data_muzika.interpret = radek;
  163.                        
  164.                             //hodnota 1 = nazev skladby
  165.                             getline(vstupniSoubor, radek, ';');
  166.                             data_muzika.skladba = radek;
  167.                    
  168.                             //hodnota 2 = nazev alba
  169.                             getline(vstupniSoubor, radek, ';');
  170.                             data_muzika.album = radek;
  171.                        
  172.                             //hodnota 3 = rok vydani alba
  173.                             getline(vstupniSoubor, radek, ';');
  174.                             data_muzika.rok = radek;
  175.  
  176.                             /* Nalezeni shody pro vyhledavani */
  177.                             if(prevodnavelke(hledany_interpret).compare(prevodnavelke(data_muzika.interpret)) == 0){
  178.                                 cout << data_muzika.interpret << ", " << data_muzika.skladba << ", " << data_muzika.album << ", " << data_muzika.rok << endl;
  179.                                 vystupniSoubor <<data_muzika.interpret << ";" << data_muzika.skladba << ";" << data_muzika.album << ";" << data_muzika.rok << ";\n";
  180.                                 naslo=true;
  181.                                 vyhledavani=true;
  182.                             }
  183.                             getline(vstupniSoubor, radek);
  184.                     }
  185.                    
  186.                 }
  187.             else {
  188.                 cout <<  "Soubor " << "DATABAZE.TXT" << " se nepodarilo otevrit\n";
  189.                 return (1);
  190.             }
  191.             if(naslo==false) cout << "Interpret se nenachazi v nasi databazi" << endl;
  192.             //zavru soubor
  193.             vstupniSoubor.close();
  194.             vystupniSoubor.close();
  195.             break;
  196.         case '3':
  197.  
  198.             cout << "Zadejte interpreta" << endl;
  199.             getchar();
  200.             getline (cin,data_muzika.interpret);
  201.             cout << "Zadejte skladbu" << endl;
  202.             getline (cin,data_muzika.skladba);
  203.             cout << "Zadejte album" << endl;
  204.             getline (cin,data_muzika.album);
  205.             cout << "Zadejte rok" << endl;
  206.             getline (cin,data_muzika.rok);
  207.                 vystupni2.open ("databaze.txt", fstream::in | fstream::out | fstream::app);
  208.                 if (vystupni2.is_open()){
  209.                     cout << "Soubor " << "DATABAZE.TXT" << " se podarilo otevrit\n";
  210.                     vystupni2<<"\n"<<data_muzika.interpret<<";"<<data_muzika.skladba<<";"<<data_muzika.album<<";"<<data_muzika.rok<<";";
  211.                     vystupni2.close();
  212.                     cout << "Novy zaznam byl uspesne ulozen do databaze."<< endl;
  213.                 }
  214.                 else cout << "Soubor " << "DATABAZE.TXT" << " se nepodarilo otevrit\n";
  215.             break;
  216.         case '4':
  217.        
  218.             //otevru stream *File soubor
  219.             vstupniSoubor.open("DATABAZE.TXT");
  220.             naslo=false;
  221.             cnt=0;
  222.             //cteni souboru
  223.                 if (vstupniSoubor.is_open()){
  224.                     cout << "Soubor " << "DATABAZE.TXT" << " se podarilo otevrit\n";
  225.  
  226.                     vstupniSoubor.seekg (0, ios::end); // nastavi konec souboru
  227.                     soubor_delka = vstupniSoubor.tellg(); // zapise pozici konce souboru
  228.                     vstupniSoubor.seekg (0, ios::beg); // vrati se na zacatek souboru
  229.  
  230.                     cout << "Nacitam " << soubor_delka << " znaku dlouhy soubor" << endl;
  231.                
  232.                     cout << "Zadejte hledaneho interpreta" << endl;
  233.                     getchar();
  234.                     getline (cin,hledany_interpret);
  235.                     cout << "Zadejte hledanou skladbu" << endl;
  236.                     getline (cin,hledana_skladba);
  237.                     cout << "Vyhledavam skladbu " << hledany_interpret << " , " <<hledana_skladba<< endl;
  238.                     while(!vstupniSoubor.eof()){
  239.                                             // hodnota 0 = interpret
  240.                             getline(vstupniSoubor, radek, ';'); //nacitam hodnoty co jsou oddelene strednikem
  241.                             data_muzika.interpret = radek;
  242.                        
  243.                             //hodnota 1 = nazev skladby
  244.                             getline(vstupniSoubor, radek, ';');
  245.                             data_muzika.skladba = radek;
  246.                    
  247.                             //hodnota 2 = nazev alba
  248.                             getline(vstupniSoubor, radek, ';');
  249.                             data_muzika.album = radek;
  250.                        
  251.                             //hodnota 3 = rok vydani alba
  252.                             getline(vstupniSoubor, radek, ';');
  253.                             data_muzika.rok = radek;
  254.  
  255.                             if(prevodnavelke(hledany_interpret).compare(prevodnavelke(data_muzika.interpret)) == 0){ // shoda hledani interpreta
  256.  
  257.                                 if(prevodnavelke(hledana_skladba).compare(prevodnavelke(data_muzika.skladba)) == 0){ // shoda hledani skladby
  258.                                     cout << "Nasel jsem " << hledany_interpret << ", " <<hledana_skladba << " na radku : " << cnt;
  259.                                     cout << " Prejete si vybrany zaznam odstranit? (a/n)";
  260.  
  261.                                     for (;;){ // cyklus odpovedi a/n
  262.                                         cin >> odpoved;
  263.                                         if(odpoved == 'a' || odpoved == 'A' || odpoved == 'n' || odpoved == 'N') break;
  264.                                     }
  265.                                     if(odpoved == 'a' || odpoved == 'A'){ // proces smazani polozky
  266.                                         vstupniSoubor.close();
  267.                                         vstupniSoubor.open("DATABAZE.TXT");
  268.                                         vystupniSoubor.open ("docasny.txt");
  269.                                         cnt2=0;
  270.                                         for(int i=0;!vstupniSoubor.eof();i++){  /** vytvoreni docasneho souboru do ktereho se zkopiruje obsah databaze bez smazaneho radku */
  271.                                             if(i!=cnt){
  272.                                                 getline(vstupniSoubor,radek);
  273.                                                 vystupniSoubor << radek <<"\n";
  274.                                                 cnt2++;
  275.                                             }
  276.                                             else getline(vstupniSoubor,radek);
  277.                                         }
  278.                                         vystupniSoubor.close();
  279.                                         vstupniSoubor.close();
  280.                                         vstupniSoubor.open("docasny.TXT");
  281.                                         vystupniSoubor.open("DATABAZE.txt");
  282.                                         for(int i=0;;i++){ /** kopirovani docasneho souboru do databaze */
  283.                                                 getline(vstupniSoubor,radek);
  284.                                                 if(i==cnt2-1){
  285.                                                     vystupniSoubor << radek;
  286.                                                     break;
  287.                                                 }
  288.                                                 else vystupniSoubor << radek <<"\n";
  289.                                         }
  290.                                         vystupniSoubor.close();
  291.                                         cout << "Hotovo ";
  292.                                         break;                 
  293.                                         }
  294.                                     else break;
  295.                                     }
  296.                             }
  297.                             getline(vstupniSoubor, radek); // skok na dalsi radek
  298.                             cnt++;
  299.                     }
  300.                 }
  301.                    
  302.             else {
  303.                 cout <<  "Soubor " << "DATABAZE.TXT" << " se nepodarilo otevrit\n";
  304.                 return (1);
  305.             }
  306.             if(naslo==false) cout << "Interpret se uz nenachazi v nasi databazi" << endl;
  307.             //zavru soubor
  308.             vstupniSoubor.close();
  309.  
  310.             break;
  311.         case '5':
  312.             if(!vyhledavani){
  313.                 cout << endl;
  314.                 cout << "Zadejte vstupni databazi : ";
  315.                 cin >> vstup;
  316.                 cout << "\nZadejte vystupni databazi : ";
  317.                 cin >> vystup;
  318.             }
  319.             else{
  320.                 vstup="hledani.txt";
  321.                 vystup="hledani.htm";
  322.             }
  323.             vstupniSoubor.open(vstup);
  324.             vystupniSoubor.open (vystup);
  325.                 vystupniSoubor << "<html>";
  326.                 vystupniSoubor << "<head>";
  327.                 vystupniSoubor << "<meta http-equiv=\"Content-Language\" content=\"cs\"> ";
  328.                 vystupniSoubor << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1250\">";
  329.                 vystupniSoubor << "<title>Hudební databáze</title> ";
  330.                 vystupniSoubor << "</head> ";
  331.                 vystupniSoubor << "<body bgcolor=\"#CFEAEB\"> ";
  332.                 vystupniSoubor << "<p align=\"center\"><b><u><font size=\"6\" face=\"Arial\">Hudební databáze</font></u></b></p> ";
  333.                 vystupniSoubor << "<div align=\"center\"> ";
  334.                 vystupniSoubor << " <table border=\"1\" width=\"77%\" id=\"table1\" bordercolor=\"#000000\" bordercolorlight=\"#000000\" bordercolordark=\"#000000\" style=\"border-collapse: collapse\"> ";
  335.                 vystupniSoubor << "     <tr> ";
  336.                 vystupniSoubor << "         <td width=\"191\" bgcolor=\"#61A4DA\"> ";
  337.                 vystupniSoubor << "         <p align=\"center\"><b><font face=\"Arial\">Interpret</font></b></td> ";
  338.                 vystupniSoubor << "         <td width=\"224\" bgcolor=\"#61A4DA\"> ";
  339.                 vystupniSoubor << "             <p align=\"center\"><b><font face=\"Arial\">Skladba</font></b></td>";
  340.                 vystupniSoubor << "             <td width=\"239\" bgcolor=\"#61A4DA\">";
  341.                 vystupniSoubor << "             <p align=\"center\"><b><font face=\"Arial\">Album</font></b></td>";
  342.                 vystupniSoubor << "             <td bgcolor=\"#61A4DA\"> ";
  343.                 vystupniSoubor << "             <p align=\"center\"><b><font face=\"Arial\">Rok</font></b></td>";
  344.                 vystupniSoubor << "     </tr> ";
  345.             if (vstupniSoubor.is_open()){
  346.                 if(!vyhledavani)cout << "Soubor " << vstup << " se podarilo otevrit\n";
  347.                 while(!vstupniSoubor.eof()){
  348.                     vystupniSoubor << "     <tr>";
  349.                     //nacitam hodnoty co jsou oddelene strednikem
  350.                    
  351.                     // hodnota 0 = interpret
  352.                         getline(vstupniSoubor, radek, ';');
  353.                         if(radek=="" || radek=="\n")break;
  354.                         vystupniSoubor << "         <td width=\"191\" bgcolor=\"#FFFFFF\">";
  355.                         vystupniSoubor << "         <p align=\"center\"><font face=\"Arial\">"<< radek <<"</font></td>";
  356.  
  357.                     //hodnota 1 = nazev skladby
  358.                         getline(vstupniSoubor, radek, ';');
  359.                         vystupniSoubor << "         <td width=\"191\" bgcolor=\"#FFFFFF\">";
  360.                         vystupniSoubor << "         <p align=\"center\"><font face=\"Arial\">"<<radek<<"</font></td>";
  361.  
  362.                     //hodnota 2 = nazev alba
  363.                         getline(vstupniSoubor, radek, ';');
  364.                         vystupniSoubor << "         <td width=\"239\" bgcolor=\"#FFFFFF\">";
  365.                         vystupniSoubor << "         <p align=\"center\"><font face=\"Arial\">"<< radek <<"</font></td>";
  366.  
  367.                     //hodnota 3 = rok vydani alba
  368.                         getline(vstupniSoubor, radek, ';');
  369.                         vystupniSoubor << "         <td bgcolor=\"#FFFFFF\">";
  370.                         vystupniSoubor << "         <p align=\"center\"><font face=\"Arial\">"<< radek <<"</font></td>";
  371.                         vystupniSoubor << "     </tr>";
  372.  
  373.                     }  
  374.                 vystupniSoubor << " </table>";
  375.                 vystupniSoubor << "</div>";
  376.                 vystupniSoubor << "<p align=\"left\"><font face=\"Arial\">Vyrobil David Holec 2011</font></p>";
  377.                 vystupniSoubor << "<p align=\"left\"><font face=\"Arial\">semestrální projekt do základů programování</font></p>";
  378.                 vystupniSoubor << "<p align=\"left\"><font face=\"Arial\">VŠB-TU FEI</font></p>";
  379.                 vystupniSoubor << "</body>";
  380.                 vystupniSoubor << "</html>";
  381.  
  382.                 }
  383.             else cout << "Soubor " << vstup << " se nepodarilo otevrit\n";
  384.             vystupniSoubor.close();
  385.             vstupniSoubor.close();
  386.             vyhledavani=false;
  387.             break;
  388.         case '6':
  389.             cout << endl;
  390.             cout << "\tJmeno programu: Hudebni Databaze" << endl;
  391.             cout << "\tAutor programu: David Holec" << endl;
  392.             cout << "\tLogin:          HOL0151" << endl;
  393.             cout << "\tRok             2011" << endl;
  394.             cout << "\t1. rocnik FEI, VSB-TUO" << endl;
  395.             break;
  396.  
  397.         case '0':
  398.             cout << endl;
  399.             cout << "Konec programu" << endl;
  400.             exit(1);
  401.             break;
  402.  
  403.         default:
  404.             cout << "Neznama hodnota, zadejte znovu" << endl;
  405.             break;
  406.  
  407.  
  408.         }
  409.         system("pause");
  410.         system("cls");
  411.     }
  412.     return 0;
  413. }
Add Comment
Please, Sign In to add comment