Реферат: Система "Посредник" - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Система "Посредник"

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 110 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

Система “Посредник” . Заключение договоров на поставку строительных материалов Введение В конце двадцатого века автоматизация всё сильнее завоёвывает все сферы человеческой деятельности . Применение вычислительной техники в разнообразных отраслях народного хозяйства призвано облегчить труд человека и уменьшить число ошибок , совершаемых при принятии решений . При построении систем , помогающих человеку , используются приёмы , изучаемые такой областью информатики , как инженерия знаний. В данном курсовом проекте реализована система “Посредник” , служащая для заключения договоров м ежду поставщиками и покупателями строительных материалов . Эта система может использоваться сотрудниками посреднических контор , работающих в этой области. Программа реализована на языке Пролог. 1. Виды услуг и режимы работы системы “Посредник” Основное пре дназначение системы “Посредник” – оказание услуг по заключение договоров между поставщиками и покупателями строительных материалов . Заключение договоров может производиться в обычном , либо в интерактивном режиме . В первом случае система заключает контракт на основе имеющейся в базе данных информации о клиентах , во втором случае система запрашивает данные у пользователя , после чего ищет необходимую информацию в базе данных и , найдя подходящие договоры , выводит их , либо при отсутствии на данный момент возмож н остей для сделки , заносит информацию о клиенте в базу данных . Кроме всех возможных вариантов договоров система выводит ещё и наиболее предпочтительные для посредника с точки зрения коммерческой выгоды. Кроме того , в системе имеются режимы просмотра и редак тирования (либо добавления ) данных по поставщикам и по покупателям , а так же просмотра и редактирования региональной принадлежности фирм-производителей . Если во время работы с программой в базы данных были внесены какие-либо изменения , то при выходе из пр о граммы при согласии пользователя будет произведено сохранение изменений. 2. Концептуальная модель знаний , необходимых для оказания услуг Концептуальная модель предметной области представляется множеством классов объектов с заданными на нём отношениями и о перациями . Классы объектов характеризуются некоторым набором атрибутов . В данном курсовом проекте классами объектов являются Спрос , Предложение и Договор . Класс , Спрос , имеет следующие атрибуты : порядковый номер , название фирмы , название товара , производи тель , желаемой партии товара , цена за единицу товара и срок поставки . У класса Предложение , имеются такие же атрибуты , за исключением того , что вместо желаемой партии товара здесь присутствуют минимальная партия и максимальное количество товара , имеющееся у поставщика. Представим объекты классов Спрос и Предложение в виде таблиц : Таблица объектов класса Спрос № Фирма Товар Производитель Кол-во Цена , $ Срок поставки 1 ДСК -3 Кирпич облицовочный российская 1000 0.33 6 2 Мосжилстрой Керамзит европейская 30 22 8 3 Геракл Арматура стальная СНГ 15 51 10 4 МВМ Асбест строительный украинская 70 20 7 5 АТС -50 Кабель АВВГ российская 1000 2 18 6 СМУ -35 Керамзит российская 120 20 6 7 РЭУ -22 Стекло оконное белорусская 500 3 10 8 Атлант Обои моющиеся Vertex 1000 4 14 9 Sunpride Кирпич облицовочный московская 800 0.4 10 10 Hausbauer Плитка облицовочная итальянская 1000 11 7 11 СМУ -28 Ванна чугунная европейская 40 350 20 12 Протон Кабель АВВГ московская 1000 21 4 Таблица объектов класса Предложение № Фирм а Продукция Производитель Мин . партия Макс . партия Цена , $ Срок поставки 1 Стройсервис Кирпич облицовочный 2-й кирпичный 120 900 0.25 7 2 Орион Керамзит Электроизолит 10 50 20 4 3 Салют Арматура стальная ММЗ 1 20 50 8 4 Стройсервис Кабель АВВГ Иркутс ккабель 900 9000 1 11 5 Байрамикс Асбест строительный Стройперлит 30 100 15 9 6 Всё для дома Кабель АВВГ ММЗ 900 9000 1 12 7 Спецстрой Стекло оконное Серп и молот 50 700 2 10 8 Астра Обои моющиеся Vertex 1000 9000 3 11 9 Глобус Асбест строительный Дон ецкбетон 10 200 15 6 10 Орбита Кирпич облицовочный Мосбетон 2000 9000 0.3 4 11 Всё для дома Плитка облицовочная Marlit 1000 8000 10 6 12 Ункомтех Кабель АВВГ Иркутсккабель 700 1200 0.9 8 13 Электросталь Арматура стальная ММЗ 7 20 65 3 14 Arkon Паралон жидкий Interchemall 3000 9000 10 10 15 Worms Ванна стальная Nord Star 35 1000 300 18 Концептуальная схема предметной области представлена на рис .1. и рис .2. Рис .1. Концептуальная схема предметной области (спрос и предложение ). Рис .2. Концептуальная схема предметной области (договор ). 3. Представлени е данных о клиентах Данные о клиентах в системе “Посредник” представлены в виде стандартных баз данных (database) языка Пролог . Поскольку в Прологе имеется довольно мощный механизм работы с такими базами данных , реализовать на нём программу типа системы “П осредник” намного проще и естественней , чем на алгоритмических языках (типа Pascal или C). Общий вид записей в базах данных следующий : поставщик (N,F,T,P,M,X,C,D) покупатель (N,F,T,P,K,C,D) где N - номер записи , F - фирма-поставщик , T – наименование товара, P – производитель товара , M – минимальная партия , X – имеющаяся в наличии партия , С – цена за единицу товара , D – срок поставки , K – нужное покупателю количество товара . N, M, X, K, D – целочисленные , F, T, P – строковые , С – действительная. База данных п о поставщикам записана в файле kurs1.dat, по покупателям – в kurs2.dat. 4. Сетевая модель представления знаний и её использование для получения справочной информации и формирования вариантов договора Сетевая модель реализуется с помощью так называемых сем антических сетей . В семантической сети имена некоторых объектов , процессов , действий , сущностей и их классов ассоциируются с узлами , а отношения между ними ассоциируются с дугами , соединяющими узлы . Сетевую модель можно представить в виде следующей констр у кции : S= , где I – множество информационных единиц , С 1 ,С 2 ,…,С n – множество типов связей между информационными единицами , Г – отображение , задающее связи (из заданного мн ожества типов связей ) между информационными единицами , входящими в I. Классифицирующие сети (использованные в данной курсовой ), на ряду с функциональными , являются одним из классов однородных (у которых дуги только одного типа ) сетей . Классифицирующие сети строятся на основе родовидового отношения sup , заданного на множестве классов объектов . Это отношение интерпретируется следующим образом : если K i sup K j , то в любой момент времени t каждый объект класса K i является объектом класса K j , т.е . K j является под классом K i (или K i является подклассом K j ). Конкретные объекты , как правило , связываются с классами низшего уровня иерархии отношением принадлежности isa . Запись k i isa K означает , что объект k i является элементом класса K. В данном курсовом проекте класси фицирующая сеть используется для определения региональной принадлежности производителя строительных материалов . Благодаря этому при заключении договоров покупателю не обязательно задавать конкретного производителя , а можно задать только регеон расположени я тех производителей , продукция которых покупателю кажется наиболее предпочтительной . В системе “Посредник” имеется так же возможность получения информации о принадлежности какого-либо производителя региону путём просмотра связей в классифицирующей сети , а так же имеются режимы корректировки и дополнения этой сети. Графическое представление классифицирующей сети показано на рис .3. Програмно классифицирующая сеть реализована в виде с тандартных баз данных Пролога (database) и выглядит следующим образом : sup(K i ,K j ) где K i и K j – класс и его подкласс соответственно. Классифицирующая сеть находится в файле web.dat. 5. Критерии выбора наиболее предпочтительного варианта договора В данном курсовом проекте наиболее предпочтительный договор выбирается в пользу посредника . Выгода посредника состоит в получении наибольшей прибыли в кратчайшие сроки . Доход посредника обычно составляет некоторый комиссионный процент от заключённой сделки , поэтом у наиболее выгодны контракты , в которых произведение количества товара , необходимое покупателю на цену этого товара , назначенную продавцом , будет максимальным . Это и будет первым критерием выбора наиболее предпочтительного договора . Вторым критерием , как бы ло сказано выше , будет являться кратчайший срок поставки. В начале программа выбирает предпочтительные договоры по первому критерию . Если таких договоров получится несколько , то программа выбирает из них тот , у которого срок поставки меньше (т.е . реализует ся второй критерий ). Например , пусть имеется три возможных договора для фирмы “АТС -50” , которой требуется партия кабеля АВВГ российского производителя объёмом 1000 единиц по цене 2$ за единицу в сроки не более 18 дней : № Фирма Товар Производитель Мин . пар тия. Кол-во Цена Сроки 4 Стройсервис Кабель АВВГ Иркутсккабель 900 9000 1 11 6 Всё для дома Кабель АВВГ ММЗ 900 9000 1 12 12 Ункомтех Кабель АВВГ Иркутсккабель 700 1200 0.9 8 При применении первого критерия выбираются фирмы “Стройсервис” и “Всё для до ма” , поскольку цена , по которой они предлагают товар , больше , чем у фирмы “Уникомтех” и следовательно доход посредника будет больше . На втором этапе из этих двух фирм выбирается “Стройсервис” , поскольку у неё меньше срок поставки . 6. логическая модель пре дставления знаний на языке многосортного исчисления предикатов и на языке Пролог Логическая модель – это описание предметной области на каком-либо логическом языке . Одним из таких логических языков является многосортное исчисление предикатов . При представл ении логических моделей на этом языке классы сущностей предметной области интерпретируются , как имена сортов . Для примера введём следующие имена сортов : Договор , Поставщик , Покупатель , Продукция , Производитель , Количество , Цена , Срок , Тип _Произв , а так же следующие функции и предикаты : пост :Договор Поставщик , покуп :Договор Покупатель , прод :Договор Продукция , произв :Договор Производитель , кол :Договор Количество , цена : Договор Цена , срок :Договор Срок тип _произв : Производитель Тип _Произв российский : Тип _Произв , европейский : Тип _Произв :Количество Количество T :Количество Количество T Выражения 1-4 сотавляют сигнатуру и имеют следующий смысл : Задаёт несколько функций , например прод (продукция ), которые будучи применимы к объекту е сорта Договор , дают например продукцию прод ( е ), участвующую в операции е . Задаёт функцию , значениями которой служат типы производителя. Задаёт константы , принадлежащие сорту Тип _Произв. Задаёт двухместные предикаты на объектах сорта Количество. Сигнатура – это множество функ ций вида f : A 1 A 2 … A n B, где A 1 , A 2 ,… ,A n – арг ументы , B – значение функции . Множества аргументов и значений функций образуют соответственно сорта A и B. В частном случае , если B=T, причём T= 1,0 – особый сорт , то сигнатура имеет вид P : A 1 A 2 … A n T, причём P называют предикатом. Сигнатура задает структурные связи между понятиями предметной области , представленными предикатами и функциями . Логические связи между этими понятиями задаются формулами , которые записываются в сигнатуре . Структурные и логические связи выражают некоторое знание о предметной области . Таким образом , сигнатура формально представляет одну часть знания о предметной области , а формулы , записанные в этой сигнатуре , представляют другую часть знания. Графическое представление сигнатуры показано на рис .4, а модельной структуры – на рис .5. Рис .4. Графическое представление сигнатуры Логическая модель в Прологе представляется в виде предикатов и баз данных database. Например : database – договор дог (Поставщик , Покупатель ) Функцию пост (поставщик ) можно реализовать так пост (N): – дог ( Покупатель,Поставщик ), N=Поставщик. Функцию можно представить следующим образом : (Количество 1,Количество 2): – Количество 1<= Количество 2. 7. Организация диалога с пользователем При загрузке система “Посредник” выводит главное меню , в котором представлены все режимы работы программы . Каждый режим выбирается посредством нажатия цифровой клавиши . Система меню представлена многоуровневой иерархической структурой , т.е . у многих режимов есть свои подменю. В программе реализованы обычные для такого типа программ режимы просмотра данных , их коррекции и удаления , наряду с обычным имеется интерак тивный режим работы . Если в базы данных были внесены какие-либо изменения , то при выходе из программы система выведет запрос о необходимости сохранения изменений , сопровождаемый звуковым сигналом. Схема организации диалога представлена на рис .6. заключение При написании курсового проекта были использованы разнообразные модели представления знаний , изучаемые инженерией знаний . Система “Посредник” программно реализована на языке Пр олог в среде Turbo Prolog 2.0. Приложение Текст программы “посредник” /*==========================================================*/ /* Курсовой проект по дисциплине "Инженерия знаний " */ /* Система "Посредник " */ /* Автор : Данченков А.В ., гр . ИИ -1-95 */ /*==========================================================*/ code=8850 domains Фирма , Товар , Произв ,Str=string Int,N,Парт,Кол _во,Сроки =integer Цена =real /* Основные и служебные базы данных */ database - поставщик поставщик (integer,Фирма,Товар,Прои зв,Парт,Кол _во,Цена,Сроки ) database - покупатель покупатель (N,Фирма,Товар,Произв,Парт,Цена,Сроки ) database - sup sup(Str,Str) database - contract contract(integer,integer) database - best best(integer,integer,integer,integer) database - best2 best2(integer,integer,integer,integer) database - flag flag(Int) predicates start view(Int) autoload working(Int) main_menu correct(Int) interact(integer) warning(integer) form_best(integer,integer,integer,integer) form_best2(integer) f_b2(integer,integer,integer,integer) fb1(integer,integer,integer,integer) fb2(integer,integer,integer,integer) del(Int) del_sup(string) ins_sup(string) view_sup(string) sve save_bd ask error io_error ok repeat checkcontr(integer) all_contr act print_contract cmp_name(string,string) find_web(Str,Str) prn(integer,string) goal start. clauses /* Основная процедура */ start:- makewindow(1,26,94," СИСТЕМА ПОСРЕДНИК ",0,0,25,80), clearwindow, autoload, main_menu. /* Процедура авт оматической загрузки баз данных */ autoload:- retractall(_, поставщик ), existfile("kurs1.dat"), consult("kurs1.dat", поставщик ), retractall(_, покупатель ), existfile("kurs2.dat"), consult("kurs2.dat", покупатель ), retractall(_,sup), existfile("web.da t"), consult("web.dat",sup), cursor(21,30), write("* Базы загружены *"). autoload:- makewindow(2,74,79," ОШИБКА ",6,18,8,40), cursor(2,10), write("Нет базы на диске "), sound(70,294), removewindow, !. /* Главное меню */ main_menu:- repeat, cursor(7,0), write(" 0 - О системе ... "),nl, write(" 1 - Корректировка данных "),nl, write(" 2 - Уничтожение записей "),nl, write(" 3 - Просмотр баз данных "),nl, write(" 4 - Заключение договоров "),nl, write(" 5 - Интерактивный режим "),nl, write(" 6 - Выход из программы "),nl, write(" =>"), readint(C), clearwindow, working(C), clearwindow, C = 6, retractall(_), removewindow. /* Вывод данных о создателе программы */ working(0):- makewindow(3,27,30," О системе ...",0,0,25,80), nl,nl, write(" Ин фо pмационно-сп pавочная система "), nl,nl, write(" Посредник "), nl,nl,nl,nl, write(" Программа составлена в среде "), nl, write(" TURBO-PROLOG v.2.0."), nl,nl,nl, write(" авто p: Данченков А . В ."), nl,nl, write(" МИРЭА , г p. ИИ -1-95 ( С ) 1997 г . "), nl, s ound(5,220), cursor(22,26), write(" Нажмите на любую клавишу "), readchar(_), removewindow,!. /*Процедура вывода меню корректировки данных */ working(1):- makewindow(4,26,48," Ко pp ектировка данных ",0,0,25,80), sound(5,220), repeat, nl, nl, cursor(9,0), write(" 1 - Изменение данных по поставщикам "),nl, write(" 2 - Изменение данных по покупателям "),nl, write(" 3 - Добавление данных по поставщикам "),nl, write(" 4 - Добавление данных по покупателям "),nl, write(" 5 - Выход в главное меню " ) ,nl, write(" =>"), readint(X), clearwindow, X>0,X<=5, correct(X), clearwindow, X=5,!, removewindow. /* Процедура вывода меню уничтожения данных */ working(2):- makewindow(5,48,107,"Уничтожение записей ",0,0,25,80), sound(5,220), repeat, curso r(7,0), write(" 1 - Удаление из базы данных поставщиков "),nl, write(" 2 - Удаление из базы данных покупателей "),nl, write(" 3 - Удаление из классифицирующей сети "),nl, write(" 4 - Выход "),nl, write(" => "), readint(I), clearwindow, I>0,I<=4, del(I), clearwindow, I=4,!, removewindow. /* Процедура вывода меню просмотра базы данных */ working(3):- makewindow(6,30,26,"Просмот p баз данных ",0,0,25,80), sound(5,220), repeat, nl, nl, cursor(7,0), write(" 1 - Просмотр базы данных по по ставщикам "),nl, write(" 2 - Просмотр базы данных по покупателям "),nl, write(" 3 - Просмотр связей в классифицирующей сети "),nl, write(" 4 - Выход в главное меню " ),nl, write(" =>"), readint(X), clearwindow, X>0,X<=4, view(X), clearwindow, X=4,!, removewindow. /* Вызов процедуры , выводящей контракты */ working(4):- retractall(_,best), retractall(_,best2), all_contract,!. /* Процедура вывода меню интерактивного режима */ working(5):- makewindow(4,26,48,"Заключение договоров в интерактивн ом режиме ",0,0,25,80), sound(5,220), repeat, nl, nl, cursor(9,0), write(" 1 - Поиск поставщика "),nl, write(" 2 - Поиск покупателя "),nl, write(" 3 - Выход "),nl, write(" =>"), readint(X), clearwindow, X>0,X<=3, interact(X), clearwindow, X=3,!, removewindow. /* Процедура выхода из программы */ working(6):-flag(1),retract(flag(1)),save_bd,!. working(6). working(_):- makewindow(16,74,79,"ОШИБКА ВВОДА ",6,18,8,40), nl, write(" Введите число от 0 до 6,"),nl, write(" соответствующее выбр анному пункту "),nl,nl,nl, write(" Нажмите на любую клавишу "), sound(20,494), sound(30,392), readchar(_), removewindow. /* Процедуры просмотра баз данных */ view(1):- makewindow(16,31,26,"Просмот p базы данных по поставщикам ",0,0,25,80), write("|=================================================================|"),nl, write("| ПОСТАВЩИКИ |"),nl, write("|=================================================================|"),nl, write("| | | | | Мин . | | | |"),nl, write("|No| Фирма | Товар |Пр оизводитель | партия | Кол-во |Цена |Д |"),nl, write("|=================================================================|"),nl, поставщик (N,Firm,Tov,Proizv,Min,Kol,Price,Srok), cursor(Z,_), cursor(Z,1),write(N), cursor(Z,3),write("¦ ",Firm), cursor(Z,16), write("¦ ",Tov), cursor(Z,36),write("¦ ",Proizv), cursor(Z,50),write("¦ ",Min), cursor(Z,59),write("¦ ",Kol), cursor(Z,68),write("¦ ",Price), cursor(Z,73),write("¦ ",Srok), cursor(Z,0),write("¦ "), cursor(Z,76),write("¦ "), nl, fail. view(1):- write(" |==================================================================|"), nl, cursor(22,26), write("Нажмите на любую клавишу "), readchar(_), removewindow. view(2):- makewindow(16,31,26,"Просмот p базы данных по покупателям ",0,0,25,80), write("|=================================================================|"),nl, write("| ПОКУПАТЕЛИ |"),nl, write("|=================================================================|"),nl, write("| | | | | Требуемая | | |"),nl, write("|No| Фирма | Товар | Производитель | партия |Цена |Д |"),nl, write("|=================================================================|"),nl, покупатель (N,Firm,Tov,Proizv,Part,Price,Srok), cursor(Z,_), cursor(Z,1),write(N), cursor(Z,4),write("¦ ",Firm), cursor(Z,20),write(" ¦ ",Tov), cursor(Z,42),write("¦ ",Proizv), cursor(Z,57),write("¦ ",Part), cursor(Z,67),write("¦ ",Price), cursor(Z,72),write("¦ ",Srok), cursor(Z,0),write("¦ "), cursor(Z,76),write("¦ "), nl, fail. view(2):- write("|==================================================================|"), nl, cursor(22,26), write("Нажмите на любую клавишу "), readchar(_), removewindow. view(3):- makewindow(16,31,26,"Просмот p связей в классифицирующей сети ",0,0,25,80), nl, nl, view_sup("производитель "), cursor(21,26), write(" Просмотр закончен "),nl, cursor(22,26), write("Нажмите на любую клавишу "), readchar(_), removewindow,!. view(_). /* Процедуры коррекции данных в базах данных */ correct(1):- makewindow(4,26 ,48,"Изменение данных о поставщках ",0,0,25,80), nl, write(" Введите порядковый номер поставщика : "),readint(X),nl, поставщик (X,Firm,Tov,Proizv,Min,Kol,Price,Srok), clearwindow,nl, write(" Порядковый номер поставщика : "),write(X),nl, write(" Фирма : "),write(Firm),nl, write(" Товар : "),write(Tov),nl, write(" Производитель : "),write(Proizv),nl, write(" Минимальная партия : "),write(Min),nl, write(" Колличество на складе : "),write(Kol),nl, write(" Цена за единицу товара : "),write(Price),nl, write(" Сроки поставки : "),write(Srok),nl, nl,nl,nl, write(" Введите название фирмы : "),readln(Firm1), write(" Введите название товара : "),readln(Tov1), write(" Введите производителя : "),readln(Proizv1), write(" Введите минимальную партию : "),re adInt(Min1), write(" Введите колличество на складе : "),readInt(Kol1), write(" Введите цену за единицу товара : "),readreal(Price1), write(" Введите сроки поставки : "),readInt(Srok1),nl, X1=X, retract(поставщик (X,Firm,Tov,Proizv,Min,Kol,Price,Srok)), assertz(поставщик (X1,Firm1,Tov1,Proizv1,Min1,Kol1,Price1,Srok1)), !, ins_sup(Proizv1), assert(flag(1)), removewindow. correct(2):- makewindow(4,26,48,"Изменение данных о покупателях ",0,0,25,80), nl, write(" Введите порядковый номер покупателя : "),readint(X),nl, покупатель (X,Firm,Tov,Proizv,Part,Price,Srok), clearwindow,nl, write(" Порядковый номер покупателя : "),write(X),nl, write(" Фирма : "),write(Firm),nl, write(" Товар : "),write(Tov),nl, write(" Производитель : "),write(Proizv),nl, write(" Необходимая партия : "),write(Part),nl, write(" Цена за единицу товара : "),write(Price),nl, write(" Сроки поставки : "),write(Srok),nl, nl,nl,nl, write(" Введите название фирмы : "),readln(Firm1), write(" Введите название товара : "),readl n(Tov1), write(" Введите производителя : "),readln(Proizv1), write(" Введите необходимую партию : "),readInt(Part1), write(" Введите цену за единицу товара : "),readreal(Price1), write(" Введите сроки поставки : "),readInt(Srok1),nl, X1=X, retract(п окупатель (X,Firm,Tov,Proizv,Part,Price,Srok)), assertz(покупатель (X1,Firm1,Tov1,Proizv1,Part1,Price1,Srok1)), ins_sup(Proizv1), !, assert(flag(1)), removewindow. correct(3):- makewindow(9,26,48,"Добавление данных о поставщиках ",0,0,25,80), repeat, nl, write(" Введите порядковый номер поставщика : "),readint(K),nl, write(" Введите название фирмы : "),readln(F), write(" Введите название товара : "),readln(T), write(" Введите производителя : "),readln(P), write(" Введите минимальную парт ию : "),readInt(M), write(" Введите колличество на складе : "),readInt(Kl), write(" Введите цену за единицу товара : "),readreal(Pr), write(" Введите сроки поставки : "),readInt(S),nl, N1=K, Firm=F,Tov=T,Proizv=P, Min=M,Kol=Kl, Price=Pr,Srok=S, ass ertz(поставщик (N1,Firm,Tov,Proizv,Min,Kol,Price,Srok)), ins_sup(Proizv), ask,!, assert(flag(1)), removewindow. correct(4):- makewindow(9,26,48,"Добавление данных о покупателях ",0,0,25,80), repeat, nl, write(" Введите порядковый номер покупателя : "),readint(K),nl, write(" Введите название фирмы : "),readln(F), write(" Введите название товара : "),readln(T), write(" Введите производителя : "),readln(P), write(" Введите необходимую партию : "),readInt(M), write(" Введите цену за единицу товара : "),readreal(Pr), write(" Введите сроки поставки : "),readInt(S),nl, N1=K, Firm=F,Tov=T,Proizv=P, Part=M, Price=Pr,Srok=S, assertz(покупатель (N1,Firm,Tov,Proizv,Part,Price,Srok)), ins_sup(Proizv), ask,!, assert(flag(1)), removewindow. correct (_). /* Вспомагательные процедуры удаления данных */ del(1):- makewindow(5,48,107,"Удаление данных о поставщках ",0,0,25,80), nl, write(" Введите порядковый номер поставщика : "),readint(X),nl, поставщик (X,Firm,Tov,Proizv,Min,Kol,Price,Srok), retrac t(поставщик (X,Firm,Tov,Proizv,Min,Kol,Price,Srok)), assert(flag(1)), ok, !, removewindow. del(1):- error, removewindow,!. del(2):- makewindow(5,48,107,"Удаление данных о покупателях ",0,0,25,80), nl, write(" Введите порядковый номер покупателя : "),readint(X),nl, покупатель (X,Firm,Tov,Proizv,Part,Price,Srok), retract(покупатель (X,Firm,Tov,Proizv,Part,Price,Srok)), assert(flag(1)), ok, !, removewindow. del(2):- error, removewindow,!. del(3):- makewindow(5,48,107,"Удаление из классифи цирующей сети ",0,0,25,80), nl, write(" Введите удаляемого производителя /регеон : "),readln(S),nl, del_sup(S), assert(flag(1)), ok, !, removewindow. del(3):- error, removewindow,!. del(_). /* Процедура запроса на окончание ввода в correct(3) и correct(3) */ ask:- makewindow(10,43,120,"Вопрос ",6,18,8,40),nl,nl, write(" Продолжить процесс ввода данных ? "),nl,nl, write(" [Д ]а /[Н ]ет "), readchar(Ch), removewindow, clearwindow, Ch='Н ',!. /* Вывод запроса о сохранении изменённых баз данных */ save_bd:- makewindow(17,74,79,"Сохранение изменений ",6,18,8,40),nl, write(" Сохранить произведённые "),nl, write(" изменения на диске ?"),nl,nl, write(" [Д ]а /[Н ]ет "), sound(20,494), sound(30,392), readchar(Ch), removewindow, clearwindow, Ch='Д ',!,sve. save_bd. /* Сохранение данных на диске */ sve:-save("kurs1.dat",поставщик ), save("kurs2.dat",покупатель ), save("web.dat",sup),!. sve:-io_error,removewindow. /* Процедуры вывода сообщений об ошибках */ error:- makewindow(15,74 ,79,"ОШИБКА ",6,18,8,40), cursor(2,16), write("ОШИБКА "),nl,nl, write(" Нажмите на любую клавишу "), sound(70,294), readchar(_), removewindow, !. io_error:- makewindow(16,74,79,"ОШИБКА ",6,18,8,40), cursor(2,7), write("Ошибка ввода /вывода "),nl,nl, write(" Нажмите на любую клавишу "), sound(70,294), readchar(_), removewindow. /* Процедура вывода сообщения об успешном завершении данной операции */ ok:- makewindow(17,27,90,"ОК ",6,18,8,40), cursor(2,7), write(" ОПЕРАЦИЯ ВЫПОЛНЕНА "),nl,nl, wr ite(" Нажмите на любую клавишу "), readchar(_), removewindow. /* Процедура repeat */ repeat. repeat:- repeat. /* Процедура обнаружения связей по классифицирующей сети */ cmp_name(Proizv,Proizv). cmp_name(Proizv,Proizv1):- find_web(Proizv,Proizv1). find_web(X,Y):-sup(X,Y). find_web(X,Y):-sup(X,Z),find_web(Z,Y). /* Процедура обнаружения всех возможных контрактов */ all_contract:- покупатель (N,_,Tov,Proizv,Part,Price,Srok), поставщик (N1,_,Tov,Proizv1,Min1,Kol1,Price 1,Srok1), cmp_name(Proizv,Proizv1), Part>=Min1,Part<=Kol1,Price>=Price1,Srok>=Srok1, assertz(contract(N,N1)), assert(best(N,0,0,0)), assert(best2(N,0,0,1000)), fail. all_contract:-print_contract. /* Процедуры вывода на экран всех возможных контра ктов */ print_contract:- makewindow(16,31,26,"Все возможные контракты ",0,0,25,80), nl,nl, покупатель (N,Firm,_,_,_,_,_), checkcontr(N), prn(N,Firm), fail. print_contract:- retractall(_,contract), removewindow. prn(N,Firm):- cursor(1,1), write("Для фирмы : ",Firm), nl, write("|=================================================================|"),nl, write("| | | | | Мин . | | | |"),nl, write("|No| Фирма | Товар |Производитель | партия | Кол-во |Цена |Д |"),nl, write("|======================== =========================================|"),nl, contract(N,N1), поставщик (N1,Firm1,Tov1,Proizv1,Min1,Kol1,Price1,Srok1), cursor(Z,_), cursor(Z,1),write(N1), cursor(Z,3),write("¦ ",Firm1), cursor(Z,16),write("¦ ",Tov1), cursor(Z,36),write("¦ ",Proizv1), cursor(Z,50),write("¦ ",Min1), cursor(Z,59),write("¦ ",Kol1), cursor(Z,68),write("¦ ",Price1), cursor(Z,73),write("¦ ",Srok1), cursor(Z,0),write("¦ "), cursor(Z,76),write("¦ "), nl, покупатель (N,_,_,_,Part,_,_), retract(contract(N,N1)), Cs= Part*Price1, form_best(N,N1,Cs,Srok1), form_best2(N), fail. prn(N,_):- write("|===================================================================|"), nl, best2(N,Np,_,_), поставщик (Np,Firm,_,_,_,_,_,_),nl, write("Наиболее предпочтительный "),nl, write("контракт с фирмой : ",Firm),nl, cursor(22,26), write("Нажмите на любую клавишу "), readchar(_), clearwindow,!. /* Проверяет , есть ли контракты */ checkcontr(N):-contract(N,_). /* Процедура формирования наиболее предпочтительного контракта */ form_best(N,Np,S,Srok):- Na=N, best(Na,Np1,S1,Srok1),S=S1, assertz(best(Na,Np,S,Srok)),!. form_best(N,Np,S,Srok):- Na=N, best(Na,Np1,S1,Srok1),S>S1,fb1(Na,Np,S,Srok), assertz(best(Na,Np,S,Srok)),!. form_best(_,_,_,_). fb1(N,_,_,_):- retrac t(best(N,_,_,_)),fail. fb1(_,_,_,_). form_best2(N):- best(N,Np,S,Srok),f_b2(N,Np,S,Srok),fail. form_best2(_). f_b2(N,Np,S,Srok):- Na=N, best2(Na,Np1,_,Srok1),Srok1>Srok, fb2(Na,Np,S,Srok), assertz(best2(Na,Np,S,Srok)),!. f_b2(_,_,_,_). fb2(N,_,_,_):- retract(best2(N,_,_,_)),fail. fb2(_,_,_,_). /* Процедуры заключения договоров в интерактивном режиме */ interact(1):- makewindow(9,26,48,"Поиск поставщика ",0,0,25,80), nl, write(" Введите название фирмы : "),readln(F), write(" Вв едите название товара : "),readln(T), write(" Введите производителя : "),readln(P), write(" Введите необходимую партию : "),readInt(M), write(" Введите цену за единицу товара : "),readreal(Pr), write(" Введите сроки поставки : "),readInt(S),nl, N=0, Firm=F,Tov=T,Proizv=P, Part=M, Price=Pr,Srok=S, assertz(покупатель (N,Firm,Tov,Proizv,Part,Price,Srok)), removewindow, поставщик (N1,_,Tov,Proizv1,Min1,Kol1,Price1,Srok1), cmp_name(Proizv,Proizv1), Part>=Min1,Part<=Kol1,Price>=Price1,Srok>=Srok1, assert(flag(2)), assertz(contract(N,N1)), assert(best(N,0,0,0)), fail. interact(1):-flag(2),print_contract, retract(покупатель (0,Firm,Tov,Proizv,Part,Price,Srok)), retract(flag(2)),!. interact(1):- warning(N), покупатель (0,Firm,Tov,Proizv,Part ,Price,Srok), assertz(покупатель (N,Firm,Tov,Proizv,Part,Price,Srok)), ins_sup(Proizv), retract(покупатель (0,Firm,Tov,Proizv,Part,Price,Srok)), assert(flag(1)), !. interact(1):- retract(покупатель (0,Firm,Tov,Proizv,Part,Price,Srok)),!. interact(2):- makewindow(9,26,48,"Поиск покупателя ",0,0,25,80), nl, write(" Введите название фирмы : "),readln(F), write(" Введите название товара : "),readln(T), write(" Введите производителя : "),readln(P), write(" Введите минимальную партию : "),readInt(M), write(" Введите имеющуюся партию : "),readInt(I), write(" Введите цену за единицу товара : "),readreal(Pr), write(" Введите сроки поставки : "),readInt(S),nl, N=0, Firm=F,Tov=T,Proizv=P,Min=M, Kol=I, Price=Pr,Srok=S, assertz(поставщик (N,Firm,Tov,Pr oizv,Min,Kol,Price,Srok)), removewindow, покупатель (N1,_,Tov,Proizv1,Part1,Price1,Srok1), cmp_name(Proizv1,Proizv), Part1>=Min,Part1<=Kol,Price1>=Price,Srok1>=Srok, assert(flag(2)), assertz(contract(N1,N)), assert(best(N1,0,0,0)), fail. interac t(2):-flag(2),print_contract, retract(поставщик (0,Firm,Tov,Proizv,Min,Kol,Price,Srok)), retract(flag(2)),!. interact(2):- warning(N), поставщик (0,Firm,Tov,Proizv,Min,Kol,Price,Srok), assertz(поставщик (N,Firm,Tov,Proizv,Min,Kol,Price,Srok)), ins_sup(Proizv), retract(поставщик (0,Firm,Tov,Proizv,Min,Kol,Price,Srok)), assert(flag(1)), !. interact(2):- retract(поставщик (0,Firm,Tov,Proizv,Min,Kol,Price,Srok)),!. interact(_). /* Вывод предупреждения о невозможности заключения договора */ warning(N):-makewindow(7,49,113,"Предупреждение ",5,10,12,60), sound(5,220),nl,nl, write(" На данный момент заключение контракта невозможно "),nl, write(" Поместить данные в базу данных "),nl, write(" для последующей обработки ?"),nl,nl, write(" [Д ]а /[Н ]е т "),nl, readchar(Ch), removewindow, Ch='Д ', write(" Введите порядковый номер фирмы : "),readInt(N),nl, !. /* Удаление элемента из классифицирующей сети */ % В середине цепочки del_sup(S):- sup(S,X), del_sup(X),fail. % В конце цепочки del_sup(S):- sup(_,S), retract(sup(_,S)),fail. del_sup(_). /* Определение необходимости добавления и добавление */ /* элемента в классифицирующую сеть */ ins_sup(S):-sup(_,S),!. ins_sup(S):-sup(" производитель ",S),!. ins_sup(S):- write("Введите региональную принадлежность объекта _ ",S,"_ :"), readln(M),nl, assertz(sup(M,S)),assert(flag(1)),ins_sup(M),!. /* Вывод на печать связей в классифицирующей сети */ view_sup(S):- sup(S,M),write(S," -> ",M),write("; "), view_sup(M),nl,fail. view_s up(_):- readchar(_).
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
Чтобы сэкономить на гонораре, от Джейсона Стэйтема уже десять лет скрывают, что он снимается в разных фильмах.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Система "Посредник"", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru