Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

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

web aplikácie - ASP.NET Web Forms

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

conzolova aplikácie - ASP.NET Web Forms

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#

 

Všetky články v sekcii
ASP.NET Web Forms
Článok pre vás napísal Michael Stavěla
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Jméno: Michael Stavěla, místo nejčastějšího pobytu: Morava, vzdělání technicko-ekonomické, záliby: rekreační sport (floorball, cyklistika, plavání), programování, šifry, příroda – poznávání nových míst, hlavně ne rutina – ať se něco děje, čím víc zm...
Aktivity