Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

Hasonló dokumentumok
Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Access adatbázis elérése OLE DB-n keresztül

Vizuális programozás gyakorlat

Johanyák Zsolt Csaba: Képnézegető program oktatási segédlet

Ugráló gomb oktatási segédlet Ugráló gomb

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Entity Framework alapú adatbáziselérés 2

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

components : IContainer dx : int dy : int tmidőzítő : Timer toolstripseparator1 : ToolStripSeparator tsmikilépés : ToolStripMenuItem

XML Webszolgáltatás alapú osztott alkalmazás fejlesztése Johanyák Zsolt Csaba 1

Vizuális programozás gyakorlat

Vizuá lis prográmozá s

Webszolgáltatás és XML alapú adatbázis. 1. Az adatbázis megtervezése

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Tájékoztató. Használható segédeszköz: -

munkafüzet open eseményéhez

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Szoftvertechnolo gia gyakorlat

Programozási technológia

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Swing GUI készítése NetBeans IDE segítségével

A Java nyelv. Dialógus ablakok. Elek Tibor

Szoftvertechnolo gia 7. gyakorlat

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Java Programozás 11. Ea: MVC modell

Eseménykezelés - Lottó játék

Entity Framework alapú adatbáziselérés

Osztályok. 4. gyakorlat

Vizuális, eseményvezérelt programozás I.

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

BME MOGI Gépészeti informatika 6.

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Entity Framework + LINQ oktatási segédlet

BME MOGI Gépészeti informatika 7.

Kalapácsvetés 2016 szöveges

HVK Adminisztrátori használati útmutató

Tájékoztató. Használható segédeszköz: -

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

7. Előadás. Makrók alkalmazása. Salamon Júlia. Előadás I. éves mérnök hallgatók számára

Eseményvezérelt alkalmazások

Mérési adatgyűjtés és adatfeldolgozás 2. előadás

hiányzott szeptemberben vagy A tanuló nem hiányzott szeptemberben szöveget

BME MOGI Gépészeti informatika 13.

Citációs index időintervallumra DE MTMT Adminisztrátorok

BME MOGI Gépészeti informatika 5.

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

BME MOGI Gépészeti informatika 4.

Bánsághi Anna 2015 Bánsághi Anna 1 of 31

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Webshop készítése ASP.NET 3.5 ben I.

Elemi Alkalmazások Fejlesztése Beadandó Feladat Juhász Ádám

TvNetTel Internet Kapcsolat Beállítása

Makrók használata az Excelben - Makróhibák kezelése, biztonságos jelszavak generálása

A Windows az összetartozó adatokat (fájlokat) mappákban (könyvtárakban) tárolja. A mappák egymásba ágyazottak.

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén

Johanyák Zsolt Csaba: XML Webszolgáltatás alapú osztott alkalmazás fejlesztése (Mandelbrot halmaz számítás) oktatási segédlet

2. Beadandó feladat dokumentáció

Outlook Express használata

Entity Framework alapú adatbáziselérés

Programozás 2., II. kötet Windows form alkalmazások

1.1.1 Dátum és idő függvények

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Aromo Szöveges értékelés normál tantárggyal

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Tartalom Regisztráció menete Első teendők Profilom

Eseményvezérelt és objektumorientált programozás

Java Programozás 3. Gy: Java GUI. Swing, AWT

Diagram készítése. Diagramok formázása

1 Rendszerkövetelmények

1. ábra Fájl feltöltése 2. ábra Megtekintés

kommunikáció Megoldások

Egzinet Partner Portál

1. Alapok. Programozás II

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Digitális aláírás általános telepítése és ellenőrzése

CitiDirect BE SM Felhasználói útmutató

VISUAL BASIC ALAPISMERETEK

Belépés a Budapesti Ügyvédi Kamara elektronikus ügyintézési rendszerébe

4. Öröklődés. Programozás II

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

Az importálás folyamata Felhasználói dokumentáció verzió 2.1.

Kormányzati Elektronikus Aláíró és Aláírás-ellenőrző Szoftver

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

SSL VPN KAPCSOLAT TELEPÍTÉSI ÚTMUTATÓ

Programozási nyelvek Java

Szakrendelések nyitva tartásának nyilvántartása

Felhasználói útmutató Tartalom

C#---Access adatbáziskezelési gyakorlat

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

DKÜ ZRT. A Portál rendszer felületének általános bemutatása. Felhasználói útmutató. Támogatott böngészők. Felületek felépítése. Információs kártyák

Átírás:

Vizuális programozás gyakorlat Feladat: Készítsen WPF alkalmazást, amely segítségével az alábbi feladat megoldásában segítenek a tanulóknak, azaz a tanulók kipróbálhatják az egyes eseteket, és a megoldásukat is leellenőrizhetik. A 7. és 8. osztályos tanulók a következő feladatot kapták: Hüvelyk Matyi elhatározta, hogy mielőtt megkérné Pöttöm Panna kezét, egy héten keresztül minden nap virágokat küld neki. Első nap rózsát, második nap tulipánt, harmadik nap nárciszt; negyedik nap liliomot, ötödik nap nefelejcset, hatodik nap margarétát, hetedik nap szegfűt, a nyolcadik napon pedig megkéri a kezét. Azt is elhatározta, hogy az egyes fajta virágokból mindig annyi szálat fog küldeni, ahány karakterből áll a nap neve, amikor küldi (a kettősbetű két karakternek számít). Tehát például szerdán 6 szál virágot küld, csütörtökön 9 szálat. A virágok ára (1 szál): rózsa 250 Ft, tulipán 160 Ft, nárcisz 220 Ft, liliom 350 Ft, nefelejcs 120 Ft, margaréta 180 Ft, szegfű 90 Ft. Melyik napon kérje meg Matyi Panna kezét, hogy összesen a lehető legkevesebbet kelljen virágra kifizetnie? (Abacus, 2009/09) Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

2. Készítsen közös eseménykezelőt a nap gombokhoz, és bármely nap gombon történő klikk esemény hatására jelenjen meg a naphoz tartozó szükséges pénzösszeg. 3. A Beállítás gomb hatására kérdezzen rá, hogy tényleg változtatni szeretne-e, majd az egyes virágok ára legyen változtatható. 4. Az Alkalmaz gomb hatására ellenőrizze le a szövegmezők tartalmát (pozitív legyen), majd legyenek újra csak olvashatók. 5. A Melyik a legolcsóbb? gomb hatására jelenjen meg a legolcsóbb megoldás. Az alábbi lista összefoglalja a hét egyes napjai esetén, hogy naponta milyen egységáron hány szálat és milyen összköltséggel kell vásárolni. Hétfő Hétfő:250:5,Kedd:160:4,Szerda:220:6,Csütörtök:350:9,Péntek:120:6,Szombat:180:7,Vas árnap:90:8,9060 Kedd Kedd:250:4,Szerda:160:6,Csütörtök:220:9,Péntek:350:6,Szombat:120:7,Vasárnap:180:8, Hétfő:90:5,8770 Szerda Szerda:250:6,Csütörtök:160:9,Péntek:220:6,Szombat:350:7,Vasárnap:120:8,Hétfő:180:5,Kedd:90:4,8930 Csütörtök

Csütörtök:250:9,Péntek:160:6,Szombat:220:7,Vasárnap:350:8,Hétfő:120:5,Kedd:180:4,S zerda:90:6,9410 Péntek Péntek:250:6,Szombat:160:7,Vasárnap:220:8,Hétfő:350:5,Kedd:120:4,Szerda:180:6,Csüt örtök:90:9,8500 Szombat Szombat:250:7,Vasárnap:160:8,Hétfő:220:5,Kedd:350:4,Szerda:120:6,Csütörtök:180:9,P éntek:90:6,8410 Vasárnap Vasárnap:250:8,Hétfő:160:5,Kedd:220:4,Szerda:350:6,Csütörtök:120:9,Péntek:180:6,Sz ombat:90:7,8570 Megoldás Elnevezési konvenció: a komponensek nevét úgy alakítjuk ki, hogy az elején legyen egy kisbetűkből álló előtag, ami a komponens típusára utal, pl. Window - wnd, Button bt, TextBox tb, RadioButton rb, CheckBox cb, Label - lb. A név második része nagybetűvel kezdődő legyen és a feladatra utaljon, pl. wndablak, btszombat, tbrózsa, lbrózsa. Amennyiben a második rész több szó összetételéből keletkezik, akkor mindegyik összetevő kezdődjön nagybetűvel, pl. tbvirágárak. Adattagok és metódusok neve kezdődjön nagybetűvel, és amennyiben több szó összetételéből keletkezik, akkor mindegyik összetevő kezdődjön nagybetűvel, pl. Számol, ÖsszKöltség. Hozzunk létre egy WPF projektet LányKérés néven. Az ablak osztályának állomány MainWindow.xaml lesz. Nevezzük ezt át a Solution Explorerben a fenti elnevezési konvenciónak megfelelően wndfoablak-ra. Ehhez jobb egérgombbal kattintunk a MainWindow.xaml-n, majd a felbukkanó gyorsmenüben a Rename pontot választjuk. Ahhoz, hogy az összes vonatkozó hivatkozást átnevezzük, azaz az ablak osztályát is, meg kell nyitnunk a wndfoablak.xaml.cs-t, amit a Solution Explorer-ben a wndfoablak.xaml elötti nyilra kattintva tudunk láthatóvá tenni.

Miután megnyitottuk a wndfoablak.xaml.cs állományt, nevezzük át az osztályt a wndfoablak-ra, ezután az alatta megjelenő ikonra kattintva a Visual Studio felajánlja az összes vonatkozó hivatkozás átnevezését. Alakítsuk ki a felületet a feladatban megadottaknak megfelelően. Először az ablak (wndfoablak) fejlécében megjelenő szöveget állítjuk be. Ehhez kijelöljük az ablakot, majd a képernyő jobb oldalán a Properties ablakban a Title tulajdonságban adjuk meg a Hüvelyk Matyi árkalkulátora szöveget. Az első komponenssor kialakításához először egy címkét (Label komponens) helyezünk a windowra, majd a Text tulajdonsága setgítségével állítsuk be, hogy a rózsa feliratot jelenítse meg. A komponens egyetlen feladat a szöveg megjelenítése lesz, programból nem akarjuk módosítani, elérni, ezért nem változtatjuk meg a nevét. Második komponensünk egy szövegmező lesz (TextBox). Esetében két tulajdonságot kell beállítanunk, a ReadOnly-t True-ra állítva (csak olvasható) megakadályozzuk, hogy a felhasználó módosíthassa az egységárat futás közben, és a komponens objektum nevét tartalmazó (name) tulajdonságot tbrózsa értékre állítjuk. az egységárat majd a konstruktorban fogjuk megadni. Helyezzünk el egy újabb címkét a szövegmező mellett, és állítsuk be a rajta megjelenő szöveget Ft-ra.

Helyezzünk el egy nyomógombot a Ft feliratú címke mellé m, majd állítsuk be a benne megjelenő szöveget Hétfő-re és a nyomógomb neve legyen bthétfő. A fenti mintát követve készítsük el a felület hátralevő részét az osztálydiagramban megadott elnevezéseket követve. Az Alkalmaz (btalkalmaz) nyomógomb legyen letiltva (Enabled=False). A feladat megoldásához további három adattagra lesz szükségünk. ezeket vizuálisan az osztálydiagram segédprogramjával hozzuk létre. Jelöljük ki a Solution Explorerben a LányKérés projektet, majd kattintsunk a Solution Explorer View Class Diagram Ikonjára Válasszuk ki a Visual Studio menüsorán a Class Diagram menüt, melynek a Change Member Format almenüjében kattintsunk a Display Full Signature lehetőségre, majd az osztály diagramban válasszuk ki a wndfoablak osztályt Feladat: A gyakorlaton elkezdett Hüvelyk Matyi feladat befejezése, ami a Számol metódus kidolgozását és az Alkalmaz nyomógombhoz tartozó eseménykezelő elkészítését foglalja magába.

namespace Huvelyk_Matyi_WPF /// Interaction logic for MainWindow.xaml public partial class wndfőablak : Window /// Tömb a virág egységárak referenciái tárolásához. private TextBox[] tbvirágárak; /// Tömb a nap nomógombok referenciái tárolásához. private Button[] btnapok; /// Az egyes kezdőnapokhoz tartozó összeköltségeket tároló tömb. private int[] ÖsszKöltség; public wndfőablak() InitializeComponent(); // Virágár szövegmezőket tartalmazó tömb létrehozása inicializálással. tbvirágárak = new TextBox[] tbrózsa, tbtulipán, tbnárcisz, tbliliom, tbnefelejcs, tbmargaréta, tbszegfű ; // Hétnap nyomógombokat atartalmazó tömb létrehozása inicializálással. btnapok = new Button[] bthétfő, btkedd, btszerda, btcsütörtök, btpéntek, btszombat, btvasárnap; // Tömb létrehozása az egyes kezdőnapokhoz tartozó összköltségekhez. ÖsszKöltség = new int[7]; // Az egységárak megadása. tbrózsa.text = "250"; tbtulipán.text = "160"; tbnárcisz.text = "220"; tbliliom.text = "350"; tbnefelejcs.text = "120"; tbmargaréta.text = "180"; tbszegfű.text = "90"; // Kiszámoljuk és az ÖsszKöltség tömbben tároljuk az egyes kezdőnapokhoz // tartozó összköltségeket. Számol(); /// Kiszámolja és az ÖsszKöltség tömbben tárolja az egyes kezdőnapokhoz /// tartozó összköltségeket. private void Számol() // A hét minden napját kezdőnapként véve for (var i = 0; i < 7; i++) // Vegyük az egy hetes virágküldési időszakot

for (var j = 0; j < 7; j++) // Most a hét hányadik napjáról van szó? 0..6 var AktuálisNap = (i + j)%7; // Ezen a napon hány szál virágot kell venni? var VirágszálSzám = btnapok[aktuálisnap].content.tostring().length; // Mennyibe kerül az e napi virág? ÖsszKöltség[i] += VirágszálSzám*int.Parse(tbVirágÁrak[j].Text); kiválasztott /// Közös eseménykezelő a hétnap nyomógombokhoz. Megjeleníti a /// kezdőnaphoz tartozó összköltséget. private void bt_click(object sender, RoutedEventArgs e) var KezdőNap = 0; // Megkeressük, hogy a hét hányadik napja a kiválasztott nap. for (var i = 0; i < 7; i++) if (sender == btnapok[i]) KezdőNap = i; break; // Kiírjuk a szövegmezőbe az aktális összköltséget. tbösszesen.text = ÖsszKöltség[KezdőNap].ToString(); /// Beállíthatóvá teszi a virágszál egységárakat. private void BtBeállítás_OnClick(object sender, RoutedEventArgs e) // ellenőrző kérdés a felhasználóhoz. var mbr = MessageBox.Show( "Biztosan meg akarod változtatni az árakat?", "Figyelmeztatés", MessageBoxButton.YesNo, MessageBoxImage.Warning); if (mbr!= MessageBoxResult.Yes) return; // Minden virágár szövegmező írható lesz. for (var i = 0; i < 7; i++) tbvirágárak[i].isreadonly = false; // Beállítás gomb letiltása. btbeállítás.isenabled = false; // Alkalmaz gomb engedélyezése. btalkalmaz.isenabled = true; /// Megkeresi, hogy melyik napon a legolcsóbb a lánykérés. private void BtMelyik_OnClick(object sender, RoutedEventArgs e) var LegolcsóbbNap = 0; // A legolcsóbb nap kikeresése. for (var i = 1; i < 7; i++)

if (ÖsszKöltség[i] < ÖsszKöltség[LegolcsóbbNap]) LegolcsóbbNap = i; // A nap neve. string NapNév = btnapok[legolcsóbbnap].content.tostring(); // felirat összeeállítása az üzenetablak számára. var Felirat = "Legolcsóbb, ha " + NapNév + "-n kéred meg" + " Pöttöm Panna kezét, " + ÖsszKöltség[LegolcsóbbNap]+ " Ft-ba kerül."; // Üzenetablak megjelenítése. MessageBox.Show(Felirat); /// Ellenőrzi a felhasználó által megadott egységárakat és /// újraszámolja az egyes napokhoz tartozó költségeket az új egységárakkal. private void BtAlkalmaz_OnClick(object sender, RoutedEventArgs e) try // Sorra vesszük a virágárakat tartalmazó szövegmezőket. foreach (var tb in tbvirágárak) // Ellenőrizzük a soron következő szövegmezőt. var EgységÁr = int.parse(tb.text); // Az ár csak pozitív egész érték lehet. if (EgységÁr <= 0) throw new Exception("Az ár nem lehet negatív ill. nulla!"); // Ha jó az ár, a szövegmezőt csak olvashatóra állítjuk. tb.isreadonly = true; // Újból engedélyezzük a Beállítás gombot. btbeállítás.isenabled = true; // Letiltjuk az Alkalmaz gombot. btalkalmaz.isenabled = false; // Kinullázzuk az összköltségek tömbjét for (var i = 0; i < 7; i++) ÖsszKöltség[i] = 0; // Újraszámoljuk az egyes napokhoz tartozó költségeket az új egységárakkal. Számol(); catch (Exception exc) MessageBox.Show("Hibás adatok!" + exc.message, "Hiba",MessageBoxButton.OK,MessageBoxImage.Error); /// Kilépés a programból. private void BtKilépés_OnClick(object sender, RoutedEventArgs e) Application.Current.Shutdown();