Автоматизований аналіз злочинності по областям
Вступ
Злочинність все більше розвивається в сучасному світі. І тому необхідно вести строгий облік всієї злочинності. Розробити програму яка буди здійснювати автоматизований аналіз злочинності по певній області. Так як ця задача не вимагає великих та жорстких методів написання, я оберу мову програмування 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 с.