Міністерство внутрішніх справ України
Харківський національнийуніверситет внутрішніх справ
Навчально-науковий інститутменеджменту, соціальних та інформаційних технологій
Кафедра інформаційних систем і технологійв діяльності ОВС
Курсова робота
з дисципліни «Основипрограмування та алгоритмічні мови»
на тему: «База даних по облікувогнепальної зброї»
Харківр.
Зміст Вступ1. Основна частина1.1 Неформальна постановка задачі1.2 Формальна постановка задачі1.3 Структура зберігаючих даних2. Алгоритми2.1 Алгоритм основної програми2.2 Алгоритм процедури Zap 2.3 Алгоритм процедури Udal3. Вихідний код програмиВисновокСписок використаної літератури
Вступ
Оскільки всучасному світі існує дуже велика кількість вогнепальної зброї, то реєстрація іоблік її просто необхідний, адже саме вона стає причиною багатьох людськихсмертей. Таким чином для полегшення роботи працівникам міліція я вирішивстворити програму яка полегшить роботу працівникам ОВС і переведе їх зпаперової реєстрації до більш сучасної електронної. Де також з’являєтьсяможливість передачі даної бази мережею Інтернет.
Я вибрав мовупрограмування Турбо Паскаль, з метою закріплення своїх навиків з програмування.
1. Основна частина 1.1 Неформальна постановка задачі
Розробитипрограму « облік вогнепальної зброї» бля більш простої та оптимальної обробкиінформації по зброї.
Ø Занесеннявідомостей по вогнепальній зброї користувачем та зберігання її до типізованогофайлу:
o Модельзброї;
o Калібрвогнепальної зброї;
o Вагазброї;
o Довжиназброї;
o Реєстраційнийномер зброї;
o Висотазброї.
Ø Можливістьредагування даної бази
Ø Можливістьвидалення всієї бази
Ø Організаціяпошуку за критеріями:
o Модельзброї;
o Калібрвогнепальної зброї;
o Вагазброї;
o Довжиназброї;
o Реєстраційнийномер зброї;
o Висота зброї.
Ø Можливістьперегляду всіх існуючих відомостей;
Ø Зручнийінтерфейс для користувача;
Ø Швидкістьта простота роботи в даній програмі;
1.2 Формальна постановка задачі
Вихідні дані:
Нехай А множина всієї вогнепальної зброї. Тоді
А={А1, А2,…, Аі} і=1..n. Аі –певний вид зброї
Аі = {Р1, Р2,…, Рj}
де Рj – певна характеристика даної зброї.
Множина Рi,яка формуються з вхідних даних а саме множини Аi. під дією певного критерію:
К1 –критерій Модель зброї
К2 –критерій Калібр вогнепальної зброї
К3 –критерій Вага зброї
К4 –критерій Довжина зброї
К5 –критерій Реєстраційний номер зброї
К6 –критерій Висота зброї
Математичнамодель Результат:
Ак = {А1, А2,…, Аі }, де Аі є σк(А)вибірка
1.3 Структура зберігаючих даних:
te – тип записдля занесення даних про автомобілі
· kal –перемінні строкового типу для зберігання калібоу
· ves –перемінні строкового типу для зберігання ваги
· dl –перемінні строкового типу для зберігання довжини
· vis –перемінні строкового типу для зберігання висоти
· med –перемінні строкового типу для зберігання моделі
· pr_nom –перемінні строкового типу для зберігання реєстраційного номеру
polo — процедурадля малювання рамочки
menu — процедурадля управління та виведення меню програми
strelka — процедурадля пунктів меню
zap — процедурадля занесення та збереження даних
udal – процедурадля видалення всієї бази
poisk — процедурадля пошуку за певними критеріями
prosm — процедурадля виведення всіх відомостей які містяться в базі
2. Алгоритми 2.1 Алгоритмосновної програми/> /> /> /> /> />
2.2 Алгоритм процедури Zap
/>
/>
2.3 Алгоритм процедури Udal/> /> /> /> /> /> /> /> /> /> /> />
3. Вихідний кодпрограми
uses crt,dos;
type te=record
kal,ves,dl,vis:string[5];
med:string[10];
pr_nom:string[10];
end;
var f:file of te;oru:te;st1,st2,st3,st4,st5:string[20];
x1,x2,y1,y2,i,b:byte;
a1:char;
procedure polo (x1,y1,x2,y2{Љ®®а¤Ё вл а ¬ЄЁ ўе®¤лҐ},
{x01,y01{Љ®®а¤Ё вл ўлў®¤ ⥪бв ў а ¬ЄҐ}{:integer;
st{’ҐЄбв ўлў®¤Ё¬л© ў а ¬ЄҐ}{:string;}
a{ЏҐаҐ¬Ґ п д® а ¬ЄЁ}:byte);
var i:integer;
begin
textbackground(a);
textcolor(red);
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(x1,y1,x2,y2,a,b:byte;st1,st2,st3,st4,st5:string);
begin
window(1,1,40,25);
clrscr;
window(x1,y1,x2,y2);
textbackground(a);
clrscr;
textcolor(b);
writeln(st1);writeln;
writeln(st2);writeln;
writeln(st3);writeln;
writeln(st4);writeln;
writeln(st5);writeln;
window(1,1,40,25);
textcolor (2);
gotoxy(x1-2,y1);
write('=>');
end;
procedure strelka(var xx,i:byte;x1,y1,a,b:byte);
begin
window(12,6,14,14);
textbackground(0);
clrscr;
window(1,1,40,25);
textcolor(2);
case b of
72: begin
if i>1 then
begin
i:=i-1;
xx:=xx-2;
gotoxy(x1,xx);
write('=>');
exit;
end;
if i=1 then
begin
i:=5;
xx:=y1+8;
gotoxy(x1,xx);
write('=>');
end;
end;
80: begin
if i
begin
i:=i+1;
xx:=xx+2;
gotoxy(x1,xx);
write('=>');
exit;
end;
if i=5 then
begin
i:=1;
xx:=y1;
gotoxy(x1,xx);
write('=>');
end;
end;
end;
end;
procedure zap;
var i,n:integer;
begin
clrscr;
writeln('vvedi kol-vo orugia');
readln(n);
assign(f,'d:\uy.rer');
rewrite(f);
for i:=1 to n do
begin
with oru do
begin
writeln('vvedi model orugia');
readln(med);
writeln('vvedi kalibr ');
readln(kal);
writeln('vvedi ves ');
readln(ves);
writeln('vvedi dlinu');
readln(dl);
writeln('vvedi visotu');
readln(vis);
writeln('vvedi por.nomer');
readln(pr_nom);
seek(f,filesize(f));
end;
write(f,oru);
end;
close(f);
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
end;
procedure udal;
var c:char;
begin
clrscr;
if FSearch('uy.rer','d:\')='' then
begin
writeln('faila ne sushestvuet');
for b:=1 to 25 do
Delay(9999);
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
end
else
begin
assign(f,'d:\uy.rer');
writeln('«y»-ydalit basy');
writeln('«n»-otmena');
c:=readkey;
if c='y' then
begin
erase(f);
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
end;
if c='n' then
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
end;
end;
procedure poisk;
var p,x:string;i:integer;
begin
clrscr;
if FSearch('uy.rer','d:\')='' then
begin
gotoxy(15,12);
textcolor(132);
writeln('zapisi net');
for b:=1 to 40 do
Delay(9999);
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
end
else
begin
assign(f,'d:\uy.rer');
reset(f);
writeln('mogno iskat po:');
writeln;
writeln('dla poiska po modeli orugia vvedi-«model»');
writeln;
writeln('dla poiska po kalibru vvedi-«kalibr»');
writeln;
writeln('dla poiska po vesu vvedi-«ves»');
writeln;
writeln('dla poiska po dline vvedi-«dlina»');
writeln;
writeln('dla poiska po visote vvedi-«visota»');
writeln;
writeln('dla poiska po por.nomeru vvedi-«nomer»');
writeln;
writeln('vvedi po hom budem iskat i nagm. «ENTER»');
readln(p);
if (p= 'model') or (p='kalibr') or ( p='ves') or (p='dlina') or(p='visota') or (p='nomer') then
begin
if p='model' then
begin
clrscr;
writeln('vvedi iskaemou model');
readln(x);
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,oru);
with oru do
if x=med then
begin
writeln('model orugia-',med);
writeln(' kalibr-',kal);
writeln(' ves-',ves);
writeln(' dlina-',dl);
writeln(' visota-',vis);
writeln('por.nom-',pr_nom);
end;
end;
end;
if p='kalibr' then
begin
clrscr;
writeln('vvedi iskaeiy kalibr');
readln(x);
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,oru);
with oru do
if x=kal then
begin
writeln('model orugia-',med);
writeln('kalibr-',kal);
writeln('ves-',ves);
writeln('dlina-',dl);
writeln('visota-',vis);
writeln('por.nom-',pr_nom);
end;
end;
end;
if p='ves' then
begin
clrscr;
writeln('vvedi iskaeiy ves');
readln(x);
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,oru);
with oru do
if x=ves then
begin
writeln('model orugia-',med);
writeln('kalibr-',kal);
writeln('ves-',ves);
writeln('dlina-',dl);
writeln('visota-',vis);
writeln('por.nom-',pr_nom);
end;
end;
end;
if p='dlina' then
begin
clrscr;
writeln('vvedi iskaemou dliny');
readln(x);
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,oru);
with oru do
if x=dl then
begin
writeln('model orugia-',med);
writeln('kalibr-',kal);
writeln('ves-',ves);
writeln('dlina-',dl);
writeln('visota-',vis);
writeln('por.nom-',pr_nom);
end;
end;
end;
if p='visota' then
begin
clrscr;
writeln('vvedi iskaemou visotu');
readln(x);
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,oru);
with oru do
if x=vis then
begin
writeln('model orugia-',med);
writeln('kalibr-',kal);
writeln('ves-',ves);
writeln('dlina-',dl);
writeln('visota-',vis);
writeln('por.nom-',pr_nom);
end;
end;
end;
if p='nomer' then
begin
clrscr;
writeln('vvedi iskaemiy por.nomer');
readln(x);
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,oru);
with oru do
if x=pr_nom then
begin
writeln('model orugia-',med);
writeln('kalibr-',kal);
writeln('ves-',ves);
writeln('dlina-',dl);
writeln('visota-',vis);
writeln('por.nom-',pr_nom);
end;
end;
end
end
else writeln('po' ,p,'poisk ne idet');
close(f);
end;
readln;
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
end;
procedure prosm;
var i,j:integer;
begin
clrscr;
if FSearch('uy.rer','d:\')='' then
begin
gotoxy(15,12);
textcolor(132);
writeln('zapisi net');
for b:=1 to 40 do
Delay(9999);
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
end
else
begin
assign(f,'d:\uy.rer');
reset(f);
for i:=0 to filesize(f)-1 do
begin
seek(f,i);
read(f,oru);
with oru do
begin
writeln('zapis-',i+1);
writeln('model orugia-',med);
writeln(' kalibr-',kal);
writeln(' ves-',ves);
writeln(' dlinu-',dl);
writeln(' visotu-',vis);
textcolor(2);
for j:=1 to 80 do
write(#205);
end;
end;
close(f);
end;
readln;
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
end;
begin
textmode(co40);
window(1,1,40,25);
clrscr;
st1:='novaya basa';
st2:='udalit basu';
st3:='poisk v base';
st4:='prosmotr ';
st5:='exit';
menu(15,6,27,16,0,14,st1,st2,st3,st4,st5);
x1:=13;y1:=6;y2:=6;
i:=1;
repeat
repeat
newreadkey(a1,b);
strelka(y2,i,x1,y1,6,b);
until a1=#13;
case i of
1:zap;
2:udal;
3:poisk;
4:prosm;
5:halt;
end;
until a1=#27;
end.
Висновок
В даній курсовійроботі були використані елементи програмування на мові Паскаль. Була створенапрограма, яка веде облік вогнепальної зброї. Таким чином біли виконані всівимоги до даної курсової роботи.
В даній роботібуло створено досить велику кількість процедур, які можливо використати і вінших програмних проектах, були використані різні типи даних, а також булизастосовані процедури та функції які були створені раніше, ці процедури тафункції я брав з модулів CRT та DOS.
Список використаної літератури
1. Струков В.М. Основиалгоритмизации и програмирования. Часть 2. Учебное пособие. – Харьков: Изд.Нац. ун-та внутр.дел,2003. – 188 с.
2. Сердюченко В.Я. Розробкаалгоритмів та програмування на мові Turbo Pascal. – X.,1995.
3. Немнюгин С.А. Turbo Pascal. –СПб.: Питер, 2002. – 496 с.: ил.