30134

БАЗЫ ДАННЫХ

Лабораторная работа

Информатика, кибернетика и программирование

В начале работы следуют выбрать интересующего работника. После этого будут выведены данные о заданиях выбранного работника в соответствующую таблицу. При выборе конкретного задания выводятся данные о работниках.

Русский

2013-08-23

34.53 KB

1 чел.

НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

Московский энергетический институт

Лабораторная работа №5

По дисциплине

 «Технология проектирования информационных систем»

Тема: «БАЗЫ ДАННЫХ»

Выполнил:  Сабитов Т.Ш.

Вариант:   10

Группа:      А-09-08

2013

База данных содержит 3 таблицы.

Первая таблица хранит информацию о работниках(номер, имя и номер отдела работника).

Вторая таблица хранит информацию о задачах(номер задачи, название, номер ответственного работника)

Третья таблица содержит информацию об отделах фирмы(название отдела, номер начальника отдела, номер отдела)

  1.  Создание базы данных

CREATE DATABSE 'LabaDB' CHARACTER SET utf8

  1.  Создание таблиц в новой базе

CREATE  TABLE `labadb`.`Workers` (

 `idWorker` INT NOT NULL ,

 `WorkerName` VARCHAR(45) NULL ,

 `idDepartment` INT NOT NULL ,

 PRIMARY KEY (`idWorker`) );

CREATE  TABLE `labadb`.`Tasks` (

 `idTask` INT NOT NULL ,

 `TaskName` VARCHAR(45) NULL ,

 `idWorker` INT NULL ,

 PRIMARY KEY (`idTask`) );

CREATE  TABLE `labadb`.`Departments` (

 `idDepartment` INT NOT NULL ,

 `DepartmentName` VARCHAR(45) NULL ,

 `idDepartmentHead` INT NOT NULL ,

 PRIMARY KEY (`idDepartment`) );

  1.  Связывание таблиц

alter table Workers

ADD FOREIGN KEY(idWorker)

REFERENCES Tasks(idWorker)

ON UPDATE CASCADE

ON DELETE CASCADE;

alter table Departments

ADD FOREIGN KEY(idDepartment)

REFERENCES Workers(idDepartment)

ON UPDATE CASCADE

ON DELETE CASCADE;

alter table Departments

ADD FOREIGN KEY(idDepartmentHead)

REFERENCES Workers(idDepartment)

ON UPDATE CASCADE

ON DELETE CASCADE;

  1.  Заполнение таблиц данными

insert into Workers values (0,"Ivanov",0);

insert into Workers values (1,"Petrov",0);

insert into Workers values (2,"Sidorov",0);

insert into Workers values (3,"Ivanov2",1);

insert into Workers values (4,"Petrov2",1);

insert into Workers values (5,"Sidorov2",1);

insert into Workers values (6,"Ivanov3",2);

insert into Workers values (7,"Petrov3",2);

insert into Workers values (8,"Sidorov3",2);

insert into Tasks values (0, "task1", 0);

insert into Tasks values (1, "task2", 2);

insert into Tasks values (2, "task3", 4);

insert into Tasks values (3, "task4", 6);

insert into Tasks values (4, "task5", 8);

insert into Tasks values (5, "task6", 1);

insert into Tasks values (6, "task7", 3);

insert into Tasks values (7, "task8", 5);

insert into Tasks values (8, "task9", 7);

insert into Tasks values (9, "task10", 0);

insert into Tasks values (10, "task11", 2);

insert into Tasks values (11, "task12", 4);

insert into Departments values (0, "Web software", 1);

insert into Departments values (1, "Economy", 3);

insert into Departments values (2, "System software", 5);

  1.  Процедуры и функции

create procedure update

 @id int

 @name vchar

as

  UPDATE Taskss SET TaskName=@name Where TaskId = @id

Go

create procedure delete_from_Tasks

 @name vchar

As

  Declare @TaskId int

  @TaskId = SELECT idTask FROM Taskss WHERE TaskName = @name LIMIT 1

  DELETE FROM Taskss WHERE idTask = @TaskId

Go

create function WorkerCount()

returns integer

as

begin  

 return  (SELECT count(distinct WorkerName) FROM Workers)

end

go

  1.  Описание программы

Программа предоставляет пользователю удобный интерфейс для просмотра и редактирования базы сотрудников и их заданий.

