![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Ирин |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Женский Репутация: ![]() ![]() ![]() |
Код program rgz; uses Crt; const nmenu=7; kmenu=2; yn=10; type member=record fio: string[40]; ng: byte; opl: char; zac: array[1..5] of char; ecz: array [1..3] of byte; end; var f:file of member; {переменная для файла с записями member} a:member; {переменная для доступа к записям} ft:text; i,j:integer; st:string; c:char; t:char; menu: array [1..nmenu,1..kmenu] of string; b: byte; procedure Addmember; var {c:char;} otvet:string; n:integer; b:char; k:integer; begin reset(f); rewrite(ft); seek(f,filesize(f)); repeat cls(15); writeln('Добавление нового студента'); writeln; with a do begin s_fio('Фамилия И.О.: ',a.fio); prov_nom('Номер группы: ',a.ng); prov_opl('Вид отплаты: ',a.opl); writeln('Результаты сдачи 5 зачетов: ') ; for i:=1 to 5 do begin str(i,ts); ts:='Зачет '+ ' '+ ts+ ' '; prov_zac(ts, a.zac[i]); end; write('Результаты сдачи 3 экзаменов: '); for j:=1 to 3 do begin str(j,ts); ts:='Экзамен '+ ' '+ ts+' '; prov_ecz(ts, a.ecz[j]); end; end; writeln; writeln('Продолжить ввод (Д/Н)?'); readln(otvet); write(f,a); until (otvet='Н') or (otvet='н'); close(f); close(ft); end; procedure korrect; var p:integer; otvet: string; begin cls(2); reset(f); rewrite(ft); { writeln ('КОРРЕКТИРОВКА ФАЙЛА'); writeln; } while not (eof(f)) do begin read(f,a); with a do begin write(ft,fio,' ',ng,' ',opl); writeln(fio,' ',ng,' ',opl); writeln('Исправить данные? (Д/Н)?'); readln(otvet); if (otvet='Д') or (otvet='д') then begin p:=filepos(f); seek(f,p-1); {writeln; } s_fio('фамилия: ',a.fio); prov_nom('номер группы :',a.ng); prov_opl('вид оплаты: ',a.opl); write('Результаты сдачи 5 зачетов: ') ; for i:=1 to 5 do begin str(i,ts); ts:='Зачет '+ ' '+ ts+ ' '; prov_zac(ts, a.zac[i]); end; write('Результаты сдачи 3 экзаменов: '); for j:=1 to 3 do begin str(j,ts); ts:='Экзамен '+ ' '+ ts+' '; prov_ecz(ts, a.ecz[j]); end; write(f,a); end; end; close(f); { close(ft); } readln; end; procedure ovet_1; {ответ на пункт меня 2.1} var k:byte; s:string[3]; i,j:integer; begin cls(5); assign(f,'C.dat'); rewrite(f); writeln('СПИСОК ГРУППЫ С РЕЗУЛЬТАТАМИ СДАЧИ СЕССИИ'); writeln; prov_nom('ВВЕДИТЕ НОМЕР ГРУППЫ',a.ng); while not (eof(f)) do begin read(f,a); with a do if ng=151 then begin write(ft,fio); writeln(fio); end else if ng=152 then begin write(ft,fio); writeln(fio); end; close(f); end; end; procedure Newbase; begin {Новая БД} rewrite(f); addmember; end; {/Новая БД} procedure menu_4; begin cls(5); b:=2; menu[1,2]:='Cписок группы с результатами сесси '; menu[2,2]:='Срдений балл по каждому предмету для студентов '; menu[3,2]:='Общий балл группы '; menu[4,2]:='Графики изменения средних баллов '; menu[5,2]:='Круговая диаграмма процентного соотнтшения оценок'; menu[6,2]:='Столбиковая диаграмма средних баллов '; menu[7,2]:='Выход '; kodv:=true; pk:=1; while kodv do begin ts:='ответы на запросы пользователя'; WriteTx(9,15,XnCenter(ts),3,length(ts),ts); xn:=XnCenter(menu[1,2]); ts:='Выберите нужный пункт и нажмите ENTER'; WriteTx(4,15,XnCenter(ts),24,length(ts),ts); xmn:=length(menu[1,2]); ramka(6,10,xn,10,xmn,7); Vibor(b,kodv,pk,p_m); case p_m of 1: ovet_1; { 2: 3: 4: 5: 6:} 7: esc; end; { ch:=readkey; case ch of #27: begin end;} end; end; {создание меню} procedure menu_c; begin cls(5); b:=1; menu[1,1]:='Создать файла '; menu[2,1]:='Дополнение файла '; menu[3,1]:='Корректировка файла '; menu[4,1]:='ответы запрос пользователя '; menu[5,1]:='выход '; kodv:=true; pk:=1; while kodv do begin cls(5); ts:='Меню'; xn:=XnCenter(ts); lts:=length(ts); WriteTx(8,15,xn,5,lts,ts); ts:='Выберите нужный пункт меню и нажмите ENTER'; WriteTx(4,15+blink,XnCenter(ts),24,length(ts),ts); ts:='Для возврата в основное окно нажмите ESC'; WriteTx(4,15+blink,XnCenter(ts),25,length(ts),ts); xmn:=length(menu[1,1]); ramka(0,15,XnCenter(menu[1,1]),yn,xmn,5); Vibor(b,kodv,pk,p_m); case p_m of 1:newbase; 2:addmember; 3: korrect; 4: menu_4; 5: ESC; end; { readln;} end; end; begin assign(f,'С.dat'); assign(ft,'С.txt'); OrigMode:=LastMode; zastavka(ch); if ch = #13 then begin cls(3); menu_c; end; {finish;} textmode(origmode); end. помогите найти ошибки, в процедуре корректировка из файла не читаеться фамилия, а в процедуре ответ__1 не происходит чтение из файла, все время пишет, что он не найден, может нужно создать новый файл? заранее спасибо Сообщение отредактировано: volvo - 19.04.2006 22:31 |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 19:29 |