МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
ТЕХНІЧНИЙ КОЛЕДЖ НАЦІОНАЛЬНОГО УНІВЕРСИТЕТУ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
КАФЕДРА ІНФОРМАЦІЙНИХ
ТЕХНОЛОГІЙ ТА
КОМП’ЮТЕРНОЇ ТЕХНІКИ
Лабораторна робота №2
з Людино-машинний інтерфейс
на тему:
“ Проектування та розробка форм з MDI інтерфейсів Visual Studio C#”
Мета: Засвоїти методику та виробити практичні навички у проектуванні та створенні форм з MDI інтерфейсом за допомогою Visual C# 2010.
Теоретичні відомості.
Програми з багато віконним інтерфейсом (MDI) дозволяють відображати кілька документів відразу, при цьому кожен документ відображається в окремому вікні.
Цей інтерфейс був вперше описаний в керівництві з розробки інтерфейсу користувача System Application Architecture Common User Access Advanced Interface Design Guide(SAA / CUA), створеному IBM. Інтерфейс MDI використовувався в ОС Microsoft Windows, починаючи з версії 3.0, а також в графічній оболонці Presentation Manager операційної системи OS/2. Сучасні версії ОС Microsoft Windows також дозволяють створювати додатки з інтерфейсом MDI.
Для створення MDI-форм в проекті потрібно мати як мінімум дві форми які називаються батьківською та дочірньою.
Будь MDI-додаток містить меню Windows, призначене для управління вікнами, що відображають різні документи або різні подання одного й того ж документа. Як правило, в меню Windows є команди, за допомогою яких користувач може впорядкувати MDI-вікна, розташувавши їх з перекриттям (один за одним) або поруч один з одним. У цьому меню можуть бути й інші рядки, що керують розташуванням MDI-вікон. Рухаючи MDI-вікна за допомогою заголовка, Ви не зможете перемістити їх за межі головного вікна програми.
Основою програми з MDI-інтерфейсом є батьківська MDI-форма. Це форма містить дочірні MDI-вікна, що є "вкладеними вікнами", в яких користувачі взаємодіють з MDI-додатком. Створити батьківську MDI-форму нескладно як в конструкторі Windows Forms, так і програмними засобами. У вікні Властивостей установіть властивості IsMDIContainer значення true. При цьому форма призначається MDI-контейнером для дочірніх вікон.
Дочірні MDI-форми є основним елементом програми з інтерфейсом MDI, оскільки вони знаходяться в центрі взаємодії з користувачами. За допомогою такої процедури створюються дочірні MDI-форми, що відображають елементи керування, аналогічно більшості текстових додатків.
Для тог щоб MDI-вікно з'явилося на екрані, його необхідно відобразити явним чином за допомогою методу Show.
Засоби керування дочірніми MDI-вікнами дозволяють легко впорядкувати ці вікна одним із трьох способів. Перш за все, вікна можуть бути впорядковані з перекриттям (каскадним чином). Крім цього, можливо розташування вікон поруч по горизонталі і по вертикалі.
Щоб користувач міг впорядковувати дочірні MDI-вікна, в меню Window вносять рядки Cascade, Horizontally Tile і Vertically Tile і створюють необхідні обробники подій.
private void cascadeToolStripMenuItem_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.Cascade);
}
private void horiToolStripMenuItem_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.TileHorizontal);
}
private void vertycaliTitleToolStripMenuItem_Click(object sender, EventArgs e)
{
this.LayoutMdi(MdiLayout.TileVertical);
}
Хід роботи
Завдання. Спроектувати та розробити програму на основі MDI інтерфейсів. Програма має включати пошук по вибірці, та впорядкування вікон.
Варіант 5
5
Музичний альбом
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.Windows.Forms;
namespace laba2{
public partial class Form1 : Form {
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;";
public Form1() {
InitializeComponent(); }
//Процедура викликається при запуску програми
private void вихідToolStripMenuItem_Click(object sender, EventArgs e) {
this.Close(); }
private void пошукПоIdToolStripMenuItem_Click(object sender, EventArgs e) {
SearchbyID sbID = new SearchbyID();
sbID.MdiParent = this;
sbID.Show(); }
private void пошукПоВиробникуToolStripMenuItem_Click(object sender, EventArgs e)
{
Searchbyartist sbbr = new Searchbyartist();
sbbr.MdiParent = this;
sbbr.Show(); }
private void пошукЗаПлКондиціонуванняToolStripMenuItem_Click(object sender, EventArgs e) {
Searchbyname sbsq = new Searchbyname();
sbsq.MdiParent = this;
sbsq.Show(); }
private void пошукЗаПлОбігрівуToolStripMenuItem_Click(object sender, EventArgs e)
{
Searchbytitle sbgr = new Searchbytitle();
sbgr.MdiParent = this;
sbgr.Show(); }
private void пошукЗаПлОхолодженняToolStripMenuItem_Click(object sender, EventArgs e)
{
Searchbykilk sbhd = new Searchbykilk();
sbhd.MdiParent = this; sbhd.Show(); }
private void пошукЗаКольоромToolStripMenuItem_Click(object sender, EventArgs e)
{
Searchbydur sbco = new Searchbydur();
sbco.MdiParent = this;
sbco.Show(); }
private void відобразитиToolStripMenuItem_Click(object sender, EventArgs e) {
Viewmusa vCond = new Viewmusa();
vCond.MdiParent = this;
//використовуємо Ado.net клас для того що б взнати кількість записів
useDB uDB = new useDB(conString);
uDB.OpenCon(); //Підєднання до БД
//Міняємо назву дочірньої MDI-форми яка відображає всі записи в БД
vCond.Text = "В БД " + uDB.Cout().ToString() + " записів!";
vCond.Show();
uDB.CloseCon(); // Відєднання від БД }
private void додатиToolStripMenuItem_Click(object sender, EventArgs e) {
Insertmusa iCond = new Insertmusa();
iCond.MdiParent = this;
iCond.Show(); }
private void знищитиToolStripMenuItem_Click(object sender, EventArgs e) {
Deletemusa dCond = new Deletemusa();
dCond.MdiParent = this;
dCond.Show(); }
private void Form1_Load(object sender, EventArgs e) {
IsMdiContainer = true;
//задає довжину і ширину батьківської MDI-форми
this.Width = 800;
this.Height = 600; // StartPosition = CenterToScreen; } }}
Клас viewmusa.cs
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 laba2{
public partial class Viewmusa : Form {
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;"; public Viewmusa() {
InitializeComponent(); }
private void ViewCond_Load(object sender, EventArgs e) {
String str = "";
DataTable table = new DataTable();
this.textBox1.Clear();
useDB uDB = new useDB(conString);
uDB.OpenCon();
table = uDB.Allmus();
str = str + "| ID | Artist | NAME | Title | kilk | dur |\r\n";
str = str + "|=========================================================|\r\n";
str = str + "|_________________________________________________________|\r\n";
foreach (DataRow dataRow in table.Rows)
{
str = str + "| " + String.Format("{0,-5}", dataRow[0].ToString()) + "| " + String.Format("{0,-16}", dataRow[1]) + "| " + String.Format("{0,-20}", dataRow[2]) + "| " + String.Format("{0,-20}", dataRow[3]) + "| " + String.Format("{0,-20}", dataRow[4]) + "|" + String.Format("{0,-7}", dataRow[5]) + "| " + "\r\n"; } textBox1.Text = str; } }}
Клас Insertmusa.cs
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 laba2{
public partial class Insertmusa : Form {
public Insertmusa() {
InitializeComponent(); }
//Викликається коли користувач нажме на кнопку очистити
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.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);
musa myCond = new musa();
int row;
myCond.artist = textBox1.Text;
myCond.name = textBox2.Text;
myCond.title = textBox3.Text;
myCond.kilk = Convert.ToInt16(textBox4.Text);
myCond.dur = Convert.ToInt16(textBox5.Text);
uDB.OpenCon();
row = uDB.Insertmusa(myCond);
if (row != 0) MessageBox.Show("Запит було добавлено!");
else MessageBox.Show("Запит не було добавлено!");
uDB.CloseCon(); } }}
Клас Deletemusa.cs
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 laba2{
public partial class Deletemusa : Form { //Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;"; public Deletemusa() {
InitializeComponent(); }
//Викликається коли користувач нажме на кнопку очистити
private void button1_Click(object sender, EventArgs e) {
useDB uDB = new useDB(conString); int id; uDB.OpenCon();
id = Convert.ToInt16(textBox1.Text);
uDB.Deletemusa(id); }
private void button2_Click(object sender, EventArgs e) {
textBox1.Clear(); }
private void textBox1_MouseClick(object sender, MouseEventArgs e) {
textBox1.Clear(); }//Викликається коли користувач нажме на кнопку знищити}}
Клас SearchbyID.cs
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 laba2{
public partial class SearchbyID : Form {
public SearchbyID() {
InitializeComponent(); }
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;";
private void button1_Click(object sender, EventArgs e) {
useDB uDB = new useDB(conString);
string str = "";
int id = Convert.ToInt16(textBox1.Text);
uDB.OpenCon();
DataTable table = uDB.SearchbyID(id);
foreach (DataRow dataRow in table.Rows) {
str = str + String.Format("{0,-5}", dataRow[0].ToString()) + String.Format("{0,-11}", dataRow[1]) + String.Format("{0,-12}", dataRow[2]) + String.Format("{0,-13}", dataRow[3]) + String.Format("{0,-14}", dataRow[4]) + String.Format("{0,-7}", dataRow[5]+"\r\n"); }
uDB.CloseCon();
textBox2.Text = str;
uDB.CloseCon(); } }}
Клас Searchbyartist.cs
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 laba2{
public partial class Searchbyartist : Form {
public Searchbyartist() {
InitializeComponent(); }
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;";
private void button1_Click(object sender, EventArgs e) {
useDB uDB = new useDB(conString);
string str = "";
string artist = textBox1.Text;
uDB.OpenCon();
DataTable table = uDB.Searchbyartist(artist);
foreach (DataRow dataRow in table.Rows) {
str = str + String.Format("{0,-5}", dataRow[0].ToString()) + String.Format("{0,-11}", dataRow[1]) + String.Format("{0,-12}", dataRow[2]) + String.Format("{0,-13}", dataRow[3]) + String.Format("{0,-14}", dataRow[4]) + String.Format("{0,-7}", dataRow[5]+ "\r\n"); }
uDB.CloseCon();
textBox2.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.Windows.Forms;
namespace laba2
{
public partial class Searchbyname : Form {
public Searchbyname() {
InitializeComponent(); }
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;";
private void button1_Click(object sender, EventArgs e) {
useDB uDB = new useDB(conString);
string str = "";
string name = textBox1.Text;
uDB.OpenCon();
DataTable table = uDB.Searchbyname(name);
foreach (DataRow dataRow in table.Rows) {
str = str + String.Format("{0,-5}", dataRow[0].ToString()) + String.Format("{0,-11}", dataRow[1]) + String.Format("{0,-12}", dataRow[2]) + String.Format("{0,-13}", dataRow[3]) + String.Format("{0,-14}", dataRow[4]) + String.Format("{0,-7}", dataRow[5]+"\r\n"); }
uDB.CloseCon();
textBox2.Text = str;
uDB.CloseCon(); } }}
Клас Searchbytitle.cs
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 laba2{
public partial class Searchbytitle : Form {
public Searchbytitle() {
InitializeComponent(); }
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;";
private void button1_Click(object sender, EventArgs e) {
useDB uDB = new useDB(conString);
string str = "";
string title = textBox1.Text;
uDB.OpenCon();
DataTable table = uDB.Searchbytitle(title);
foreach (DataRow dataRow in table.Rows) {
str = str + String.Format("{0,-5}", dataRow[0].ToString()) + String.Format("{0,-11}", dataRow[1]) + String.Format("{0,-12}", dataRow[2]) + String.Format("{0,-13}", dataRow[3]) + String.Format("{0,-14}", dataRow[4]) + String.Format("{0,-7}", dataRow[5]+"\r\n"); }
uDB.CloseCon();
textBox2.Text = str; uDB.CloseCon(); } }}
Клас Search by kilk.cs
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 laba2{
public partial class Searchbykilk : Form {
public Searchbykilk() {
InitializeComponent(); }
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;";
private void button1_Click(object sender, EventArgs e) {
useDB uDB = new useDB(conString);
string str = "";
int kilk = Convert.ToInt16(textBox1.Text);
uDB.OpenCon();
DataTable table = uDB.Searchbykilk(kilk);
foreach (DataRow dataRow in table.Rows) {
str = str + String.Format("{0,-5}", dataRow[0].ToString()) + String.Format("{0,-11}", dataRow[1]) + String.Format("{0,-12}", dataRow[2]) + String.Format("{0,-13}", dataRow[3]) + String.Format("{0,-14}", dataRow[4]) + String.Format("{0,-7}", dataRow[5]+"\r\n"); }
uDB.CloseCon();
textBox2.Text = str;
uDB.CloseCon(); } }}
Клас Search by dur.cs
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 laba2{
public partial class Searchbydur : Form {
public Searchbydur() {
InitializeComponent(); }
//Стрічка підєднання до БД Access
string conString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=album.accdb;Persist Security Info=False;";
private void button1_Click(object sender, EventArgs e) {
useDB uDB = new useDB(conString);
string str = "";
int dur = Convert.ToInt16(textBox1.Text);
uDB.OpenCon();
DataTable table = uDB.Searchbydur(dur);
foreach (DataRow dataRow in table.Rows) {
str = str + String.Format("{0,-5}", dataRow[0].ToString()) + String.Format("{0,-11}", dataRow[1]) + String.Format("{0,-12}", dataRow[2]) + String.Format("{0,-13}", dataRow[3]) + String.Format("{0,-14}", dataRow[4]) + String.Format("{0,-7}", 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 laba2{
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 mus";
count = (int)comm.ExecuteScalar(); return count;}
//Метод якийвибираєвсіелементи з БД
public DataTable Allmus() {
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from mus";
dr = comm.ExecuteReader();
temp.Load(dr);return temp; }
//метод пошукуелементів по ІД
public DataTable SearchbyID(int id){
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from mus where id="+id;
dr = comm.ExecuteReader();
temp.Load(dr);return temp; }
public DataTable Searchbyartist(String artist){
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from mus where artist like '" + artist + "%'";
dr = comm.ExecuteReader();
temp.Load(dr); return temp;}
public DataTable Searchbyname(String name){
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from mus where name like '" + name + "%'";
dr = comm.ExecuteReader();
temp.Load(dr); return temp;}
public DataTable Searchbytitle(String title){
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from mus where title like '" + title + "%'";
dr = comm.ExecuteReader();
temp.Load(dr); return temp;}
public DataTable Searchbykilk(int kilk){
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from mus where kilk=" + kilk;
dr = comm.ExecuteReader();
temp.Load(dr); return temp;}
public DataTable Searchbydur(int dur){
DbDataReader dr;
DataTable temp = new DataTable();
comm = conn.CreateCommand();
comm.CommandText = "Select * from mus where dur=" + dur;
dr = comm.ExecuteReader();
temp.Load(dr); return temp;}
public int Insertmusa(musa tempmusa) {
comm = conn.CreateCommand();
//INSERT IN TO DATABASE
comm.CommandText = "INSERT INTO mus (artist, name, title, kilk, dur)VALUES ('" + tempmusa.artist + "','" + tempmusa.name + "','" + tempmusa.title + "'," + tempmusa.kilk + "," + tempmusa.dur +");";
int rows = comm.ExecuteNonQuery();return rows; }
//методзнищенняелементупоІД
public int Deletemusa(int id) {
comm = conn.CreateCommand();
//Delete IN TO DATABASE
comm.CommandText = "DELETE FROM mus WHERE id="+id;
int rows = comm.ExecuteNonQuery();return rows;}
//методВідєднаннявідБД
public void CloseCon() {
conn.Close(); } }}
Клас Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace laba2{
static class Program { /// <summary> /// Главная точка входа для приложения.
/// </summary> [STAThread] static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1()); } }}
UML-діаграма
Результат виконання програми:
Висновок: засвоїти методику та виробив практичні навички роботи та створення Windows форм за допомогою Visual C# 2010.