skm.txt

(10 KB) Pobierz
// 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...
Zgłoś jeśli naruszono regulamin