SlideShare a Scribd company logo
1 of 7
ПРОФЕСИОНАЛНА ГИМНАЗИЯ ПО ТЕЛЕКОМУНИКАЦИИ
ПРОЕКТ
по Обектно-ориентирано програмиране
тема:
„Софтуерен каталог“
на ученика
Благовест Петров
от 1г клас уч. 2010/2011г.
График за изпълнението на проекта за времето 01.06–15.06
1. 01.06-1.06 Замисляне
2. 03.06-10.06 Написване основните компоненти на програмата
2. 10.06-12.06 Дописване на допълнителни функционалности
3. 12.06-15.06 Оптимизация на кода и документиране
Описание на алгоритъма
Основата на цялата програма е класът SoftwareData, която съдържа цялата информация за
всички продукти. Програмата действа като записва всички класове във файл с
последователен достъп.
Функция int main()
Безкраен цикъл за менюто. На потребителя се изписват възможностите и той записва
своя избор в променливата foo. Тя се изследва чрез конструкция switch, като се
изпълняват съответните функции на програмата, за всяка от функционалностите.
Функция void add()
Служи за добавяне на запис във файла с произволен достъп. Отваря се файла softdb като
обект от клас ofstream. Ако това е неуспешно, се извежда съобение на екрана. Програма
се отваря в режим ios::app, т.е. записва се в краяна файла. Осъществява се записа чрез
функцията write. Файлът се затваря с функцията close();
Функция void search(int what)
Това, което потребителят ще търси се записва в низа search_arg[15].
Отваря се файла softdb за четене. Изписва се колонтитул на таблицата с резултатите.
Преглеждат се всички записи във файла (цикъл for). В зависимост от аргумента (int
kakvo), search_arg се сравнява с различен член на SoftwareData. Това сe осъществява,
чрез конструкция switch. Ако what е 1, се изписват всички записи; ако е 2 – само тези на
които члена zaglavie съвпада със search_arg и тн....
Файлът се затваря
Изходен код на програмата:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <cstring>
using namespace std;
class SoftwareData {
public:
char zaglavie [20];
char prednaznachenie [20];
char avtor [20];
char licenz [15];
char platforma [20];
float razmer;
};
void add() {
ofstream outSoftware("softdb", ios::app | ios::in | ios::binary );
if (!outSoftware){
cerr << "ne moje da se otvori failn";
exit (1);
}
SoftwareData soft;
cout <<"Napishete zaglavie, prednaznachenie, avtor, licenz, platforma i razmer na programata:n |_ ";
cin >> soft.zaglavie >> soft.prednaznachenie >> soft.avtor >> soft.licenz >> soft.platforma >> soft.razmer;
outSoftware.write(
reinterpret_cast<const char *>( &soft ),
sizeof ( SoftwareData ));
outSoftware.close();
cout <<endl;
}
void search(int what){
char search_arg [20];
SoftwareData soft;
switch (what){
case 2:
cout << "Zaglavie:_ ";
cin >> search_arg;
break;
case 3:
cout << "Lizenz:_ ";
cin >> search_arg;
break;
case 4:
cout << "Prednaznachenie:_ ";
cin >> search_arg;
break;
case 5:
cout << "Platforma:_ ";
cin >> search_arg;
break;
}
ifstream inSoftware("softdb", ios::in | ios::binary );
if (!inSoftware) { cerr << "Ne moje da se otvori fail" <<endl; exit(1); }
cout <<"Turseneto izvede slednite rezultati:"<<endl<<
"Zaglavie:tPrednaznachenie:tAvtor:tLicenz:tPlatforma:tRazmer:t"<<endl;
while (inSoftware.read(reinterpret_cast<char *>(&soft), sizeof(SoftwareData))) {
switch(what) {
case 1:
cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" <<
soft.platforma;
cout << "t" << soft.razmer <<endl;
break;
case 2:
if(!strcmp(search_arg, soft.zaglavie)){
cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" <<
soft.platforma;
cout << "t" << soft.razmer <<endl;}
break;
case 3:
if(!strcmp(search_arg, soft.licenz)){
cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" <<
soft.platforma;
cout << "t" << soft.razmer <<endl;}
break;
case 4:
if(!strcmp(search_arg, soft.prednaznachenie)){
cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" <<
soft.platforma;
cout << "t" << soft.razmer <<endl;}
break;
case 5:
if(!strcmp(search_arg, soft.platforma)){
cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" <<
soft.platforma;
cout << "t" << soft.razmer <<endl;}
break;
}
}
cout << "n";
inSoftware.close();
int main(void)
{
char foo;
while(1){
cout <<"Kakvo iskate da napraviten";
cout <<"1. Dobavqne na novo prilojenie" << endl << "2. Pokazvane na vsichki zapisi" << endl << "3.
Tursene spored zaglavie" << "4. Tursene spored licenz ";
cout << "5. Tursene spored prednaznachenie" << endl << "6. Tursene spored platforma" <<endl << "7.
Izhod (^C)n |_ " <<endl;
cin >>foo;
switch(foo){
case '7':
exit(0);
break;
case '1':
add();
break;
case '2':
search(1);
break;
case '3':
search(2);
break;
case '4':
search(3);
break;
case '5':
search(4);
break;
case '6':
search(5);
break;
default:
cout << "Kakwo?"<<endl;
break;
}
}
return 0;
}

More Related Content

Similar to Стар проект на Благо?!

High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code IntroductionSvetlin Nakov
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality CodeSvetlin Nakov
 
23. прекъсвания. процедури при прекъсвания.
23. прекъсвания. процедури при прекъсвания.23. прекъсвания. процедури при прекъсвания.
23. прекъсвания. процедури при прекъсвания.dnaidenowa
 
AJAX и създаване на богати потребителски интерфейси в браузър
AJAX и създаване на богати потребителски интерфейси в браузърAJAX и създаване на богати потребителски интерфейси в браузър
AJAX и създаване на богати потребителски интерфейси в браузърsvilen.ivanov
 
Drupal security lecture
Drupal security lectureDrupal security lecture
Drupal security lectureslide9991
 
Безмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със SeleniumБезмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със Seleniumsvilen.ivanov
 
Презентация Фатих
Презентация ФатихПрезентация Фатих
Презентация ФатихFatih Dmrl
 
Автоматизирано функционално тестване на уеб приложения със Selenium
Автоматизирано функционално тестване на уеб приложения със SeleniumАвтоматизирано функционално тестване на уеб приложения със Selenium
Автоматизирано функционално тестване на уеб приложения със Seleniumsvilen.ivanov
 
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)DAVID Academy
 
