Advertisement
Lempek

funkcje.cpp

Dec 27th, 2011
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.69 KB | None | 0 0
  1. #include "funkcje.h"
  2. #include "klasy.h"
  3.  
  4. #include <vector>
  5.  
  6. using namespace std;
  7. bool wirtualne = true;
  8. // Kontenery
  9. vector <Osoba> osoby;
  10. vector <Student> studenci;
  11. vector <Pracownik> pracownicy;
  12. // Funkcje rodzaju "menu"
  13.  
  14. void main_menu() {
  15. int menu;
  16. szlaczek2();
  17. cout << "Witaj w programie do zarzadzania studentami i pracownikami.\n";
  18. szlaczek2();
  19. cout << "Wybierz jaka baza chcesz zarzadzac.\n"
  20. << " [1] Baza studentow.\n"
  21. << " [2] Baza pracownikow.\n"
  22. << " [3] Opcje.\n"
  23. << " [4] Zakoncz.\n";
  24. szlaczek1();
  25. pobierz(1, 4, &menu);
  26. switch (menu) {
  27. case 1:
  28. system("CLS");
  29. student_menu();
  30. break;
  31. case 2:
  32. system("CLS");
  33. pracownik_menu();
  34. break;
  35. case 3:
  36. system("CLS");
  37. opcje_menu();
  38. break;
  39. case 4:
  40. system("CLS");
  41. szlaczek1();
  42. cout << "Wybrales: wyjscie.\n";
  43. szlaczek1();
  44. exit(0);
  45. break;
  46. default:
  47. szlaczek1();
  48. cout << "Nie ma takiej opcji!" << "\n";
  49. szlaczek1();
  50. cout << endl;
  51. main_menu();
  52. break;
  53. }
  54. }// Menu główne programu
  55.  
  56. void pracownik_menu() {
  57. int menu;
  58. szlaczek2();
  59. cout << "BAZA PRACOWNIKOW\n";
  60. szlaczek2();
  61. cout << "Menu:\n"
  62. << " [1] Wyswietl baze\n"
  63. << " [2] Dodaj pracownika\n"
  64. << " [3] Usun pracownik\n"
  65. << " [4] Wroc\n"
  66. << " [5] Zakoncz\n";
  67. szlaczek1();
  68. pobierz(1, 5, &menu);
  69. szlaczek1();
  70. switch (menu) {
  71. case 1:
  72. system("CLS");
  73. if (!pracownicy.empty()) wyswietl_baze_pracownikow();
  74. else cout << "Brak rekordow w bazie!\n";
  75. pracownik_menu();
  76. break;
  77. case 2:
  78. dodaj_pracownika();
  79. pracownik_menu();
  80. break;
  81. case 3:
  82. system("CLS");
  83. if (!pracownicy.empty()) usun_pracownika();
  84. else cout << "Brak rekordow w bazie!\n";
  85. pracownik_menu();
  86. break;
  87. case 4:
  88. system("CLS");
  89. main_menu();
  90. case 5:
  91. exit(0);
  92. break;
  93. default:
  94. szlaczek1();
  95. cout << "Nie ma takiej opcji!" << "\n";
  96. szlaczek1();
  97. cout << endl;
  98. pracownik_menu();
  99. break;
  100. }
  101.  
  102. }// Menu bazy danych pracowników
  103.  
  104. void student_menu() {
  105. int menu;
  106. szlaczek2();
  107. cout << "BAZA STUDENTOW\n";
  108. szlaczek2();
  109. cout << "Menu:\n"
  110. << " [1] Wyswietl baze studentow\n"
  111. << " [2] Dodaj studenta\n"
  112. << " [3] Usun studenta\n"
  113. << " [4] Wroc\n"
  114. << " [5] Zakoncz\n";
  115. szlaczek1();
  116. pobierz(1, 5, &menu);
  117. szlaczek1();
  118. switch (menu) {
  119. case 1:
  120. if (!studenci.empty()) wyswietl_baze_studentow();
  121. else {
  122. system("CLS");
  123. cout << "Brak rekordow w bazie!\n";
  124. }
  125. student_menu();
  126. break;
  127. case 2:
  128. dodaj_studenta();
  129. student_menu();
  130. break;
  131. case 3:
  132. system("CLS");
  133. if (!studenci.empty()) usun_studenta();
  134. else cout << "Brak rekordow w bazie!\n";
  135. student_menu();
  136. break;
  137. case 4:
  138. system("CLS");
  139. main_menu();
  140. case 5:
  141. exit(0);
  142. break;
  143. default:
  144. szlaczek1();
  145. cout << "Nie ma takiej opcji!" << "\n";
  146. szlaczek1();
  147. cout << endl;
  148. student_menu();
  149. break;
  150. }
  151. }// Menu bazy danych studentów
  152.  
  153. void opcje_menu() {
  154. int opcja;
  155. szlaczek2();
  156. cout << "OPCJE\n";
  157. szlaczek2();
  158. cout << "Metody wirtualne: ";
  159. if (wirtualne) cout << "wlaczone.\n";
  160. else cout << "wylaczone.\n";
  161.  
  162. cout << " [1] Wlacz.\n"
  163. << " [2] Wylacz.\n"
  164. << " [3] Wroc.\n";
  165. pobierz(1, 3, &opcja);
  166. switch (opcja) {
  167. case 1:
  168. system("CLS");
  169. wirtualne = true;
  170. opcje_menu();
  171. break;
  172. case 2:
  173. system("CLS");
  174. wirtualne = false;
  175. opcje_menu();
  176. break;
  177. case 3:
  178. system("CLS");
  179. main_menu();
  180. default:
  181. break;
  182. }
  183. }
  184.  
  185. void pokaz(Osoba *osoba) {
  186. if (wirtualne == true) osoba->wyswietl();
  187. else if (wirtualne == false) osoba->wyswietl_nvirt();
  188. }
  189.  
  190. // Funkcje student_menu
  191.  
  192. void wyswietl_baze_studentow() {
  193. cout << "------------";
  194. szlaczek1();
  195. cout << endl;
  196. cout << right << setw(5) << "Nr.:" << setw(12) << "Imie:" << setw(15) << "Nazwisko:"
  197. << setw(14) << "Nr. ind.:" << setw(10) << "Kier.:" << setw(10) << "Sem.:" << setw(14) << "Srednia:" "\n";
  198. for (unsigned i = 0; i < studenci.size(); i++) {
  199. cout << setw(5) << right << i + 1;
  200. pokaz(&studenci[i]);
  201. }
  202. cout << endl;
  203. cout << "------------";
  204. szlaczek1();
  205. }
  206.  
  207. void dodaj_studenta() {
  208. string imie;
  209. string nazwisko;
  210. float srednia;
  211. string kierunek;
  212. int nr_semestru;
  213. int nr_indeksu;
  214. if (studenci.size() < 10) {
  215. // Pobieranie danych
  216. cout << "Imie: ";
  217. cin >> imie;
  218. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  219.  
  220. cout << "Nazwisko: ";
  221. cin >> nazwisko;
  222. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  223.  
  224. cout << "Srednia (2.0 - 5.0): ";
  225. pobierz(2.0, 5.0, &srednia);
  226. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  227.  
  228. cout << "Kierunek: ";
  229. cin >> kierunek;
  230.  
  231. cout << "Numer semestru (1 - 12): ";
  232. pobierz(1, 12, &nr_semestru);
  233. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  234.  
  235. cout << "Numer indeksu (100000 - 999999): ";
  236. pobierz(100000, 999999, &nr_indeksu);
  237. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  238. // Tworzenie nowego obiektu poprzez konstruktor z parametrami
  239. Student *tymczasowy_stud = new Student(imie, nazwisko, srednia, kierunek, nr_semestru, nr_indeksu);
  240. // Odłożenie obiektu do kontenera
  241. studenci.push_back(*tymczasowy_stud);
  242. // Kasowanie obiektu
  243. delete tymczasowy_stud;
  244. cout << "\nDodano rekord.\n";
  245. } else cout << "Baza danych przepelniona! Nie mozna dodac kolejnego rekordu!\n";
  246. }
  247.  
  248. void usun_studenta() {
  249. int ktory;
  250. wyswietl_baze_studentow();
  251. cout << "Usun studenta o numerze: ";
  252. pobierz(1, studenci.size(), &ktory);
  253. studenci.erase(studenci.begin() + ktory - 1);
  254. }
  255.  
  256. //Funkcje pracownik_menu
  257.  
  258. void wyswietl_baze_pracownikow() {
  259. szlaczek1();
  260. cout << endl;
  261. cout << right << setw(5) << "Nr.:" << setw(12) << "Imie:" << setw(15) << "Nazwisko:"
  262. << setw(14) << "Pensja:" << "\n";
  263. for (unsigned i = 0; i < pracownicy.size(); i++) {
  264. cout << setw(5) << right << i + 1;
  265. pokaz(&pracownicy[i]);
  266. }
  267. cout << endl;
  268. szlaczek1();
  269. }
  270.  
  271. void dodaj_pracownika() {
  272. string imie;
  273. string nazwisko;
  274. float pensja;
  275. if (studenci.size() < 10) {
  276. // Pobieranie danych
  277. cout << "Imie: ";
  278. cin >> imie;
  279. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  280.  
  281. cout << "Nazwisko: ";
  282. cin >> nazwisko;
  283. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  284.  
  285. cout << "Pensja: ";
  286. pobierz(0.0, 9999999.0, &pensja);
  287. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  288. // Tworzenie nowego obiektu poprzez konstruktor z parametrami
  289. Pracownik *tymczasowy_prac = new Pracownik(imie, nazwisko, pensja);
  290. // Odłożenie obiektu do kontenera
  291. pracownicy.push_back(*tymczasowy_prac);
  292. // Kasowanie obiektu
  293. delete tymczasowy_prac;
  294. cout << "\nDodano rekord.\n";
  295. } else cout << "Baza danych przepelniona! Nie mozna dodac kolejnego rekordu!\n";
  296. }
  297.  
  298. void usun_pracownika() {
  299. int ktory;
  300. wyswietl_baze_pracownikow();
  301. cout << "Usun pracownika o numerze: ";
  302. pobierz(1, pracownicy.size(), &ktory);
  303. pracownicy.erase(pracownicy.begin() + ktory - 1);
  304. }
  305.  
  306.  
  307. // Funkcje pobierania danych
  308.  
  309. void pobierz(int dol, int gora, int *m) {
  310. while ((!(cin >> *m) || *m < dol || *m > gora)) {
  311. cout << "Blad. Sprobuj jeszcze raz: ";
  312. cin.clear();
  313. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  314. }
  315. }// Funkcja do pobierania danych typu integer
  316.  
  317. void pobierz(float dol, float gora, float *m) {
  318. while ((!(cin >> *m) || *m < dol || *m > gora)) {
  319. cout << "Blad. Sprobuj jeszcze raz: ";
  320. cin.clear();
  321. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  322. }
  323. }// Funcka do pobieranai danych typu float
  324.  
  325. void pobierz(char dol, char gora, char *m) {
  326. while ((!(cin >> *m) || *m < dol || *m > gora)) {
  327. cout << "Blad. Sprobuj jeszcze raz: ";
  328. cin.clear();
  329. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  330. }
  331. }// Funkcja do pobierania danych typu char
  332. // Funkcje pełniące role separatorów i ozdobników
  333.  
  334. void szlaczek1() {
  335. cout << "-------------------------------------------------------------------" << endl;
  336. }
  337.  
  338. void szlaczek2() {
  339. cout << "===================================================================" << endl;
  340. }
  341.  
  342. void szlaczek3() {
  343. cout << "###################################################################" << endl;
  344. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement