home *** CD-ROM | disk | FTP | other *** search
Wrap
knowledge base excel_test // // Plik : EXCEL.BW Ocena kredytowa w oparciu o dane z arkusza Excel. // Przyk│ad komunikacji z wykorzystania DDE. // Copyright (c) 1990-96 AITECH Artificial Intelligence Laboratory K-CE // // Autorzy : K.Michalik, T.Kaczmarek // // Uwagi : // - Nale┐y zaktualizowaµ £cie┐kΩ do programu Microsoft Excel // oraz do pliku zawieraj╣cego plik KREDYT.XLS // sources deckred : type kb file "deckred.zw"; profil : type kb file "profil.zw"; gwarancje : type kb file "gwaranc.zw"; sytfin : type kb file "sytfin.zw"; end; control char S1, S2, S3; char Firmy[10]; int Sel; int ID, ID2; char NazwaKomorki; char IdStr; run; // automatycznie uruchom program po wczytaniu bazy wiedzy // poka┐ winietΩ tytu│ow╣ programu : S1 := "KREDYT - DDE & EXCEL"; 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"; S3 := "Copyright (C)1995-96 AITECH Artificial Intelligence Laboratory"; createAppWindow; vignette( S1, S2, S3 ); solutionWin( no ); // Uruchom Excel'a int Test; int ZamknijExcela; isAppRunning("Microsoft Excel", Test ); ZamknijExcela := 0; if ( Test == 0 ) begin system( "C:\\MSOFFICE\\EXCEL\\EXCEL.EXE"); ZamknijExcela := 1; end; // wybierz firmΩ do badania : // otw≤rz komunikacjΩ z Excel'em ddeConnect( ID, "Excel", "System" ); // otw≤rz plik .... ddeExecute( ID, "[OPEN(\"C:\\BC45\\AITECH\\SHELL210\\BW\\DEMO\\KREDYT.XLS\")]"); // nawi╣┐ komunikacjΩ arkuszem Dane ddeConnect( ID2, "Excel", "[kredyt.xls]Dane" ); // pobranie listy firm : int I; int Idx; I := 1; while ( 1 == 1 ) begin NazwaKomorki := "Nazwa"; ntos( I, IdStr ); strcat( NazwaKomorki, IdStr ); Idx := I - 1; ddeRequest( ID2, NazwaKomorki, Firmy[Idx] ); if ( Firmy[Idx] == "" ) begin I := Idx; break; end; if ( I == 7 ) begin messageBox( 0, 0, "Uwaga !", "Max dopuszczalna liczba firm do badania to 7" ); I := Idx; break; end; I := I + 1; end; slistBox( 0, 0, "Lista firm ubiegajacych siΩ o kredyt", "Wybierz firmΩ :", Firmy, I, Sel ); if ( RETURN == 1 ) begin // pobieramy dane o wybranej firmie z arkusza : char Zabezp, Query; double Zadluz; double Zysk; double Porow; char OsobowoscPrawna; double Sprzedaz; // Pobierz "Zabezpieczenie" : NazwaKomorki := "Zabez"; Sel := Sel + 1; // w Excel'u nazwy od 1..N ntos( Sel, IdStr ); strcat( NazwaKomorki, IdStr ); ddeRequest( ID2, NazwaKomorki, Zabezp ); // Pobierz "Zadluzenie" : NazwaKomorki := "Zad│"; strcat( NazwaKomorki, IdStr ); ddeRequest( ID2, NazwaKomorki, Zadluz ); // Pobierz "Zysk" : NazwaKomorki := "Zysk"; strcat( NazwaKomorki, IdStr ); ddeRequest( ID2, NazwaKomorki, Zysk ); // Pobierz "Osobowosc Prawna" : NazwaKomorki := "OsPr"; strcat( NazwaKomorki, IdStr ); ddeRequest( ID2, NazwaKomorki, OsobowoscPrawna ); // Pobierz "Sprzedaz" : NazwaKomorki := "Sprz"; strcat( NazwaKomorki, IdStr ); ddeRequest( ID2, NazwaKomorki, Sprzedaz ); // messageBox( 0, 0, "Zabezp", Zabezp ); // char S; // ntos( Zadluz, S ); // messageBox( 0, 0, "Zadluz", S ); // ntos( Zysk, S ); // messageBox( 0, 0, "Zysk", S ); // ntos( Sprzedaz, S ); // messageBox( 0, 0, "Sprzedaz", S ); // messageBox( 0, 0, "OsobowoscPrawna", OsobowoscPrawna ); // Analiza danych i dodawanie fakt≤w na ich podstawie : // Zabezpieczenie kredytu : addFact( _, rodzaj_zabezpieczenia, Zabezp ); // okreslenie plynnosci finansowej i poziomu zad│u┐enia : Porow := Zadluz*3; if ( Zysk < Porow ) begin if ( Zysk < Zadluz ) begin addFact( _, p│ynno£µ_finansowa, "z│a" ); addFact( _, poziom_zad│u┐enia, "niedopuszczalny" ); end else begin addFact( _, p│ynno£µ_finansowa, "zachowana" ); addFact( _, poziom_zad│u┐enia, "dopuszczalny" ); end; end else begin addFact( _, p│ynno£µ_finansowa, "dobra" ); addFact( _, poziom_zad│u┐enia, "dopuszczalny" ); end; // Ustalenie faktu dotycz╣cego stanu dotychczasowych kredyt≤w if ( Zadluz > 0 ) begin addFact( _, dotychczasowe_kredyty, "niesp│acone" ); end else begin addFact( _, dotychczasowe_kredyty, "sp│acone" ); end; if ( OsobowoscPrawna == "T" ) begin addFact( _, status_prawny_klienta, "ma osobowo£µ prawn╣" ); end else begin addFact( _, status_prawny_klienta, "nie ma osobowo£ci prawnej" ); end; // ustalenie rentownosci sprzedazy .... // wg. wzoru rent = (zysk*100%)/Wartosc_sprzedazy double Rent_Sprz; Rent_Sprz := (Zysk*100)/Sprzedaz; if ( Rent_Sprz <= 5 ) begin addFact( _, rentowno£µ_sprzeda┐y, "niska" ); end else begin if ( Rent_Sprz <= 20 ) begin addFact( _, rentowno£µ_sprzeda┐y, "wysoka" ); end else begin addFact( _, rentowno£µ_sprzeda┐y, "bardzo wysoka" ); end; end; // ________________ ANALIZA KREDYTOWA ________________ // ocena profilu klienta : solve( profil, "profil_klienta = Profil_klienta" ); // ocena gwarancji kredytowych : solve( gwarancje, "gwarancje_kredytowe = Gwarancje_kredytowe" ); // ocena sytuacji finansowej : solve( sytfin, "sytuacja_finansowa = Sytuacja_finansowa" ); solutionWin( yes ); // g│≤wna ocena wniosku kredytowego : solve( deckred, "decyzja_kredytowa = DECYZJA_KREDYTOWA" ); // ^^^^^^^^^^^^^^^^^^ KONIEC ANALIZY ^^^^^^^^^^^^^^^^^^ // a teraz wstawimy rozwi╣zanie do arkusza : int LR; char Rozw[5]; saveSolution( Rozw, LR ); // pobranie rozwi╣zania if ( LR >= 1 ) begin char O, A, W; splitOAV( Rozw[0], O, A, W ); // wyodrΩbnienie m.in. warto£ci NazwaKomorki := "Dec"; strcat( NazwaKomorki, IdStr ); ddePoke( ID2, NazwaKomorki, W ); end; delNewFacts; end; // zako±cz kana│ ddeDisconnect( ID2 ); // WSZELKIE ZMIANY W ARKUSZU NALEZY ZAPAMI╩TA╞ !!! ddeExecute( ID, "[SAVE]" ); // zako±cz kana│ ddeDisconnect( ID ); if ( ZamknijExcela == 1 ) begin closeWindow( "Microsoft Excel"); end; end; end;