// SKMDlg.cpp : implementation file // #include "stdafx.h" #include "sstream" #include "string" #include "iostream" #include "iomanip" #include <cmath> #include "SKM.h" #include "SKMDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif using namespace std; // CSKMDlg dialog CSKMDlg::CSKMDlg(CWnd* pParent /*=NULL*/) : CDialog(CSKMDlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CSKMDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_RADIO1, pierwszy); DDX_Control(pDX, IDC_RADIO2, drugi); DDX_Control(pDX, IDC_RADIO3, trzeci); DDX_Control(pDX, IDC_RADIO4, czwarty); DDX_Control(pDX, IDC_EDIT1, liczba_biletow); DDX_Control(pDX, IDC_EDIT2, odleglosc); DDX_Control(pDX, IDC_EDIT3, wynik); DDX_Control(pDX, IDC_CHECK1, piaty); } BEGIN_MESSAGE_MAP(CSKMDlg, CDialog) ON_WM_PAINT() ON_WM_QUERYDRAGICON() //}}AFX_MSG_MAP ON_BN_CLICKED(IDC_BUTTON1, &CSKMDlg::OnBnClickedButton1) ON_BN_CLICKED(IDC_BUTTON2, &CSKMDlg::OnBnClickedButton2) // ON_EN_CHANGE(IDC_EDIT1, &CSKMDlg::OnEnChangeEdit1) ON_EN_CHANGE(IDC_EDIT2, &CSKMDlg::OnEnChangeEdit2) ON_BN_CLICKED(IDC_RADIO1, &CSKMDlg::OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, &CSKMDlg::OnBnClickedRadio2) ON_BN_CLICKED(IDC_RADIO3, &CSKMDlg::OnBnClickedRadio3) ON_BN_CLICKED(IDC_RADIO4, &CSKMDlg::OnBnClickedRadio4) ON_BN_CLICKED(IDC_CHECK1, &CSKMDlg::OnBnClickedCheck1) ON_EN_CHANGE(IDC_EDIT1, &CSKMDlg::OnEnChangeEdit1) END_MESSAGE_MAP() // CSKMDlg message handlers BOOL CSKMDlg::OnInitDialog() { CDialog::OnInitDialog(); pierwszy.SetCheck(true); liczba_biletow.SetWindowTextA("1"); odleglosc.SetWindowTextA("1"); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CSKMDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this function to obtain the cursor to display while the user drags // the minimized window. HCURSOR CSKMDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CSKMDlg::OnBnClickedButton1() { int czy_pierwszy,czy_drugi,czy_trzeci,czy_czwarty,czy_piaty,i;// TODO: Add your control notification handler code here const int odleglosci[]={0,6,12,18,24,30,40,50,60,70,80,90,100,120,140,160,180,200}; const float ceny[]={2.20,2.80,3.50,4.00,5.00,5.80,6.20,6.60,8.00,9.00,10.00,11.00,12.00,14.00,16.00,18.00,19.00}; CString cs_liczba_biletow,cs_odleglosc,cs_wynik; string s_liczba_biletow,s_odleglosc,s_wynik; float f_liczba_biletow=0,f_odleglosc=0,f_wynik; stringstream strumien; stringstream mnoznik; //pobieranie danych z editboxow liczba_biletow.GetWindowTextA(cs_liczba_biletow); odleglosc.GetWindowTextA(cs_odleglosc); wynik.GetWindowTextA(cs_wynik); czy_pierwszy=pierwszy.GetCheck(); czy_drugi=drugi.GetCheck(); czy_trzeci=trzeci.GetCheck(); czy_czwarty=czwarty.GetCheck(); czy_piaty=piaty.GetCheck(); s_liczba_biletow=cs_liczba_biletow; s_odleglosc=cs_odleglosc; strumien << s_odleglosc; mnoznik << s_liczba_biletow; strumien >> f_odleglosc; mnoznik >> f_liczba_biletow; if (f_odleglosc>200) { MessageBox("Podaj mniejsza odleg�o��!","B��D"); return; odleglosc.SetWindowTextA(" "); wynik.SetWindowTextA("0"); } /*if (f_odleglosc<0) { MessageBox("Podaj wi�ksz� odleg�o��!","B��D"); return; odleglosc.SetWindowTextA(" "); wynik.SetWindowTextA("0"); }*/ if (f_liczba_biletow>10000000000) { MessageBox("Podaj mniejsz� liczbe bilet�w!","B��D"); return; liczba_biletow.SetWindowTextA(" "); wynik.SetWindowTextA("0"); } /*if (f_liczba_biletow<0) { MessageBox("Podaj mniejsza liczbe bilet�w!","B��D"); liczba_biletow.SetWindowTextA(" "); wynik.SetWindowTextA(" "); return; }*/ float temp=f_odleglosc; float ulga,wycieczkowy; /*if(czy_pierwszy==1) { for (i=0; i<18; i++) { if(odleglosci[i] < temp && temp <= odleglosci[i+1] && temp <= 200) { if (czy_piaty==1) { f_odleglosc = ceny[i]+2; f_odleglosc*=f_liczba_biletow; strumien.clear(); //czyscimy strumien strumien << f_odleglosc; //do strumienia strumien >> s_odleglosc; //ze strumienia } else { f_odleglosc = ceny[i]; f_odleglosc*=f_liczba_biletow; strumien.clear(); //czyscimy strumien strumien << f_odleglosc; //do strumienia strumien >> s_odleglosc; //ze strumienia } } } }*/ for (i=0; i<18; i++) { ulga = ceny[i]; if(odleglosci[i] < temp && temp <= odleglosci[i+1] && temp <= 200) { if (czy_pierwszy==1) { ulga*=0; } else if (czy_drugi==1) { ulga*=0.37; } else if (czy_trzeci==1) { ulga*=0.78; } else if(czy_czwarty==1) { ulga*=0.95; } f_odleglosc=ceny[i]; if (czy_piaty==1) { f_odleglosc = ceny[i]+2; } else { f_odleglosc = ceny[i]; } f_odleglosc-=ulga; //f_odleglosc*=f_liczba_biletow; //zaokraglamy wynik //CString wynik; //wynik.Format("%.2f",f_odleglosc); strumien.clear(); strumien << wynik; //do strumienia strumien >> s_odleglosc; //ze strumienia } } /*} else { ulga = ceny[i]; f_odleglosc = ceny[i]; ulga*=0.37; f_odleglosc-=ulga; f_odleglosc*=f_liczba_biletow; //zaokraglamy wynik CString wynik; wynik.Format("%.2f",f_odleglosc); strumien.clear(); strumien << wynik; //do strumienia strumien >> s_odleglosc; //ze strumienia } } } } else if(czy_trzeci==1) { for (i=0; i<18; i++) { if(odleglosci[i] < temp && temp <= odleglosci[i+1] && temp <= 200) { if (czy_piaty==1) { ulga = ceny[i]; f_odleglosc = ceny[i]+2; ulga*=0.78; f_odleglosc-=ulga; f_odleglosc*=f_liczba_biletow; //zaokraglamy wynik CString wynik; wynik.Format("%.2f",f_odleglosc); strumien.clear(); strumien << wynik; //do strumienia strumien >> s_odleglosc; //ze strumienia } else { ulga = ceny[i]; f_odleglosc = ceny[i]; ulga*=0.78; f_odleglosc-=ulga; f_odleglosc*=f_liczba_biletow; //zaokraglamy wynik CString wynik; wynik.Format("%.2f",f_odleglosc); strumien.clear(); strumien << wynik; //do strumienia strumien >> s_odleglosc; //ze strumienia } } } } else if(czy_czwarty==1) { for (i=0; i<18; i++) { if(odleglosci[i] < temp && temp <= odleglosci[i+1] && temp <= 200) { if (czy_piaty==1) { ulga = ceny[i]; f_odleglosc = ceny[i]+2; ulga*=0.95; f_odleglosc-=ulga; f_odleglosc*=f_liczba_biletow; //zaokraglamy wynik CString wynik; wynik.Format("%.2f",f_odleglosc); strumien.clear(); strumien << wynik; //do strumienia strumien >> s_odleglosc; //ze strumienia } else { ulga = ceny[i]; f_odleglosc = ceny[i]; ulga*=0.95; f_odleglosc-=ulga; f_odleglosc*=f_liczba_biletow; //zaokraglamy wynik CString wynik; wynik.Format("%.2f",f_odleglosc); strumien.clear(); strumien << wynik; //do strumienia strumien >> s_odleglosc; //ze strumienia } } } }*/ /* else { MessageBox("Zaznacz rodzaj ulgi"); return; } */ //du�a czcionka CFont *m_Font1 = new CFont; m_Font1->CreatePointFont(256, "Arial CE"); wynik.SetFont(m_Font1); //CString wynik; //wynik.Format("%.2f",f_odleglosc); double cenabiletu; cenabiletu=f_odleglosc; cenabiletu=floor(cenabiletu*100+0.5)/100.0; cenabiletu *=f_liczba_biletow; //f_cena *= f_liczba; stringstream wynik1; //string s_wynik; //wynik.Format("%.2f",f_cena); wynik1.setf(ios::fixed,ios::floatfield); wynik1.precision(2); wynik1 << cenabiletu; wynik1 >> s_wynik; wynik.SetWindowTextA(s_wynik.c_str()); //UpdateData(false); } void CSKMDlg::OnBnClickedButton2() { OnOK();// TODO: Add your control notification handler code here } void CSKMDlg::OnEnChangeEdit1() { OnBnClickedButton1(); // TODO: If this is a RICHEDIT control, the control will not // send this notification unless you override the CDialog::OnInitDialog() // function and call CRichEditCtrl().SetEventMask() // with t...
pawkos5