Автор работы: Пользователь скрыл имя, 17 Января 2014 в 11:58, лабораторная работа
Цель работы: получение знаний, умений и навыков по созданию базы знаний, представляющей собой семантическую сеть.
Задание: Разработать программу, реализующую семантическую сеть согласно варианту 1.
Лабораторная работа №4
Семантические сети
Цель работы: получение знаний, умений и навыков по созданию базы знаний, представляющей собой семантическую сеть.
Задание: Разработать программу, реализующую семантическую сеть согласно варианту 1.
Вариант 1
Компания, в которой Вы работаете, получила задание на разработку справочной системы по журналам издательства «Издательство Мечты». Данная компания выпускает различные по целевой аудитории, ценовой категории и объему страниц журналы.
Вам необходимо построить модуль на основе семантической сети, позволяющий определить целевую аудиторию для различных журналов, а также для кого предназначено издание и его стоимость. Ваша задача построить семантическую сеть на основе информации, представленной в таблице 1.
Таблица 1
Название журнала |
Основная целевая аудитория |
Стоимость одного номера, руб. |
Объем страниц журнала |
Какая информация представлена в журнале |
Возможна ли подписка на журнал |
Тюниг автомобилей |
Мужчины |
140 |
170 |
Современные технологии тюнинга автомобилей |
нет |
Мода |
Женщины |
90 |
90 |
Новейшие тенденции моды |
да |
Компьютерные и видео игры |
Мужчины и женщины |
65 |
60 |
Все о компьютерных и видео играх |
нет |
Рукоделие |
Женщины |
45 |
50 |
Эксклюзивные вещи своими руками |
да |
Фотография |
Мужчины и женщины |
100 |
95 |
Основы и секреты фотографии |
да |
Кино и музыка |
Мужчины и женщины |
30 |
30 |
Только актуальная информация и кино и музыке |
нет |
В построенной семантической сети определить:
Выполнение:
1. После нажатия кнопки «Загрузить базу» можно начинать опрос.
Рисунок 1 – Главное меню.
2. При нажатии кнопки «Начать опрос» - можно выбирать вопросы, на которые мы хотим получить ответы.
Рисунок 2 – Выбор вопросов.
3. После выбора вопроса нажимаем на кнопку «Вывести результат» и получаем ответ на вопрос.
Рисунок 3 – Вывод результата.
Листинг 1 – Код программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BD
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
label1.Visible = false;
label2.Visible = false;
}
Property f2 = new Property();
// public static int n = 17, m = 5, n1 = 16, m1 = 4;
Class1 obj = new Class1();
// List<string> bukv = new List<string> { "A", "B", "C", "D", "E" };
public string [] alfavit = {"A","B","C","D","E","F","G","
public string[,] simp;
public string[] nameMagazine;
public int[,] bolezn;
public int[] prov;
public string[] vopr = { "Какой журнал предоставляет информацию о...?", "Какие журналы предназначены для...?", "Какие журналы стоят... рублей?", "На какие журналы можно оформить подписку?" };
public int[] por = {4,1,2,5};
public int v;
string per;
bool flag=false;
int k,count;
string path = Application.StartupPath.
private void button1_Click(object sender, EventArgs e)
{
k = 1;
count = 0;
simp=new string[f2.N,f2.M];
nameMagazine = new string[f2.N];
bolezn = new int[f2.N, f2.M];
prov = new int[f2.N];
label1.Visible = true;
obj.Load(path, 1);
for (int i = 0; i < f2.M; i++)
{
for (int j = 3; j <f2.N+3; j++)
{
StringBuilder cell = new StringBuilder();
cell.Append(alfavit[i]);
cell.Append(j);
simp[j - 3, i] = obj.GetCell(cell.ToString());
// dataGridView1[i, j-1].Value = obj.GetCell(cell.ToString());
}
}
obj.Close();
}
private void button2_Click(object sender, EventArgs e)
{
Form2 f1 = new Form2();
f1.Show();
}
/* private void button4_Click(object sender, EventArgs e)
{
for (int i = 1; i < f2.M; i++)
{
for (int j = 1; j < f2.N; j++)
{
if (simp[j, i] == "+")
{
bolezn[j-1, i-1] = 1;
}
else
{
bolezn[j-1, i-1] = 0;
}
}
}
for (int i = 0; i < f2.M-1; i++)
{
for (int j = 0; j < f2.N-1; j++)
{
prov[j]= bolezn[j, i];
}
//for (int i1 = 0; i1 < 16; i1++)
{
// richTextBox3.Text += Convert.ToString(prov[i1]) + " ";
// richTextBox4.Text += Convert.ToString(bsimp[i1]) + " ";
// richTextBox4.Text += Convert.ToString(prov[i1] ^ bsimp[i1]) + " ";
// }
for (int t = 0; t < f2.N-1; t++)
{
if ((prov[t] ^ bsimp[t]) == 1)
{
flag = false;
break;
}
else { flag = true; }
}
if (flag == true)
{
richTextBox2.Text = simp[0, i + 1];
}
}
if (richTextBox2.Text == "")
{
richTextBox2.Text = "Такой болезни еще не выявлено";
}
}*/
private void Form1_Load(object sender, EventArgs e)
{
obj.Load(path, 1);
f2.N = Convert.ToInt32(obj.GetCell("
f2.M = Convert.ToInt32(obj.GetCell("
obj.Close();
}
private void button3_Click(object sender, EventArgs e)
{
comboBox1.Items.Clear();
comboBox1.Text = "";
comboBox1.Enabled = true;
label1.Visible = false;
v = 0;
label2.Text = vopr[v];
for (int i = 1; i < f2.N; i++)
{
comboBox1.Items.Add(simp[i, por[v]]);
}
label2.Visible = true;
v++;
}
private void button4_Click(object sender, EventArgs e)
{
try
{
comboBox1.Items.Clear();
comboBox1.Text = "";
label2.Text = vopr[v];
v++;
if (v == 2)
{
comboBox1.Items.Add("Мужчины")
comboBox1.Items.Add("Женщины")
comboBox1.Items.Add("Мужчины и женщины");
}
if (v == 3)
{
for (int i = 1; i < f2.N; i++)
{
comboBox1.Items.Add(simp[i, por[v - 1]]);
}
}
if (v == 4)
{
comboBox1.Enabled = false;
}
}
catch
{
MessageBox.Show("Вопросы закончились! Начните опрос заново!");
}
}
private void button5_Click(object sender, EventArgs e)
{
richTextBox1.Clear();
if (v == 1)
{
for (int i = 1; i < f2.N; i++)
{
if (simp[i, 4] == comboBox1.Text)
{
richTextBox1.Text = Convert.ToString(simp[i, 0]);
}
}
}
if(v==2)
{
for (int i = 1; i < f2.N; i++)
{
if (comboBox1.Text == "Мужчины")
{
if (simp[i, por[v - 1]] == "Мужчины" || simp[i, por[v - 1]] == "Мужчины и женщины")
{
richTextBox1.Text += Convert.ToString(simp[i, 0]) + "\n";
}
}
if (comboBox1.Text == "Женщины")
{
if (simp[i, por[v - 1]] == "Женщины" || simp[i, por[v - 1]] == "Мужчины и женщины")
{
richTextBox1.Text += Convert.ToString(simp[i, 0]) + "\n";
}
}
if (comboBox1.Text == "Мужчины и женщины")
{
if (simp[i, por[v - 1]] == "Мужчины" || simp[i, por[v - 1]] == "Женщины" || simp[i, por[v - 1]] == "Мужчины и женщины")
{
richTextBox1.Text += Convert.ToString(simp[i, 0]) + "\n";
}
}
}
}
if (v == 3)
{
for (int i = 1; i < f2.N; i++)
{
if (simp[i, por[v - 1]] == comboBox1.Text)
{
richTextBox1.Text += Convert.ToString(simp[i, 0]) + "\n";
}
}
}
if (v == 4)
{
for (int i = 1; i < f2.N; i++)
{
if (simp[i, por[v - 1]] == "да" )
{
richTextBox1.Text += Convert.ToString(simp[i, 0]) + "\n";
}
}
}
}
}
}
Заключение: Проделав работу, были изучены семантические сети и разработана программа, реализующая их.