Новичок и в этом деле лох ..не осуждайте заранее..........с меня благодарность любым удобным способом.ВМ,деньги на счет..
В текстовом файле хранится база отдела кадров предприятия. На предприятии N сотрудников. Каждая строка файла содержит запись об одном сотруднике: фамилия и инициалы, год рождения, оклад. Написать программу, которая должна обеспечивать: - ввод записи в файл; - удаление записи из файла; - корректировка записи; - поиск записи по фамилии; - упорядочивание файла по фамилии или по году рождения
------------------------------- может быть у кого то было подобное?? помогите пожалуйста.До завтрашнего дня нужно..Есть сам код..но пишет ошибку-а именно-"Повторно оъявленный идентификатор fio" и думаю это не последняя ошибка -------------------------------------------------------- вот сам код -------------------------------------------------------
Код(Показать/Скрыть)
Program bok; {название программы} uses crt; {подкличение модуля crt} type mass=record fio:string; {Фамилия} Year: byte; Oklad: word; end; var chi:mass; {имеет тип mass} ch,ch1:array[1..25] of mass; f:file of mass; i,m,j,k,n,nom:integer; filename:string; {для имени файла} procedure sozdanie; {процедура создания} var q:integer; begin clrscr; writeln('vvedite imya faila:'); {ввод имени файла} readln(Filename); assign(f,Filename); rewrite(f); Writeln ('vvedite kolichestvo zapisei'); {вводим количество записей} Readln (n); q:=0; for i:=1 to n do with ch[i] do begin q:=q+1; clrscr; writeln('vvedite fio ',q,'-go sotrudnika'); {заносим информацию об сотруднике } readln(fio); writeln('vvedite year ',q,'-go cotrudnika'); readln(year); writeln('vvedite Oklad '); readln(Oklad); write(f,ch[i]); end; close(f); {закрываем файл} end; procedure vvoda; {процедура ввода } begin clrscr; writeln ('vvedite imya sozdannogo faila'); {ввод имени файла} readln(filename); assign (f,filename); reset(f); i:=1; while not eof(f) do begin read(f,ch[i]); i:=i+1; end; writeln('vvedite fio'); {начинаем заносит информацию об сотруднике} readln(ch[i].fio); writeln('vvedite year '); readln(ch[i].year); writeln('vvedite oklad sotrudnika'); readln(ch[i].oklad); n:=i; close(f); {закрыли файл} rewrite(f); for i:=1 to n do write(f,ch[i]); close(f); end; procedure udalenie; {процедура удаления} var m:integer; begin clrscr; writeln ('vvedite imya sozdannogo faila'); {вводим имя файла} readln(filename); assign (f,filename); reset(f); i:=1; n:=0; while not eof(f) do begin read(f,ch[i]); i:=i+1; n:=n+1; end; writeln('vvedite nomer udaliaemoi zapisi'); {вводим номер записи для удаления} readln(m); for i:=m to n do begin {удаляем} ch[i].fio:=ch[i+1].fio; ch[i].year:=ch[i+1].year; ch[i].oklad:=ch[i+1].oklad; end; n:=n-1; close(f); rewrite(f); for i:=1 to n do write(f,ch[i]); close(f); writeln(‘zapis udalena’); readln; end; Procedure kor;{Процедура корректировки} Var F:text; Fio,str:string; Fio:string; Year:byte; Oklad:word; V:integer; Begin Writeln(‘Задайте имя файла’); Readln(fio); Assign(f,fio); Reset(f); With st do Begin Write(‘Введите фамилию и инициалы сотрудника:’);readln(str); X:=0 While not eof(f)do Begin Read(f,st); If st fio=str ther Begin Writeln(‘Введите новые данные о сотруднике:’); Write(‘Фамилия и инициалы сотрудника:’); Write(‘Год рождения:’); Write(‘Оклад:’); Fio2.:=fio; Oklad2.:=oklad; Seeklf,filepos(f)-1; Write(f,st); x:=1; End;end; Close(f); End If x=0 then begin writeln(‘Записи с такой фамилией нет!’); Readln End; End; procedure poisk; {процедура поиска} var e:string; n1,o:integer; l:real; begin writeln(' poisk po polu fio'); writeln; readln(o); clrscr; if o=1 then begin {поиск по полю фио} writeln ('vvedite imya sozdannogo faila'); readln(filename); assign (f,filename); reset(f); i:=1; n:=0; while not eof(f) do begin read(f,ch[i]); inc(i); inc(n); end; close(f); writeln('vvedite fio uchasnika'); {водим ФИО участника} readln(e); n1:=0; for i:=1 to n do if ch[i].fio=e then begin n1:=n1+1; ch1[n1]:=ch[i]; end; if n1<>0 then begin {вывод найденного участника} writeln('||'); writeln('| FIO | YEAR| OKLAD|'); writeln('||'); for i:=1 to n1 do with ch1[i] do begin writeln('|',fio:17,'|',year:9,'|',oklad:15,'|'); end; writeln(''); end else writeln('zapis ne naidena '); readln; end; procedure sortirovka; {процедура сортировка} var p:integer; begin clrscr; writeln('sortirovka po polu fio:'); writeln; readln(p); if p=1 then begin {сортировка по полю фио} writeln ('vvedite imya sozdannogo faila'); {вводим имя файла} readln(filename); assign (f,filename); reset(f); for i:=1 to n do read(f,ch[i]); close(f); for i:=1 to n-1 do for j:=i+1 to n do if ch[i].fio>ch[j].fio then {сравниваем 2 строки} begin chi:=ch[i]; {проводим перестановку} ch[i]:=ch[j]; ch[j]:=ch[i]; end; rewrite(f); for i:=1 to n do write(f,ch[i]); close(f); end; begin {тело основной программы} while True do begin {меню программы} clrscr; Writeln ('':20,' *Menu* '); Writeln ('':20,'||'); Writeln ('':20,'| 1- sozdanie novogo faila |'); Writeln ('':20,'| 2- vvod dannih |'); Writeln ('':20,'| 3- | udalenie zapisei '); Writeln ('':20,'| 4- kor|'); Writeln ('':20,'| 5- poisk|'); Writeln ('':20,'| 6- sortirovka |'); Writeln ('':20,'| 0- vihod |'); Writeln ('':20,'||'); Writeln; Writeln('vi mojete rabotat s uje sozdanim failom "sor" '); Writeln(''); Readln (m); case m of 1:sozdanie; 2:vvod; 3: udalenie; 4:kor; 5: poisk; 6: sortirovka; 0:exit; else begin Writeln('ne verno!'); readln; end; end; end; end.
Уж не знаю откуда код программы стащили, но при текущей постановке задачи данный код не подходит, т.к.: Задание:
Цитата
В текстовом файле хранится ...
А в программе объявляется типизированный файл (т.е. далеко не "текстовый"):
Цитата
f:file of mass;
--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно. -------------------- Прежде, чем задать вопрос - Правила :: FAQ :: Поиск