Курс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLКурс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLDAVID Academy
 
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)DAVID Academy
 
Професия QA инженер - SoftUniConf June 2015
Професия QA инженер - SoftUniConf June 2015Професия QA инженер - SoftUniConf June 2015
Професия QA инженер - SoftUniConf June 2015Peter Sabev
 
FABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovFABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovSvetlin Nakov
 
[Dev.bg] CI from scratch with Jenkins
[Dev.bg] CI from scratch with Jenkins[Dev.bg] CI from scratch with Jenkins
[Dev.bg] CI from scratch with JenkinsBorislav Traykov
 
The better PHP API (BG)
The better PHP API (BG)The better PHP API (BG)
The better PHP API (BG)boen_robot
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BGsvilen.ivanov
 

Similar to Стар проект на Благо?! (20)

High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code Introduction
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality Code
 
23. прекъсвания. процедури при прекъсвания.
23. прекъсвания. процедури при прекъсвания.23. прекъсвания. процедури при прекъсвания.
23. прекъсвания. процедури при прекъсвания.
 
AJAX и създаване на богати потребителски интерфейси в браузър
AJAX и създаване на богати потребителски интерфейси в браузърAJAX и създаване на богати потребителски интерфейси в браузър
AJAX и създаване на богати потребителски интерфейси в браузър
 
Drupal security lecture
Drupal security lectureDrupal security lecture
Drupal security lecture
 
Security Log Management
Security Log  ManagementSecurity Log  Management
Security Log Management
 
Безмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със SeleniumБезмилостно тестване на уеб приложения със Selenium
Безмилостно тестване на уеб приложения със Selenium
 
Презентация Фатих
Презентация ФатихПрезентация Фатих
Презентация Фатих
 
Автоматизирано функционално тестване на уеб приложения със Selenium
Автоматизирано функционално тестване на уеб приложения със SeleniumАвтоматизирано функционално тестване на уеб приложения със Selenium
Автоматизирано функционално тестване на уеб приложения със Selenium
 
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
 
Курс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLКурс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTML
 
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2015), занятие №3 - JavaScript (част 1/2)
 
5494 n nikolov_zashtita
5494 n nikolov_zashtita5494 n nikolov_zashtita
5494 n nikolov_zashtita
 
Професия QA инженер - SoftUniConf June 2015
Професия QA инженер - SoftUniConf June 2015Професия QA инженер - SoftUniConf June 2015
Професия QA инженер - SoftUniConf June 2015
 
FABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin NakovFABRIQ - Short - Svetlin Nakov
FABRIQ - Short - Svetlin Nakov
 
Programirane i organizaciq
Programirane i organizaciqProgramirane i organizaciq
Programirane i organizaciq
 
[Dev.bg] CI from scratch with Jenkins
[Dev.bg] CI from scratch with Jenkins[Dev.bg] CI from scratch with Jenkins
[Dev.bg] CI from scratch with Jenkins
 
The better PHP API (BG)
The better PHP API (BG)The better PHP API (BG)
The better PHP API (BG)
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BG
 
WordPress Security
WordPress SecurityWordPress Security
WordPress Security
 

