Общем задали вот такую задачу: Сделать с помощью способов языка программирования 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: fileof 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 dobegin
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 /////////////////// ////////////////}Beginrepeat
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;
interfaceuses 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 //////////////////////////////////////////}{~}Procedure author;
procedure add_spec;
Procedure add_group;
Procedure add_student;
Procedure dir_spec;
Procedure dir_group;
Procedure dir_student;
Procedure del_spec;
Procedure del_group;
Procedure del_student;
procedure A1;
procedure A2;
procedure A3;
{~}implementation{///////////////// Procedur's and Function's ////////////////////////////////////////}{****************************************** A1 (add) *******************************}{''''''''''''''''''''''''''''''' add_spec ''''''''''''''''''''''''''''''''}procedure add_spec; {Добавления Специальности!}var
f1,f2: fileof Specialnist;
a: Specialnist;
b: Specialnist;
i: integer;
begin
clrscr;
writeln('ADD Spec');
{1}
Assign(f1,'c:\spec.txt');
Assign(f2,'c:\spec.bak');
reset(f1);
rewrite(f2);
{Запсиь c копии spec.txt в spec.bак}whilenot Eof(f1) dobegin
read(f1,a);
write(f2,a);
end;
Close(f1);
Close(f2);
{/1}{2}
Assign(f1,'c:\spec.txt');
Assign(f2,'c:\spec.bak');
rewrite(f1);
reset(f2);
whilenot Eof(f2) dobegin
read(f2,a);
{ 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: fileof Groups;
f3 : fileof Specialnist;
a : Groups;
b : Specialnist;
i : integer;
Begin
clrscr;
writeln('ADD Groups');
{1}
Assign(f1,'c:\group.txt');
Assign(f2,'c:\group.bak');
reset(f1);
rewrite(f2);
{Запсиь c копии group.txt в group.bак}whilenot Eof(f1) dobegin
read(f1,a);
write(f2,a);
end;
Close(f1);
Close(f2);
{/1}{2}
Assign(f1,'c:\group.txt');
Assign(f2,'c:\group.bak');
rewrite(f1);
reset(f2);
whilenot Eof(f2) dobegin
read(f2,a);
{ 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('_______________________________________________________________');
whilenot Eof(f3) dobegin
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 не соответсвует!}whilenot Eof(f3) dobegin
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: fileof student;
f3 : fileof groups;
a : student;
b : groups;
i : integer;
Begin
clrscr;
writeln('ADD Student');
{1}
Assign(f1,'c:\student.txt');
Assign(f2,'c:\student.bak');
reset(f1);
rewrite(f2);
{Запсиь c копии student.txt в student.bак}whilenot Eof(f1) dobegin
read(f1,a);
write(f2,a);
end;
Close(f1);
Close(f2);
{/1}{2}
Assign(f1,'c:\student.txt');
Assign(f2,'c:\student.bak');
rewrite(f1);
reset(f2);
whilenot Eof(f2) dobegin
read(f2,a);
{ 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('________________________________________________________________________');
{~}whilenot Eof(f3) dobegin
read(f3,b);
writeln(' ',b.id,' ',' | ', b.name,' | ',' ',b.id_spec);
end;
writeln('________________________________________________________________________');
Close(f3);
{----- end -----------------}
writeln;
writeln('Внимание: Если id не будет соответвоать, Запись не будет добавленая!');
writeln;
writeln('К какой Групе закрепить студента ? (id)');
readln(a.id_group);
assign(f3,'c:\group.txt');
reset(f3);
{ниже условия которое не будет записывать в файл если id не соответсвует!}whilenot Eof(f3) dobegin
read(f3,b);
if a.id_group=b.id thenbegin
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: fileof specialnist;
a: specialnist;
Begin
clrscr;
Assign(f1,'c:\spec.txt');
reset(f1);
writeln('_______________________________________________________________');
writeln(' id Специальности | Названия Специальности ');
writeln('_______________________________________________________________');
whilenot Eof(f1) dobegin
read(f1,a);
Writeln(' ',a.id, ' ',' | ', a.name,' ');
end;
writeln('_______________________________________________________________');
Close(f1);
readkey;
end;
{''''''''''''''''''' END ''''''''''''''''''''''''''}{'''''''''''''''''' dir_group '''''''''''''''''''''}Procedure dir_group;
var
f1 : fileof specialnist;
f2 : fileof groups;
a : specialnist;
b : groups;
I : integer;
Begin
clrscr;
Assign(f1,'c:\spec.txt'); {Специальность - f1}
reset(f1);
Assign(f2,'c:\group.txt'); {Група - f2}
reset(f2);
{~}
writeln('________________________________________________________________________');
writeln(' id Групы | Названия Групы | Специальность Групы ');
writeln('________________________________________________________________________');
{~}whilenot Eof(f2) dobegin
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 : fileof specialnist;
f2 : fileof groups;
f3 : fileof student;
a : specialnist;
b : groups;
v : student;
Begin
clrscr;
Assign(f1,'c:\spec.txt'); {Специальность - f1}
reset(f1);
Assign(f2,'c:\group.txt'); {Група - f2}
reset(f2);
Assign(f3,'c:\student.txt'); {Студенты - f3}
reset(f3);
{~}
writeln('__________________________________________________________________________');
writeln('id студента| Студент | Група | Специальность | Средний бал ');
writeln('__________________________________________________________________________');
{~}whilenot Eof(f3) dobegin
read(f3,v);
writeln(' ',v.id,' ',' ',v.name,' ',' ',v.id_group,' ',v.id_spec,' ',v.ser_bal);
end;
writeln('________________________________________________________________________');
Close(f2);
Close(f1);
Close(f3);
readkey;
end;
{''''''''''''''' END ''''''''''''''''''''''''''' }{''''''''''''''''''''''''''''''''''''''''''''''' DELETE '''''''''''''''''''''''''}{---------------------------------------------- DEL_SPEC -----------------------}Procedure del_spec;
Beginend;
{--------------------------------------------- END DEL_SPEC ---------------------}{---------------------------------------------- DEL_Group -----------------------}Procedure del_group;
Beginend;
{---------------------------------------------- END DEL_Group -----------------------}{---------------------------------------------- DEL_Student -----------------------}Procedure del_student;
var
f1,f2: fileof Student;
a,b: Student;
Begin
clrscr;
writeln('DEL Students');
{1}
Assign(f1,'c:\student.txt');
Assign(f2,'c:\student.bak');
reset(f1);
rewrite(f2);
{~}
writeln('________________________________________________________________________');
writeln(' id Групы | Названия Групы | Специальность Групы ');
writeln('________________________________________________________________________');
{~}{Запсиь c копии spec.txt в spec.bак}whilenot Eof(f1) dobegin{writeln('ID=',a.id,' name=',a.name,' group=',a.id_group);
writeln('---------------------------------------------------');}
read(f1,a);
writeln(' ',a.id,' ',' | ', a.name,' | ',' ',a.id_spec);
write(f2,a);
end;
writeln('________________________________________________________________________');
Close(f1);
Close(f2);
{/1}{2}
Assign(f1,'c:\student.txt');
Assign(f2,'c:\student.bak');
rewrite(f1);
reset(f2);
writeln;
writeln('Внимание: Если id не будет соответвоать, Запись не будет Удалена!');
writeln;
Writeln('Какого Студента Вы хотите удалить? (ID)');
Readln(b.id); {DELTE!}{ Цыкляшка для удаления Студента }whilenot Eof(f2) dobegin
read(f2,a);
if a.id<>b.id thenbegin
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 '''''''''''''''''''''''''''''''''}Procedure author;
Begin
ClrScr;
writeln;
Writeln(' ~\\|//~ ');
Writeln(' -(o o)- ');
Writeln(' ┌──────────-oOOOo──(_)──oOOOo───────────┐ ');
Writeln(' │ │ ');
Writeln(' │ ----------------------- │ ');
Writeln(' │ ИПС beta v1 │ ');
Writeln(' │ ----------------------- │ ');
Writeln(' │ │ ');
Writeln(' │ Автор Програмы: │ ');
Writeln(' │ │ ');
Writeln(' │ ***** Дмитрий ******* │ ');
Writeln(' │ │ ');
Writeln(' │ │ ');
Writeln(' │ Курсовая №1 В-II │ ');
Writeln(' │ │ ');
Writeln(' │ Група: ММК** │ ');
Writeln(' │ │ ');
Writeln(' │ │ ');
Writeln(' │ .oooO Oooo. │ ');
Writeln(' └─────────────( )───( )─────────────┘ ');
Writeln(' \ ( ) / ');
Writeln(' \_) (_/ ');
Readkey;
End;
{///////////////// Procedur's and Function's END////////////////////////////////////////}end.
Вот самая прога:
Program k1;
uses Crt,vbp;
{////////////////////////// Main Program /////////////////// ////////////////}Beginrepeat
clrscr;
writeln ('1 - Добавить Студента, Групу, Студента');
writeln ('2 - Поиск Студентов');
writeln ('3 - Просмотр Специальностей, Груп, Студентов');
writeln ('4 - Удаления специальностей, Груп, Студентов');
writeln ('5 - Автор(c)');
writeln ('6 - Выход');
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 отдыхать
может всё таки кто то поможет....м?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.