Общем задали вот такую задачу: Сделать с помощью способов языка программирования Pascal Информационно - Поискову Систему (ИПС): -------------------------------------------------------------------------------------------------- Добавления новых специальностей , груп та студентов; Поиск студентов за группой ,за Фамилией, за специальностью ,за средним балом; Просмотр всех существующих специальностей, груп та студентов; Удаление указанной специальности , группы студента (с безопасностью сохранения ценности данных) -------------------------------------------------------------------------------------------------- Требование к разработки ИПС:
Все операции с данными в ИПС должны быть сделаны в форме процедур или функций, которые должны быть собранные в Модуль!
Работа с ИПС должна быть реализованная в режиме диалогу, в котором надо предвидеть основные режимы роботы с данными (Добавление новых, вывод уже существующих, Искать за указанными критериями, Удаление данных, выход с системы)
ИПС реализовать у виде Файловой Системы, тоисть все основные объекты базы данных(мой комент: имеется веду не БД , мы не учили еще, а *.txt файлы) должны сохранятся у отдельных файлах, между которыми взаимодействует связь через специальные поля.
Вот такую жесть задали
Подскажите с чего начать? (я имею виду не код, а саму идею алгоритма)
мисс_граффити
10.05.2007 16:26
Цитата
мой комент: имеется веду не БД , мы не учили еще, а *.txt файлы
именно текстовые? может, все же типизированные?
Димас
10.05.2007 17:34
Цитата(мисс_граффити @ 10.05.2007 13:26)
именно текстовые? может, все же типизированные?
ну ясный "перец":-) текстовые файлы но типизированые, я это имел веду...
Tan
10.05.2007 17:51
Ты наверно немного не понимаешь о чём речь, файл типа Text и файл из твоих записей это разные вещи, типизированные файлы хранят информацию строго того типа, который ты указал. Ты не можешь записать в типизированный файл любой символ, не соответствующий типу.
Димас
10.05.2007 18:16
Цитата(Tan @ 10.05.2007 14:51)
Ты наверно немного не понимаешь о чём речь, файл типа 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")
Димас
10.05.2007 19:18
Эх
Есть какие то идеи?
Гость
11.05.2007 12:52
НЕТ никаких идей! гг
Димас
21.05.2007 20:32
блин горю, это всё надо сдать, еще отсалось 6 дней... выгонют меня в шею с универа
и нет знакомых кто бы за деньги это сделал, а старшаки не занятые...((
Хорошо, помогите хоть как то сделать "скелет" проги , ПОЖАЛУЙСТА ? ))
Димас
22.05.2007 0:03
Эх.. начал делать пока что без модуля(потом запихну всё это дело в модуль и т.к)
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. Добавления Специальностей
есть вопросец: Как можно добавлять специальности в файл??? и что бы при этом ранее добавленые специальности оставлялись... Как такое сделать?
Димас
22.05.2007 2:43
Короче хреновая затея.... посидел до вечера и уже как бы понял на будущее как делать, выше вообще маразм какой то написал.... думаю за пару дней полностью прогу напишу... код выложу
Димас
23.05.2007 1:15
Вот что за сегодняшний день удалось написать:
Это код модуоя vbp:
Unit vbp;
interface uses crt; var c : char; {///////////////////////////// Types /////////////////////////////////////////}
{```````````````````````````} Type Specialnist = record
id : integer; name : string ; end; {```````````````````````````}
{```````````````````````````} Type Groups = record
id : integer; name : string ; id_spec : integer; end; {````````````````````````````}
{````````````````````````````} Type student = record id : integer; name : string ; id_group : integer; id_spec : integer; ser_bal : integer; end; {````````````````````````````}
{//////////////////////////// Types end //////////////////////////////////////////}
{ 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.
Так запарился ,что "репа" хоть бы до утро прошла
Еще надо блин: реализовать поиск(но это вроде фигня, сделаю),Совместноя удаления(чуть попарусь и думаю сделаю), меня вот что колышит: что то не могу идшники к названиям привязать....
ну и в конце самое главное када скелет буит готов надо будет обезательно пристроить графический интерфей с окнами, что для меня убийство, никак асилить не магу
Димас
23.05.2007 1:48
Ладно, я ОФФ на дня 3 отдыхать
может всё таки кто то поможет....м?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.