Стар проект на Благо?!

  • 1. ПРОФЕСИОНАЛНА ГИМНАЗИЯ ПО ТЕЛЕКОМУНИКАЦИИ ПРОЕКТ по Обектно-ориентирано програмиране тема: „Софтуерен каталог“ на ученика Благовест Петров от 1г клас уч. 2010/2011г.
  • 2. График за изпълнението на проекта за времето 01.06–15.06 1. 01.06-1.06 Замисляне 2. 03.06-10.06 Написване основните компоненти на програмата 2. 10.06-12.06 Дописване на допълнителни функционалности 3. 12.06-15.06 Оптимизация на кода и документиране
  • 3. Описание на алгоритъма Основата на цялата програма е класът SoftwareData, която съдържа цялата информация за всички продукти. Програмата действа като записва всички класове във файл с последователен достъп. Функция int main() Безкраен цикъл за менюто. На потребителя се изписват възможностите и той записва своя избор в променливата foo. Тя се изследва чрез конструкция switch, като се изпълняват съответните функции на програмата, за всяка от функционалностите. Функция void add() Служи за добавяне на запис във файла с произволен достъп. Отваря се файла softdb като обект от клас ofstream. Ако това е неуспешно, се извежда съобение на екрана. Програма се отваря в режим ios::app, т.е. записва се в краяна файла. Осъществява се записа чрез функцията write. Файлът се затваря с функцията close(); Функция void search(int what) Това, което потребителят ще търси се записва в низа search_arg[15]. Отваря се файла softdb за четене. Изписва се колонтитул на таблицата с резултатите. Преглеждат се всички записи във файла (цикъл for). В зависимост от аргумента (int kakvo), search_arg се сравнява с различен член на SoftwareData. Това сe осъществява, чрез конструкция switch. Ако what е 1, се изписват всички записи; ако е 2 – само тези на които члена zaglavie съвпада със search_arg и тн.... Файлът се затваря Изходен код на програмата: #include <iostream> #include <fstream> #include <cstdlib> #include <cstring> using namespace std; class SoftwareData { public: char zaglavie [20]; char prednaznachenie [20];
  • 4. char avtor [20]; char licenz [15]; char platforma [20]; float razmer; }; void add() { ofstream outSoftware("softdb", ios::app | ios::in | ios::binary ); if (!outSoftware){ cerr << "ne moje da se otvori failn"; exit (1); } SoftwareData soft; cout <<"Napishete zaglavie, prednaznachenie, avtor, licenz, platforma i razmer na programata:n |_ "; cin >> soft.zaglavie >> soft.prednaznachenie >> soft.avtor >> soft.licenz >> soft.platforma >> soft.razmer; outSoftware.write( reinterpret_cast<const char *>( &soft ), sizeof ( SoftwareData )); outSoftware.close(); cout <<endl; } void search(int what){ char search_arg [20]; SoftwareData soft; switch (what){ case 2: cout << "Zaglavie:_ "; cin >> search_arg; break; case 3: cout << "Lizenz:_ "; cin >> search_arg; break; case 4: cout << "Prednaznachenie:_ ";
  • 5. cin >> search_arg; break; case 5: cout << "Platforma:_ "; cin >> search_arg; break; } ifstream inSoftware("softdb", ios::in | ios::binary ); if (!inSoftware) { cerr << "Ne moje da se otvori fail" <<endl; exit(1); } cout <<"Turseneto izvede slednite rezultati:"<<endl<< "Zaglavie:tPrednaznachenie:tAvtor:tLicenz:tPlatforma:tRazmer:t"<<endl; while (inSoftware.read(reinterpret_cast<char *>(&soft), sizeof(SoftwareData))) { switch(what) { case 1: cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" << soft.platforma; cout << "t" << soft.razmer <<endl; break; case 2: if(!strcmp(search_arg, soft.zaglavie)){ cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" << soft.platforma; cout << "t" << soft.razmer <<endl;} break; case 3: if(!strcmp(search_arg, soft.licenz)){ cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" << soft.platforma; cout << "t" << soft.razmer <<endl;} break; case 4: if(!strcmp(search_arg, soft.prednaznachenie)){ cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" << soft.platforma; cout << "t" << soft.razmer <<endl;} break;
  • 6. case 5: if(!strcmp(search_arg, soft.platforma)){ cout << soft.zaglavie << "t" << soft.prednaznachenie << "t" << soft.avtor << "t" << soft.licenz << "t" << soft.platforma; cout << "t" << soft.razmer <<endl;} break; } } cout << "n"; inSoftware.close(); int main(void) { char foo; while(1){ cout <<"Kakvo iskate da napraviten"; cout <<"1. Dobavqne na novo prilojenie" << endl << "2. Pokazvane na vsichki zapisi" << endl << "3. Tursene spored zaglavie" << "4. Tursene spored licenz "; cout << "5. Tursene spored prednaznachenie" << endl << "6. Tursene spored platforma" <<endl << "7. Izhod (^C)n |_ " <<endl; cin >>foo; switch(foo){ case '7': exit(0); break; case '1': add(); break; case '2': search(1); break; case '3': search(2); break; case '4': search(3);