home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 June / CHIP_CD_6.ISO / software / testsoft / pcshell / excel.bw_ / excel.bw
Encoding:
Text File  |  1996-12-04  |  7.5 KB  |  266 lines

  1. knowledge base excel_test
  2.  
  3. //
  4. //    Plik : EXCEL.BW  Ocena kredytowa w oparciu o dane z arkusza Excel.
  5. //                  Przyk│ad komunikacji z wykorzystania DDE.
  6. //    Copyright (c) 1990-96 AITECH Artificial Intelligence Laboratory K-CE
  7. //
  8. //    Autorzy : K.Michalik, T.Kaczmarek
  9. //
  10. //    Uwagi :
  11. //      - Nale┐y zaktualizowaµ £cie┐kΩ do programu Microsoft Excel
  12. //        oraz do pliku zawieraj╣cego plik KREDYT.XLS
  13. //
  14.  
  15.  sources
  16.     deckred :
  17.         type kb
  18.         file "deckred.zw";
  19.  
  20.     profil :
  21.         type kb
  22.         file "profil.zw";
  23.  
  24.     gwarancje :
  25.         type kb
  26.         file "gwaranc.zw";
  27.  
  28.     sytfin :
  29.         type kb
  30.         file "sytfin.zw";
  31.  
  32. end;
  33.  control
  34.  
  35.     char  S1, S2, S3;
  36.     char  Firmy[10];
  37.     int   Sel;
  38.     int ID, ID2;
  39.     char NazwaKomorki;
  40.     char IdStr;
  41.  
  42.     run;    // automatycznie uruchom program po wczytaniu bazy wiedzy
  43.  
  44.     // poka┐ winietΩ tytu│ow╣ programu :
  45.     S1 := "KREDYT - DDE & EXCEL";
  46.     S2 := "DEMONSTRACYJNY SYSTEM TABLICOWY\nDemonstracja komunikacji z programem \nMicrosoft Excel przy u┐yciu DDE\n\nKrzysztof Michalik\nTomasz Kaczmarek\n\nAITECH\nArtificial Intelligence Laboratory\nKatowice";
  47.     S3 := "Copyright (C)1995-96 AITECH Artificial Intelligence Laboratory";
  48.     createAppWindow;
  49.     vignette( S1, S2, S3 );
  50.  
  51.     solutionWin( no );
  52.  
  53.     // Uruchom Excel'a
  54.     int Test;
  55.     int ZamknijExcela;
  56.     isAppRunning("Microsoft Excel", Test );
  57.     ZamknijExcela := 0;
  58.     if ( Test == 0 )
  59.     begin
  60.         system( "C:\\MSOFFICE\\EXCEL\\EXCEL.EXE");
  61.         ZamknijExcela := 1;
  62.     end;
  63.  
  64.  
  65.     // wybierz firmΩ do badania :
  66.  
  67.     // otw≤rz komunikacjΩ z Excel'em
  68.     ddeConnect( ID, "Excel", "System" );
  69.  
  70.     // otw≤rz plik ....
  71.     ddeExecute( ID, "[OPEN(\"C:\\BC45\\AITECH\\SHELL210\\BW\\DEMO\\KREDYT.XLS\")]");
  72.  
  73.     // nawi╣┐ komunikacjΩ arkuszem Dane
  74.     ddeConnect( ID2, "Excel", "[kredyt.xls]Dane" );
  75.  
  76.     // pobranie listy firm :
  77.     int I;
  78.     int Idx;
  79.     I := 1;
  80.     while ( 1 == 1 )
  81.     begin
  82.        NazwaKomorki := "Nazwa";
  83.        ntos( I, IdStr );
  84.        strcat( NazwaKomorki, IdStr );
  85.        Idx := I - 1;
  86.        ddeRequest( ID2, NazwaKomorki, Firmy[Idx] );
  87.        if ( Firmy[Idx] == "" )
  88.        begin
  89.            I := Idx;
  90.            break;
  91.        end;
  92.        if ( I == 7 )
  93.        begin
  94.          messageBox( 0, 0, "Uwaga !", "Max dopuszczalna liczba firm do badania to 7" );
  95.          I := Idx;
  96.          break;
  97.        end;
  98.        I := I + 1;
  99.     end;
  100.  
  101.     slistBox( 0, 0, "Lista firm ubiegajacych siΩ o kredyt", "Wybierz firmΩ :",
  102.               Firmy, I, Sel );
  103.  
  104.     if ( RETURN == 1 )
  105.     begin
  106.  
  107.         // pobieramy dane o wybranej firmie z arkusza :
  108.         char   Zabezp, Query;
  109.         double Zadluz;
  110.         double Zysk;
  111.         double Porow;
  112.         char   OsobowoscPrawna;
  113.         double Sprzedaz;
  114.  
  115.         // Pobierz "Zabezpieczenie" :
  116.         NazwaKomorki := "Zabez";
  117.         Sel := Sel + 1; // w Excel'u nazwy od 1..N
  118.         ntos( Sel, IdStr );
  119.         strcat( NazwaKomorki, IdStr );
  120.         ddeRequest( ID2, NazwaKomorki, Zabezp );
  121.  
  122.         // Pobierz "Zadluzenie" :
  123.         NazwaKomorki := "Zad│";
  124.         strcat( NazwaKomorki, IdStr );
  125.         ddeRequest( ID2, NazwaKomorki, Zadluz );
  126.  
  127.         // Pobierz "Zysk" :
  128.         NazwaKomorki := "Zysk";
  129.         strcat( NazwaKomorki, IdStr );
  130.         ddeRequest( ID2, NazwaKomorki, Zysk );
  131.  
  132.         // Pobierz "Osobowosc Prawna" :
  133.         NazwaKomorki := "OsPr";
  134.         strcat( NazwaKomorki, IdStr );
  135.         ddeRequest( ID2, NazwaKomorki, OsobowoscPrawna );
  136.  
  137.         // Pobierz "Sprzedaz" :
  138.         NazwaKomorki := "Sprz";
  139.         strcat( NazwaKomorki, IdStr );
  140.         ddeRequest( ID2, NazwaKomorki, Sprzedaz );
  141.  
  142.  
  143. //          messageBox( 0, 0, "Zabezp", Zabezp );
  144. //          char S;
  145. //          ntos( Zadluz, S );
  146. //          messageBox( 0, 0, "Zadluz", S );
  147. //          ntos( Zysk, S );
  148. //          messageBox( 0, 0, "Zysk", S );
  149. //          ntos( Sprzedaz, S );
  150. //          messageBox( 0, 0, "Sprzedaz", S );
  151. //          messageBox( 0, 0, "OsobowoscPrawna", OsobowoscPrawna );
  152.  
  153.  
  154.           // Analiza danych i dodawanie fakt≤w na ich podstawie :
  155.  
  156.           // Zabezpieczenie kredytu :
  157.           addFact( _, rodzaj_zabezpieczenia, Zabezp );
  158.  
  159.           // okreslenie plynnosci finansowej i poziomu zad│u┐enia :
  160.           Porow := Zadluz*3;
  161.           if ( Zysk < Porow )
  162.           begin
  163.               if ( Zysk < Zadluz )
  164.               begin
  165.                   addFact( _, p│ynno£µ_finansowa, "z│a" );
  166.                   addFact( _, poziom_zad│u┐enia, "niedopuszczalny" );
  167.               end
  168.               else
  169.               begin
  170.                   addFact( _, p│ynno£µ_finansowa, "zachowana" );
  171.                   addFact( _, poziom_zad│u┐enia, "dopuszczalny" );
  172.               end;
  173.           end
  174.           else
  175.           begin
  176.               addFact( _, p│ynno£µ_finansowa, "dobra" );
  177.               addFact( _, poziom_zad│u┐enia, "dopuszczalny" );
  178.           end;
  179.  
  180.           // Ustalenie faktu dotycz╣cego stanu dotychczasowych kredyt≤w
  181.           if ( Zadluz > 0 )
  182.           begin
  183.              addFact( _, dotychczasowe_kredyty, "niesp│acone" );
  184.           end
  185.           else
  186.           begin
  187.              addFact( _, dotychczasowe_kredyty, "sp│acone" );
  188.           end;
  189.  
  190.           if ( OsobowoscPrawna == "T" )
  191.           begin
  192.              addFact( _, status_prawny_klienta, "ma osobowo£µ prawn╣" );
  193.           end
  194.           else
  195.           begin
  196.              addFact( _, status_prawny_klienta, "nie ma osobowo£ci prawnej" );
  197.           end;
  198.  
  199.           // ustalenie rentownosci sprzedazy ....
  200.           // wg. wzoru   rent = (zysk*100%)/Wartosc_sprzedazy
  201.  
  202.           double Rent_Sprz;
  203.           Rent_Sprz := (Zysk*100)/Sprzedaz;
  204.           if ( Rent_Sprz <= 5 )
  205.           begin
  206.              addFact( _, rentowno£µ_sprzeda┐y, "niska" );
  207.           end
  208.           else
  209.           begin
  210.               if ( Rent_Sprz <= 20 )
  211.               begin
  212.                   addFact( _, rentowno£µ_sprzeda┐y, "wysoka" );
  213.               end
  214.               else
  215.               begin
  216.                   addFact( _, rentowno£µ_sprzeda┐y, "bardzo wysoka" );
  217.               end;
  218.           end;
  219.  
  220.           // ________________ ANALIZA KREDYTOWA ________________
  221.  
  222.           // ocena profilu klienta :
  223.           solve( profil, "profil_klienta = Profil_klienta" );
  224.  
  225.           // ocena gwarancji kredytowych :
  226.           solve( gwarancje, "gwarancje_kredytowe = Gwarancje_kredytowe" );
  227.  
  228.           // ocena sytuacji finansowej :
  229.           solve( sytfin, "sytuacja_finansowa = Sytuacja_finansowa" );
  230.           solutionWin( yes );
  231.  
  232.           // g│≤wna ocena wniosku kredytowego :
  233.           solve( deckred, "decyzja_kredytowa = DECYZJA_KREDYTOWA" );
  234.  
  235.           // ^^^^^^^^^^^^^^^^^^ KONIEC ANALIZY ^^^^^^^^^^^^^^^^^^
  236.  
  237.           // a teraz wstawimy rozwi╣zanie do arkusza :
  238.           int LR;
  239.           char Rozw[5];
  240.           saveSolution( Rozw, LR );       // pobranie rozwi╣zania
  241.           if ( LR >= 1 )
  242.           begin
  243.              char O, A, W;
  244.              splitOAV( Rozw[0], O, A, W );  // wyodrΩbnienie m.in. warto£ci
  245.              NazwaKomorki := "Dec";
  246.              strcat( NazwaKomorki, IdStr );
  247.              ddePoke( ID2, NazwaKomorki, W );
  248.           end;
  249.          delNewFacts;
  250.        end;
  251.  
  252.     // zako±cz kana│
  253.     ddeDisconnect( ID2 );
  254.  
  255.     // WSZELKIE ZMIANY W ARKUSZU NALEZY ZAPAMI╩TA╞ !!!
  256.     ddeExecute( ID, "[SAVE]" );
  257.  
  258.     // zako±cz kana│
  259.     ddeDisconnect( ID );
  260.     if ( ZamknijExcela == 1 )
  261.     begin
  262.         closeWindow( "Microsoft Excel");
  263.     end;
  264.  end;
  265. end;
  266.