Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "funkcje.h"
- #include "klasy.h"
- #include <vector>
- using namespace std;
- bool wirtualne = true;
- // Kontenery
- vector <Osoba> osoby;
- vector <Student> studenci;
- vector <Pracownik> pracownicy;
- // Funkcje rodzaju "menu"
- void main_menu() {
- int menu;
- szlaczek2();
- cout << "Witaj w programie do zarzadzania studentami i pracownikami.\n";
- szlaczek2();
- cout << "Wybierz jaka baza chcesz zarzadzac.\n"
- << " [1] Baza studentow.\n"
- << " [2] Baza pracownikow.\n"
- << " [3] Opcje.\n"
- << " [4] Zakoncz.\n";
- szlaczek1();
- pobierz(1, 4, &menu);
- switch (menu) {
- case 1:
- system("CLS");
- student_menu();
- break;
- case 2:
- system("CLS");
- pracownik_menu();
- break;
- case 3:
- system("CLS");
- opcje_menu();
- break;
- case 4:
- system("CLS");
- szlaczek1();
- cout << "Wybrales: wyjscie.\n";
- szlaczek1();
- exit(0);
- break;
- default:
- szlaczek1();
- cout << "Nie ma takiej opcji!" << "\n";
- szlaczek1();
- cout << endl;
- main_menu();
- break;
- }
- }// Menu główne programu
- void pracownik_menu() {
- int menu;
- szlaczek2();
- cout << "BAZA PRACOWNIKOW\n";
- szlaczek2();
- cout << "Menu:\n"
- << " [1] Wyswietl baze\n"
- << " [2] Dodaj pracownika\n"
- << " [3] Usun pracownik\n"
- << " [4] Wroc\n"
- << " [5] Zakoncz\n";
- szlaczek1();
- pobierz(1, 5, &menu);
- szlaczek1();
- switch (menu) {
- case 1:
- system("CLS");
- if (!pracownicy.empty()) wyswietl_baze_pracownikow();
- else cout << "Brak rekordow w bazie!\n";
- pracownik_menu();
- break;
- case 2:
- dodaj_pracownika();
- pracownik_menu();
- break;
- case 3:
- system("CLS");
- if (!pracownicy.empty()) usun_pracownika();
- else cout << "Brak rekordow w bazie!\n";
- pracownik_menu();
- break;
- case 4:
- system("CLS");
- main_menu();
- case 5:
- exit(0);
- break;
- default:
- szlaczek1();
- cout << "Nie ma takiej opcji!" << "\n";
- szlaczek1();
- cout << endl;
- pracownik_menu();
- break;
- }
- }// Menu bazy danych pracowników
- void student_menu() {
- int menu;
- szlaczek2();
- cout << "BAZA STUDENTOW\n";
- szlaczek2();
- cout << "Menu:\n"
- << " [1] Wyswietl baze studentow\n"
- << " [2] Dodaj studenta\n"
- << " [3] Usun studenta\n"
- << " [4] Wroc\n"
- << " [5] Zakoncz\n";
- szlaczek1();
- pobierz(1, 5, &menu);
- szlaczek1();
- switch (menu) {
- case 1:
- if (!studenci.empty()) wyswietl_baze_studentow();
- else {
- system("CLS");
- cout << "Brak rekordow w bazie!\n";
- }
- student_menu();
- break;
- case 2:
- dodaj_studenta();
- student_menu();
- break;
- case 3:
- system("CLS");
- if (!studenci.empty()) usun_studenta();
- else cout << "Brak rekordow w bazie!\n";
- student_menu();
- break;
- case 4:
- system("CLS");
- main_menu();
- case 5:
- exit(0);
- break;
- default:
- szlaczek1();
- cout << "Nie ma takiej opcji!" << "\n";
- szlaczek1();
- cout << endl;
- student_menu();
- break;
- }
- }// Menu bazy danych studentów
- void opcje_menu() {
- int opcja;
- szlaczek2();
- cout << "OPCJE\n";
- szlaczek2();
- cout << "Metody wirtualne: ";
- if (wirtualne) cout << "wlaczone.\n";
- else cout << "wylaczone.\n";
- cout << " [1] Wlacz.\n"
- << " [2] Wylacz.\n"
- << " [3] Wroc.\n";
- pobierz(1, 3, &opcja);
- switch (opcja) {
- case 1:
- system("CLS");
- wirtualne = true;
- opcje_menu();
- break;
- case 2:
- system("CLS");
- wirtualne = false;
- opcje_menu();
- break;
- case 3:
- system("CLS");
- main_menu();
- default:
- break;
- }
- }
- void pokaz(Osoba *osoba) {
- if (wirtualne == true) osoba->wyswietl();
- else if (wirtualne == false) osoba->wyswietl_nvirt();
- }
- // Funkcje student_menu
- void wyswietl_baze_studentow() {
- cout << "------------";
- szlaczek1();
- cout << endl;
- cout << right << setw(5) << "Nr.:" << setw(12) << "Imie:" << setw(15) << "Nazwisko:"
- << setw(14) << "Nr. ind.:" << setw(10) << "Kier.:" << setw(10) << "Sem.:" << setw(14) << "Srednia:" "\n";
- for (unsigned i = 0; i < studenci.size(); i++) {
- cout << setw(5) << right << i + 1;
- pokaz(&studenci[i]);
- }
- cout << endl;
- cout << "------------";
- szlaczek1();
- }
- void dodaj_studenta() {
- string imie;
- string nazwisko;
- float srednia;
- string kierunek;
- int nr_semestru;
- int nr_indeksu;
- if (studenci.size() < 10) {
- // Pobieranie danych
- cout << "Imie: ";
- cin >> imie;
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- cout << "Nazwisko: ";
- cin >> nazwisko;
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- cout << "Srednia (2.0 - 5.0): ";
- pobierz(2.0, 5.0, &srednia);
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- cout << "Kierunek: ";
- cin >> kierunek;
- cout << "Numer semestru (1 - 12): ";
- pobierz(1, 12, &nr_semestru);
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- cout << "Numer indeksu (100000 - 999999): ";
- pobierz(100000, 999999, &nr_indeksu);
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- // Tworzenie nowego obiektu poprzez konstruktor z parametrami
- Student *tymczasowy_stud = new Student(imie, nazwisko, srednia, kierunek, nr_semestru, nr_indeksu);
- // Odłożenie obiektu do kontenera
- studenci.push_back(*tymczasowy_stud);
- // Kasowanie obiektu
- delete tymczasowy_stud;
- cout << "\nDodano rekord.\n";
- } else cout << "Baza danych przepelniona! Nie mozna dodac kolejnego rekordu!\n";
- }
- void usun_studenta() {
- int ktory;
- wyswietl_baze_studentow();
- cout << "Usun studenta o numerze: ";
- pobierz(1, studenci.size(), &ktory);
- studenci.erase(studenci.begin() + ktory - 1);
- }
- //Funkcje pracownik_menu
- void wyswietl_baze_pracownikow() {
- szlaczek1();
- cout << endl;
- cout << right << setw(5) << "Nr.:" << setw(12) << "Imie:" << setw(15) << "Nazwisko:"
- << setw(14) << "Pensja:" << "\n";
- for (unsigned i = 0; i < pracownicy.size(); i++) {
- cout << setw(5) << right << i + 1;
- pokaz(&pracownicy[i]);
- }
- cout << endl;
- szlaczek1();
- }
- void dodaj_pracownika() {
- string imie;
- string nazwisko;
- float pensja;
- if (studenci.size() < 10) {
- // Pobieranie danych
- cout << "Imie: ";
- cin >> imie;
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- cout << "Nazwisko: ";
- cin >> nazwisko;
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- cout << "Pensja: ";
- pobierz(0.0, 9999999.0, &pensja);
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- // Tworzenie nowego obiektu poprzez konstruktor z parametrami
- Pracownik *tymczasowy_prac = new Pracownik(imie, nazwisko, pensja);
- // Odłożenie obiektu do kontenera
- pracownicy.push_back(*tymczasowy_prac);
- // Kasowanie obiektu
- delete tymczasowy_prac;
- cout << "\nDodano rekord.\n";
- } else cout << "Baza danych przepelniona! Nie mozna dodac kolejnego rekordu!\n";
- }
- void usun_pracownika() {
- int ktory;
- wyswietl_baze_pracownikow();
- cout << "Usun pracownika o numerze: ";
- pobierz(1, pracownicy.size(), &ktory);
- pracownicy.erase(pracownicy.begin() + ktory - 1);
- }
- // Funkcje pobierania danych
- void pobierz(int dol, int gora, int *m) {
- while ((!(cin >> *m) || *m < dol || *m > gora)) {
- cout << "Blad. Sprobuj jeszcze raz: ";
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- }
- }// Funkcja do pobierania danych typu integer
- void pobierz(float dol, float gora, float *m) {
- while ((!(cin >> *m) || *m < dol || *m > gora)) {
- cout << "Blad. Sprobuj jeszcze raz: ";
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- }
- }// Funcka do pobieranai danych typu float
- void pobierz(char dol, char gora, char *m) {
- while ((!(cin >> *m) || *m < dol || *m > gora)) {
- cout << "Blad. Sprobuj jeszcze raz: ";
- cin.clear();
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- }
- }// Funkcja do pobierania danych typu char
- // Funkcje pełniące role separatorów i ozdobników
- void szlaczek1() {
- cout << "-------------------------------------------------------------------" << endl;
- }
- void szlaczek2() {
- cout << "===================================================================" << endl;
- }
- void szlaczek3() {
- cout << "###################################################################" << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement