Помогите,пожалуйста,кого не затруднит,на Паскале разработать систему информационного обеспечения клуба собаководов "ПЕС". Информация, обрабатываемая в системе, должна храниться в текстовом или типизированном файлах. Данные, которые должны быть отражены в системе: порода, кличка, возраст, пол собаки, адрес хозяина. В системе должны решаться следующие задачи: 1. Создание файла. 2. Дополнение файла. 3. Корректировка данных в файле. 4. Формирование ответов на запросы пользователя: 4.1. Для заданной пользователем породы вывести список кличек собак и возраст; 4.2.Для заданной пользователем породы в порядке убывания возраста собаки вывести адреса хозяев, возраст и пол собаки; 4.3. Для заданной породы определить средний возраст собак, зарегистрированных в клубе; 4.4. Для заданной породы построить график зависимости численности собак в зависимости от возраста; 4.5. Построить круговую диаграмму, иллюстрирующую возрастной состав по интересующему пользователя полу; 4.6. Построить столбиковую диаграмму, характеризующую количество собак каждой породы.
Вот то,что уже сделано.Помогите доделать.
Creator S.
19.04.2006 19:03
"(Показать/Скрыть)
Program dog;
uses crt;
type
dog=record
Naz:string;
FIO:string;
Vozr:string;
Tem:string;
Ter:integer;
mes:byte;
end;
const
punkts:array[1..3,1..7] ofstring[70]=
(('Работа с файлом',
'Формирование ответов на запросы пользователя',
'Выход','','','',''),
('Вывод и редактирование файла',
'Создание нового файла',
'Дополнение файла',
'Назад',
'','',''),
('1.список кличек собак и возраст',
'2.адреса хозяев,возраст и пол собаки в порядке убывания возраста собаки',
'3.средний возраст собак',
'4.график зависимости численности собак в зависимости от возраста',
'5.круговая диаграмма иллюстрирующая возрастной состав по полу собаки',
'6.столбиковая диаграмма количества собак каждой породы',
'Назад'));
proverkas:array[0..5] ofstring[50]=
('Введите количество записей:',
'Введите Породу:',
'Введите Кличку:',
'Введите Возраст:',
'Введите Адрес хозяина:',
'Вветите Пол собаки:');
proverka_errors:array[0..5] ofstring[50]=
('Ошибка ввода',
'Ошибка ввода',
'Ошибка ввода',
'Ошибка ввода',
'Ошибка ввода',
'Ошибка ввода');
kol_punktov:array[1..3] of integer=(3,4,7);
{--------------------------------------}procedure menu(nomer_menu,punkt0:integer);
const
x1=7;
y1=15;
x2=73;
y2=35;
x10=5;
x20=75;
y10=5;
y20=40;
var
w:dog;
punkt:integer;
k:char;
f:fileof dog;
{--------------1--------------------}procedure spis_grup;
begin
clrscr;
writeln ('список кличек');
readln;
menu(2,punkt);
end;
{------------2----------------------}procedure stoim;
begin
clrscr;
writeln ('в порядке убывания');
readln;
menu(2,punkt);
end;
{-------------3---------------------}procedure obem;
begin
clrscr;
writeln ('средний возраст');
readln;
menu(2,punkt);
end;
{------------4----------------------}procedure grafik;
begin
clrscr;
writeln ('график');
readln;
menu(2,punkt);
end;
{------------5----------------------}procedure krug;
begin
clrscr;
writeln ('круговая диаграмма');
readln;
menu(2,punkt);
end;
{------------6----------------------}procedure stolbik;
begin
clrscr;
writeln ('столбиковая диаграмма');
readln;
menu(2,punkt);
end;
{-------------------------------------}procedure write_punkt(color,punkt:integer);
begin
textcolor(color);
gotoxy((x2-x1+2-length(punkts[nomer_menu,punkt]))div2,(y2-y1-kol_punktov[nomer_menu])div2+2*(punkt-1));
write(punkts[nomer_menu,punkt]);
end;{of write_punkt}{-------------------------------------}procedure write_menu(nomer_menu:integer);
var
i:integer;
begin
textbackground(brown);{color}
window(1,1,80,50);
clrscr;
textbackground(black);
window(x1,y1,x2,y2);
clrscr;
for i:=1to kol_punktov[nomer_menu] doif i=punkt0 then write_punkt(red,i) else write_punkt(yellow,i);
end;
{of write_menu}{-------------------------------------}procedure write_text(text:string;y,color:integer);
begin
textcolor(color);
gotoxy((x2-x1-length(text)) div2,y);
writeln(text);
end;
{of write text}{-------------------------------------}function proverka(nomer:integer):string;
const
simbols:setof char=['А'..'Я','а'..'я','.',' ','-'];
var
s:string;
n,error,i:integer;
flag:boolean;
begin
flag:=true;
repeat
clrscr;
ifnot(flag) then write_text(proverka_errors[nomer],14,20);
write_text(proverkas[nomer],7,yellow);
gotoxy(10,10);
readln(s);
val(s,n,error);
flag:=true;
case nomer of0:if (error=0)and(n>0) then flag:=true else flag:=false;
1:for i:=1to length(s)doifnot(s[i] in simbols) then flag:=false;
2:for i:=1to length(s) doifnot(s[i] in simbols) then flag:=false;
3:if (s='д')or(s='ю')or(s='в') then flag:=true else flag:=false;
4:if (s='х')or(s='п')or(s='и') then flag:=true else flag:=false;
5:if (error=0)and(n>0) then flag:=true else flag:=false;
6:if (error=0)and(n>0)and(n<=12) then flag:=true else flag:=false;
end;
until flag;
proverka:=s;
end;
{of proverka}procedure open_file;
begin{$I-}
assign(f,'rgz_2.dat');
reset(f);
if ioresult=2thenbegin
assign(f,'rgz_2.dat');
rewrite(f);
end;
{$I+}end;
{of open_file}procedure ramka(nomer:integer);
var
s:string;
begin
textbackground(brown);
window(1,1,80,50);
clrscr;
if nomer=1thenbegin
textcolor(4);
s:='Вверх/вниз-выбор записи';
gotoxy(40-length(s) div2,43);
writeln(s);
s:='Нажмите ENTER, чтобы изменить запись';
gotoxy(40-length(s) div2,45);
writeln(s);
s:='ESC-выход';
gotoxy(40-length(s) div2,47);
writeln(s);
textcolor(yellow);
end;
textbackground(black);
window(x10,y10,x20,y20);
clrscr;
window(x10+1,y10+1,x20-1,y20-1);
clrscr;
end;
procedure vivod(file_p:integer);
var
i:integer;
w:dog;
begin
window(x10+1,y10+1,x20-1,y20-1);
clrscr;
seek(f,file_p);
for i:=1to y20-y10-2dobeginif eof(f) then break;
read(f,w);
gotoxy(1,i);
writeln(w.naz);
gotoxy(10,i);
writeln(w.fio);
gotoxy(20,i);
writeln(w.vozr);
gotoxy(30,i);
writeln(w.tem);
gotoxy(40,i);
writeln(w.ter);
gotoxy(50,i);
writeln(w.mes);
end;
end;
{of vivod}procedure dop_file(file_p:integer);
var
n,error:integer;
w1:dog;
begin
w.fio:=proverka(1);
w.naz:=proverka(2);
w.vozr:=proverka(3);
w.tem:=proverka(4);
val(proverka(5),n,error);
w.ter:=n;
val(proverka(6),n,error);
w.mes:=n;
seek(f,file_p);
write(f,w);
end;
{of dop_file}procedure out_file;
var
p,file_p,file_p_0:integer;
begin
open_file;
ramka(1);
if filesize(f)<=y20-y10 thenbegin
file_p:=filesize(f);
p:=file_p;
endelsebegin
file_p:=filesize(f)-(y20-y10-2);
p:=y20-y10-1;
end;
vivod(file_p);
file_p:=filesize(f);
gotoxy(1,p);
repeat
k:=readkey;
file_p_0:=file_p;
case k of#32:menu(2,1);
#13:begin
dop_file(file_p);
out_file;
end;
#72:beginif p>1then p:=p-1;
if file_p>0then file_p:=file_p-1;
if (p=1)and(file_p<>file_p_0) then vivod(file_p);
gotoxy(1,p);
end;
#80:beginif (p<(y20-y10-1))and(p<filesize(f)) then p:=p+1;
if file_p<filesize(f) then file_p:=file_p+1;
if (p>=(y20-y10-1))and(file_p<>file_p_0) then vivod(file_p-(y20-y10-2));
gotoxy(1,p);
end;
#27:halt;
end;
until k=#27;
end;
{of out_file}procedure new_file;
begin
assign(f,'rgz_2.dat');
rewrite(f);
close(f);
menu(2,2);
end;
{of new_file}begin
write_menu(nomer_menu);
punkt:=punkt0;
repeat
k:=readkey;
write_punkt(yellow,punkt);
case k of#72:if punkt=1then punkt:=kol_punktov[nomer_menu]
else punkt:=punkt-1;
#80:if punkt=kol_punktov[nomer_menu] then punkt:=1else punkt:=punkt+1;
#13:case nomer_menu of1:case punkt of1:menu(2,1);
2:menu(3,1);
3:halt;
end;
2:case punkt of1:out_file;
2:new_file;
3:begin
open_file;
dop_file(filesize(f));
close(f);
out_file;
end;
4:menu(1,1);
end;
3:case punkt of1:spis_grup;
2:stoim;
3:obem;
4:grafik;
5:krug;
6:stolbik;
7:menu(1,2);
end;
end;
end;
write_punkt(red,punkt);
until k=#13;
end;
{of menu}begin
textmode(C80 + Font8x8);
menu(1,1);
end.
Ты что, каждый раз новую тему создавать будешь?
Объединено из темы "Продолжение С.И.О."
volvo
19.04.2006 19:06
Цитата(Creator S. @ 19.04.2006 14:53)
Вот то,что уже сделано.Помогите доделать.
То есть, не сделано ничего? Тогда, извини, иди в поиск и ищи все, что связано с "Типизированными файлами" или "Задачами на записи", потому что твоя программа, поверь мне, практически не будет отличаться от программы, занимающейся хоккейной/футбольной командой или студентами, которым в зависимости от оценок нужно или не нужно платить стипендию (такие программы уже написаны на форуме - ищи...)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.