Міністерство внутрішніх справ України
 Харківський національний університет внутрішніх справ
 Навчально-науковий інститут менеджменту, соціальних та інформаційних технологій
 Кафедра інформаційних систем і технологій в діяльності ОВС
 Курсова робота
 з дисципліни «Основи програмування та алгоритмічні мови»
 на тему: «Автоматизоване нарахування заробітної плати»
 Виконав:
 Перевірив:
 Харків, 2009
  Зміст
 Вступ................................................................................................................ 3
 1. Основна частина.......................................................................................... 4
 1.1 Неформальна постановка задачі.............................................................. 4
 1.2 Формальна постановка задачі.................................................................. 4
 1.3 Структура зберігаючих даних.................................................................. 5
 2. Алгоритми................................................................................................... 6
 2.1 Алгоритм основної програми................................................................... 6
 3. Вихідний код програми.............................................................................. 7
 Висновок........................................................................................................ 14
 Список використаної літератури.................................................................. 15
  Вступ
 В кожній організації, кожен робітник получає за свій труд певну заробітну плату. Чим більше працюєш тим більше платня, але весь процес нарахування досить важкий. Дуже велика кількість факторів яких потрібно враховувати і якщо це робити вручну, то помилки не уникнути. Таким чином задачею курсової роботи і полягає у створенні програми автоматизованого нарахування зарплатні.
 Я вибрав мову програмування Turbo Pascal, з метою закріплення своїх навиків з програмування.
  1. Основна частина
  
 1.1 Неформальна постановка задачі
 Розробити програму - «Автоматизоване нарахування платні» для збереження та перегляду, а також аналізу введеної інформації.
 Введення і збереження інформації в файл:
 ПІБ працівника
 Дата народження
 Вислуга працівника;
 Можливість редагування даної бази
 Організація аналізу та автоматичного нарахування
 Можливість видалення всієї бази.
 Зручний інтерфейс для користувача
 Швидкість та простота роботи в даній програмі
 Практичне застосування
 1.2 Формальна постановка задачі
 Вихідні дані:
 Маємо множину Р={P1, P2, …, Pi} робітників. Кожен робітник має свої відомості які впливають на формування платні.
 V - вислуга
 M - мінімум
 S - стаж
 R - премія
 Результат:
 Множина Dij, яка формуються з вхідних даних а саме множини Pi
 Математична модель:
  
 Dij =M+(S+V)*2+R+300
  
 1.3 Структура збережених даних
 K – структурована перемінна для роботи з даними
 Im – поле для введення ПІБ робітника
 V – поле для введення віку
 Vl – поле для ведення вислуги років
 Loki –процедура для малювання рамочки
 Menu – створення головного меню програми
 Upravl – створює утпавляючий елемент для меню
 Fo – введення та збереження даних
 Nas – на рахунок заробітної плати
 Vit – видалення відомостей
  2. Алгоритми
  
 2.1 Алгоритм основної програми
   3. Вихідний код програми
 uses crt,dos;
 type k=record
 im:string[15];
 v,vl,zp:integer;
 end;
 var f:file of k; rab:k;
 procedure loki (x1,y1,x2,y2,a,b:byte);
 var i:integer;
 begin
 textbackground(a);
 textcolor(b);
 window (x1,y1,x2,y2);
 write('Й');
 for i:=1 to (x2-x1)-1 do
 begin
 write('Н');
 end;
 write('»');
 for i:=2 to (y2-y1)-1 do
 begin
 gotoxy(1,i);
 write('є');
 gotoxy(x2-x1+1,i);
 write('є');
 end;
 write('И');
 for i:=1 to (x2-x1)-1 do
 begin
 write('Н');
 end;
 write('ј');
 end;
 {------------------------}
 procedure newreadkey (var a:char;var b:byte);
 begin
 b:=0;
 a:=readkey;
 if a=#0 then
 b:=ord(readkey);
 end;
 {------------------}
 procedure menu(s1,s2,s3,s4:string;x,y:byte);
 begin
 window(1,1,40,25);
 textbackground(7);
 clrscr;
 window(10,5,30,16);
 textbackground(7);
 textcolor(2);
 clrscr;
 gotoxy(x,y);
 write(s1);
 gotoxy(x,y+3);
 write(s2);
 gotoxy(x,y+6);
 write(s3);
 gotoxy(x,y+9);
 write(s4);
 end;
 {------------------}
 procedure upravl(x1,y1,x2,y2,a,b,x,y:byte;s:string);
 begin
 window(x1,y1,x2,y2);
 textbackground(a);
 textcolor(b);
 clrscr;
 gotoxy(x,y);
 write(s);
 end;
 procedure fo;
 var i,n:integer;
 begin
 window(1,1,40,25);
 textbackground(3);
 clrscr;
 gotoxy(15,1); writeln('ZAPOLNENIE');
 window(5,1,35,25);
 textcolor(1);
 write('Vvedi kol-vo rabotnikov- ');readln(n);
 assign(f,'rab');
 rewrite(f);
 for i:=1 to n do
 begin
 seek(f,filesize(f));
 clrscr;
 writeln('rabo4ii#',i);
 write('Vvedi familiu rabo4ego- ');readln(rab.im);
 write('Vvedi vozrost rabo4ego- ');readln(rab.v);
 write('Vvei vislugu rabo4ego- ');readln(rab.vl);
 rab.zp:=rab.v+rab.vl+300;
 write(f,rab);
 end;
 close(f);
 end;
 {.......................}
 procedure nas;
 var i:integer;
 begin
 window(1,1,40,25);
 textbackground(3);
 clrscr;
 gotoxy(15,1); writeln('POISK');
 window(5,2,35,25);
 textcolor(1);
 if fsearch('rab','rab')='' then
 begin
 textcolor(4);
 write('FAIL NE NAIDEN!!!');
 end
 else
 begin
 assign(f,'rab');
 reset(f);
 for i:=0 to filesize(f)-1 do
 begin
 seek(f,i);
 read(f,rab);
 writeln('Rabo4iy "',rab.im,'": poluchaet-',rab.zp,'grn');
 writeln;
 end;
 readln;
 close(f);
 end;
 readln;
 end;
 {..........}
 procedure vit;
 begin
 window(1,1,40,25);
 textbackground(3);
 clrscr;
 gotoxy(15,1); writeln('POISK');
 window(5,2,35,25);
 textcolor(1);
 if fsearch('rab','rab')='' then
 begin
 textcolor(4);
 write('FAIL NE NAIDEN!!!');
 end
 else
 begin
 assign(f,'rab');erase(f);
 writeln('FAIL UDALENO');
 end;
 readln;
 end;
 {::::::::::::::::::::}
 var a:char;
 b,j:byte;
 begin
 textmode(c40);
 { fo;
 nas;
 vit;
 readln; }
 repeat
 window(1,1,40,25);
 textbackground(7);
 clrscr;
 j:=1;
 menu('Zapolnenie','Vivod','Steranie','vixod',7,2);
 upravl(7,5,33,7,7,4,10,2,'Zapolnenie');
 repeat
 newreadkey(a,b);
 case b of
 72:j:=j-1;
 80:j:=j+1;
 end;
 case j of
 0:j:=1;
 5:j:=4;
 end;
 case j of
 1: begin
 menu('Zapolnenie','Vivod','Steranie','vixod',7,2);
 upravl(7,5,33,7,7,4,10,2,'Zapolnenie');
 end;
 2: begin
 menu('Zapolnenie','Vivod','Steranie','vixod',7,2);
 upravl(7,8,33,10,7,4,10,2,'Vivod');
 end;
 3: begin
 menu('Zapolnenie','Vivod','Steranie','vixod',7,2);
 upravl(7,11,33,13,7,4,10,2,'Steranie');
 end;
 4: begin
 menu('Zapolnenie','Vivod','Steranie','vixod',7,2);
 upravl(7,14,33,16,7,4,10,2,'vixod');
 end;
 end;
 until a=#13;
 case j of
 1: fo;
 2: nas;
 3: vit;
 end;
 until j=4;
 end.
  Висновок
 В даній курсовій роботі були виконані всі вимоги.  ............