Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

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

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Мінімальна партія і забезпечити максимальне кількість товару, яка є в поставщика. Дані про клієнтів у системі «Посередник» представлені у вигляді стандартних баз. У цьому курсовому проекті классифицирующая мережу використовується визначення. Найбільш предпочтительного договору. Другим критерієм, як уже зазначалося вище,. Шукає необхідну інформацію базі даних і, знайшовши підходящі договори… Читати ще >

Система Посередник (реферат, курсова, диплом, контрольна)

Система «Посередник». Укладання на поставку будівельних материалов.

Наприкінці ХХ століття автоматизація все сильніше завоёвывает всі сфери.

людської діяльності. Застосування обчислювальної техніки у різних.

галузях народного господарства покликане полегшити працю чоловіки й зменшити кількість.

помилок, скоєних після ухвалення рішень.

При побудові систем, які допомагають людині, використовуються прийоми, студійовані такий.

областю інформатики, як інженерія знаний.

У цьому курсовому проекті реалізована система «Посередник», службовець для.

укладення міжнародних договорів між постачальниками і покупцями будівельних матеріалів.

Цю систему можна використовувати співробітниками посередницьких контор, працюючих.

у цій области.

Програма реалізована мовою Пролог.

1. Види послуг і режими роботи системи «Посредник».

Основне призначення системи «Посередник» — надання послуг за висновок.

договорів між постачальниками і покупцями будівельних матеріалів. Укладання.

договорів може здійснюватися у звичайному, або у інтерактивному режимі. У першому.

разі система укладає контракт з урахуванням наявної базі даних інформації про.

клієнтів, у другий випадок система затребувана дані у користувача, після чого.

шукає необхідну інформацію базі даних і, знайшовши підходящі договори, виводить.

їх, або за відсутності нині можливостей для угоди, заносить.

інформацію клієнта до бази даних. Крім усіх можливих варіантів договорів.

система виводить ще й найкращі для посередника з погляду.

комерційної выгоды.

З іншого боку, у системі є режими перегляду і редагування (або.

додавання) даних із постачальникам і з покупцям, а як і перегляду і.

редагування регіональної приналежності фірм-виробників. Якщо під час.

роботи з програмою в бази даних було внесено певні зміни, то, при.

виході з програми згоди користувача буде зроблено збереження.

изменений.

2. Концептуальна модель знань, необхідні надання услуг.

Концептуальна модель предметної області представляється безліччю класів.

об'єктів із заданими ньому відносинами і операціями. Класи об'єктів.

характеризуються деяким набором атрибутів.

У цьому курсовому проекті класами об'єктів є Попит, Пропозиція і.

Договір. Клас, Попит, має такі атрибути: порядковий номер, назва.

фірми, назва товару, виробник, бажаної партії товару, ціна за одиницю.

товару і термін поставки. У класу Пропозиція, є таку ж атрибути, за.

винятком те, що замість бажаної партії товару тут є.

мінімальна партія і забезпечити максимальне кількість товару, яка є в поставщика.

Уявімо об'єкти класів Попит і Пропозиція як таблиц:

Таблиця об'єктів класу Спрос.

№ФирмаТоварПроизводительКол-воЦена, $Термін поставки.

1ДСК-3Кирпич облицовочныйроссийская10 000.336.

2МосжилстройКерамзит европейская30 228.

3ГераклАрматура стальнаяСНГ155 110.

4МВМАсбест строительныйукраинская70 207.

5АТС-50Кабель АВВГроссийская1 000 218.

6СМУ-35Керамзит российская120 206.

7РЭУ-22Стекло оконноебелорусская500 310.

8АтлантОбои моющиесяVertex1000414.

9SunprideКирпич облицовочныймосковская8000.410.

10HausbauerПлитка облицовочнаяитальянская1 000 117.

11СМУ-28Ванна чугуннаяевропейская4 035 020.

12ПротонКабель АВВГмосковская1 000 214.

Таблиця об'єктів класу Предложение№ФирмаПродукцияПроизводительМин.

партияМакс. партияЦена, $Термін поставки.

1СтройсервисКирпич облицовочный2-й цегельний 1 209 000.257.

2ОрионКерамзит Электроизолит1 050 204.

3СалютАрматура стальнаяММЗ120 508.

4СтройсервисКабель АВВГИркутсккабель9 009 000 111.

5БайрамиксАсбест строительныйСтройперлит30 100 159.

6Всё для домаКабель АВВГММЗ9 009 000 112.

7СпецстройСтекло оконноеСерп і молот50 700 210.

8АстраОбои моющиесяVertex10009000311.

9ГлобусАсбест строительныйДонецкбетон10 200 156.