Как указано выше база содержит в себе данные о работниках, их заданиях и отделах фирмы.

В начале работы следуют выбрать интересующего работника. После этого будут выведены данные о заданиях выбранного работника в соответствующую таблицу. При выборе конкретного задания выводятся данные о работниках.

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

Также программа позволяет просмотреть статистические данные.

  1.  Код программы

Далее приведен листинг основного модуля программы.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using MySql.Data.MySqlClient;

using System.Xml;

namespace TPISClient

{

   public partial class Form1 : Form

   {

       bool EmptySelect = false;

       string Connect = "server=a-09-08.ru;user=encore;database=labadb;port=3306;password=asdfgh;";

       string temp, TCell0,TCell1;

       int OrderID;

       public Form1()

       {

           InitializeComponent();

      /*     string CommandText1 = "SELECT CoustumerName FROM coustumer";

           MySqlConnection myConnection = new MySqlConnection(Connect);

           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

           MySqlDataReader MyDataReader;

           myConnection.Open();

           MyDataReader = myCommand1.ExecuteReader();

           while (MyDataReader.Read())

           {

               comboBox1.Items.Add(MyDataReader.GetString(0));

           }

           MyDataReader.Close();

           myConnection.Close();

           if (comboBox1.Items.Count != 0)

               comboBox1.SelectedIndex = 0;

           else

               comboBox1.SelectedItem = null;*/

       }

       private void comboBox1_SelectionChangeCommitted(object sender, EventArgs e)

       {

           if (comboBox1.SelectedItem != null)

           {

               int ID;

               string CommandText1 = "SELECT idWOrker FROM Workers WHERE WorkerName = '" + comboBox1.SelectedItem.ToString() + "'";

               MySqlConnection myConnection = new MySqlConnection(Connect);

               MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

               MySqlDataReader MyDataReader;

               myConnection.Open();

               ID = Convert.ToInt32(myCommand1.ExecuteScalar().ToString());

               CommandText1 = "SELECT TaskName FROM Tasks WHERE idTask = " + ID;

               myCommand1 = new MySqlCommand(CommandText1, myConnection);

               MyDataReader = myCommand1.ExecuteReader();

               int i = 0;

               dataGridView1.Rows.Clear();

               while (MyDataReader.Read())

               {

                   dataGridView1.Rows.Add();

                   dataGridView1.Rows[i].Cells[0].Value = MyDataReader.GetString(0);

                   i++;

               }

               MyDataReader.Close();

               myConnection.Close();

           }      

       }

       private void toolStripMenuItem1_Click(object sender, EventArgs e)

       {

           DialogResult dr = new DialogResult ();

           Form2 Dialog = new Form2();

           dr = Dialog.ShowDialog();

           if (dr == DialogResult.OK)

           {

               if (dataGridView1.CurrentCell.ColumnIndex == 0)

               {

                   if (dataGridView1.SelectedCells[0].Value != null)

                   {

                       string CommandText1 = "DELETE FROM Tasks WHERE TaskName = '" + dataGridView1.SelectedCells[0].Value + "'";

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       myCommand1.ExecuteReader();

                       myConnection.Close();

                   }

               }

           }

           else

           {

           }

       }

       private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)

       {

           DialogResult dr = new DialogResult();

           Form2 Dialog = new Form2();

           dr = Dialog.ShowDialog();

           if (dr == DialogResult.OK)

           {

               if (dataGridView2.CurrentCell.ColumnIndex == 0)

               {

                   if (dataGridView2.SelectedCells[0].Value != null)

                   {

                       string CommandText1 = "DELETE FROM worker WHERE Name = '" + dataGridView2.SelectedCells[0].Value + "' AND LastName = '" 

                       + dataGridView2.Rows[dataGridView2.CurrentCell.RowIndex].Cells[dataGridView2.CurrentCell.ColumnIndex + 1].Value + "' AND idDepartment = "

                       + OrderID;

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       myCommand1.ExecuteReader();

                       myConnection.Close();

                   }

               }

               if (dataGridView2.CurrentCell.ColumnIndex == 1)

               {

                   if (dataGridView2.SelectedCells[0].Value != null)

                   {

                       string CommandText1 = "DELETE FROM worker WHERE LastName = '" + dataGridView2.SelectedCells[0].Value + "' AND Name = '"

                       + dataGridView2.Rows[dataGridView2.CurrentCell.RowIndex].Cells[dataGridView2.CurrentCell.ColumnIndex - 1].Value + "' AND idDepartment = "

                       + OrderID;

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       myCommand1.ExecuteReader();

                       myConnection.Close();

                   }

               }

           }

           else

           {

           }

       }

       private void dataGridView1_CellDoubleClick_1(object sender, DataGridViewCellEventArgs e)

       {

           

       }

       private void dataGridView1_CellBeginEdit_1(object sender, DataGridViewCellCancelEventArgs e)

       {

           if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

           {

               temp = dataGridView1.CurrentCell.Value.ToString();

           }

           else

           {

               EmptySelect = true;

           }

       }

       private void dataGridView1_CellEndEdit_1(object sender, DataGridViewCellEventArgs e)

       {

           if ((e.RowIndex <= dataGridView1.RowCount - 2) && (!EmptySelect))

           {

               if (dataGridView1.CurrentCell.Value.ToString() != temp)

               {

                   DialogResult dr = new DialogResult();

                   Form3 Dialog = new Form3();

                   dr = Dialog.ShowDialog();

                   if (dr == DialogResult.OK)

                   {

                       string CommandText1 = "UPDATE Tasks SET TaskName = '" + dataGridView1.CurrentCell.Value.ToString() + "' WHERE TaskName = '" + temp + "'";

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       myCommand1.ExecuteReader();

                       myConnection.Close();

                   }

                   else

                   {

                       dataGridView1.CurrentCell.Value = temp;

                   }

               }

           }

           else

           {

               if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

               {

                   DialogResult dr = new DialogResult();

                   Form6 Dialog = new Form6();

                   dr = Dialog.ShowDialog();

                   if (dr == DialogResult.OK)

                   {

                       string CommandText1 = "SELECT idWorker FROM Workers WHERE WorkerrName = '" + comboBox1.SelectedItem.ToString() + "'";

                       MySqlConnection myConnection = new MySqlConnection(Connect);

                       MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                       myConnection.Open();

                       int IDC = -1;

                       IDC = (Int32)myCommand1.ExecuteScalar();

                       string CommandText2 = "INSERT INTO `Workers` (`WorkerName`, `idWorker`) VALUES ('" 

                           + dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value + "'," + IDC + ");";

                       myCommand1 = new MySqlCommand(CommandText2, myConnection);

                       myCommand1.ExecuteScalar();

                       myConnection.Close();

                   }

               }

               EmptySelect = false;

           }

       }

       private void button1_Click(object sender, EventArgs e)

       {

           Form4 AddForm = new Form4();

           AddForm.Parent = this.Parent;

           AddForm.Show();

       }

       private void button3_Click(object sender, EventArgs e)

       {

           comboBox1.Items.Clear();

           string CommandText1 = "SELECT WorkerrName FROM Workers";

           MySqlConnection myConnection = new MySqlConnection(Connect);

           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

           MySqlDataReader MyDataReader;

           myConnection.Open();

           MyDataReader = myCommand1.ExecuteReader();

           while (MyDataReader.Read())

           {

               comboBox1.Items.Add(MyDataReader.GetString(0));

           }

           MyDataReader.Close();

           myConnection.Close();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           string CommandText1 = "DELETE FROM `Worker` WHERE `WorkerName`='" + comboBox1.SelectedItem.ToString() +"';";

           MySqlConnection myConnection = new MySqlConnection(Connect);

           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

           myConnection.Open();

           myCommand1.ExecuteScalar();

           CommandText1 = "SELECTWorkerName FROM worker";

           myCommand1 = new MySqlCommand(CommandText1, myConnection);

           comboBox1.Items.Clear();

           MySqlDataReader MyDataReader;

           MyDataReader = myCommand1.ExecuteReader();

           while (MyDataReader.Read())

           {

               comboBox1.Items.Add(MyDataReader.GetString(0));

           }

           MyDataReader.Close();

           myConnection.Close();

           comboBox1.SelectedIndex = 0;

       }

       private void dataGridView2_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)

       {

           if (dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

           {

               temp = dataGridView2.CurrentCell.Value.ToString();

               TCell0 = dataGridView2.Rows[e.RowIndex].Cells[0].Value.ToString();

               TCell1 = dataGridView2.Rows[e.RowIndex].Cells[1].Value.ToString();

           }

           else

           {

               EmptySelect = true;

           }

       }

       private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)

       {

           if ((e.RowIndex <= dataGridView2.RowCount - 2) && (!EmptySelect))

           {

               if (dataGridView2.CurrentCell.Value.ToString() != temp)

               {

                   DialogResult dr = new DialogResult();

                   Form3 Dialog = new Form3();

                   dr = Dialog.ShowDialog();

                   if (dr == DialogResult.OK)

                   {

                       if (e.ColumnIndex == 0)

                       {

                           string CommandText1 = "UPDATE worker SET Name = '" + dataGridView2.CurrentCell.Value.ToString() + "' WHERE Name = '" + temp + "'";

                           MySqlConnection myConnection = new MySqlConnection(Connect);

                           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                           myConnection.Open();

                           myCommand1.ExecuteScalar();

                           myConnection.Close();

                       }

                       else

                       {

                           string CommandText1 = "UPDATE worker SET LastName = '" + dataGridView2.CurrentCell.Value.ToString() + "' WHERE LastName = '" + temp + "'";

                           MySqlConnection myConnection = new MySqlConnection(Connect);

                           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                           myConnection.Open();

                           myCommand1.ExecuteScalar();

                           myConnection.Close();

                       }

                   }

                   else

                   {

                       dataGridView2.CurrentCell.Value = temp;

                   }

               }

           }

           else

           {

             if (dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

               {

                   DialogResult dr = new DialogResult();

                   Form6 Dialog = new Form6();

                   dr = Dialog.ShowDialog();

                   if (dr == DialogResult.OK)

                   {

                       if (e.ColumnIndex == 0)

                       {

                           Form7 Quest = new Form7();

                           Quest.ShowDialog();

                           string CommandText1 = "INSERT INTO `worker` (`Name`, `LastName`, `idDepartment`) VALUES ('" + dataGridView2.CurrentCell.Value.ToString() + "','" +

                                                           SC.text + "'," + OrderID + ");";

                           MySqlConnection myConnection = new MySqlConnection(Connect);

                           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                           myConnection.Open();

                           myCommand1.ExecuteScalar();

                           myConnection.Close();

                       }

                       else

                       {

                           Form7 Quest = new Form7();

                           Quest.ShowDialog();

                           string CommandText1 = "INSERT INTO `worker` (`Name`, `LastName`, `idDepartment`) VALUES ('" + SC.text + "','" +

                                                           dataGridView2.CurrentCell.Value.ToString() + "'," + OrderID + ");";

                           MySqlConnection myConnection = new MySqlConnection(Connect);

                           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

                           myConnection.Open();

                           myCommand1.ExecuteScalar();

                           myConnection.Close();

                       }

                   }

               }

               EmptySelect = false;

           }

       }

       public void search(DataGridView e, string table, string [] cll, TextBox t)

       {

           string CommandText1 = "SELECT * FROM " + table + " WHERE " + cll[0] + " = '" + t.Text +"'";

           for (int i = 1; i < cll.Length; i++)

           {

               CommandText1 += " OR " + cll[i] + " = '" + t.Text +"'";

           }

           CommandText1 += ";";

           MySqlConnection myConnection = new MySqlConnection(Connect);

           MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

           myConnection.Open();

           MySqlDataReader MyDataReader;

           MyDataReader = myCommand1.ExecuteReader();

           int cnt = 0;

           string text2 = "Совпадения найдены :\r\n";

           if (MyDataReader.HasRows)

           {

               while (MyDataReader.Read())

               {

                   int i = 0;

                   while (i < MyDataReader.FieldCount)

                   {

                       text2 += MyDataReader.GetString(i) + "    "; i++;

                   }

                   cnt++;

                   text2 += "\r\n";

               }

               MessageBox.Show(text2);

           }

           else

           {

               MessageBox.Show("Совпадений не найдено");

           }

       }

       private void button4_Click(object sender, EventArgs e)

       {

           string []cll = {"idDepartment", "DepartmentName", "idWorker"};

           search(dataGridView1, "Departments", cll, textBox1);

       }

       private void button5_Click(object sender, EventArgs e)

       {

           string[] cll = { "idWorker", "Name", "LastName", "idTask" };

           search(dataGridView2, "worker", cll, textBox2);

       }

       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)

           {

               string CommandText1 = "SELECT idDepartment FROM Departments WHERE DepartmentName = '" + dataGridView1.SelectedCells[0].Value + "'";

               MySqlConnection myConnection = new MySqlConnection(Connect);

               MySqlCommand myCommand1 = new MySqlCommand(CommandText1, myConnection);

               MySqlDataReader MyDataReader;

               myConnection.Open();

               OrderID = Convert.ToInt32(myCommand1.ExecuteScalar().ToString());

               CommandText1 = "SELECT Name, lastname FROM workers WHERE idDepartment = " + OrderID;

               myCommand1 = new MySqlCommand(CommandText1, myConnection);

               MyDataReader = myCommand1.ExecuteReader();

               int i = 0;

               dataGridView2.Rows.Clear();

               while (MyDataReader.Read())

               {

                   dataGridView2.Rows.Add();

                   dataGridView2.Rows[i].Cells[0].Value = MyDataReader.GetString(0);

                   dataGridView2.Rows[i].Cells[1].Value = MyDataReader.GetString(1);

                   i++;

               }

               MyDataReader.Close();

               myConnection.Close();

           }

       }

       private void button6_Click(object sender, EventArgs e)

       {

           Form8 AnaliticForm = new Form8();

           AnaliticForm.Show();

       }

       private void button7_Click(object sender, EventArgs e)

       {

           Form9 f9 = new Form9();

           SC.form = f9;

           f9.Show();       

       }

   }

   public class SerchData

   {

       public SerchData(){}

       public int data1 { get; set; }

       public string data2 { get; set; }

       public string data3 { get; set; }

   }

   public static class SC

   {

      public static string text = "";

      public static Form9 form;

   }

}


 

