Міністерство освіти і науки України
Технічний коледж Національного університету “Львівська політехніка”
Кафедра інформаційних технологій
Звіт
до лабораторної роботи №
з Людино-машинний інтерфейс
на тему:
Проектування та розробка Windows форм з MDI інтерфейсом в Visual Studio C#
Мета: засвоїти методику та виробити практичні навички у проектуванні та створенні форм з MDI-інтерфейсом за допомогою Visual C# 2017
Хід роботи
Завдання. Спроектувати та розробити програму на основі MDI-інтерфейсів для роботи з базою даних за допомогою технології ADO.NET згідно завдання. Програма має включати пошук по вибірці, та впорядкування вікон.
Варіант 4
4
Фільми
Id, назва, жанр, кіностудія, якість, тривалість
Код програми
Клас Form1.cs
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 System.Data.OleDb;
using System.Data.Common;
namespace Lab_2
{
public partial class Form1 : Form
{
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
IsMdiContainer = true;
//задає довжину і ширину батьківської MDI-форми
this.Width = 1000;
this.Height = 600;
}
private void вихідToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void відобразитиToolStripMenuItem_Click(object sender, EventArgs e)
{
viewFilm vFilm = new viewFilm();
vFilm.MdiParent = this;
//використовуємо Ado.net клас для того що б взнати кількість записів
UseDB uDB = new UseDB(conString);
uDB.OpenCon(); //Підєднання до БД
// Міняємо назву дочірньої MDI-форми яка відображає всі записи в БД
vFilm.Text = "В БД " + uDB.Cout().ToString() + " записів!!!!";
vFilm.Show();
uDB.CloseCon(); // Відєднання від БД
}
private void добавитиToolStripMenuItem_Click(object sender, EventArgs e)
{
addFilm pouy = new addFilm();
pouy.MdiParent = this;
pouy.Show();
}
private void знищитиToolStripMenuItem_Click(object sender, EventArgs e)
{
DeleteFilm dFilm = new DeleteFilm();
dFilm.MdiParent = this;
dFilm.Show();
}
private void поIDToolStripMenuItem_Click(object sender, EventArgs e)
{
IDsearch IDser = new IDsearch();
IDser.MdiParent = this;
IDser.Show();
}
private void поЖанруToolStripMenuItem_Click(object sender, EventArgs e)
{
SearchByGenre gsear = new SearchByGenre();
gsear.MdiParent = this;
gsear.Show();
}
private void поНазвіToolStripMenuItem_Click(object sender, EventArgs e)
{
SearchByName name = new SearchByName();
name.MdiParent = this;
name.Show();
}
private void поToolStripMenuItem_Click(object sender, EventArgs e)
{
SearchByMovieStudio studio = new SearchByMovieStudio();
studio.MdiParent= this;
studio.Show();
}
private void поЯкостіToolStripMenuItem_Click(object sender, EventArgs e)
{
SearchByQuality quality = new SearchByQuality();
quality.MdiParent = this;
quality.Show();
}
private void поТривалостіToolStripMenuItem_Click(object sender, EventArgs e)
{
SearchByDuration duration = new SearchByDuration();
duration.MdiParent = this;
duration.Show();
}
}
}
Клас viewFilm.cs
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;
namespace Lab_2
{
public partial class viewFilm : Form
{ string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public viewFilm()
{
InitializeComponent();
}
private void viewFilm_Load(object sender, EventArgs e)
{
String str = "";
DataTable tom = new DataTable();
this.textBox1.Clear();
UseDB uDB = new UseDB(conString);
uDB.OpenCon();
tom = uDB.AllFilm();
str = str + "| ID | Nazva | | zhanr | filmstudios | yakist | tryvalist |\r\n"; str = str + "|===========================================================================|\r\n";
foreach (DataRow dataRow in tom.Rows)
{
str = str + String.Format("{0,-7}", dataRow[0].ToString()) + "| " + String.Format("{0,-25}", dataRow[1]) + "| " +
String.Format("{0,-28}", dataRow[2]) + "| " + String.Format("{0,-10}", dataRow[3]) + "| " +
String.Format("{0,-7}", dataRow[4]) + "| " + String.Format("{0,-9}", dataRow[5]) + "\r\n";
}
textBox1.Text = str;
}
}
}
Клас addFilm.cs
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;
namespace Lab_2
{
public partial class addFilm : Form
{
public addFilm()
{
InitializeComponent();
}
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
private void button2_Click(object sender, EventArgs e)
{ textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
textBox5.Clear();
}
private void button1_Click(object sender, EventArgs e)
{
UseDB uDB = new UseDB(conString);
Film myFilm = new Film();
int row;
myFilm.Nazva = textBox1.Text;
myFilm.zhanr = textBox2.Text;
myFilm.filmstudios = textBox3.Text;
myFilm.yakist = textBox4.Text;
myFilm.tryvalist = textBox5.Text;
uDB.OpenCon();
row = uDB.AddFilm(myFilm);
if (row != 0) MessageBox.Show("Запит був доданий!!!");
else MessageBox.Show("Запит не був доданий!!!");
uDB.CloseCon();
}
}
}
Клас DeleteFilm.cs
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;
namespace Lab_2
{
public partial class DeleteFilm : Form
{
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public DeleteFilm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
UseDB uBd = new UseDB(conString);
int id;
uBd.OpenCon();
id = Convert.ToInt16(textBox1.Text);
uBd.DeleteFilm(id);
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Clear();
}
}
}
Клас IDsearch.cs
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;
namespace Lab_2
{
public partial class IDsearch : Form
{
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public IDsearch()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
UseDB uDB = new UseDB(conString);
string str = "";
int id = Convert.ToInt16(textBox2.Text);
uDB.OpenCon();
DataTable tom = uDB.IDsearch(id);
foreach (DataRow dataRow in tom.Rows)
{
str = str + String.Format("{0,-5}", dataRow[0].ToString()) +
String.Format("{0,-15}", dataRow[1]) + String.Format("{0,-28}", dataRow[2]) + String.Format("{0,-10}", dataRow[3]) +
String.Format("{0,-7}", dataRow[4]) + String.Format("{0,-9}", dataRow[5]);
}
uDB.CloseCon();
textBox1.Text = str;
uDB.CloseCon();
}
}
}
Клас SearchByName.cs
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;
namespace Lab_2
{
public partial class SearchByName : Form
{
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public SearchByName()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
UseDB uDB = new UseDB(conString);
string str = "";
string Nazva = textBox1.Text;
uDB.OpenCon();
DataTable tom = uDB.SearchByName(Nazva);
foreach (DataRow dataRow in tom.Rows)
{
str = str + String.Format("{0,-5}", dataRow[0].ToString()) +
String.Format("{0,-15}", dataRow[1]) + String.Format("{0,-28}", dataRow[2]) + String.Format("{0,-10}", dataRow[3]) +
String.Format("{0,-7}", dataRow[4]) + String.Format("{0,-9}", dataRow[5])+ "\r\n";
}
uDB.CloseCon();
textBox2.Text = str;
uDB.CloseCon();
}
}
}
Клас SearchByGenre.cs
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;
namespace Lab_2
{
public partial class SearchByGenre : Form //пошук по жанру
{
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public SearchByGenre()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
UseDB uDB = new UseDB(conString);
String str = "";
String zhanr = textBox1.Text;
uDB.OpenCon();
DataTable tom = uDB.SearchByGenre(zhanr);
foreach (DataRow dataRow in tom.Rows)
{
str = str + String.Format("{0,-5}", dataRow[0].ToString()) +
String.Format("{0,-15}", dataRow[1]) + String.Format("{0,-28}", dataRow[2]) + String.Format("{0,-10}", dataRow[3]) +
String.Format("{0,-7}", dataRow[4]) + String.Format("{0,-9}", dataRow[5])+ "\r\n";
}
uDB.CloseCon();
textBox2.Text = str;
uDB.CloseCon();
}
}
}
Клас SearchByMovieStudio.cs
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;
namespace Lab_2
{
public partial class SearchByMovieStudio : Form
{
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public SearchByMovieStudio()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
UseDB uDB = new UseDB(conString);
String str = "";
String filmstudios = textBox1.Text;
uDB.OpenCon();
DataTable tom = uDB.SearchByMoveStudio(filmstudios);
foreach (DataRow dataRow in tom.Rows)
{
str = str + String.Format("{0,-5}", dataRow[0].ToString()) +
String.Format("{0,-15}", dataRow[1]) + String.Format("{0,-28}", dataRow[2]) + String.Format("{0,-10}", dataRow[3]) +
String.Format("{0,-7}", dataRow[4]) + String.Format("{0,-9}", dataRow[5])+ "\r\n";
}
uDB.CloseCon();
textBox2.Text = str;
uDB.CloseCon();
}
}
}
Клас SearchByMovieQuality.cs
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;
namespace Lab_2
{
public partial class SearchByQuality : Form
{
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public SearchByQuality()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
UseDB uDB = new UseDB(conString);
String str = "";
String yakist = textBox1.Text;
uDB.OpenCon();
DataTable tom = uDB.SearchByQuality(yakist);
foreach (DataRow dataRow in tom.Rows)
{
str = str + String.Format("{0,-5}", dataRow[0].ToString()) +
String.Format("{0,-15}", dataRow[1]) + String.Format("{0,-28}", dataRow[2]) + String.Format("{0,-10}", dataRow[3]) +
String.Format("{0,-7}", dataRow[4]) + String.Format("{0,-9}", dataRow[5])+"\r\n";
}
uDB.CloseCon();
textBox2.Text = str;
uDB.CloseCon();
}
}
}
Клас SearchByDuration.cs
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;
namespace Lab_2
{
public partial class SearchByDuration : Form
{
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=film.accdb;Persist Security Info=False;";
public SearchByDuration()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
UseDB uDB = new UseDB(conString);
string str = "";
string tryvalist = textBox1.Text;
uDB.OpenCon();
DataTable tom = uDB.SearchByDuration(tryvalist);
foreach (DataRow dataRow in tom.Rows)
{
str = str + String.Format("{0,-5}", dataRow[0].ToString()) +
String.Format("{0,-15}", dataRow[1]) + String.Format("{0,-28}", dataRow[2]) + String.Format("{0,-10}", dataRow[3]) +
String.Format("{0,-7}", dataRow[4]) + String.Format("{0,-9}", dataRow[5])+ "\r\n";
}
uDB.CloseCon();
textBox2.Text = str;
uDB.CloseCon();
}
}
}
Клас UseDB.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Data;
using System.Data.Common;
namespace Lab_2
{
class UseDB
{
OleDbConnection conn;
DataSet ds = new DataSet();
DbCommand comm;
public UseDB(string conString)
{
conn = new OleDbConnection(conString);
}
//метод підєднання до БД
public void OpenCon()
{
conn.Open();
}
//Метод визначення кількості записів в БД
public int Cout()
{
int count;
comm = conn.CreateCommand();
comm.CommandText = "Select count(*) from films";
count = (int)comm.ExecuteScalar();
return count;
}
//Метод який вибирає всі елементи з БД
public DataTable AllFilm()
{
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from films";
dr = comm.ExecuteReader();
temp.Load(dr);
return temp;
}
//метод пошуку елементів по ІД
public DataTable IDsearch(int id)
{
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from films where ID=" + id;
dr = comm.ExecuteReader();
temp.Load(dr);
return temp;
}
public DataTable SearchByGenre(string zhanr)
{
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from films where zhanr like '" + zhanr+"%'";
dr = comm.ExecuteReader();
temp.Load(dr);
return temp;
}
public DataTable SearchByName(String Nazva)
{
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from films where Nazva like '" + Nazva + "%'";
dr = comm.ExecuteReader();
temp.Load(dr);
return temp;
}
public DataTable SearchByMoveStudio(String filmstudios)
{
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from films where filmstudios like '" + filmstudios + "%'";
dr = comm.ExecuteReader();
temp.Load(dr);
return temp;
}
public DataTable SearchByQuality(String yakist)
{
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from films where yakist like '" + yakist + "%'";
dr = comm.ExecuteReader();
temp.Load(dr);
return temp;
}
public DataTable SearchByDuration(String tryvalist)
{
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from films where tryvalist like '" + tryvalist+"%'" ;
dr = comm.ExecuteReader();
temp.Load(dr);
return temp;
}
//Метод запису елементів в БД
public int AddFilm(Film tempFilm)
{
comm = conn.CreateCommand();
//INSERT IN TO DATABASE
comm.CommandText = "INSERT INTO films (Nazva, zhanr, filmstudios, yakist, tryvalist)VALUES ('" + tempFilm.Nazva +
"','"+ tempFilm.zhanr + "','" + tempFilm.filmstudios + "','" + tempFilm.yakist + "'," + tempFilm.tryvalist + ");";
int rows = comm.ExecuteNonQuery();
return rows;
}
//метод знищення елементу по ІД
public int DeleteFilm(int id)
{
comm = conn.CreateCommand();
//Delete IN TO DATABASE
comm.CommandText = "DELETE FROM films WHERE ID =" + id;
int rows = comm.ExecuteNonQuery();
return rows;
}
//метод Відєднання від БД
public void CloseCon()
{
conn.Close();
}
}
}
UML діаграма
/
Виконання програми
Форма відобразити
/
Форма додати фільм
/
Форма видалити фільм
/
Форма пошук по Id
/
Форма пошук по жанру фільму
/
Форма пошук по назві фільму
/
Форма пошук по кіностудіях
/
Форма пошуку по якості фільму
/
Форма пошуку по тривалістю фільму
/
Висновок: На лабораторній роботі засвоїв методику та виробив практичні навички у проектуванні та створенні форм з MDI-інтерфейсом за допомогою Visual C# 2017.