
5 Инструкция пользователю
Программа предназначена для использования на компьютерах с операционной системой Windows XP.
Чтобы запустить программу нужно два раза щёлкнуть мышкой по файлу с разрешением ехе. Для выхода из программы нажать клавишу еsc.
Она может храниться на любом носителе (флеш памяти, диске, жестком диске…) объёмом не менее 2мб + совсем немного дополнительного места для сохранённых текстовых файлов.
После включения программы сразу же появится у пользователя сразу же будет выбор работать со старой базой данных или создать новую в зависимости от того что он выберет с той базой он и будет работать. Для дальнейшей работы нужно просто следовать указаниям которые виде текста выводятся на экране.
Заключение
В этой курсовой работе была выполнена задача, которую я перед собой ставил. То есть создана база данных, в которой хранится информация о музыкальных группах, причём можно найти группу в базе, добавить группу, удалить её, записать эту базу в файл и при выходе из программы, данные в нем сохраняются.
Приложения
Текст программы:
program My_Curse;
uses dos,graph,crt;
type group=record
Group:string[30];
Style:string[30];
Country:string[30];
Albums:1..15;
RLabel:string[30];
Rating:1..5;
end;
const t:array[1..7] of string[15]=('Добывить группу','Просмотр базы','Поиск группы',
'Удалить группу','Редактирование данных','Сортировка',
'Выход из программы');
var Reg : Registers;
f:file of group;
a:array[1..1000] of ^group;
gd,gm:integer;
i,y,xm,ym:integer;
procedure MoveMouse(var X, Y: Integer);
begin
repeat
Reg.AX:=$05;
Reg.BX:=$00;
Intr($33,Reg);
until Reg.BX = 1;
X:=Reg.CX;
Y:=Reg.DX;
end;
procedure ShowCursor;
begin
Reg.AX:=$01;
Intr($33, Reg);
end;
procedure CloseCursor;
begin
Reg.AX:=$02;
Intr($33, Reg);
end;
procedure setmouserange(x1,y1,x2,y2:integer);
begin
x1:=x1*2;
x2:=x2*2;
Reg.ax:=$07;
Reg.cx:=x1;
Reg.dx:=x2;
intr($33,Reg);
Reg.ax:=$08;
Reg.cx:=y1;
Reg.dx:=y2;
intr($33,Reg);
end;
procedure swap(var a,b:group);
var c:group;
begin c:=a; a:=b; b:=c;
end;
function ravno(s,t:string):boolean;
var i:integer;
begin ravno:=true;
for i:=1 to length(s) do
if s[i]<>t[i] then ravno:=false
end;
procedure vvod;
var i,j,n:integer;ch:char;
Begin
closegraph;
writeln('********************************');
writeln('*Добывление новой группы в базу*');
writeln('********************************');
writeln;
reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
repeat
inc(i);
new(a[i]);
write('Название: ');
readln(a[i]^.group);
write('Стиль: ');
readln(a[i]^.style);
write('Страна: ');
readln(a[i]^.country);
write('Количесво альбомов: ');
readln(a[i]^.albums);
write('Лейбл: ');
readln(a[i]^.Rlabel);
write('Рейтинг: ');
readln(a[i]^.Rating);
writeln;
write('Ввести еще? (y/n): ');
readln(ch);
until ch='n';
n:=i;
for j:=1 to n do
for i:=1 to n-j do
if a[i]^.group > a[i+1]^.group then swap(a[i]^,a[i+1]^);
rewrite(f);
for i:=1 to n do write(f,a[i]^);
close(f);
End;
procedure vew;
var i,n:integer;ch:char;
Begin
closegraph;
writeln('***************');
writeln('*Просмотр базы*');
writeln('***************');
writeln;
reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
i:=0;
repeat
inc(i);
writeln('Название: ',a[i]^.group);
writeln('Стиль: ',a[i]^.style);
writeln('Страна: ',a[i]^.country);
writeln('Количество альбомов: ',a[i]^.albums);
writeln('Лейбл: ',a[i]^.Rlabel);
writeln('Рейтинг: ',a[i]^.Rating);
writeln;
if i<>n then begin
write('показать следующую? (y/n): ');
readln(ch);end
else ch:='n';
writeln;
until (ch='n');
Write('Нажмите любую клавишу для выхода в главное меню');
readln;
End;
procedure poisk;
var s:string; i,n:integer; ch:char;
Begin
closegraph;
writeln('**************************');
writeln('*Поиск группы по названию*');
writeln('**************************');
writeln('Примечание: по вводе названия искомой группы, вводте каждое отдельное слово с заглавной группы');
writeln;
reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
repeat
writeln;
write('Введите название группы: ');
readln(s);
writeln;
i:=0;
repeat
inc(i);
until ravno(s,a[i]^.group) or (i=n);
if not ravno(s,a[i]^.group) then writeln('Такой группы в базе нет');
if ravno(s,a[i]^.group) then
begin
writeln('Название: ',a[i]^.group);
writeln('Стиль: ',a[i]^.style);
writeln('Страна: ',a[i]^.country);
writeln('Количество альбомов: ',a[i]^.albums);
writeln('Лейбл: ',a[i]^.Rlabel);
writeln('Рейтинг: ',a[i]^.rating);
end;
writeln;
write('Искать еще? (y/n): ');
readln(ch)
until (ch='n')
End;
procedure del;
var s:string; i,j,n:integer; ch:char;
Begin
closegraph;
writeln('************************');
writeln('*Удалить группу из базы*');
writeln('************************');
writeln('Примечание: по вводе названия удаляемой группы, вводте каждое отдельное слово с заглавной группы');
writeln;
reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
repeat
write('Введите название удаляемой группы: ');
readln(s);
writeln;
i:=0;
repeat
inc(i);
until ravno(s,a[i]^.group) or (i=n);
if not ravno(s,a[i]^.group) then writeln('Такой группы нет');
if ravno(s,a[i]^.group) then
begin
writeln('Название: ',a[i]^.group);
writeln('Стиль: ',a[i]^.style);
writeln('Страна: ',a[i]^.country);
writeln('Количество альбомов: ',a[i]^.albums);
writeln('Лейбл: ',a[i]^.Rlabel);
writeln('Рейтинг: ',a[i]^.rating);
writeln;
write('Удалить? (y/n): ');
readln(ch);
if ch='y' then
begin
for j:=i to n-1 do
a[j]^:=a[j+1]^;
if j=n then
Dispose(a[j]);
end;
end;
writeln;
write('Удалить еще? (y/n): ');
readln(ch)
until ch='n';
rewrite(f);
for i:=1 to n-1 do write(f,a[i]^);
close(f)
End;
procedure edit;
var s:string; i,j,n,kod:integer; ch:char;
p:array[1..8] of string[30];
Begin
closegraph;
writeln('***********************');
writeln('*Редактирование данных*');
writeln('***********************');
writeln('Примечание: по вводе названия редактируемой группы, вводте каждое отдельное слово с заглавной группы');
writeln;
reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
repeat
writeln;
write('Введите название группы: ');
readln(s);
writeln;
i:=0;
repeat
inc(i);
until ravno(s,a[i]^.group) or (i=n);
if not ravno(s,a[i]^.group) then writeln('Такой группы в базе нет');
if ravno(s,a[i]^.group) then
begin
writeln('Название: ',a[i]^.group);
write('Введие новую информацию или нажмите <ENTER>: ');
readln(p[1]);
writeln('Стиль: ',a[i]^.style);
write('Введие новую информацию или нажмите <ENTER>: ');
readln(p[2]);
writeln('Страна: ',a[i]^.country);
write('Введие новую информацию или нажмите <ENTER>: ');
readln(p[3]);
writeln('Количество альбомов: ',a[i]^.albums);
write('Введие новую информацию или нажмите <ENTER>: ');
readln(p[4]);
writeln('Лейбл: ',a[i]^.Rlabel);
write('Введие новую информацию или нажмите <ENTER>: ');
readln(p[5]);
writeln('Рейтинг: ',a[i]^.Rating);
write('Введие новую информацию или нажмите <ENTER>: ');
readln(p[6]);
writeln;
write('Сохранить изминения? (y/n): ');
readln(ch);
if ch='y' then
begin
if p[1]<>'' then a[i]^.group:=p[1];
if (p[2]<>'') then a[i]^.style:=p[2];
if p[3]<>'' then a[i]^.country:=p[3];
if (p[4]<>'') and ((p[4,1] in ['1'..'9']) or ((p[4,1]='1') and (p[4,2] in ['0'..'5']))) then
val(p[4],a[i]^.albums,kod);
if p[5]<>'' then a[i]^.Rlabel:=p[5];
if (p[6]<>'') and (p[6,1] in ['1'..'5']) then val(p[6,1],a[i]^.rating,kod);
end;
end;
writeln;
write('Редактировать еще? (y/n): ');
readln(ch)
until ch='n';
for j:=1 to n do
for i:=1 to n-j do
if a[i]^.group>a[i+1]^.group then swap(a[i]^,a[i+1]^);
rewrite(f);
for i:=1 to n do write(f,a[i]^);
close(f)
End;
procedure cort;
var i,j,n:integer; q:group; s:byte; ok:boolean;
Begin
closegraph;
writeln('******************************');
writeln('*Сортировка по заданному полю*');
writeln('******************************');
writeln;
write('Введтите ключ сортировки (Стиль-1, Страна-2, Лейбл-3, Рейтинг-4): ');
readln(s);
reset(f);
i:=0;
while not eof(f) do
begin
inc(i);
new(a[i]);
read(f,a[i]^);
end;
n:=i;
for i:=n-1 downto 1 do
for j:=1 to i do
begin
case s of
1:ok:=a[j]^.style>a[j+1]^.style;
2:ok:=a[j]^.country>a[j+1]^.country;
3:ok:=a[j]^.Rlabel>a[j+1]^.Rlabel;
4:ok:=a[j]^.Rating>a[j+1]^.Rating;
end;
if ok then begin
q:=a[j]^;
new(a[j]);a[j]^:=a[j+1]^;
new(a[j+1]);a[j+1]^:=q;
end;end;
rewrite(f);
for i:=1 to n do write(f,a[i]^);
close(f);
End;
BEGIN
textcolor(15);
Writeln(' Курсовая работа ');
Writeln(' По информатике ');
Writeln(' Студента группы АТ-07-1 ');
Writeln(' Электротехнического факультета ПГТУ ');
textcolor(4);
Writeln(' Малькова Вячеслава Сергеевича ');
textcolor(15);
Writeln;
Writeln(' Тема курсавой работы: ');
textcolor(4);
Writeln(' База данных ');
textcolor(15);
Writeln;Writeln;Writeln;Writeln;
writeln(' Программа: ROCK BASE vol. 1.0 ');
Writeln;Writeln;Writeln;Writeln;Writeln;Writeln;Writeln;Writeln;Writeln;
textcolor(14);
Write(' Для начала работы нажмите любую клавишу ');
textcolor(15);
readkey;
gd:=0;
(f,'data.pas');
setmouserange(0,0,320,480);
gd:=0;
repeat
initgraph(gd,gm,'');
cleardevice;
rectangle(0,0,150,50);
floodfill(1,1,15);
setcolor(0);
outtextXY(5,20,'ROCK BASE vol. 1.0');
setcolor(15);
y:=40;
for i:=1 to 7 do
begin
rectangle(220,y,420,y+40);
outtextxy(220+(200-length(t[i])*8) div 2,y+20,t[i]);
y:=y+60
end;
showcursor;
movemouse(xm,ym);
closecursor;
if (ym>40) and (ym<80) then vvod;
if (ym>100) and (ym<140) then vew;
if (ym>160) and (ym<200) then poisk;
if (ym>220) and (ym<260) then del;
if (ym>280) and (ym<320) then edit;
if (ym>340) and (ym<380) then cort;
until (ym>400) and (ym<440);
closegraph;
END.