Учёт средств предпрятия
Данные о программе. Список использованных команд и их описание. Логическая структура. Процедуры создания таблицы, поиска, удаления данных и вывода в таблицу. Текст программы. Системные требования. Приимущества и недостатки программы. Данные к работе.
| Рубрика | Программирование, компьютеры и кибернетика | 
| Вид | контрольная работа | 
| Язык | русский | 
| Дата добавления | 24.10.2008 | 
| Размер файла | 135,5 K | 
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
24
Министерство образования и науки Украини
Институт Экономики и новых технологий
Криворожский технологический факультет
Контрольное семестровое задание
По дисциплиние: Алгоритмические языки программирования
Вывполнил студент группы ГКС 30/2 Мартыненко А.
Руководитель: Вдовиченко И. Н.
Оценка:
Зачётная книга №:
Кривой Рог
2004г
Содержание:
1. Общие данные «о программе»
2. Список использованных команд и их описание
3. Логическая структура
a. Процедура создание таблицы
b. Процедура поиска
c. Процедура удаления данных
d. Процедура вывода данных в таблицу
4. Текст программы
5. Немного о системных требованиях
6. Приимущества и недостатки программы
1. Общие данные «о программе»
Данная программа представляет собой консольное приложение разработанное в среде Borland Pascal v 7.0. Главное окно программы (не титульный лист) представляет собой таблицу данных учёта средств предпрятия. В верхней строке программы имеется меню, при запросе командной строки «выбор действия» клавишами выбирается нужная опция.
Главный файл программы - файл с данными - Schet,
Меню поиск («s») - выдаёт запрос на ввод искомой записи.
При удачном поиске всплывает консоль с данными и запросом на удаление и перезапись:
При удалении записи (Меню - «d»), элемент удаляется, но ячейка таблицы остаётся:
If q='d' then
Assign(f,fn);
Reset(f);
seek(f,r);
l.s:='';
l.nam:='';
l.k:=0;
l.c:=0;
Write(f,l);
Close(f);
end;
Где Assign(f,fn) - присоединение файла;
Reset(f) - открытие его для чтения;
seek(f,r) - указывает номер строки в файле
l.s, l.nam, l.k, l.c - элементы массива записи;
Write(f,l) - запись в файл;
Close(f) - сохранение данных;
В конце программа возвращает главную программу.
В случае если модуль crt не подключен, то программа выдаст ошибку о незнакомом операторе: Textcolor, Sound, Delay, Nosound, Clrscr.
В случае если метка не описана в разделе Label, то программа выдаст ошибку о незнакомом операторе: 1,2,3,…
В случае если файл данных утерян, то программа выдаст ошибку о невозможности открытия и чтения файла данных.
Список использованных команд и их описание
Program - имя и начало главной прграммы;
Uses crt - Подключяемый модуль для работы с цветами экрана, очистки экрана и звука;
Label - Метка в программе, использовал для перерисовки таблицы;
Const - Раздел описания констант;
Type - Описание типа данных, в данном случае использовалась для описания записей;
Var - Раздел описания переменных любого типа;
Begin - Начало программы или подпрограммы;
Sound - Поцедура воспроизведения системного звука;
Delay - Пауза;
Nosound - Поцедура прекращения системного звука;
Clrscr - Очистка консоли;
Textcolor - Изменение цвета экранного шрифта;
Gotoxy - Перемещение курсора по экрану;
Writeln - Вывод информации на экран;
For i:=1 to n do - Циклическая структура;
End - Конец программы или подпрограммы;
Readln - Прцедура чтения данных с консоли;
If and then else - Логический оператор;
Assign - Присоединение файла в программу или подпрограмму;
Reset - Открытие файла для чтения;
while not do - Циклическая структура;
read - В случае с файлом - вывод файла в оперативню память;
Close - Закрытие файла с сохранением данных;
Goto - Переход выполнения программы к указанной метке;
Write - В случае с файлом - запись данных в файл;
Описание переменных программы:
Label 1,2 {использование всего 2 меток}
Const n=30
Type {описания переменных}
tab=record {Описание записи}
k,c:longint; {k-количество; c-цена}
s,nam:string; {s- счёт-субсчёт; nam - наименование товара}
end; {конец описания записи}
dbs=file of tab; {Нетипизированый файл таблицы}
Var{ описания переменных}
f:dbs; {f - файл}
l:tab; {l - запись}
q:char; {q - читает нажатую клавишу}
t,fn:string; {t - слово поиска; fn - местонахождение файла}
h,k,r:integer; {h,k - сячётчики при смене имени файла; r - считает строки для seek}
s:longint; {s - произведение K на C}
x,x1,x2,x3,x4,y1,y2,y3,y4:integer; {координаты перерисовки таблицы}
i:byte; {счётчик}
3. Логическая структура
Процедура создание таблицы
нет
да
Процедура поиска
нет
да
4. Текст программы
Program Martinenko_GKS_03_01;
Uses crt;
Label a,b;
Type
zap=record
d,k,e,r:longint;
lic:string;
end;
myfile=file of zap;
Var
f:myfile;
tab:zap;
t:string;
p:char;
nb,n,g:integer;
sd,sk,z1,z2,z3,z4,z5,z6:longint;
x,y1,y2,y3,y4,y5,i:integer;
Begin
z1:=0;z2:=0;z3:=0;
z4:=0;z5:=0;z6:=0;
clrscr;
textcolor(9);
Gotoxy(27,1);
Writeln('Криворожский филиал');
Gotoxy(33,2);
Writeln(Института экономики и новых технологий');
Gotoxy(25,3);
Writeln('Кафедра технической кибернетики');
Gotoxy(27,4);
Writeln('Контрольное семестровое задание');
Gotoxy(27,7);
Writeln('По дисциплине:');
Gotoxy(36,8);
Writeln('Алгоритм ические языки программироания');
Gotoxy(45,17);
Writeln('Выполнил студент группы ГКС 03-02);
Gotoxy(45,18);
Writeln('Мартыненко Александр');
Gotoxy(45,19);
Write('Проверила : ');Write('Вдовиченко И. Н.');
Gotoxy(45,20);
Writeln('Оценка:');
Gotoxy(36,24);
Writeln('Кривой Рог');
Gotoxy(37,25);
Writeln('2004 год');
For i:=1 to 2 do begin
Delay(9999);
end;
textcolor(8);
b:clrscr;
Gotoxy(25,8);
Writeln('1. Перезаписать - "r"');
Gotoxy(25,9);
Writeln('2. Просмотр данных - "d"');
Gotoxy(25,10);
Writeln('3. Поиск - "s"');
Gotoxy(25,11);
Writeln('5. Выход - "q"');
Gotoxy(1,25);
Write('Выберите действие:',' ',' ');
Readln(p);
If p='r' then
begin
Writeln('Введите количество записей:');
Readln(g);
clrscr;
n:=1;
Begin
assign(f,'a:\schet');
Rewrite(f);
For i:=1 to g do begin
Writeln('Введите лицевой счёт',n:8);
Readln(tab.lic);
Writeln('Приход: ');
Readln(tab.d);
Writeln('Расход: ');
Readln(tab.k);
Writeln('Взяли: ');
Readln(tab.e);
Writeln('Отдали: ');
Readln(tab.r);
Write(f,tab);
n:=n+1;
end;
Close(f);
end;
Gotoxy(1,25);
Writeln('возврат - "q"');
Readln(p);
If p='q' then
textcolor(8);
goto b;
end;
If p='s' then Begin
clrscr;
Writeln('Введите слово');
Readln(t);
nb:=-1;
Assign(f,'A:\schet');
Reset(f);
For i:=1 to 30 do
while not eof(f) do
begin
read(f,tab);
nb:=nb+1;
If t=tab.lic then begin
sd:=tab.d+tab.e;
sk:=tab.k+tab.r;
clrscr;
textcolor(12);
x:=1;
For i:=1 to 79 do begin
Gotoxy(x,1);
Writeln(#205);
Gotoxy(x,3);
Writeln(#205);
x:=x+1;
end;
Gotoxy(1,2);Write(#186);Gotoxy(1,1);Write(#201);Gotoxy(1,3);Write(#200);
Gotoxy(15,2);Write(#186);Gotoxy(15,1);Write(#203);Gotoxy(15,3);Write(#202);
Gotoxy(25,2);Write(#186);Gotoxy(25,1);Write(#203);Gotoxy(25,3);Write(#202);
Gotoxy(35,2);Write(#186);Gotoxy(35,1);Write(#203);Gotoxy(35,3);Write(#202);
Gotoxy(45,2);Write(#186);Gotoxy(45,1);Write(#203);Gotoxy(45,3);Write(#202);
Gotoxy(55,2);Write(#186);Gotoxy(55,1);Write(#203);Gotoxy(55,3);Write(#202);
Gotoxy(65,2);Write(#186);Gotoxy(65,1);Write(#203);Gotoxy(65,3);Write(#202);
Gotoxy(79,2);Write(#186);Gotoxy(79,1);Write(#187);Gotoxy(79,3);Write(#188);
textcolor(8);
Gotoxy(6,2);Write(tab.lic);Gotoxy(19,2);Write(tab.d);Gotoxy(29,2);Write(tab.k);
Gotoxy(39,2);Write(tab.e);Gotoxy(49,2);Write(tab.r);Gotoxy(59,2);Write(sd);
Gotoxy(69,2);Write(sk);
Gotoxy(1,4);
Write('Удаление - "c" Возврат - "q"',' ');
Readln(p);
If p='q' then goto b;
If p='c' then begin
seek(f,nb);
tab.lic:='';
tab.d:=0;
tab.k:=0;
tab.e:=0;
tab.r:=0;
Write(f,tab);
goto b;
end;
end;
end;
end;
sd:=0; sk:=0;
If p='q' then exit;
If p='d' then
nb:=0;
a:Textcolor(12);
clrscr;
x:=1;
For i:=1 to 79 do begin
Gotoxy(x,2);
Writeln(#205);
Gotoxy(x,6);
Writeln(#205);
x:=x+1;
end;
Begin
Gotoxy(1,2);Writeln(#201);Gotoxy(1,3);Writeln(#186);Gotoxy(1,4);Writeln(#186);Gotoxy(1,5);Writeln(#186);
Gotoxy(1,6);Writeln(#200);
Gotoxy(79,2);Writeln(#187);Gotoxy(79,3);Writeln(#186);Gotoxy(79,4);Writeln(#186);Gotoxy(79,5);Writeln(#186);
Gotoxy(79,6);Writeln(#188);
Gotoxy(15,2);Writeln(#203);Gotoxy(15,3);Writeln(#186);Gotoxy(15,4);Writeln(#186);Gotoxy(15,5);Writeln(#186);
Gotoxy(15,6);Writeln(#202);
Gotoxy(25,4);Writeln(#186);Gotoxy(25,5);Writeln(#186);
Gotoxy(25,6);Writeln(#202);
Gotoxy(35,2);Writeln(#203);Gotoxy(35,3);Writeln(#186);Gotoxy(35,4);Writeln(#186);Gotoxy(35,5);Writeln(#186);
Gotoxy(35,6);Writeln(#202);
Gotoxy(45,4);Writeln(#186);Gotoxy(45,5);Writeln(#186);
Gotoxy(45,6);Writeln(#202);
Gotoxy(55,2);Writeln(#203);Gotoxy(55,3);Writeln(#186);Gotoxy(55,4);Writeln(#186);Gotoxy(55,5);Writeln(#186);
Gotoxy(55,6);Writeln(#202);
Gotoxy(65,4);Writeln(#186);Gotoxy(65,5);Writeln(#186);
Gotoxy(65,6);Writeln(#202);
textcolor(10);
Gotoxy(2,3);Write('Лицевой счёт');
Gotoxy(17,5);Write('Начало месяца');
Gotoxy(27,5);Write('Приход');
Gotoxy(37,5);Write('Расход');
Gotoxy(47,5);Write('Обороты месяца');
Gotoxy(57,5);Write('Взяли');
Gotoxy(68,5);Write('Отдали');
Gotoxy(17,3);Write('Ќонец месяца ');
Gotoxy(37,3);Write('Дебит ');
Gotoxy(57,3);Write('Кредит ');
textcolor(12);
x:=15;
For i:=16 to 79 do begin
Gotoxy(x,4);Writeln(#205);
x:=x+1;
Gotoxy(15,4);Writeln(#204);
Gotoxy(35,4);Writeln(#206);
Gotoxy(55,4);Writeln(#206);
Gotoxy(25,4);Writeln(#203);
Gotoxy(45,4);Writeln(#203);
Gotoxy(65,4);Writeln(#203);
end;
end;
x:=1;y1:=8;
For i:=1 to 9 do begin
For x:=1 to 79 do begin
Gotoxy(x,y1);
write(#205);
end;
y1:=y1+2;
end;
x:=1;y1:=8;y2:=5;y3:=6;y4:=7;y5:=10;
For i:=1 to 9 do begin
Gotoxy(x,y1);Writeln(#204);
Gotoxy(x,y2);Writeln(#186);
Gotoxy(x,y3);Writeln(#204);
Gotoxy(x,y4);Writeln(#186);
Gotoxy(x,y5);Writeln(#200);
y1:=y1+2;y2:=y2+2;y3:=y3+2;y4:=y4+2;y5:=y5+2;
end;
x:=15;y1:=6;y2:=5;y3:=6;y4:=7;
For i:=1 to 9 do begin
Gotoxy(x,y1);Writeln(#206);
Gotoxy(x,y2);Writeln(#186);
Gotoxy(x,y3);Writeln(#206);
Gotoxy(x,y4);Writeln(#186);
Gotoxy(x,24);Writeln(#202);
y1:=y1+2;y2:=y2+2;y3:=y3+2;y4:=y4+2;
end;
x:=25;y1:=6;y2:=5;y3:=6;y4:=7;
For i:=1 to 9 do begin
Gotoxy(x,y1);Writeln(#206);
Gotoxy(x,y2);Writeln(#186);
Gotoxy(x,y3);Writeln(#206);
Gotoxy(x,y4);Writeln(#186);
Gotoxy(x,24);Writeln(#202);
y1:=y1+2;y2:=y2+2;y3:=y3+2;y4:=y4+2;
end;
x:=35;y1:=6;y2:=5;y3:=6;y4:=7;
For i:=1 to 9 do begin
Gotoxy(x,y1);Writeln(#206);
Gotoxy(x,y2);Writeln(#186);
Gotoxy(x,y3);Writeln(#206);
Gotoxy(x,y4);Writeln(#186);
Gotoxy(x,24);Writeln(#202);
y1:=y1+2;y2:=y2+2;y3:=y3+2;y4:=y4+2;
end;
x:=45;y1:=6;y2:=5;y3:=6;y4:=7;
For i:=1 to 9 do begin
Gotoxy(x,y1);Writeln(#206);
Gotoxy(x,y2);Writeln(#186);
Gotoxy(x,y3);Writeln(#206);
Gotoxy(x,y4);Writeln(#186);
Gotoxy(x,24);Writeln(#202);
y1:=y1+2;y2:=y2+2;y3:=y3+2;y4:=y4+2;
end;
x:=55;y1:=6;y2:=5;y3:=6;y4:=7;
For i:=1 to 9 do begin
Gotoxy(x,y1);Writeln(#206);
Gotoxy(x,y2);Writeln(#186);
Gotoxy(x,y3);Writeln(#206);
Gotoxy(x,y4);Writeln(#186);
Gotoxy(x,24);Writeln(#202);
y1:=y1+2;y2:=y2+2;y3:=y3+2;y4:=y4+2;
end;
x:=65;y1:=6;y2:=5;y3:=6;y4:=7;
For i:=1 to 9 do begin
Gotoxy(x,y1);Writeln(#206);
Gotoxy(x,y2);Writeln(#186);
Gotoxy(x,y3);Writeln(#206);
Gotoxy(x,y4);Writeln(#186);
Gotoxy(x,24);Writeln(#202);
y1:=y1+2;y2:=y2+2;y3:=y3+2;y4:=y4+2;
end;
x:=79;y1:=8;y2:=5;y3:=6;y4:=7;y5:=10;
For i:=1 to 9 do begin
Gotoxy(x,y1);Writeln(#185);
Gotoxy(x,y2);Writeln(#186);
Gotoxy(x,y3);Writeln(#185);
Gotoxy(x,y4);Writeln(#186);
Gotoxy(x,24);Writeln(#188);
y1:=y1+2;y2:=y2+2;y3:=y3+2;y4:=y4+2;y5:=y5+2;
end;
textcolor(8);
y1:=7;y2:=7;
Assign(f,'A:\schet');
Reset(f);
seek(f,nb);
For i:=1 to 38 do begin
while not eof(f) do
begin
read(f,tab);
If tab.lic<>'' then begin
sd:=tab.d+tab.e;
sk:=tab.k+tab.r;
z1:=z1+tab.d;z2:=z2+tab.k;z3:=z3+tab.e;
z4:=z4+tab.r;z5:=z5+sd;z6:=z6+sk;
Gotoxy(7,y1);Writeln(tab.lic);
Gotoxy(17,y1);Writeln(tab.d);
Gotoxy(27,y1);Writeln(tab.k);
Gotoxy(37,y1);Writeln(tab.e);
Gotoxy(47,y2);Writeln(tab.r);
Gotoxy(57,y1);Writeln(sd);
Gotoxy(67,y1);Writeln(sk);
y1:=y1+2;y2:=y2+2;
If tab.lic='458' then begin
readln; clrscr; nb:=9; Goto a; end;
If tab.lic='467' then begin
readln; clrscr; nb:=18; Goto a; end;
If tab.lic='476' then begin
readln; clrscr; nb:=27; Goto a; end;
end;
end;
end;
textcolor(12);
Gotoxy(1,25);Write(#186);Gotoxy(1,24);Write(#204);
Gotoxy(15,25);Write(#186);Gotoxy(15,24);Write(#206);
Gotoxy(25,25);Write(#186);Gotoxy(25,24);Write(#206);
Gotoxy(35,25);Write(#186);Gotoxy(35,24);Write(#206);
Gotoxy(45,25);Write(#186);Gotoxy(45,24);Write(#206);
Gotoxy(55,25);Write(#186);Gotoxy(55,24);Write(#206);
Gotoxy(65,25);Write(#186);Gotoxy(65,24);Write(#206);
Gotoxy(79,25);Write(#186);Gotoxy(79,24);Write(#185);
textcolor(1);
Gotoxy(6,25);Write('€'ЋѓЋ:');Gotoxy(16,25);Write(z1:6);Gotoxy(26,25);Write(z2:6);
Gotoxy(36,25);Write(z3:6);Gotoxy(46,25);Write(z4:6);Gotoxy(56,25);Write(z5:6);
Gotoxy(66,25);Write(z6:6);
textcolor(8);
Readln;
Goto b;
end.
5. Немного о системных требованиях
Сама программа был произведена на следующих системных ресурсах:
ь Intel Celeron 2.4 D Mhz
ь 512 Mb DDR
ь Radeon 9200 Ati 128 Mb
ь Creative Live sound Blaster
ь Motherboard Asus
6. Приимущества и недостатки программы
Приимущества:
Программа работает во всех версиях операционной системы Windows и операционной системы MS- DOS. Поддерживается самым устаревшим железом. Проста на интерфейс и очень проста в использовании. Программа быстро ьпозволяет совершить процессы удаления, перезаписи и поиска нужной информации (естественно, что только по своей базе данных).
Малоёмкая и в то - же время объёмная.
Недостатки
Перезаписать файлы можно, но при перезаписи необходимо выполнить следующее:
Поиск - “S”
При запросе на искомое слово нажать Enter.
В принципе программа неплохая для работы в консольных операционных системах, поэтому может использоваться по узкой спецификации.
| Лицевой счёт | Сальдо на начало месяца | Обороты за месяц | |||
| Дебит | Кредит | Дебит | Кредит | ||
| 450 | 564 | 56 | 254 | 85 | |
| 451 | 652 | 452 | 126 | 56 | |
| 452 | 231 | 123 | 200 | 200 | |
| 453 | 425 | 25 | 365 | 311 | |
| 454 | 562 | 354 | 215 | 123 | |
| 455 | 325 | 254 | 100 | 345 | |
| 456 | 245 | 144 | 0 | 56 | |
| 457 | 653 | 500 | 0 | 125 | |
| 458 | 253 | 121 | 0 | 200 | |
| 459 | 632 | 245 | 36 | 56 | |
| 460 | 444 | 429 | 485 | 434 | |
| 461 | 121 | 200 | 120 | 0 | |
| 462 | 256 | 210 | 64 | 54 | |
| 463 | 64 | 100 | 25 | 0 | |
| 464 | 58 | 256 | 600 | 69 | |
| 465 | 32 | 30 | 0 | 0 | |
| 466 | 156 | 211 | 100 | 74 | |
| 467 | 254 | 100 | 200 | 100 | |
| 468 | 483 | 324 | 356 | 254 | |
| 469 | 125 | 0 | 25 | 20 | |
| 470 | 245 | 120 | 145 | 0 | |
| 471 | 326 | 0 | 236 | 250 | |
| 472 | 245 | 230 | 99 | 181 | |
| 473 | 111 | 11 | 58 | 21 | |
| 474 | 99 | 50 | 100 | 0 | |
| 475 | 650 | 325 | 579 | 300 | |
| 476 | 356 | 300 | 400 | 10 | |
| 477 | 410 | 0 | 36 | 10 | |
| 478 | 200 | 125 | 0 | 123 | |
| 479 | 98 | 100 | 250 | 0 | |
| 480 | 52 | 10 | 6 | 10 | |
| 481 | 456 | 536 | 322 | 156 | |
| 482 | 348 | 299 | 152 | 248 | |
| 483 | 246 | 139 | 240 | 25 | |
| 484 | 125 | 36 | 25 | 60 | |
| 485 | 387 | 79 | 287 | 84 | |
| 486 | 399 | 257 | 269 | 239 | |
| 487 | 564 | 50 | 459 | 25 | 
Подобные документы
- Сведения о языке Delphi. Основы разработки баз данных. Разработка конвертера таблицы Excel, интерфейса главной формы, модуля отображения, системы поиска информации, средств редактирования. Системные требования программы. Инструкция по эксплуатации. 
 курсовая работа [2,6 M], добавлен 29.12.2008
- Входные данные программы в файле "School.txt". Метод решения задачи и функциональная структура программы. Main – главная функция, формирование таблицы данных из файла. Блок-схема функции вывода фамилии победителей, занявших первые три призовых места. 
 курсовая работа [68,4 K], добавлен 17.06.2012
- Написание модуля на языке Ассемблер для вычисления значения выражения. Составление программы корректного ввода исходных данных в таблицу и вывода результата в виде таблицы. Создание модуля для обработки строк и программы корректного ввода исходных данных. 
 курсовая работа [36,8 K], добавлен 18.09.2010
- Характеристика программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит результаты на экран. Описание переменных в программе, ее блок-схема и алгоритм работы. Листинг программы. Описание входных данных и результат вычислений. 
 курсовая работа [721,4 K], добавлен 10.11.2010
- Программа перенесения данных из таблицы Word в таблицу базы данных. Алгоритм решения задачи в виде текстового описания. Описание базы данных (структура таблиц, схема). Копии с экрана форм для работы с базой данных при разработке их в конструкторе. 
 контрольная работа [914,3 K], добавлен 26.03.2011
- Разработка, составление и отладка программного модуля "База знаний" средствами программы Quick Sales. Описание схемы базы: возможности редактирования, удаления и добавления данных. Текст программы и контрольный пример поиска через панель управления. 
 курсовая работа [519,0 K], добавлен 26.01.2013
- Выбор программных и аппаратных средств для создания базы данных. Описание структуры программы. Описание разработки приложения. Подключение к базе данных, выполняемое с помощью компонента ADOConnectio. Создание средств защиты информации в программе. 
 курсовая работа [2,1 M], добавлен 16.02.2015
- Панель элементов: "данные", "компоненты". Описание структуры базы данных. Блок-схема реализации программы, техническое описание. Вид окна "ввод пароля". Список элементов пользовательского интерфейса. Исходный код программы. Инструкция пользователя. 
 курсовая работа [983,0 K], добавлен 29.09.2016
- Требования к функциональным характеристикам, составу и параметрам технических средств, информационной и программной совместимости. Описание программы: общие сведения, логическая структура. Средства и порядок испытаний. Входные и выходные данные. 
 курсовая работа [6,3 M], добавлен 12.01.2015
- Использование массива данных о сотрудниках небольшой фирмы для создания программы. Введение информации, ее хранение в файле workers.dat. Процедуры и функции программы, дополнительные файлы, описание предметной области и алгоритма задачи, листинг. 
 курсовая работа [22,0 K], добавлен 29.11.2009
