Помогите,пожалуйста,кого не затруднит,на Паскале разработать систему информационного обеспечения клуба собаководов "ПЕС". Информация, обрабатываемая в системе, должна храниться в текстовом или типизированном файлах. Данные, которые должны быть отражены в системе: порода, кличка, возраст, пол собаки, адрес хозяина. В системе должны решаться следующие задачи: 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] 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.
Ты что, каждый раз новую тему создавать будешь?
Объединено из темы "Продолжение С.И.О."
volvo
19.04.2006 19:06
Цитата(Creator S. @ 19.04.2006 14:53)
Вот то,что уже сделано.Помогите доделать.
То есть, не сделано ничего? Тогда, извини, иди в поиск и ищи все, что связано с "Типизированными файлами" или "Задачами на записи", потому что твоя программа, поверь мне, практически не будет отличаться от программы, занимающейся хоккейной/футбольной командой или студентами, которым в зависимости от оценок нужно или не нужно платить стипендию (такие программы уже написаны на форуме - ищи...)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.