Advertisement
kanciastopantalones

Untitled

Jan 19th, 2013
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.45 KB | None | 0 0
  1. program terminarz;
  2. uses sysutils;
  3. type
  4. wskaznik=^element;
  5. element = record
  6. notatka:string[255];
  7. data:record
  8. dzien:1..31;
  9. miesiac:1..12;
  10. rok:2013..2050;
  11. end;
  12. czas:record
  13. godzina:0..23;
  14. minuta:0..59;
  15. end;
  16. nast:wskaznik;
  17. end;
  18.  
  19. type szkielet=record
  20. notatka:string[255];
  21. data:record
  22. dzien:1..31;
  23. miesiac:1..12;
  24. rok:2013..2050;
  25. end;
  26. czas:record
  27. godzina:0..23;
  28. minuta:0..59;
  29. end;
  30.  
  31. end;
  32.  
  33.  
  34. var
  35. lista:wskaznik;
  36. poczatek:wskaznik;
  37. pomwsk:wskaznik;
  38. pomwsk2:wskaznik;
  39. pom:integer;
  40. i,j:integer;
  41. wybor:integer;
  42. ilosc:integer;
  43. max:integer;
  44. a:integer;
  45.  
  46.  
  47.  
  48.  
  49. procedure zapis();
  50. var
  51. plik:file of szkielet;
  52. baza:szkielet;
  53. begin
  54. assign(plik, 'baza.db');
  55. rewrite(plik);
  56. lista:=poczatek;
  57. while lista^.nast <> nil do begin
  58. baza.notatka := lista^.notatka;
  59. baza.data.dzien := lista^.data.dzien;
  60. baza.data.miesiac := lista^.data.miesiac;
  61. baza.data.rok := lista^.data.rok;
  62. baza.czas.godzina := lista^.czas.godzina;
  63. baza.czas.minuta := lista^.czas.minuta;
  64. write(plik, baza);
  65. lista := lista^.nast;
  66. end;
  67. close(plik);
  68. end;
  69.  
  70. procedure odczyt();
  71. var
  72. plik:file of szkielet;
  73. baza:szkielet;
  74. begin
  75. if(FileExists('baza.db'))then begin
  76.  
  77. assign(plik, 'baza.db');
  78. reset(plik);
  79. while not EOF(plik) do begin
  80. read(plik, baza);
  81. lista^.notatka:=baza.notatka;
  82. lista^.data.dzien:=baza.data.dzien;
  83. lista^.data.miesiac:=baza.data.miesiac;
  84. lista^.data.rok:=baza.data.rok;
  85. lista^.czas.godzina:=baza.czas.godzina;
  86. lista^.czas.minuta:=baza.czas.minuta;
  87. new(lista^.nast);
  88. lista := lista^.nast;
  89. end;
  90. lista^.nast := nil;
  91. close(plik);
  92. end else zapis();
  93. end;
  94.  
  95.  
  96.  
  97.  
  98. procedure wypelnij();
  99. begin
  100. lista:=poczatek;
  101.  
  102.  
  103. while lista^.nast <> nil do
  104. begin
  105. lista:=lista^.nast;
  106. end;
  107.  
  108.  
  109.  
  110. write('Podaj notatke: ');
  111. readln(lista^.notatka);
  112. {$I-}
  113. repeat
  114. write('Podaj dzien (1-31): ');
  115. readln(pom);
  116. until ioresult=0;
  117. {$I+}
  118.  
  119. while (pom<1) or (pom>31) do
  120. begin
  121. Writeln('Podaj dzien z zakresu 1-31');
  122. readln(pom);
  123. end;
  124. lista^.data.dzien:=pom;
  125.  
  126. {$I-}
  127. repeat
  128. write('Podaj miesiac (1-12): ');
  129. readln(pom);
  130. until ioresult=0;
  131. {$I+}
  132.  
  133. while (pom<1) or (pom>12) do
  134. begin
  135. Writeln('Podaj miesiac z zakresu 1-12');
  136. readln(pom);
  137. end;
  138. lista^.data.miesiac:=pom;
  139.  
  140. {$I-}
  141. repeat
  142. write('Podaj rok (2013-2050): ');
  143. readln(pom);
  144. until ioresult=0;
  145. {$I+}
  146.  
  147. while (pom<2013) or (pom>2050) do
  148. begin
  149. Writeln('Podaj rok z zakresu 2013-2050');
  150. readln(pom);
  151. end;
  152. lista^.data.rok:=pom;
  153.  
  154. {$I-}
  155. repeat
  156. write('Podaj godzine: ');
  157. readln(pom);
  158. until ioresult=0;
  159. {$I+}
  160.  
  161. while (pom<0) or (pom>23) do
  162. begin
  163. Writeln('Podaj godzine z zakresu 0-23');
  164. readln(pom);
  165. end;
  166. lista^.czas.godzina:=pom;
  167.  
  168. {$I-}
  169. repeat
  170. write('Podaj minute: ');
  171. readln(pom);
  172. until ioresult=0;
  173. {$I+}
  174.  
  175. while (pom<0) or (pom>59) do
  176. begin
  177. Writeln('Podaj minute z zakresu 0-59');
  178. readln(pom);
  179. end;
  180. lista^.czas.minuta:=pom;
  181.  
  182. new(lista^.nast);
  183. lista:=lista^.nast;
  184. writeln();
  185.  
  186. lista^.nast:=nil;
  187. end;
  188.  
  189.  
  190. procedure licz();
  191. begin
  192. lista:=poczatek;
  193. ilosc:=0;
  194. while lista^.nast <> nil do
  195. begin
  196. ilosc:=ilosc+1;
  197. lista:=lista^.nast;
  198. end;
  199. writeln('ilosc to: ', ilosc);
  200. end;
  201.  
  202.  
  203.  
  204. procedure wypisz();
  205. begin
  206. lista:=poczatek;
  207. i:=1;
  208. licz();
  209. if ilosc=0 then writeln('Brak rekordow do wyswietlenia!');
  210. while lista^.nast <> nil do
  211. begin
  212.  
  213.  
  214. writeln('Termin nr. ', i);
  215. writeln(#9'Notatka: ', lista^.notatka);
  216. writeln(#9'Data: ', lista^.data.dzien,'.', lista^.data.miesiac,'.', lista^.data.rok);
  217. write(#9'Godzina: ', lista^.czas.godzina,':');
  218. if lista^.czas.godzina<10 then
  219. begin
  220. write('0');
  221. end;
  222. writeln(lista^.czas.minuta);
  223. writeln();
  224.  
  225. lista:=lista^.nast;
  226.  
  227. i:=i+1;
  228. end;
  229. writeln;
  230. end;
  231.  
  232. procedure usun();
  233. begin
  234. lista:=poczatek;
  235.  
  236. licz();
  237. if ilosc=0 then writeln('Brak rekord˘w do usuniecia!')
  238. else begin
  239. wypisz();
  240. lista:=poczatek;
  241. writeln('Wybierz numer terminu do usuniecia: ');
  242. readln(pom);
  243. while (pom<1) or (pom>ilosc) do
  244. begin
  245. writeln('Podaj poprawny numer terminu: ');
  246. readln(pom);
  247. end;
  248.  
  249. for i:=1 to pom-2 do
  250. begin
  251. lista:=lista^.nast;
  252. end;
  253.  
  254. lista^.nast:=lista^.nast^.nast;
  255. end;
  256. writeln;
  257. end;
  258.  
  259. procedure zamiana();
  260. begin
  261. pomwsk:=lista^.nast;
  262. lista^.nast:=lista^.nast^.nast;
  263. lista^.nast^.nast:=pomwsk;
  264. end;
  265.  
  266.  
  267. procedure sortuj();
  268. begin
  269. lista:=poczatek;
  270. pomwsk2:=lista^.nast;
  271. licz();
  272.  
  273.  
  274.  
  275.  
  276. for i:=1 to ilosc-1 do
  277. begin
  278. for j:=1 to ilosc-1 do
  279. begin
  280. if lista^.data.rok > lista^.nast^.data.rok then begin
  281. zamiana();
  282.  
  283. end
  284. else if lista^.data.rok = lista^.nast^.data.rok then
  285. begin
  286.  
  287. if lista^.data.miesiac > lista^.nast^.data.miesiac then begin
  288. zamiana();
  289. end
  290. else if lista^.data.miesiac = lista^.nast^.data.miesiac then
  291. begin
  292.  
  293. if lista^.data.dzien > lista^.nast^.data.dzien then begin
  294. zamiana();
  295. end;
  296. end;
  297. end;
  298. lista:=lista^.nast;
  299. end;
  300. lista:=poczatek;
  301. end;
  302.  
  303. end;
  304.  
  305.  
  306. procedure modyfikuj();
  307. begin
  308. lista:=poczatek;
  309.  
  310. licz();
  311. if ilosc=0 then writeln('Brak rekord˘w do modyfikacji!')
  312. else begin
  313.  
  314. wypisz();
  315. lista:=poczatek;
  316. writeln('Wybierz numer terminu do modyfikacji: ');
  317. readln(pom);
  318. while (pom<1) or (pom>ilosc) do
  319. begin
  320. writeln('Podaj poprawny numer terminu: ');
  321. readln(pom);
  322. end;
  323.  
  324. for i:=1 to pom-2 do
  325. begin
  326. lista:=lista^.nast;
  327. end;
  328.  
  329. writeln('Wybierz rekord do modyfikacji: 1-notatka 2-data 3-godzina');
  330. readln(pom);
  331.  
  332. case pom of
  333. 1: begin
  334. write('Podaj notatke: ');
  335. readln(lista^.notatka);
  336. end;
  337. 2: begin
  338. {$I-}
  339. repeat
  340. write('Podaj dzien (1-31): ');
  341. readln(pom);
  342. until ioresult=0;
  343. {$I+}
  344.  
  345. while (pom<1) or (pom>31) do
  346. begin
  347. Writeln('Podaj dzien z zakresu 1-31');
  348. readln(pom);
  349. end;
  350. lista^.data.dzien:=pom;
  351.  
  352. {$I-}
  353. repeat
  354. write('Podaj miesiac (1-12): ');
  355. readln(pom);
  356. until ioresult=0;
  357. {$I+}
  358.  
  359. while (pom<1) or (pom>12) do
  360. begin
  361. Writeln('Podaj miesiac z zakresu 1-12');
  362. readln(pom);
  363. end;
  364. lista^.data.miesiac:=pom;
  365.  
  366. {$I-}
  367. repeat
  368. write('Podaj rok (2013-2050): ');
  369. readln(pom);
  370. until ioresult=0;
  371. {$I+}
  372.  
  373. while (pom<2013) or (pom>2050) do
  374. begin
  375. Writeln('Podaj rok z zakresu 2013-2050');
  376. readln(pom);
  377. end;
  378. lista^.data.rok:=pom;
  379.  
  380. end;
  381.  
  382. 3: begin
  383. {$I-}
  384. repeat
  385. write('Podaj godzine: ');
  386. readln(pom);
  387. until ioresult=0;
  388. {$I+}
  389.  
  390. while (pom<0) or (pom>23) do
  391. begin
  392. Writeln('Podaj godzine z zakresu 0-23');
  393. readln(pom);
  394. end;
  395. lista^.czas.godzina:=pom;
  396.  
  397. {$I-}
  398. repeat
  399. write('Podaj minute: ');
  400. readln(pom);
  401. until ioresult=0;
  402. {$I+}
  403.  
  404. while (pom<0) or (pom>59) do
  405. begin
  406. Writeln('Podaj minute z zakresu 0-59');
  407. readln(pom);
  408. end;
  409. lista^.czas.minuta:=pom;
  410. end;
  411.  
  412. end;
  413.  
  414. end;
  415. writeln;
  416. end;
  417.  
  418.  
  419.  
  420.  
  421. begin
  422. new(poczatek);
  423. lista:=poczatek;
  424.  
  425. odczyt();
  426.  
  427. repeat
  428. writeln('Terminarz. Wybierz operacje: ');
  429. writeln('1-Dodaj termin.');
  430. writeln('2-Wyswietl terminarz.');
  431. writeln('3-Usun termin.');
  432. writeln('4-Modyfikuj termin.');
  433. writeln('5-Sortuj terminarz.');
  434. writeln('6-licz.');
  435. writeln('0-Koniec programu.');
  436.  
  437. readln(wybor);
  438. case wybor of
  439. 1: wypelnij();
  440. 2: wypisz();
  441. 3: usun();
  442. 4: modyfikuj();
  443. 5: sortuj();
  444. 6: licz();
  445.  
  446. end;
  447.  
  448.  
  449. zapis();
  450. until wybor=0;
  451. readln;
  452. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement