Міністерство внутрішніх справ України
Харківський національний університет внутрішніх справ
Навчально-науковий інститут менеджменту, соціальних та інформаційних технологій
Кафедра інформаційних систем і технологій в діяльності ОВС
Курсова робота
з дисципліни «Основи програмування та алгоритмічні мови»
на тему: «Автоматизоване нарахування заробітної плати»
Виконав:
Перевірив:
Харків, 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.
Висновок
В даній курсовій роботі були виконані всі вимоги. ............