1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Общем задали вот такую задачу: Сделать с помощью способов языка программирования Pascal Информационно - Поискову Систему (ИПС): -------------------------------------------------------------------------------------------------- Добавления новых специальностей , груп та студентов; Поиск студентов за группой ,за Фамилией, за специальностью ,за средним балом; Просмотр всех существующих специальностей, груп та студентов; Удаление указанной специальности , группы студента (с безопасностью сохранения ценности данных) -------------------------------------------------------------------------------------------------- Требование к разработки ИПС:
Все операции с данными в ИПС должны быть сделаны в форме процедур или функций, которые должны быть собранные в Модуль!
Работа с ИПС должна быть реализованная в режиме диалогу, в котором надо предвидеть основные режимы роботы с данными (Добавление новых, вывод уже существующих, Искать за указанными критериями, Удаление данных, выход с системы)
ИПС реализовать у виде Файловой Системы, тоисть все основные объекты базы данных(мой комент: имеется веду не БД , мы не учили еще, а *.txt файлы) должны сохранятся у отдельных файлах, между которыми взаимодействует связь через специальные поля.
Вот такую жесть задали
Подскажите с чего начать? (я имею виду не код, а саму идею алгоритма)
Сообщение отредактировано: Димас -
--------------------
Каждый человек , которого я знаю встречаю, превосходит меня в какой нить области, и я готов у него этому учится:)
мой комент: имеется веду не БД , мы не учили еще, а *.txt файлы
именно текстовые? может, все же типизированные?
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Ты наверно немного не понимаешь о чём речь, файл типа Text и файл из твоих записей это разные вещи, типизированные файлы хранят информацию строго того типа, который ты указал. Ты не можешь записать в типизированный файл любой символ, не соответствующий типу.
Ты наверно немного не понимаешь о чём речь, файл типа Text и файл из твоих записей это разные вещи, типизированные файлы хранят информацию строго того типа, который ты указал. Ты не можешь записать в типизированный файл любой символ, не соответствующий типу.
да это тоже ясное дело.
например на Специальность я придумал такую запись - для типизированого файла!
type Specialnist = record id : integer; spec : string; status : string[1]; end;
id - это у мну будет как бы идентификатор(k+1) который никогда не повторяется spec - это как бы название! status - это для того , как сказано в ТЗ
Цитата
(с безопасностью сохранения ценности данных)
Получается так например есть у мну три записи:
[id][spec][status] 1 | test1 | t 2 | test2 | f 3 | test3 | t ................................... получается символ "t" - будет значит по условии что эта специальность существует и будет выводить и проводить с ними операции. а символ "f" - значит по условии , что это файл был удален и не будет его ни выводить ни привязывать. Тоисть получается, что если пользователь случайно удалил специальность, я сделаю пункт который может востанавливать удаленую специальность(в которой с-вол: "f")
--------------------
Каждый человек , которого я знаю встречаю, превосходит меня в какой нить области, и я готов у него этому учится:)
Эх.. начал делать пока что без модуля(потом запихну всё это дело в модуль и т.к)
Program k1;
uses Crt; var c : char; {///////////////////////////// Types /////////////////////////////////////////}
{```````````````````````````} Type Specialnist = record
id : integer; name : string ; status : string[1]; end; {```````````````````````````}
{```````````````````````````} Type Groups = record
id : integer; name : string ; status : string[1]; id_spec : integer; end; {````````````````````````````}
{````````````````````````````} Type student = record id : integer; name : string ; id_group : integer; ser_bal : integer; end; {````````````````````````````}
{//////////////////////////// Types end //////////////////////////////////////////}
{///////////////// Procedur's and Function's ////////////////////////////////////////} procedure add_spec; var f1: file of Specialnist; a: Specialnist; b: Specialnist; i: integer; begin clrscr; writeln('ADD Spec');
{ Бред пока что, но не знаю как довести его до ума } Assign(f1,'c:\Spec.txt'); reset(f1); read(f1,b);
writeln(' =',b.id,' =',b.name); end; Close(f1);
Assign(f1,'c:\Spec.txt');
Rewrite(f1); for i:=b.id to b.id do begin Writeln('введите названия специальности='); a.id:=a.id+1; a.status:='t'; readln(a.name); write(f1,a); end;
{Конец Бреда }
Close(f1); readln; end;
procedure A1; begin clrscr; repeat clrscr; writeln ('1 - Добавить Специальность,'); writeln ('2 - Добавить Групу'); writeln ('3 - Добавить Студента'); writeln ('4 - Вернутся в Главное Меню'); c := readkey; case c of '1' :add_spec; '2' :; '3' :; '4' :; end; until c = '4';
end;
{///////////////// Procedur's and Function's END////////////////////////////////////////}
{////////////////////////// Main Program /////////////////// ////////////////}
Begin repeat clrscr; writeln ('1 - Добавить Студента, Групу, Студента'); writeln ('2 - Поиск Студентов'); writeln ('3 - Просмотр Специальностей, Груп, Студентов'); writeln ('4 - Удаления специальностей, Груп, Студентов'); writeln ('5 - Выход'); c := readkey; case c of '1' : A1; '2' : ; '3' : ; '4' : ; '5' : ; end; until c = '5'; end.
Вот что не получается:
Короче я решыл не делать всё сразу, а по полочкам...
значит сейчас остановился на: 1. Добавления Специальностей
есть вопросец: Как можно добавлять специальности в файл??? и что бы при этом ранее добавленые специальности оставлялись... Как такое сделать?
--------------------
Каждый человек , которого я знаю встречаю, превосходит меня в какой нить области, и я готов у него этому учится:)
Короче хреновая затея.... посидел до вечера и уже как бы понял на будущее как делать, выше вообще маразм какой то написал.... думаю за пару дней полностью прогу напишу... код выложу
--------------------
Каждый человек , которого я знаю встречаю, превосходит меня в какой нить области, и я готов у него этому учится:)
{ if a.name<>'test2' then begin write(f1,a); //Удаления end; } write(f1,a); end; writeln('Введите названия новой Специальности '); readln(a.name); {Добавления новой специальности}
a.id:=a.id+1;
write(f1,a); {rec main to file}
Close(f1); Close(f2);
writeln('end!'); readkey; end; {''''''''''''''''''''' END add_spec ''''''''''''''''''''''''''''''''''''''''}
{''''''''''''''''''''' add_group ''''''''''''''''''''''''''''''''''''''''''} Procedure add_group; var f1,f2: file of Groups; f3 : file of Specialnist; a : Groups; b : Specialnist; i : integer; Begin
{ if a.name<>'test2' then begin write(f1,a); //Удаления end; } write(f1,a); end; writeln('Введите названия новой Групы');
readln(a.name); {Добавления group}
a.id:=a.id+1; {----- Вычитуем Специальности ------------}
Assign(f3,'c:\spec.txt'); reset(f3);
writeln('_______________________________________________________________'); writeln(' id Специальности | Названия Специальности '); writeln('_______________________________________________________________');
while not Eof(f3) do begin read(f3,b); Writeln(' ',b.id, ' ',' | ', b.name,' '); end; writeln('_______________________________________________________________');
Close(f3); {----- end -----------------}
writeln; writeln('Внимание: Если id не будет соответвоать, Запись не будет добавленая!'); writeln; writeln('К какой специальности закрепить групу ? (id)');
readln(a.id_spec);
Assign(f3,'c:\spec.txt'); reset(f3);
{ниже условия которое не будет записывать в файл если id не соответсвует!} while not Eof(f3) do begin read(f3,b);
if (a.id_spec=b.id) then write(f1,a);
end; Close(f3);
{ write(f1,a); {rec to main file group}
Close(f1); Close(f2);
writeln('end!'); readkey;
end;
{'''''''''''''''''''' END add_group '''''''''''''''''''''''''''''''''''''''}
{'''''''''''''''''''' add_student '''''''''''''''''''''''''''''''} Procedure add_student; var f1,f2: file of student; f3 : file of groups; a : student; b : groups; i : integer; Begin
{ if a.name<>'test2' then begin write(f1,a); //Удаления end; } write(f1,a); end; a.id:=a.id+1; writeln('Введите нового Студента');
readln(a.name); {Добавления student} Writeln('Введите среднюю оценку этого студента'); readln(a.ser_bal);
{----- Вычитуем groups ------------} Assign(f3,'c:\group.txt'); {Група - f3} reset(f3);
{~} writeln('________________________________________________________________________'); writeln(' id Групы | Названия Групы | Специальность Групы '); writeln('________________________________________________________________________'); {~}
while not Eof(f3) do begin read(f3,b); writeln(' ',b.id,' ',' | ', b.name,' | ',' ',b.id_spec); end;
writeln; writeln('Внимание: Если id не будет соответвоать, Запись не будет добавленая!'); writeln; writeln('К какой Групе закрепить студента ? (id)'); readln(a.id_group);
assign(f3,'c:\group.txt'); reset(f3);
{ниже условия которое не будет записывать в файл если id не соответсвует!} while not Eof(f3) do begin read(f3,b);
if a.id_group=b.id then begin a.id_spec:=b.id_spec; {ok} write(f1,a); end;
end; Close(f3);
{write(f1,a); {rec to main file студента}
Close(f1); Close(f2);
writeln('end!'); readkey;
end;
{'''''''''''''''''''' end add_student ''''''''''''''''''''''''''''''''}
{***************************** END for A1 (add) *******************************}
{**************************** A2 (dir) ************************************} {'''''''''''''''''' dir_spec ''''''''''''''''''''' } Procedure dir_spec; var f1: file of specialnist; a: specialnist; Begin clrscr; Assign(f1,'c:\spec.txt'); reset(f1);
writeln('_______________________________________________________________'); writeln(' id Специальности | Названия Специальности '); writeln('_______________________________________________________________');
while not Eof(f1) do begin read(f1,a); Writeln(' ',a.id, ' ',' | ', a.name,' '); end; writeln('_______________________________________________________________');
Close(f1); readkey; end; {''''''''''''''''''' END ''''''''''''''''''''''''''}
{'''''''''''''''''' dir_group '''''''''''''''''''''} Procedure dir_group; var f1 : file of specialnist; f2 : file of groups; a : specialnist; b : groups; I : integer; Begin clrscr; Assign(f1,'c:\spec.txt'); {Специальность - f1} reset(f1);
{~} writeln('________________________________________________________________________'); writeln(' id Групы | Названия Групы | Специальность Групы '); writeln('________________________________________________________________________'); {~}
while not Eof(f2) do begin read(f2,b); writeln(' ',b.id,' ',' | ', b.name,' | ',' ',b.id_spec);
{while not Eof(f1) do begin read(f1,a); if b.id_spec=b.id then write(a.name); end;}
end;
writeln('________________________________________________________________________'); Close(f2); Close(f1); readkey; end; {''''''''''''''''' END ''''''''''''''''''''''''''''}
{''''''''''''''''' dir_student ''''''''''''''''''''} Procedure dir_student; var f1 : file of specialnist; f2 : file of groups; f3 : file of student; a : specialnist; b : groups; v : student; Begin clrscr;
{~} writeln('________________________________________________________________________'); writeln(' id Групы | Названия Групы | Специальность Групы '); writeln('________________________________________________________________________'); {~}
{Запсиь c копии spec.txt в spec.bак} while not Eof(f1) do begin
writeln; writeln('Внимание: Если id не будет соответвоать, Запись не будет Удалена!'); writeln;
Writeln('Какого Студента Вы хотите удалить? (ID)'); Readln(b.id); {DELTE!} { Цыкляшка для удаления Студента } while not Eof(f2) do begin read(f2,a);
if a.id<>b.id then begin write(f1,a); end;
end; Close(f1); Close(f2); readkey; end;
{---------------------------------------------- END DEL_Student -----------------------}
{'''''''''''''''''''''''''''''''''''''''''''''''' END DELETE ''''''''''''''''''''}
{**************************** END for A2 (dir) ********************************}
{'''''''''''''''''''' A1 ''''''''''''''''''''''''''''''''''''''''''} procedure A1; begin clrscr; repeat clrscr; writeln ('1 - Добавить Специальность,'); writeln ('2 - Добавить Групу'); writeln ('3 - Добавить Студента'); writeln ('4 - Вернутся в Главное Меню'); c := readkey; case c of '1' :add_spec; '2' :add_group; '3' :add_student; '4' :; end; until c = '4';
end; {'''''''''''''''''''''''''''''''''' end A1 ''''''''''''''''''''''''''''''''''}
{''''''''''''''''''''''''''''''''''' A2 '''''''''''''''''''''''''''''''''''''} procedure A2; begin clrscr; repeat clrscr; writeln ('1 - Просмотр всех Специальностей'); writeln ('2 - Просмотр всех Груп'); writeln ('3 - Просмотр всех Студентов'); writeln ('4 - Вернутся в Главное Меню'); c := readkey; case c of '1' :dir_spec; '2' :dir_group; '3' :dir_student; '4' :; end; until c = '4'; end; {''''''''''''''''''''''''''''''''''' end A2 '''''''''''''''''''''''''''''''''}
{'''''''''''''''''''''''''''''''''' A3 ''''''''''''''''''''''''''''''''''} procedure A3; begin clrscr; repeat clrscr; writeln ('1 - Удаления Специальностей'); writeln ('2 - Удаления Груп'); writeln ('3 - Удаления Студентов'); writeln ('4 - Вернутся в Главное Меню'); c := readkey; case c of '1' :del_spec; '2' :del_group; '3' :del_student; '4' :; end; until c = '4'; end;
{'''''''''''''''''''''''''''''''''' END A3 '''''''''''''''''''''''''''''''''}
c := readkey; case c of '1' : A1; '2' : ; '3' : A2; '4' : A3; '5' : author; '6' :; end; until c = '6'; end.
Так запарился ,что "репа" хоть бы до утро прошла
Еще надо блин: реализовать поиск(но это вроде фигня, сделаю),Совместноя удаления(чуть попарусь и думаю сделаю), меня вот что колышит: что то не могу идшники к названиям привязать....
ну и в конце самое главное када скелет буит готов надо будет обезательно пристроить графический интерфей с окнами, что для меня убийство, никак асилить не магу
Сообщение отредактировано: Димас -
--------------------
Каждый человек , которого я знаю встречаю, превосходит меня в какой нить области, и я готов у него этому учится:)