DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Проектування локальних та мережевих довідкових систем

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
Факультет комп’ютерних наук
Кафедра:
Кафедра програмного забезпечення

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт
Предмет:
Системи штучного інтелекту
Група:
ПІ
Коротко про документ

Про що ця робота

У роботі розроблено три типи довідкових систем: на основі семантичної мережі, гіпертекстової моделі та фреймової мережі. Продемонстровано роботу програмних засобів та реалізовано навігацію за гіперпосиланнями.

У роботі розглядаються

  • Системи штучного інтелекту
  • Семантичні мережі
  • Гіпертекстові моделі знань
  • Фреймові мережі
  • Розробка довідкових систем
  • Програмне забезпечення
  • Мова програмування C#

Зміст і розділи

  1. Тема роботи
  2. Мета роботи
  3. Завдання
  4. Код програми
  5. Протокол роботи
  6. Висновок
Для кого:Студенти технічних спеціальностей та викладачі
Викладачі:Викладач кафедри

Ключові поняття

довідкова системасемантична мережагіпертекстова модельфреймова мережаекспертні системикаталог програмних засобівдеревовидне представленнягіперпосиланняC#Windows Forms

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Інститут КНІТ Кафедра ПЗ ЗВІТ До лабораторної роботи № 3 На тему: “ Проектування локальних та мережевих довідкових систем” З дисципліни : "Системи штучного інтелекту" Львів – 2010 Тема роботи: Проектування локальних та мережевих довідкових систем. Мета роботи: Розробити довідкові системи трьох типів: інтегровану довідкову систему на основі семантичної мережі; довідкову систему на основі гіпертекстової моделі знань; довідкову систему на основі фреймової мережі. Завдання Вхідними даними є текстовий файл – каталог програмних засобів (ПЗ) для побудови експертних систем. Необхідно розробити довідкові системи трьох зазначених вище типів. Вибір інформації повинен здійснюватись за двома формами: скороченій - у вигляді списку назв ПЗ, вибраних за заданим критерієм; повній - у вигляді опису конкретних ПЗ. Код програми using System; using System.Collections.Generic; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace AI_lab3 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Dictionary<string, string> terms = new Dictionary<string, string>(); Dictionary<string, ArrayList> see_also = new Dictionary<string, ArrayList>(); private void Form1_Load(object sender, EventArgs e) { StreamReader sr = new StreamReader("..\\..\\source.txt", Encoding.GetEncoding(1251)); string s = ""; while ((s = sr.ReadLine()) != null) { if (s == "") continue; if (s[0] == '@') treeView1.Nodes.Add(s.Remove(0, 1)); else { treeView1.Nodes[treeView1.Nodes.Count - 1].Nodes.Add(s.Split(' ')[0]); terms.Add(s.Split(' ')[0], s); } } ArrayList al; foreach (string value in terms.Values) { al = new ArrayList(); foreach (string str in value.Split(new char[] { ' ', '.', ',', ';', ':' })) { if (terms.ContainsKey(str) == true && al.Contains(str) == false && str != value.Split(' ')[0]) al.Add(str); } see_also.Add(value.Split(' ')[0], al); } } ArrayList ll_array = new ArrayList(); ArrayList visited_nodes = new ArrayList(); int cur_pos = 0; private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { textBox1.Select(0, 5); textBox1.DeselectAll(); if (terms.ContainsKey(e.Node.Text)) { textBox1.Text = terms[e.Node.Text]; textBox1.SelectAll(); textBox1.SelectionFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(204))); textBox1.Select(0, e.Node.Text.Length); textBox1.SelectionFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Italic | FontStyle.Bold | FontStyle.Underline, GraphicsUnit.Point, ((byte)(204))); string s = textBox1.Text.Remove(0, e.Node.Text.Length); int count = 1; while (s.IndexOf(e.Node.Text) >= 0) { textBox1.Select(s.IndexOf(e.Node.Text) + e.Node.Text.Length * count, e.Node.Text.Length); textBox1.SelectionFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Bold, GraphicsUnit.Point, ((byte)(204))); s = s.Remove(s.IndexOf(e.Node.Text), e.Node.Text.Length); count++; } LinkLabel ll, ll2; foreach (LinkLabel link_lab in ll_array) { link_lab.Dispose(); } ll_array.Clear(); foreach (string str in see_also[e.Node.Text]) { string s1 = textBox1.Text; int count1 = 0; while (s1.IndexOf(str) >= 0) { textBox1.Select(s1.IndexOf(str) + str.Length * count1, str.Length); textBox1.SelectionFont = new Font("Microsoft Sans Serif", 9F, FontStyle.Italic | FontStyle.Underline, GraphicsUnit.Point, ((byte)(204))); s1 = s1.Remove(s1.IndexOf(str), str.Length); count1++; } ll = new LinkLabel(); ll.Parent = this.panel1; ll.AutoSize = true; ll.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); ll.Text = str; ll.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(ll_Clicked); if (ll_array.Count == 0) ll.Location = new System.Drawing.Point(4, 235); else { ll2 = (LinkLabel)ll_array[ll_array.Count - 1]; ll.Location = new System.Drawing.Point(ll2.Left + ll2.Width + 5, 235); } ll_array.Add(ll); } if (ll_array.Count == 0) { label1.Visible = false; textBox1.Height = 256; } else { label1.Visible = true; textBox1.Height = 202; } if (sender.GetType().Name != "Button") { for (int i = cur_pos; i < visited_nodes.Count; i++) visited_nodes.RemoveAt(i); visited_nodes.Add(e.Node); cur_pos = visited_nodes.Count; button2.Enabled = false; if (visited_nodes.Count > 1) button1.Enabled = true; } textBox1.Select(0, 5); textBox1.DeselectAll(); } } private void ll_Clicked(object sender, LinkLabelLinkClickedEventArgs e) { LinkLabel ll = (LinkLabel)sender; foreach (TreeNode node in treeView1.Nodes) { foreach (TreeNode node2 in node.Nodes) { if (node2.Text == ll.Text) { node.Expand(); node2.Checked = true; treeView1_NodeMouseClick(node2, new TreeNodeMouseClickEventArgs(node2, MouseButtons.Left, 1, 1, 1)); } } } } private void button1_Click(object sender, EventArgs e) { button2.Enabled = true; cur_pos--; if (cur_pos == 1) button1.Enabled = false; treeView1_NodeMouseClick(sender, new TreeNodeMouseClickEventArgs((TreeNode)visited_nodes[cur_pos-1], MouseButtons.Left, 1, 1, 1)); } private void button2_Click(object sender, EventArgs e) { button1.Enabled = true; cur_pos++; if (cur_pos == visited_nodes.Count) button2.Enabled = false; treeView1_NodeMouseClick(sender, new TreeNodeMouseClickEventArgs((TreeNode)visited_nodes[cur_pos - 1], MouseButtons.Left, 1, 1, 1)); } //////////////////////////////////////////////////////////////////////////////// ArrayList frame_terms = new ArrayList(); private void button14_Click(object sender, EventArgs e) { panel2.Visible = true; panel2.BringToFront(); panel4.Visible = false; panel5.Visible = false; panel6.Visible = false; bool OK = false; RadioButton rb_checked = new RadioButton(); foreach (RadioButton rb in groupBox1.Controls) { if (rb.Checked == true) { OK = true; rb_checked = rb; } } if (OK == false) { MessageBox.Show(this, "Виберіть один із пунктів", "Помилка"); return; } int index = 0; foreach (TreeNode node in treeView1.Nodes) { if (node.Text == rb_checked.Text) index = node.Index; } foreach (TreeNode node in treeView1.Nodes[index].Nodes) { frame_terms.Add(node.Text); } panel4.Visible = true; panel4.BringToFront(); panel2.Visible = false; panel5.Visible = false; panel6.Visible = false; } private void button12_Click(object sender, EventArgs e) { panel2.Visible = true; panel2.BringToFront(); panel4.Visible = false; panel5.Visible = false; panel6.Visible = false; foreach (RadioButton rb in groupBox1.Controls) { rb.Checked = false; } foreach (RadioButton rb in groupBox3.Controls) { rb.Checked = false; } foreach (RadioButton rb in groupBox4.Controls) { rb.Checked = false; } frame_terms.Clear(); listBox1.Items.Clear(); textBox2.Text = ""; } private void button3_Click(object sender, EventArgs e) { bool OK = false; RadioButton rb_checked = new RadioButton(); foreach (RadioButton rb in groupBox3.Controls) { if (rb.Checked == true) { OK = true; rb_checked = rb; } } if (OK == false) { MessageBox.Show(this, "Виберіть один із пунктів", "Помилка"); return; } ArrayList[] letters = new ArrayList[5]{ new ArrayList{'A', 'B', 'C', 'D', 'E'}, new ArrayList{'F', 'G', 'H', 'I', 'J'}, new ArrayList{'K', 'L', 'M', 'N', 'O'}, new ArrayList{'P', 'Q', 'R', 'S', 'T'}, new ArrayList{'U', 'V', 'W', 'X', 'Y', 'Z'}}; ArrayList tmp = new ArrayList(); foreach (string term in frame_terms) { int ind = int.Parse(rb_checked.Tag.ToString()); if (letters[ind].Contains(term[0]) == true) tmp.Add(term); } frame_terms = tmp; panel5.Visible = true; panel5.BringToFront(); panel2.Visible = false; panel4.Visible = false; panel6.Visible = false; } private void button10_Click(object sender, EventArgs e) { button14_Click(sender, e); foreach (RadioButton rb in groupBox3.Controls) { rb.Checked = false; } foreach (RadioButton rb in groupBox4.Controls) { rb.Checked = false; } } private void button11_Click(object sender, EventArgs e) { bool OK = false; RadioButton rb_checked = new RadioButton(); foreach (RadioButton rb in groupBox4.Controls) { if (rb.Checked == true) { OK = true; rb_checked = rb; } } if (OK == false) { MessageBox.Show(this, "Виберіть один із пунктів", "Помилка"); return; } int lower, upper; if (radioButton22.Checked == true) { lower = 1; upper = 3; } else if (radioButton21.Checked == true) { lower = 4; upper = 6; } else if (radioButton20.Checked == true) { lower = 7; upper = 10; } else { lower = 11; upper = 100; } ArrayList tmp = new ArrayList(); foreach (string term in frame_terms) { if (term.Length >= lower && term.Length <= upper) tmp.Add(term); } frame_terms = tmp; panel6.Visible = true; panel6.BringToFront(); panel2.Visible = false; panel5.Visible = false; panel4.Visible = false; foreach (string term in frame_terms) { listBox1.Items.Add(term); } } private void listBox1_SelectedIndexChanged(object sender, EventArgs e) { textBox2.Text = terms[listBox1.SelectedItem.ToString()]; } } } Протокол роботи При роботі з довідковою системою на основі семантичної мережі в правій частині вікна можна вибрати категорію та необхідну назву програмного забезпечення, опис якого необхідно отримати. В результаті в правій частині вікна буде відображено повний опис вибраного програмного забезпечення. У разі, якщо в описі містяться назви іншого ПЗ, що входять до складу даної довідкової системи, то під описом в розділі „Див. також” будуть відображені посилання на ПЗ, що зазначене в описі.  Кнопки „Назад” і „Вперед” використовуються для переходу між описами ПЗ, що переглядалось. Так, наприклад, перейшовши за посиланням „INTERLISP”, можна повернутись назад до перегляду інформації про „SMALLTALK”, натиснувши кнопку „Назад”.   Перейшовши на вкладку „ДС на основі фреймової мережі”, користувач для пошуку потрібного йому ПЗ має дати відповіді на 3 питання. В результаті йому буде видано список з назвами ПЗ, що підходять під задані користувачем характеристики.    Як видно, заданим вище характеристикам відповідає три програмних засоби. Після вибору одного з них, користувачу буде надано повний його опис.  Висновок
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!