10ОрбитаКирпич облицовочныйМосбетон200 090 000.34.

11Всё для домаПлитка облицовочнаяMarlit10008000106.

12УнкомтехКабель АВВГИркутсккабель70 012 000.98.

13ЭлектростальАрматура стальнаяММЗ720 653.

14ArkonПаралон жидкийInterchemall300090001010.

15WormsВанна стальнаяNord Star35100030018.

Концептуальна схема предметної області представлена на мал.1. і рис. 2.

Мал.1. Концептуальна схема предметної області (попит предложение).

Рис. 2. Концептуальна схема предметної області (договор).

3. Уявлення даних про клиентах.

Дані про клієнтів у системі «Посередник» представлені у вигляді стандартних баз.

даних (database) мови Пролог. Бо у Пролозі достатньо потужний.

механізм роботи з цими базами даних, реалізувати ньому програму типу.

системи «Посередник» набагато простіше й природніше, ніж алгоритмічних мовами.

(типу Pascal чи З).

Загальний вид записів в базах даних следующий:

поставщик (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. Мережевий модель уявлення знань і її використання щоб одержати.

довідкової інформації та формування варіантів договора.

Мережевий модель реалізується з допомогою про семантичних мереж. У.

семантичної мережі імена деяких об'єктів, процесів, дій, сутностей та його.

класів асоціюються з вузлами, натомість взаємини з-поміж них асоціюються з дугами,.

з'єднуючими вузли. Мережеву модель можна як наступній.

конструкції: P. S=, де I — безліч інформаційних одиниць, С1, С2,…, Сn — безліч.

типів перетинів поміж інформаційними одиницями, Р — відображення, який задає зв’язку.

(з заданого безлічі типів зв’язків) між інформаційними одиницями, вхідними.

в I.

Классифицирующие мережі (використані у цій курсової), поруч з.

функціональними, є з класів однорідних (які мають дуги лише.

одного типу) мереж. Классифицирующие мережі будуються з урахуванням родовидового.

відносини sup, заданого на безлічі класів об'єктів. Це ставлення.

інтерпретується так: якщо Ki sup Kj, то будь-який час t.

кожен об'єкт класу Ki є класу Kj, тобто. Kj є подклассом.

Ki (чи Ki є подклассом Kj). Конкретні об'єкти, зазвичай, зв’язуються.

з класами нижчого рівня ієрархії ставленням приналежності isa. Запис ki isa.

K означає, що об'єкт ki є важливим елементом класу K.

У цьому курсовому проекті классифицирующая мережу використовується визначення.

регіональної приналежності виробника будівельних матеріалів. Завдяки.

цьому під час укладання договорів покупцю необов’язково ставити конкретного.

виробника, а можна поставити лише регеон розташування тих виробників,.

продукція яких покупцю видається найбільш кращою.

У системі «Посередник» є також можливість отримання про.

приналежності будь-якого виробника регіону шляхом перегляду зв’язків в.

классифицирующей мережі, а як і є режими коригування та доповнення цієї.

сети.

Графічне уявлення классифицирующей мережі показано на рис. 3.

Програмно классифицирующая мережу реалізована як стандартних баз даних.

Прологу (database) і має наступним образом:

sup (Ki, Kj).

де Ki і Kj — клас" і його підклас соответственно.

Классифицирующая мережу перебуває у файлі web.dat.

5. Критерії вибору найбільш предпочтительного варіанта договора.

У цьому курсовому проекті найкращий договір вибирається на користь.

посередника. Вигода посередника полягає у отриманні найбільшої прибутку на.

стислі терміни. Доход посередника зазвичай становить певний комісійний.

відсоток заключённой угоди, тому найвигідніші контракти, у яких.

твір кількості товару, необхідне покупцю на ціну цього товару,.

призначену продавцем, буде максимальним. Це буде першим критерієм вибору.

найбільш предпочтительного договору. Другим критерієм, як уже зазначалося вище,.

буде найкоротші терміни поставки.

На початку програма вибирає кращі договори з першому критерію. Якщо.

таких договорів вийде кілька, то програма вибирає їх той, у.

якого термін поставки менше (тобто. реалізується другий критерий).

Наприклад, нехай є три можливих договору для фірми «АТС-50», якої.

потрібно партія кабелю АВВГ російського виробника обсягом 1000 одиниць по.

ціні 2 $ за одиницю у найкоротші терміни трохи більше 18 дней:

№ФирмаТоварПроизводительМин. партия. Кол-воЦенаСроки.

4СтройсервисКабель АВВГИркутсккабель9 009 000 111.

6Всё для домаКабель АВВГММЗ9 009 000 112.

12УнкомтехКабель АВВГИркутсккабель70 012 000.98.

При застосуванні першого критерію вибираються фірми «Стройсервис» і «Все для вдома»,.

оскільки ціна, через яку вони пропонують товар, більше, ніж в фірми «Уникомтех».

і отже дохід посередника буде більше. З другого краю етапі з цих двох фірм.

вибирається «Стройсервис», оскільки вона має менше термін поставки.

6. логічна модель уявлення знань мовою многосортного обчислення.

предикатів і мовою Пролог.

Логічний модель — це опис предметної області на якомусь логічному.

мові. Однією з таких логічних мов є многосортное літочислення.

предикатів. При поданні логічних моделей цією мовою класи сутностей.

предметної області інтерпретуються, як імена сортів.

Наприклад введём такі імена сортів: Договір, Постачальник, Покупець,.

Продукція, Виробник, Кількість, Ціна, Термін, Тип_Произв, а як і такі.

функції і предикаты:

пост:ДоговорПоставщик, покуп: ДоговорПокупатель,.

прод:ДоговорПродукция, произв: ДоговорПроизводитель,.

кол:ДоговорКоличество, ціна: ДоговорЦена, срок: ДоговорСрок.

тип_произв: ПроизводительТип_Произв.

російський: Тип_Произв, європейський: Тип_Произв.

:Кількість КоличествоT.

:Кількість КоличествоT.

Висловлювання 1−4 сотавляют сигнатуру і мають наступний смысл:

Задає кілька функцій, наприклад прод (продукція), які будучи застосовні до.

об'єкту е сорти Договір, дають наприклад продукцію прод (е), що у операції.

е.

Задає функцію, значеннями якої слугують типи производителя.

Задає константи, належать сорту Тип_Произв.

Задає двомісні предикати на об'єктах сорти Количество.

Сигнатура — це безліч функцій виду f: A1 A2… AnB, де A1, A2,…, An -.

аргументи, B — значення функції. Сили-силенної і значень функцій.

утворюють відповідно сорти A і B. У приватному разі, якщо B=T, причому T={1,0}.

— особливий сорт, то сигнатура має вигляд P: A1 A2… AnT, причому P називають.

предикатом.

Сигнатура задає структурні зв’язок між поняттями предметної області,.

представленими предикатами і функціями. Логічні зв’язок між цими поняттями.

задаються формулами, які записуються в сигнатуре. Структурні і логічні.

зв’язку висловлюють певне знання про предметної області. Отже, сигнатура.

формально представляє одну частина знання про предметної області, а формули,.

записані цієї сигнатуре, представляють решту знания.

Графічне уявлення сигнатури показано на рис. 4, а модельної структури -.

на рис. 5.

Рис. 4. Графічне уявлення сигнатури.

Логічний модель в Пролозі представляється як предикатів і баз даних.

database. Например:

database — договор

дог (Поставщик, Покупатель).

Функцію посаду (постачальник) можна реалізувати так.

посаду (N): — дог (Покупатель, Поставщик), N=Поставщик.

Функцію можна наступним образом:

(Количество1,Количество2):-Количество1.

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_contract.

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.dat »),.

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©,.

