Announcement

Collapse
No announcement yet.

Bài toán Hóa Đơn giài bằng OOP

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Bài toán Hóa Đơn giài bằng OOP

    Thực hành hôm thứ năm 11/8, bài dịch vụ giặt ủi và thuê xe ấy, bạn nào hôm đó có chép thì up lên cho mình tham khảo với nhé. Hôm đó k có usb k chép dc, cảm ơn trc nhé. ^^
    --------
    Một khách sạn cung cấp hai dịch vụ giặt ủi và thuê xe.
    · Dịch vụ giặt ủi:
    ◦ tiền giặt ủi = số kilogam quần áo * đơn giá + tiền dịch vụ cộng thêm.
    ◦ Nếu số kg trên 10kg thì giảm 5%.
    ◦ Tiền dịch vụ cộng thêm dành cho các sản phẩm cần chế độ giặt ủi đặc biệt.
    · Dịch vụ thuê xe:
    ◦ tiền thuê xe = số giờ thuê * đơn giá.
    ◦ Nếu thuê quá 7giờ giảm 10%
    Thông tin hóa đơn sử dụng dịch vụ gồm makh (mã khách hàng), tenkh (họ tên khách hàng), và n (0<n<200) dịch vụ mà khách hàng đã sử dụng, trigia (trị giá hóa đơn).
    Hãy vẽ sơ đồ lớp, viết khai báo lớp, khai báo hàm (chỉ ghi tên lớp, tên hàm) để có thể viết được chương trình sau:
    a. Nhập hóa đơn (người dùng nhập gồm các dịch vụ mà khách hàng đã sử dụng)
    b. Xuất hóa đơn
    c. Tính tiền mỗi dịch vụ mà khách hàng phải trả
    d. Tính tổng số tiền mà khách sạn thu được.
    Last edited by BiThuDoan; 13-08-2011, 06:25.

  • #2
    Cái này thì còn thiếu 1 chút nữa về biến static, bài này chưa hoàn chỉnh chỉ là gợi ý
    Code:
    class KHACHHANG
    {    private:
            int MaKH;
            char TenKH[100];    
        public:
            void Nhap();
            void Xuat();
    };
    class ****** 
    {    protected:
            int DonGia;
            int SoLuong;    
            int GiamGiaSL; 
            int GiamGiaPT; 
        public:
            virtual void Nhap(){};
            void Xuat();
            virtual int Tinh(){};
    }
    class ******GIATUI: public ******
    {    private:
            int ******CongThem;    
        public:
            void Nhap()
            {
                nhap SL,DG, ConGThem
            }
            int Tinh()
            {
                int tam;
                tam = SL * DG + ConGThem;
                if (SL>10) tam = tam * .095;        
                retrun tam;
            }
    }
    class ******THUEXE: public ******
    {    public:
            void Nhap()
            {
                nhap SL,DG
            }
            int Tinh()
            {
            }
    }
    class HOADON
    {    private:
            KHACHHANG kh;
            ******* ******[200];
            int SL;
        public:
            void Nhap()
            {
                Nhap SL;
                for (int i=0;i<SL;i++)    
                {
                    if (tl==1)
                        ******[i] = new GIATUI();
                    else 
                        ******[i] = new THUEXE(); 
                    ******[i]->Nhap();    
                }
                
            }
            int GiaTri()
            {
                int KQ=0;
                for (i=0;i<SL;i++)            
                    KQ = KQ + ******[i]->Tinh();
            }
    }
    main()
    {
        HOADON a;
        a.Nhap(); Nhap vao KH, cac dich vu ma nguoi do dung
        cout<<a.GiaTri();
    }
    :happy:SỐNG TRONG MÁI NHÀ UIT, BẠN HÃY NHỚ :happy:
    1. Chấp hành pháp luật, tuân thủ nội quy; 2. Tích cực học tập, chủ động nghiên cứu
    3. Đi học đúng giờ, trang phục lịch sự; 4. Nhớ xếp hàng và đừng chen lấn
    5. Sống có trách nhiệm và biết sẻ chia; 6. Giữ gìn tài sản chung như tài sản của chính bạn
    7. Sử dụng tài sản, thời gian hiệu quả; 8. Khiêm tốn, lễ phép, hòa nhã, thân thiện
    9. Không xả rác để không nhặt rác; 10. Văn minh, lịch sự dù trên lớp học, diễn đàn hay mạng xã hội

    Comment


    • #3
      thay xem dum bai em thieu va sai cho nao!??
      Code:
      #include "stdafx.h"
      #include<iostream>
      using namespace std;
      class ******
      {
      protected:
      	float tien;
      	int dongia;
      public:
      	******()
      	{
      		tien=0;
      	}
      	virtual void nhap()	{}
      	virtual void xuat()	{}
      	virtual float tinhtien()=0;
      };
      class GIATUI:public ******
      {
      private: 
      	int sokg;
      	int hap;
      	int temp;
      public:
      	GIATUI()
      	{
      		this->dongia=10000;
      		sokg=0;
      		hap=12000;
      	}
      	float tinhtien()
      	{
      		if(temp==0)
      		{
      			if(sokg>=10)tien=(sokg*dongia*0.95);
      			else tien=(sokg*dongia);
      		}
      		else
      		{
      			if(sokg>=10)tien=(sokg*dongia*0.95)+hap;
      			else tien=(sokg*dongia)+hap;
      		}
      		return tien;
      	}
      	void nhap()
      	{
      		******::nhap();
      		cout<<"nhap so kg \n";cin>>sokg;
      		cout<<"nhan so 1 de chon dv hap,0 khong lam j\n";
      		cin>>temp;
      		switch(temp)
      		{
      		case 1:
      			cout<<"ban da chon dich vu cong them la hap \n";
      			break;
      		case 0: 
      			break;
      		}
      	}
      	void xuat()
      	{
      		cout<<"\nDon gia la="<<this->dongia<<endl;
      		cout<<"so kg="<<sokg<<endl;
      		if(temp!=0)cout<<"dich vu cong them ="<<hap<<"\n";
      		if(sokg>=10) cout<<"Vi so kg quan ao >7 nen duoc giam 5%\n";
      		cout<<" tien Khach Hang phai tra=";printf("%0.2f",tinhtien());
      	}
      };
      class THUEXE:public ******
      {
      private:
      	int sogio;
      public:
      	THUEXE()
      	{
      		this->dongia=20000;
      		sogio=0;
      	}
      	float tinhtien()
      	{
      		if(sogio>=7) tien=(sogio*dongia*0.93);
      		else tien=(sogio*dongia);
      		return tien;
      	}
      	void nhap()
      	{
      		******::nhap();
      		cout<<"nhap so gio: ";cin>>sogio;
      	}
      	void xuat()
      	{
      		cout<<"\nDon gia la="<<this->dongia<<endl;
      		cout<<"so gio="<<sogio<<endl;
      		if(sogio>=7) cout<<"Vi so gio ban thue xe lon hon 7 nen duoc giam 7%\n";
      		cout<<"tien Khach Hang phai tra=";printf("%0.2f",tinhtien());
      	}
      };
      class KHACHHANG
      {
      	 private:
              char makh[10];
      		char hoten[30];
          public:
              void Nhap()
      		{
      			cout<<"nhap ma KH: ";cin.ignore();cin.getline(makh,10);
      			cout<<"nhap ten kh: ";cin.getline(hoten,30);
      		}
      		void xuat()
      		{
      		cout<<"\n Ma KH: ";cout<<makh;
      		cout<<"\n Ten kh: ";cout<<hoten;
      		}
      };
      class HOADON
      {
      private:
      	KHACHHANG kh[200];
      	****** *dv[200];
      	int sokh;
      	float trigia;
      public:	
      	int kiemtra;
      	HOADON()
      	{
      		trigia=0;
      	}
      	void nhap()
      	{
      		cout<<"nhap so luong khach hang \n";
      		cin>>sokh;
      		int them;
      		for(int i=0;i<sokh;i++)
      		{
      			kh[i].Nhap();
      lai:
      			nthem:
      		cout<<"nhan so 1 if la dich vu Thue XE, 2 giat ui \n";
      		cin>>kiemtra;
      		switch(kiemtra)
      		{
      		case 1:
      			cout<<"***********dich vu thue xe***********\n";
      			dv[i]=new THUEXE();break;
      		case 2:
      			cout<<"***********dich vu giat ui***********\n";
      			dv[i]=new GIATUI();break;
      		default:
      			goto lai;
      			break;
      		}
      		dv[i]->nhap();
      		}
      	}
      	void xuat()
      	{
      		cout<<"\n";
      		for(int i=0;i<sokh;i++)
      		{
      			cout<<"\n****************************************"<<endl;
      			kh[i].xuat();
      		dv[i]->xuat();
      		}
      	}
      	float tongtienks()
      	{
      		cout<<"\n";
      		for(int i=0;i<sokh;i++)
      		{
      			trigia =trigia+dv[i]->tinhtien();
      		}
      		return trigia;
      	}
      };
      
      int _tmain(int argc, _TCHAR* argv[])
      {
      	HOADON a;
      	a.nhap();
      	a.xuat();
      	cout<<"\n****************************************"<<endl;
      	printf("Tong Tien Khach San Thu Duoc La= %0.2f",a.tongtienks());
      	cin.get();cin.get();
      	return 0;
      }
      Last edited by 09520722; 15-08-2011, 08:19. Reason: fix lổi

      Comment


      • #4
        cái này hôm bữa làm nè...
        Code:
        #include "iostream.h"
        
        class DICH_VU
        {
         public:
                virtual void nhap()=0;
                virtual void xuat()=0;
                virtual int gia_******()=0;
        };
        
        class GIAT:public DICH_VU
        {
              static const int don_gia=20;
              int tien;
              int so_kg;
              int tien_cong_them;
        public:
               GIAT()
               {
                     tien=0;
                     so_kg=0;
                     tien_cong_them=0;
                     }
               void nhap()
               {
                    cout<<"Nhap so kg: "<<endl;
                    cin>>so_kg;
                    cout<<"Tien_cong_them: "<<endl;
                    cin>>tien_cong_them;
               }
               int gia_******()
               {
                   tien = don_gia*so_kg+tien_cong_them;
                   if(so_kg>10)
                      tien =(int) tien * 0.95;
                   return tien;
               }
               void xuat()
               {
                    cout<<"Dich vu giat: "<<tien<<"k"<<endl;
               }       
        };
        
        class THUE_XE:public DICH_VU
        {
              static const int don_gia=30;
              int tien;
              int so_gio;
        public:
               THUE_XE()
               {
                      tien =0;
                      so_gio=0;  
                        }
              void nhap()
               {
                    cout<<"Nhap so gio: "<<endl;
                    cin>>so_gio;
               }
               int gia_******()
               {
                   tien = don_gia*so_gio;
                   if(so_gio>7)
                      tien = (int)tien * 0.9;
                   return tien;                       
               }
               void xuat()
               {
                    cout<<"Dich vu thue xe: "<<tien<<"k"<<endl;
               }
        };
        
        class HOA_DON
        {
              DICH_VU* dv[100];
              char makh[20];
              char tenkh[100];
              int n;
              int trigia;
        public:       
               HOA_DON()
               {
                        n=0;
                        trigia=0;
               }       
               void nhap()
               {
                    int loai_dv,kt;            
                                  
                   cout<<"Nhap ma kh: "<<endl;
                   cin.getline(makh,20);
                   cout<<"Nhap ten: "<<endl;
                   cin.getline(tenkh,100);           
                   do
                   {
                       cout<<"Loai dich vu: \n 1 - thue xe \n 2 - Giat "<<endl;
                       cin >>loai_dv;         
                       if(loai_dv==1)
                       {
                               dv[n]=new THUE_XE();
                               dv[n]->nhap();
                               trigia=trigia+dv[n]->gia_******();
                               }
                       else if(loai_dv==2)
                       {
                             dv[n]=new GIAT();
                             dv[n]->nhap();
                             trigia=trigia+dv[n]->gia_******();
                            }
                       n++;
                       cout<<"Ban muon nhap them loai dich vu khac khong? 1- Tiep  2-Dung lai "<<endl;
                       cin>>kt;
                   } while(kt!=2&&n<100);
               }
               void xuat()
               {
                    cout<<"Ma KH: "<<makh<<endl;
                    cout<<"Ten KH: "<<tenkh<<endl;
                    cout<<"/////////////////////////////////////////////////////////"<<endl;
                    for(int i=0;i<n;i++)
                    {
                            cout<<"Dich vu thu "<<i+1<<": "; 
                            dv[i]->xuat();
                            }
                    cout<<"/////////////////////////////////////////////////////////"<<endl;
                    cout<<"Tri gia hoa don: "<<trigia<<"k"<<endl;
               }
        };
        main()
        {
              HOA_DON hd;
              hd.nhap();
              hd.xuat();
              system("pause");
              }
        Attached Files
        Last edited by BiThuDoan; 13-08-2011, 18:15.

        Comment


        • #5
          Bài trên các bạn còn thiếu: Copy Contructor,Operator = ,destructor cho lớp HOADON.

          Im a british accent lover

          Comment


          • #6
            Originally posted by 08520016 View Post
            Bài trên các bạn còn thiếu: Copy Contructor,Operator = ,destructor cho lớp HOADON.
            hi, đúng là thiếu destructor
            bạn nói rõ hơn về sự cần thiết về copy constructor và operator = khi compiler có dạng ngầm định rồi mà?
            thanks

            Comment

            LHQC

            Collapse
            Working...
            X