8 dam WEB.NET aplikácie (asp.net) + conzolova aplikácie .NET
Dneska to bude veľmi jednoduche
, Nie naozaj! V podstate nič programovať nebudeme, budeme len
skladať už vytvorené. Cieľom teda bude zobraziť výsledky riešenie úlohy
o 8 dam ako webovú stránku stihneme aj conzolovou aplikáciu a tým túto
úlohu navždy opustíme.
Vyjdeme z našej dll knižnice, ktorú sme si minule vytvorili. Len zopakujem, že dll knižnicu vytvoríme touto kompiláciou cs súboru:
csc /t:library /r:System.dll /r:System.Data.dll /r:System.Xml.dll _8dam.cs
Web aplikácie

Ukážme si výsledok. Niekedy na začiatku seriálu o .NET sme si ukazovali užívateľský kontrol. Dnes nájde plné uplatnenie. Čo sa týka toho nášho ascx kontrolu pomenovaného "ShowDesk.ascx" tak v ňom urobíme naozaj kozmetickú úpravu:
int _intDesk = 0; public DataSet _DataSource8Q = null; // implementace vlastnosti aktualni plochy sachovnice public int intDesk { set { _intDesk = value; } }
Vytvoríme vlastnosť intDesk, ktorá určuje index do tabuľky v Množina údajov. Položku _DataSource8Q dáme ako verejnú (public) aby sme ju mohli okamžite nastaviť, z hlavnej aspx stránky.
Zostáva napojiť dll do aspx kontrolu a vytvoriť selectbox pre voliteľné
rozmiestnenie 8 dám. Import dll súboru sa vykoná direktívou register
(podobne ako vkladanie používateľského kontrolu) POZOR! dll súbor musí
byť umiestnený v podadresári BIN a nadradený adresár musí byť na web
servera (napr. na IIS) označený ako webový adresár. (Poz. Keby náhodou
programová ukážka nešla tak to je zrejme tento problem
Ďalej v kóde deklarujeme
premennú o8dam ako inštanciu našej triedy z dll súboru, vlastné objekt
vytvárame v udalosti PageLoad stránky. No a pre všetkých riešenie ulohy
napĺňame selectbox a je to.
<%@ Register TagPrefix="uc1" TagName="ShowDesk" Src="ShowDesk.ascx" %> <%@ Register TagPrefix="BINdd" Namespace="App_8dam" Assembly="_8dam" %> <%@Import Namespace="System.Data" %> <html> <script language="C#" runat="server"> App_8dam._8dam o8dam; private void Page_Load(object sender, System.EventArgs e) { o8dam = new _8dam(); ShowDesk1._DataSource8Q = o8dam.SACHOVNICE; ShowDesk1.intDesk = 90; if (!Page.IsPostBack) { for (int i=0; i<o8dam.POCET_RESENI; i++) { Reseni.Items.Add("Řešení " + (i+1)); } for (int i=0; i<o8dam.UNIKATNICH_RESENI; i++) { UReseni.Items.Add("U:Řešení " + (i+1)); } } } private void Index_Changed(object sender, System.EventArgs e) { ShowDesk1.intDesk = Reseni.SelectedIndex; } private void Index_Changed2(object sender, System.EventArgs e) { ShowDesk1.intDesk = o8dam.getUNI(UReseni.SelectedIndex); } </script>
HTML doplníme select boxy
<asp:dropdownlist id="Reseni" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Index_Changed"></asp:dropdownlist> <asp:dropdownlist id="UReseni" runat="server" AutoPostBack="true" OnSelectedIndexChanged="Index_Changed2"></asp:dropdownlist>
CONZOLOVÁ APLIKÁCIE

Tak, tá je najjednoduchšie, celý kód je nižšie. dll súbor dáme do rovnakého adresára. Vytvorme súbor napr. Form1.cs a ten budeme kompilovať podobne takto:
csc /t:exe /r:System.dll /r:System.Xml.dll /r:System.Data.dll /r:_8dam.dll /out:8dam.exe form1.cs
vlastný celý obsah súboru Form1.cs je:
using System; using System.Data; using App_8dam; namespace CONApplication1 { class CON_8dam { static App_8dam._8dam o8dam = new _8dam(); public static int Main(string[] args) { Console.WriteLine("***********************************"); Console.WriteLine("Počet řešení: {0}", o8dam.POCET_RESENI); Console.WriteLine("UNI řešení {0}", o8dam.UNIKATNICH_RESENI); int x; do { Console.WriteLine("Ukončení programu = zadání čísla "0""); Console.Write("Zadej řešení (1-{0}) > ", o8dam.POCET_RESENI); try { x = Int32.Parse(Console.ReadLine()); } catch { Console.WriteLine("Chybné číslo"); x = -1; } if ((x > 0) && (x <= o8dam.POCET_RESENI)) { zobrazReseni(x-1); } } while (x > 0); if (x == 0) { Console.WriteLine("Konec..."); } return 0; } static void zobrazReseni(int idx) { for (int i=0; i<8; i++) { for (int j=0; j<8; j++) { if ((int) o8dam.SACHOVNICE.Tables[idx].Rows[j].ItemArray[7-i] == 1) { Console.Write("* "); } else { Console.Write(". "); } } Console.WriteLine(""); } } } }
Pokiaľ ste v tomto seriáli došli až sem, tak si myslím že už je to pre Vás hračka. Nová je framework funkcia Console.ReadLine, ktorá číta informácie zo vstupu, snažíme sa túto informáciu (reťazec) konvertovať na číslo. Trošku som si zjednodušil život a použil konštrukciu try-catch, k odladenie chyby, čo je jednoduché, ale asi trochu náročné čo do zdrojov a réžia. Máme tam slučku, kým používateľ nezadá číslo nula tak sa program snaží volať metódu zobrazReseni (), inak program nulou (alebo chybou vstupu) končí.
Tak, neviem ako vy ale mňa už táto úloha lezie poriadne krkom (chcel som
povedať niečo horšie
ale
ovládol som sa, nabudúce sa teda tešte na niečo iné. Keď to teda zhrniem,
tak to najdôležitejšie je, že sme vytvorili jeden dll súbor, ktorý
použijeme nielen viac krát, ale taky v iných typoch aplikácie. Taky takto
napísaná C# dll knižnica môže byť použitá aj programátorom, ktorý
používa úplne iný .NET framework jazyk, typicky napr. Visual Basic.NET či J
#. Využili sme druhýkrát raz vytvorený užívateľský kontrol (ascx súbor)
aj keď bohužiaľ sme do neho novo zasahovali, a to býva problém vývoja. Je
to predovšetkým preto, že sme presne nevedeli, ako presne bude kontrol
fungovať (predovšetkým chybne navrhnuté vstupy do kontrolu).
Aplikácia beží online na adrese http://www.stavela.cz/...Control.aspx, ďalej sa môžete pozrieť na konzolovú verziu aplikácie a Windows verziu aplikácie
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 179x (44.13 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#
