// Programko projekt.cpp : Defines the entry point for the console application. // /** @ Programko projekt.cpp *! \mainpage Hudebni databaze * \section intro_sec Program pro praci s databazi * - Vytvoreno jako semestralni projekt na skole VSB-TU Ostrava , fakulta FEI * - Finalni verze programu vytvorena dne 1.12.2011 * - Vytvoril David Holec ( ID : HOL0151 ) */ #include "StdAfx.h" #include #include #include #include using namespace std; /** * Struktura prvku potrebnych ke spravnemu behu programu. * @param string interpret - do nej se uklada 1 prvek souboru na radku az po ; * @param string skladba - do nej se uklada 2 prvek souboru na radku az po ; * @param string album - do nej se uklada 3 prvek souboru na radku az po ; * @param string rok - do nej se uklada 4 prvek souboru na radku az po ; */ struct t_data_muzika { string interpret; string skladba; string album; string rok; }; /*! Funkce pro zmenu malych pismen na velke. */ string prevodnavelke(string vstup){ string vystup=vstup; for (int i=0;i!=vstup.size();i++) if(vstup[i]>91) vystup[i]=vstup[i]-32; return vystup; } int main(int argc, char*argv[]) { char menu2; string radek; // jeden radek v databazi bool naslo=false,vyhledavani=false; int cnt = 0,cnt2=0; string hledany_interpret; string hledana_skladba; int soubor_delka; string vstup,vystup; // vstup = vstupni databaze (txt) vystup = vystupni (html) char odpoved; // odpoved ano, ne v mazani zaznamu //muj vstupni soubor ifstream vstupniSoubor; ofstream vystupniSoubor; fstream vystupni2; //data muzika je struktura t_data_muzika t_data_muzika data_muzika; // hlavni nabidka programu while(menu2 =! 0) { cout << "********************************************************" << endl; cout << "\t\t\t MENU" << endl; cout << "********************************************************" << endl; cout << endl; cout << "\t\t1 Zobrazeni databaze" << endl; cout << "\t\t2 Vyhledani interpreta" << endl; cout << "\t\t3 Pridani skladby" << endl; cout << "\t\t4 Smazani skladby" << endl; cout << "\t\t5 Prevod databaze do HTML" << endl; cout << "\t\t6 O programu" << endl; cout << "\t\t0 pro konec" << endl; if(!vyhledavani)cin >> menu2; else menu2='5'; switch(menu2) { case '1': vstupniSoubor.open("DATABAZE.TXT"); if (vstupniSoubor.is_open()){ //cteni souboru while(!vstupniSoubor.eof()){ /** interpret *@data_muzika.interpret - ulozen prvni string */ getline(vstupniSoubor, radek, ';'); //nacitam hodnoty co jsou oddelene strednikem if(radek=="")break; data_muzika.interpret = radek; /** skladba *@data_muzika.skladba - ulozen druhy string */ getline(vstupniSoubor, radek, ';'); data_muzika.skladba = radek; /** album *@data_muzika.album - ulozen treti string */ getline(vstupniSoubor, radek, ';'); data_muzika.album = radek; /** rok *@data_muzika.rok - ulozen ctvrty string */ getline(vstupniSoubor, radek, ';'); data_muzika.rok = radek; //vypisuju vsechny udaje pod sebe cout << data_muzika.interpret << ", " << data_muzika.skladba << ", " << data_muzika.album << ", " << data_muzika.rok << endl; getline(vstupniSoubor, radek); //odradkuje nacitani } } else { cerr << "Chyba pri otevirani souboru" << endl; getchar(); getchar(); return (1); } //zavru soubor vstupniSoubor.close(); break; case '2': //otevru stream *File soubor vstupniSoubor.open("DATABAZE.TXT"); naslo=false; cnt=0; //cteni souboru if (vstupniSoubor.is_open()){ cout << "Soubor " << "DATABAZE.TXT" << " se podarilo otevrit\n"; vstupniSoubor.seekg (0, ios::end); // nastavi konec souboru soubor_delka = vstupniSoubor.tellg(); // zapise pozici konce souboru vstupniSoubor.seekg (0, ios::beg); // vrati se na zacatek souboru cout << "Nacitam " << soubor_delka << " znaku dlouhy soubor" << endl; cout << "Zadejte hledaneho interpreta" << endl; getchar(); getline (cin,hledany_interpret); cout << "Vyhledavam interpreta " << hledany_interpret << endl; vystupniSoubor.open("hledani.txt"); while(!vstupniSoubor.eof()){ // hodnota 0 = interpret getline(vstupniSoubor, radek, ';'); //nacitam hodnoty co jsou oddelene strednikem data_muzika.interpret = radek; //hodnota 1 = nazev skladby getline(vstupniSoubor, radek, ';'); data_muzika.skladba = radek; //hodnota 2 = nazev alba getline(vstupniSoubor, radek, ';'); data_muzika.album = radek; //hodnota 3 = rok vydani alba getline(vstupniSoubor, radek, ';'); data_muzika.rok = radek; /* Nalezeni shody pro vyhledavani */ if(prevodnavelke(hledany_interpret).compare(prevodnavelke(data_muzika.interpret)) == 0){ cout << data_muzika.interpret << ", " << data_muzika.skladba << ", " << data_muzika.album << ", " << data_muzika.rok << endl; vystupniSoubor <> odpoved; if(odpoved == 'a' || odpoved == 'A' || odpoved == 'n' || odpoved == 'N') break; } if(odpoved == 'a' || odpoved == 'A'){ // proces smazani polozky vstupniSoubor.close(); vstupniSoubor.open("DATABAZE.TXT"); vystupniSoubor.open ("docasny.txt"); cnt2=0; for(int i=0;!vstupniSoubor.eof();i++){ /** vytvoreni docasneho souboru do ktereho se zkopiruje obsah databaze bez smazaneho radku */ if(i!=cnt){ getline(vstupniSoubor,radek); vystupniSoubor << radek <<"\n"; cnt2++; } else getline(vstupniSoubor,radek); } vystupniSoubor.close(); vstupniSoubor.close(); vstupniSoubor.open("docasny.TXT"); vystupniSoubor.open("DATABAZE.txt"); for(int i=0;;i++){ /** kopirovani docasneho souboru do databaze */ getline(vstupniSoubor,radek); if(i==cnt2-1){ vystupniSoubor << radek; break; } else vystupniSoubor << radek <<"\n"; } vystupniSoubor.close(); cout << "Hotovo "; break; } else break; } } getline(vstupniSoubor, radek); // skok na dalsi radek cnt++; } } else { cout << "Soubor " << "DATABAZE.TXT" << " se nepodarilo otevrit\n"; return (1); } if(naslo==false) cout << "Interpret se uz nenachazi v nasi databazi" << endl; //zavru soubor vstupniSoubor.close(); break; case '5': if(!vyhledavani){ cout << endl; cout << "Zadejte vstupni databazi : "; cin >> vstup; cout << "\nZadejte vystupni databazi : "; cin >> vystup; } else{ vstup="hledani.txt"; vystup="hledani.htm"; } vstupniSoubor.open(vstup); vystupniSoubor.open (vystup); vystupniSoubor << ""; vystupniSoubor << ""; vystupniSoubor << " "; vystupniSoubor << ""; vystupniSoubor << "Hudební databáze "; vystupniSoubor << " "; vystupniSoubor << " "; vystupniSoubor << "

Hudební databáze

"; vystupniSoubor << "
"; vystupniSoubor << " "; vystupniSoubor << " "; vystupniSoubor << " "; vystupniSoubor << " "; vystupniSoubor << " "; vystupniSoubor << " "; vystupniSoubor << " "; if (vstupniSoubor.is_open()){ if(!vyhledavani)cout << "Soubor " << vstup << " se podarilo otevrit\n"; while(!vstupniSoubor.eof()){ vystupniSoubor << " "; //nacitam hodnoty co jsou oddelene strednikem // hodnota 0 = interpret getline(vstupniSoubor, radek, ';'); if(radek=="" || radek=="\n")break; vystupniSoubor << " "; //hodnota 1 = nazev skladby getline(vstupniSoubor, radek, ';'); vystupniSoubor << " "; //hodnota 2 = nazev alba getline(vstupniSoubor, radek, ';'); vystupniSoubor << " "; //hodnota 3 = rok vydani alba getline(vstupniSoubor, radek, ';'); vystupniSoubor << " "; vystupniSoubor << " "; } vystupniSoubor << "
"; vystupniSoubor << "

Interpret

"; vystupniSoubor << "

Skladba

"; vystupniSoubor << "

Album

"; vystupniSoubor << "

Rok

"; vystupniSoubor << "

"<< radek <<"

"; vystupniSoubor << "

"<

"; vystupniSoubor << "

"<< radek <<"

"; vystupniSoubor << "

"<< radek <<"

"; vystupniSoubor << "
"; vystupniSoubor << "

Vyrobil David Holec 2011

"; vystupniSoubor << "

semestrální projekt do základů programování

"; vystupniSoubor << "

VŠB-TU FEI

"; vystupniSoubor << ""; vystupniSoubor << ""; } else cout << "Soubor " << vstup << " se nepodarilo otevrit\n"; vystupniSoubor.close(); vstupniSoubor.close(); vyhledavani=false; break; case '6': cout << endl; cout << "\tJmeno programu: Hudebni Databaze" << endl; cout << "\tAutor programu: David Holec" << endl; cout << "\tLogin: HOL0151" << endl; cout << "\tRok 2011" << endl; cout << "\t1. rocnik FEI, VSB-TUO" << endl; break; case '0': cout << endl; cout << "Konec programu" << endl; exit(1); break; default: cout << "Neznama hodnota, zadejte znovu" << endl; break; } system("pause"); system("cls"); } return 0; }