Автоматизований аналіз злочинності по областям

Розробка програми "Злочин", що призначена для збереження та перегляду, а також автоматичного аналізу всієї інформації про злочинність. Порядок і основні принципи формування структури даних, постановка задачі. Написання та лістинг розробленої програми.

Автоматизований аналіз злочинності по областям


Вступ

Злочинність все більше розвивається в сучасному світі. І тому необхідно вести строгий облік всієї злочинності. Розробити програму яка буди здійснювати автоматизований аналіз злочинності по певній області. Так як ця задача не вимагає великих та жорстких методів написання, я оберу мову програмування Turbo Pascal.

Я вибрав мову програмування Turbo Pascal, з метою закріплення своїх навиків з програмування.


1. Основна частина

1.1 Неформальна постановка задачі

Розробити програму – «Злочин» для збереження та перегляду, а також автоматичного аналізу всієї інформації.

- Введення і збереження інформації до файлу:

o Назва області

o Кількість вбивств

o Кількість зґвалтувань;

o Кількість крадіжок

o Кількість пограбувань.

- Можливість редагування даної бази

- Аналіз

o Область з най білими показниками злочинності

- Можливість перегляду всіх існуючих документів

o Перегляд скороченого варіанту бази

o Перегляд повного варіанту даних, які занесені до бази

- Можливість видалення всієї бази.

- Зручний інтерфейс для користувача

- Швидкість та простота роботи в даній програмі

1.2 Формальна постановка задачі

Вихідні дані:

Позначимо сукупність всіх даних, які будуть заноситись до бази даних через множину А, таким чином А={А1, А2, …, Аі }, де і=1..n, Аі – певна область.

Кожен область складається з певного виду злочину, отже маємо Аі ={Аі1, Аі2, …, Аіj }, j=1..4.

Таким чином ми маємо матрицю всіх відомостей які зберігаються в базі даних, та заносяться користувачем.

Результат: множина Рij , яка формуються з вхідних даних а саме множини Аij .

Математична модель: з матриці вибираютьсяАі з найбільшими показниками Аj .

1.3 Структура зберігаючих даних:

Nb – структура для введення та зберігання інформації що вводить користувач.

· Nas – назва області

· Ub – поле для кількості вбивств в конкретній область

· Iz – поле для кількості зґвалтувань в конкретній області

· Kr – поле для кількості крадіжок в конкретній області

· Pas – поле для кількості грабіжей в конкретній області

ramo4ka – процедура яка малює рамку

izi – процедура яка виводить в певних координатах певні відомасті

ram – процедура яка малює рамочку іншого типу

zao – процедура для введення та зберігання до файлу відомостей які вводить користувач

anal – процедура яка здійснює автоматизований аналіз злочинності

ual – процедура видалення всієї бази

2. Вихідний код програми

uses crt, dos;

type nb=record

nas:string[10];

ub, iz, kr, pas:integer;

end; {avt al zl po abl}

var f:file of nb; obl:nb;

procedure ramo4ka (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 izi (x, y:byte; s1, s2, s3, s4:string);

begin

gotoxy (x, y);

write(s1);

gotoxy (x+15, y+2);

write(s2);

gotoxy (x, y+4);

write(s3);

gotoxy (x+15, y+6);

write(s4);

end;

{–}

procedure ram (x, y, x1, y1, a, b:byte);

begin

ramo4ka (x, y, x1, y1, a, b);

end;

procedure pamka (x1, y1, x2, y2:integer);

var i, c:integer;

begin

textcolor(7);

gotoxy (x1, y1);

write(#201);

for i:=1 to x2-x1–1 do

begin

gotoxy (x1+i, y1);

write(#205);

end;

gotoxy (x2, y1);

write(#187);

for i:=1 to y2-y1–1 do

begin

gotoxy (x2, y1+i);

write(#186);

end;

gotoxy (x2, y2);

write(#188);

for i:=1 to x2-x1–1 do

begin

gotoxy (x2-i, y2);

write(#205);

end;

gotoxy (x1, y2);

write(#200);

for i:=1 to y2-y1–1 do

begin

gotoxy (x1, y1+i);

write(#186);

end;

end;

{……………….}

procedure zao;

var i, n:integer;

begin

window (1,1,40,25);

textbackground(1);

clrscr;

pamka (6,6,34,18);

window (7,7,33,17);

textbackground(14);

clrscr;

write ('Vvedite kol-vo oblastey – '); readln(n);

assign (f, 'c:\te.j');

rewrite(f);

for i:=1 to n do

begin

clrscr;

seek (f, filesize(f));

with obl do

begin

write ('vvedi oblast:'); readln(nas);

write ('Vvedi kol-vo ubiystv: '); readln(ub);

write ('Vvedi kol-vo iznasilovaniy: '); readln(iz);

write ('vvedi kol-vo kraj: '); readln(kr);

write ('vvedi kol-vo rasboyev: '); readln(pas);

end;

write (f, obl);

end;

close(f);

end;

{…………………………….}

procedure anal;

var k, i, j:integer;

begin

if FSearch ('te.j', 'c:\')='' then

begin

window (1,1,40,25);

textbackground(1);

clrscr;

pamka (1,1,39,25);

window (2,2,38,24);

textcolor(132);

writeln ('FAILA NET'); readln;

end

else

begin

window (1,1,40,25);

textbackground(1);

clrscr;

pamka (1,1,39,25);

window (2,2,38,24);

writeln ('Dlya analiza nagmi «Enter» ');

readln; clrscr;

assign (f, 'c:\te.j');

reset(f);

k:=-9999;

j:=0;

for i:=0 to filesize(f) – 1 do

begin

seek (f, i);

read (f, obl);

with obl do

begin

if ub>k then

begin

k:=ub;

j:=i;

end;

end;

end;

seek (f, j);

read (f, obl);

with obl do

begin

writeln ('sam. bolh. kol. ubiystv-', ub);

writeln ('v ', nas, ' oblasti');

writeln(#219);

end;

k:=-9999;

j:=0;

for i:=0 to filesize(f) – 1 do

begin

seek (f, i);

read (f, obl);

with obl do

begin

if iz>k then

begin

k:=iz;

j:=i;

end;

end;

end;

seek (f, j);

read (f, obl);

with obl do

begin

writeln ('sam. bolh. kol. iznosilovaniy-', iz);

writeln ('v ', nas, ' oblasti');

writeln(#219);

end;

k:=-9999;

j:=0;

for i:=0 to filesize(f) – 1 do

begin

seek (f, i);

read (f, obl);

with obl do

begin

if kr>k then

begin

k:=kr;

j:=i;

end;

end;

end;

seek (f, j);

read (f, obl);

with obl do

begin

writeln ('sam. bolh. kol. kraj-', kr);

writeln ('v ', nas, ' oblasti');

writeln(#219);

end;

k:=-9999;

j:=0;

for i:=0 to filesize(f) – 1 do

begin

seek (f, i);

read (f, obl);

with obl do

begin

if pas>k then

begin

k:=pas;

j:=i;

end;

end;

end;

seek (f, j);

read (f, obl);

with obl do

begin

writeln ('sam. bolh. kol. rasboev-', pas);

writeln ('v ', nas, ' oblasti');

writeln(#219);

end;

for i:=1 to 37 do

begin

gotoxy (i, 13);

write(#196);

end;

readln;

close(f);

end;

end;

{…………………}

procedure ual;

begin

if FSearch ('te.j', 'c:\')='' then

begin

window (1,1,40,25);

textbackground(1);

clrscr;

pamka (1,1,39,25);

window (2,2,38,24);

textcolor(132);

writeln ('FAILA NET'); readln;

end

else

begin

window (1,1,40,25);

textbackground(1);

clrscr;

pamka (1,1,39,25);

window (2,2,38,24);

writeln ('Dlya udalenia nagmi «Enter» ');

readln;

assign (f, 'c:\te.j');

erase(f);

writeln('Udaleno');

readln;

end;

end;

{:}

var s1, s2, s3, s4, s5:string;

p:char; z, k:byte;

begin

textmode(C40);

repeat

window (1,1,40,25);

textbackground(1);

textcolor(7);

clrscr;

s1:='Vvod';

s2:='Analizirovat';

s3:='Udalit';

s4:='Vixod';

izi (10,7, s1, s2, s3, s4);

ram (9,6, length(s1)+10,9,1,14);

k:=1;

repeat

newreadkey (p, z);

if z=80 then

k:=k+1;

if z=72 then

k:=k-1;

if k=5 then

k:=4;

if k=0 then

k:=1;

if k=1 then

begin

ram (9,6, length(s1)+10,9,1,14);

ram (24,8, length(s1)+25,11,1,1);

end;

if k=2 then

begin

ram (9,6, length(s1)+10,9,1,1);

ram (24,8, length(s1)+25,11,1,14);

ram (9,10, length(s1)+10,13,1,1);

end;

if k=3 then

begin

ram (24,8, length(s1)+25,11,1,1);

ram (9,10, length(s1)+10,13,1,14);

ram (24,12, length(s1)+25,15,1,1);

end;

if k=4 then

begin

ram (9,10, length(s1)+10,13,1,1);

ram (24,12, length(s1)+25,15,1,14);

ram (9,14, length(s1)+10,17,1,1);

end;

until p=#13;

case k of

1:zao;

2:anal;

3:ual;

end;

until k=4;

end.

Висновок

В даній курсовій роботі я програмував мовою Turbo Pascal. Практично реалізував всі ті знання які мені давалися в теоретичному виді. Само вдосконалив свої навички. Створив програму автоматизовано аналізує злочинність по областям. В даній роботі були використані як свої створені процедури так і запозичені. Було підключено два модулі, які додали до моєї програми гарний графічний інтерфейс, та можливість зберігати всі відомості в електронному вигляді в виді файлу.

Була вибрана мова Pascal, оскільки я вважаю що вона найбільш підходить для реалізації цієї задачі

Список використаної літератури

1. Струков В.М. Основи алгоритмизации и програмирования. Часть 2. Учебное пособие. – Харьков: Изд. Нац. ун-та внутр. дел, 2003. – 188 с.

2. Сердюченко В.Я. Розробка алгоритмів та програмування на мові Turbo Pascal. – X., 1995.

3. Немнюгин С.А. Turbo Pascal. – СПб.: Питер, 2002. – 496 с.