А также другие работы, которые могут Вас заинтересовать

65093. ХУДОЖЕСТВЕННОЕ ОФОРМЛЕНИЕ МУСУЛЬМАНСКИХ МОНЕТ: НАРУШЕНИЕ ЗАПРЕТА? 137.5 KB
  Но если монеты античной Греции Рима эллинистического Востока обычно ассоциируются с прекрасными портретами конными экипажами образами богов и богинь то традиционно оформленные дирхемы и динары Арабского халифата а после его распада монеты многих его идеологических преемников...
65096. Клад из с. Новая Казанка Уральской области 159 KB
  Монетный состав клада, несмотря на его скромные размеры, довольно необычен и представляет научный интерес даже в таком составе. Монетные дворы, представленные в комплексе — Сарай ал-Махруса, Мохша, Сарай, Хорезм, Сарай ал-Джадид...
65097. «Железные псы» Батуидов (Шибан и его потомки в войнах XIII в.) 617 KB
  Согласно Рашид ад Дину и более поздним зависимым от него источникам Шибан 5 был пятым сыном Джучи Рашид ад Дин 1960 С. Старше Шибана по Рашид адДину были Орда Бату Берке и Беркечар. Несмотря на то что Рашид адДин в генеалогии Джучидов позиционирует Шибана пятым сыном...
65098. Буддизм в культуре Золотой Орды 288 KB
  Среди довольно обильных данных письменных источников, характеризующих конфессиональную ситуацию в Золотой Орде, сведения о буддизме единичны. По этой причине нередко даже специальные исследования религии и верований...
65099. МАВЗОЛЕИ ЗОЛОТОЙ ОРДЫ: ГЕОГРАФИЧЕСКИЙ ОБЗОР И ОПЫТ ТИПОЛОГИЗАЦИИ 141 KB
  Бартольд нередко монгольские ханы после принятия ислама уничтожали тайну окружавшую могилы их языческих предшественников и строили над этими могилами мавзолеи мусульманского типа 5 приводя в пример самого Тимура который возвёл мавзолей над могилой своего отца-язычника.
65100. МУСУЛЬМАНСКИЙ ПОГРЕБАЛЬНЫЙ ОБРЯД В ЗОЛОТОЙ ОРДЕ 4.83 MB
  Основу источниковой базы для нашей работы составили сведения содержащиеся в научных отчётах об археологических исследованиях на территории Поволжья Юга России в Татарстане в республике Башкортостан и на территории Казахстана хранящиеся в архиве Института археологии...