clearwindow,.

working©,.

clearwindow,.

З = 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,.

sound (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.

correct (X),.

clearwindow,.

X=5,!,.

removewindow.

/* Процедура виведення меню знищення данных*/.

working (2):;

makewindow (5,48,107, «Знищення записів », 0,0,25,80),.

sound (5,220),.

repeat,.

cursor (7,0),.

write («1 — Видалення з даних постачальників »), nl,.

write («2 — Видалення з даних покупців »), nl,.

write («3 — Видалення з классифицирующей мережі «), nl,.

write («4 — Вихід »), nl,.

write («=> «),.

readint (I),.

clearwindow,.

I>0,I.

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.

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.

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 («Запровадьте мінімальну партію: »), readInt (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 («Запровадьте назва товару: »), readln (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,.

assertz (поставщик (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),.

retract (поставщик (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,.

write («Натисніть кожну клавішу »),.

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,Price1,Srok1),.

cmp_name (Proizv, Proizv1),.

Part>=Min1,Part=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,_,_,_):;

retract (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=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, Proizv, Min, Kol, Price, Srok)),.

removewindow,.

покупатель (N1,_, Tov, Proizv1, Part1,Price1,Srok1),.

cmp_name (Proizv1,Proizv),.

Part1>=Min, Part1=Price, Srok1>=Srok,.

assert (flag (2)),.

assertz (contract (N1,N)),.

assert (best (N1,0,0,0)),.

fail.

interact (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 («Запровадьте регіональну приналежність об'єкта _ «, P. 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_sup (_): — readchar (_).

Показати весь текст
Заповнити форму поточною роботою