Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 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 <iostream>
- #include <fstream>
- #include <string>
- #include <iomanip>
- 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 <<data_muzika.interpret << ";" << data_muzika.skladba << ";" << data_muzika.album << ";" << data_muzika.rok << ";\n";
- naslo=true;
- vyhledavani=true;
- }
- getline(vstupniSoubor, radek);
- }
- }
- else {
- cout << "Soubor " << "DATABAZE.TXT" << " se nepodarilo otevrit\n";
- return (1);
- }
- if(naslo==false) cout << "Interpret se nenachazi v nasi databazi" << endl;
- //zavru soubor
- vstupniSoubor.close();
- vystupniSoubor.close();
- break;
- case '3':
- cout << "Zadejte interpreta" << endl;
- getchar();
- getline (cin,data_muzika.interpret);
- cout << "Zadejte skladbu" << endl;
- getline (cin,data_muzika.skladba);
- cout << "Zadejte album" << endl;
- getline (cin,data_muzika.album);
- cout << "Zadejte rok" << endl;
- getline (cin,data_muzika.rok);
- vystupni2.open ("databaze.txt", fstream::in | fstream::out | fstream::app);
- if (vystupni2.is_open()){
- cout << "Soubor " << "DATABAZE.TXT" << " se podarilo otevrit\n";
- vystupni2<<"\n"<<data_muzika.interpret<<";"<<data_muzika.skladba<<";"<<data_muzika.album<<";"<<data_muzika.rok<<";";
- vystupni2.close();
- cout << "Novy zaznam byl uspesne ulozen do databaze."<< endl;
- }
- else cout << "Soubor " << "DATABAZE.TXT" << " se nepodarilo otevrit\n";
- break;
- case '4':
- //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 << "Zadejte hledanou skladbu" << endl;
- getline (cin,hledana_skladba);
- cout << "Vyhledavam skladbu " << hledany_interpret << " , " <<hledana_skladba<< endl;
- 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;
- if(prevodnavelke(hledany_interpret).compare(prevodnavelke(data_muzika.interpret)) == 0){ // shoda hledani interpreta
- if(prevodnavelke(hledana_skladba).compare(prevodnavelke(data_muzika.skladba)) == 0){ // shoda hledani skladby
- cout << "Nasel jsem " << hledany_interpret << ", " <<hledana_skladba << " na radku : " << cnt;
- cout << " Prejete si vybrany zaznam odstranit? (a/n)";
- for (;;){ // cyklus odpovedi a/n
- cin >> 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 << "<html>";
- vystupniSoubor << "<head>";
- vystupniSoubor << "<meta http-equiv=\"Content-Language\" content=\"cs\"> ";
- vystupniSoubor << "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1250\">";
- vystupniSoubor << "<title>Hudební databáze</title> ";
- vystupniSoubor << "</head> ";
- vystupniSoubor << "<body bgcolor=\"#CFEAEB\"> ";
- vystupniSoubor << "<p align=\"center\"><b><u><font size=\"6\" face=\"Arial\">Hudební databáze</font></u></b></p> ";
- vystupniSoubor << "<div align=\"center\"> ";
- vystupniSoubor << " <table border=\"1\" width=\"77%\" id=\"table1\" bordercolor=\"#000000\" bordercolorlight=\"#000000\" bordercolordark=\"#000000\" style=\"border-collapse: collapse\"> ";
- vystupniSoubor << " <tr> ";
- vystupniSoubor << " <td width=\"191\" bgcolor=\"#61A4DA\"> ";
- vystupniSoubor << " <p align=\"center\"><b><font face=\"Arial\">Interpret</font></b></td> ";
- vystupniSoubor << " <td width=\"224\" bgcolor=\"#61A4DA\"> ";
- vystupniSoubor << " <p align=\"center\"><b><font face=\"Arial\">Skladba</font></b></td>";
- vystupniSoubor << " <td width=\"239\" bgcolor=\"#61A4DA\">";
- vystupniSoubor << " <p align=\"center\"><b><font face=\"Arial\">Album</font></b></td>";
- vystupniSoubor << " <td bgcolor=\"#61A4DA\"> ";
- vystupniSoubor << " <p align=\"center\"><b><font face=\"Arial\">Rok</font></b></td>";
- vystupniSoubor << " </tr> ";
- if (vstupniSoubor.is_open()){
- if(!vyhledavani)cout << "Soubor " << vstup << " se podarilo otevrit\n";
- while(!vstupniSoubor.eof()){
- vystupniSoubor << " <tr>";
- //nacitam hodnoty co jsou oddelene strednikem
- // hodnota 0 = interpret
- getline(vstupniSoubor, radek, ';');
- if(radek=="" || radek=="\n")break;
- vystupniSoubor << " <td width=\"191\" bgcolor=\"#FFFFFF\">";
- vystupniSoubor << " <p align=\"center\"><font face=\"Arial\">"<< radek <<"</font></td>";
- //hodnota 1 = nazev skladby
- getline(vstupniSoubor, radek, ';');
- vystupniSoubor << " <td width=\"191\" bgcolor=\"#FFFFFF\">";
- vystupniSoubor << " <p align=\"center\"><font face=\"Arial\">"<<radek<<"</font></td>";
- //hodnota 2 = nazev alba
- getline(vstupniSoubor, radek, ';');
- vystupniSoubor << " <td width=\"239\" bgcolor=\"#FFFFFF\">";
- vystupniSoubor << " <p align=\"center\"><font face=\"Arial\">"<< radek <<"</font></td>";
- //hodnota 3 = rok vydani alba
- getline(vstupniSoubor, radek, ';');
- vystupniSoubor << " <td bgcolor=\"#FFFFFF\">";
- vystupniSoubor << " <p align=\"center\"><font face=\"Arial\">"<< radek <<"</font></td>";
- vystupniSoubor << " </tr>";
- }
- vystupniSoubor << " </table>";
- vystupniSoubor << "</div>";
- vystupniSoubor << "<p align=\"left\"><font face=\"Arial\">Vyrobil David Holec 2011</font></p>";
- vystupniSoubor << "<p align=\"left\"><font face=\"Arial\">semestrální projekt do základů programování</font></p>";
- vystupniSoubor << "<p align=\"left\"><font face=\"Arial\">VŠB-TU FEI</font></p>";
- vystupniSoubor << "</body>";
- vystupniSoubor << "</html>";
- }
- 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;
- }
Add Comment
Please, Sign In to add comment