1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Помогите,пожалуйста,кого не затруднит,на Паскале разработать систему информационного обеспечения клуба собаководов "ПЕС". Информация, обрабатываемая в системе, должна храниться в текстовом или типизированном файлах. Данные, которые должны быть отражены в системе: порода, кличка, возраст, пол собаки, адрес хозяина. В системе должны решаться следующие задачи: 1. Создание файла. 2. Дополнение файла. 3. Корректировка данных в файле. 4. Формирование ответов на запросы пользователя: 4.1. Для заданной пользователем породы вывести список кличек собак и возраст; 4.2.Для заданной пользователем породы в порядке убывания возраста собаки вывести адреса хозяев, возраст и пол собаки; 4.3. Для заданной породы определить средний возраст собак, зарегистрированных в клубе; 4.4. Для заданной породы построить график зависимости численности собак в зависимости от возраста; 4.5. Построить круговую диаграмму, иллюстрирующую возрастной состав по интересующему пользователя полу; 4.6. Построить столбиковую диаграмму, характеризующую количество собак каждой породы.
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] of string[70]= (('Работа с файлом', 'Формирование ответов на запросы пользователя', 'Выход','','','',''), ('Вывод и редактирование файла', 'Создание нового файла', 'Дополнение файла', 'Назад', '','',''), ('1.список кличек собак и возраст', '2.адреса хозяев,возраст и пол собаки в порядке убывания возраста собаки', '3.средний возраст собак', '4.график зависимости численности собак в зависимости от возраста', '5.круговая диаграмма иллюстрирующая возрастной состав по полу собаки', '6.столбиковая диаграмма количества собак каждой породы', 'Назад')); proverkas:array[0..5] of string[50]= ('Введите количество записей:', 'Введите Породу:', 'Введите Кличку:', 'Введите Возраст:', 'Введите Адрес хозяина:', 'Вветите Пол собаки:'); proverka_errors:array[0..5] of string[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:file of 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]))div 2,(y2-y1-kol_punktov[nomer_menu])div 2+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:=1 to kol_punktov[nomer_menu] do if 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)) div 2,y); writeln(text); end; {of write text} {-------------------------------------} function proverka(nomer:integer):string; const simbols:set of char=['А'..'Я','а'..'я','.',' ','-']; var s:string; n,error,i:integer; flag:boolean; begin flag:=true; repeat clrscr; if not(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 of 0:if (error=0)and(n>0) then flag:=true else flag:=false; 1:for i:=1 to length(s)do if not(s[i] in simbols) then flag:=false; 2:for i:=1 to length(s) do if not(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=2 then begin 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=1 then begin textcolor(4); s:='Вверх/вниз-выбор записи'; gotoxy(40-length(s) div 2,43); writeln(s); s:='Нажмите ENTER, чтобы изменить запись'; gotoxy(40-length(s) div 2,45); writeln(s); s:='ESC-выход'; gotoxy(40-length(s) div 2,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:=1 to y20-y10-2 do begin if 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 then begin file_p:=filesize(f); p:=file_p; end else begin 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:begin if p>1 then p:=p-1; if file_p>0 then file_p:=file_p-1; if (p=1)and(file_p<>file_p_0) then vivod(file_p); gotoxy(1,p); end; #80:begin if (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=1 then punkt:=kol_punktov[nomer_menu] else punkt:=punkt-1; #80:if punkt=kol_punktov[nomer_menu] then punkt:=1 else punkt:=punkt+1; #13:case nomer_menu of 1:case punkt of 1:menu(2,1); 2:menu(3,1); 3:halt; end; 2:case punkt of 1: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 of 1: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.
То есть, не сделано ничего? Тогда, извини, иди в поиск и ищи все, что связано с "Типизированными файлами" или "Задачами на записи", потому что твоя программа, поверь мне, практически не будет отличаться от программы, занимающейся хоккейной/футбольной командой или студентами, которым в зависимости от оценок нужно или не нужно платить стипендию (такие программы уже написаны на форуме - ищи...)