Bài thực hành buổi 5 Môn: Lập Trình Hướng Đối Tượng GV: Lê Thị Thu Lan

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

default Bài thực hành buổi 5 Môn: Lập Trình Hướng Đối Tượng GV: Lê Thị Thu Lan

Bài gửi by augustion_ptn on Wed Sep 28, 2011 8:14 pm

1. Hàm độc lập là hàm bạn
Khái báo CLASS Diem(thuộc tính: x,y)
Dựng hàm độc lập kiểm tra 2 điểm có trùng nhau không.
Code:
#include<conio.h>
#include<iostream>
using namespace std;
class diem
{
      int x;
      int y;
      public:
            diem(int a, int b){x=a;y=b;}; //Khai bao ham friend
            friend int trung(diem,diem);
};
int trung(diem a,diem b)
{ //Vila ham friend => duoc quyen truy cap den cac thanh phan private cua a,b
      if(a.x==b.x && a.y==b.y)
      return 1;
      else
      return 0;
}
int main()
{
      diem a(1,2), b(1,2);
      if(trung(a,b)==1)
      cout<<"Diem a trung voi diem b.";
      else
      cout<<"Diem a khong trung voi diem b";
      diem a1(1,2),b1(1,1);
      if(trung(a1,b1)==1)
      cout<<"\nDiem a1 trung voi diem b1";
      else
      cout<<"\nDiem a1 khong trung voi b1";
      getch();
}
2. Lớp là bạn
Khái báo Class Diem(thuộc tính: x,y)
Khai báo Class DoanThang trong đó xác định đoạn thẳng thông qua 2 điểm và để tính chiều dài đoạn thẳng cần lấy tọa độ các điểm (thuộc tính private của Class Diem).
Code:
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream>
using namespace std;
class diem
{
      int x;
      int y;
      public:
            diem(int a, int b){x=a;y=b;}; //Khai bao ham friend
            void indiem(){cout<<"("<<x<<","<<y<<")";};
            //Cho phep class doanthang truy cap toi cac thanh phan private
            friend class doanthang;
};
class doanthang
{
      diem d1,d2; //Doan thang la duong noi giua haio diem
      public:
      //Khoi tao doanthang(x1,y1,x2,y2) cung chinh la khoi tao 2 diem d1,d2
            doanthang(int x1,int y1,int x2,int y2):d1(x1,y1),d2(x2,y2){};
            void indoanthang(){d1.indiem();d2.indiem();};
            float chieudai()
            {
                  float chieudai;
                  //Can lay thong tin x,y(private) cua 2 diem de tinh chieu dai doan thang
                  chieudai=sqrt(pow((d1.x-d2.x),2)+pow((d1.y-d2.y),2));
                  return chieudai;
            };
};
int main()
{
      doanthang a(0,0,3,0);
      a.indoanthang();
      cout<<"\nChieu dai doan thang tren: "<<a.chieudai();
      getch();
}
3. Hàm thành viên của một lớp là bạn
Khái báo CLASS PhanSo(x,y) mô tả phân số x/y. Định nghĩa hàm xây dựng và hàm hiển thị.
Khai báo CLASS So(x). Định nghĩa hàm xây dựng, hàm hiển thị và hàm chuyển đổi một phân số thành một số.
Code:
#include<stdio.h>
#include<conio.h>
#include<iostream>
using namespace std;
class phanso;
class so
{
      private:
              float x;
      public:
            so(float);
            void hien(char* = "");
            void doi_phanso_so(phanso);
};
class phanso
{
      private:
              int x;
              int y;
      public:
            phanso(int,int);
            void hien(char* = "");
            //Cho phep ham doi_phanso_so truy cap den cac thanh phan private cua phanso
            friend void so::doi_phanso_so(phanso);
};
phanso::phanso(int a, int b)
{
      x=a;y=b;
};
void phanso::hien(char* str)
{
      cout<<str;
      cout<<"("<<x<<"/"<<y<<")";
};
so::so(float x1=0){x=x1;};
void so::hien(char* str)
{
      cout<<str;
      cout<<"\nSo:"<<x;
};
//De chuyen mot phan so sang mot so, can lay duoc gia tri tu, mau (private) cua phan so => nen ham nay phai la friend cua phanso
void so::doi_phanso_so(phanso x1)
{
      x=x1.x/x1.y;
};
int main()
{
      phanso a(5,5);
      a.hien("\nPhan so A la: ");
      so b;
      b.doi_phanso_so(a);
      b.hien("\nDoi phan so A sang dang so: ");
      getch();
}
4. Bài tổng hợp
Quản lý sinh viên.
Quản lý lớp học có kèm danh sách sinh viên.
Cho phép tìm kiếm sinh viên trong lớp theo mã, khi tìm thấy, in toàn bộ thông tin sinh viên đó ra màn hình, nêu không thấy, báo lỗi không tồn tại mã sinh viên
Code:
#include<conio.h>
#include<string.h>
#include<iostream>
using namespace std;
//Khai bao lop hoc truoc de co the xac nhan lophoc la friend trong sinh vien
class lophoc;
class sinhvien
{
      private:
      char ms[10];
      char* hoten;
      int ns;
      float diemtb;
      public:
            sinhvien();
            ~sinhvien();
            sinhvien(char*,char*,int,float);
            void nhap(char* = "");
            void in(char* = "");
            sinhvien(const sinhvien&);
            //Danh dau lophoc la friend cua sinhvien de co the truy cap den cac thanh phan private
            friend class lophoc;
};
sinhvien::~sinhvien()
{
      delete[]hoten;
}
sinhvien::sinhvien(const sinhvien& s)
{
      strcpy(ms,s.ms);
      hoten=new char[50];
      strcpy(hoten,s.hoten);
      ns=s.ns;
      diemtb=s.diemtb;
};
sinhvien::sinhvien()
{
      strcpy(ms,"");
      hoten=new char[50];
      strcpy(hoten,"");
      ns=1980;
      diemtb=0;
};
sinhvien::sinhvien(char* m,char* t, int b, float d)
{
      strcpy(ms,m);
      hoten=new char[50];
      strcpy(hoten,t);
      ns=b;
      diemtb=d;
};
void sinhvien::nhap(char* str)
{
      cout<<str;
      cout<<"\nMa sinh vien: ";
      cin>>ms;
      cout<<"\nTen sinh vien";
      cin.ignore();
      cin.getline(hoten,49);
      cout<<"Nam sinh: ";
      cin>>ns;
      cout<<"\nDiem TB: ";
      cin>>diemtb;
};
void sinhvien::in(char* str)
{
      cout<<str;
      cout<<"\n"<<ms<<" : "<<hoten<<"(NS: "<<ns<<") Diem: "<<diemtb;
};
class lophoc
{
      private:
              char malop[10];
              char* tenlop;
              char nienkhoa[9];
              int slsv;
              sinhvien* dssv[200]; //Toi da 200 sinh vien cho 1 lop
              public:
                    lophoc();
                    void nhap();
                    void in();
                    //Tim thong tin sinh vien dua tren mssv
                    void timsv();
};
lophoc::lophoc()
{
      strcpy(malop,"");
      tenlop=new char[50];
      strcpy(nienkhoa,"");
      slsv=0;
}
void lophoc::nhap()
{
      cout<<"\nMa lop hoc: ";
      cin>>malop;
      cout<<"\nTen lop: ";
      cin.ignore();
      cin.getline(tenlop,50);
      cout<<"\nNien khoa: ";
      cin>>nienkhoa;
      cout<<"\nSo luong sinh vien: ";
      cin>>slsv;
      for(int i=0;i<slsv;i++)
      {
              //Do so luong sinh vien tung lop khac nhau nen viec cap phat vung nho truoc khi cap nhat tt sv cu the
              dssv[i]=new sinhvien();
              dssv[i]->nhap();
      }
};
void lophoc::in()
{
      cout<<"\nLop: "<<malop<<". Ten lop: "<<tenlop<<" ("<<nienkhoa<<"). So luong sv: "<<slsv<<"";
      cout<<"\nDanh sach sinh vien cua lop";
      for(int i=0;i<slsv;i++)
      {
              dssv[i]->in();
      }
};
//Dinh nghia viec tinh ham sinh vien trong lop
void lophoc::timsv()
{
      char ms[10];
      bool thay=false;
      cout<<"\nNhap ma sinh vien can tim: ";
      cin>>ms;
      for(int i=0;i<slsv;i++)
      {
              if(strcmp(dssv[i]->ms,ms)==0)
              {
                    dssv[i]->in("Thong tin ");
                    thay=true;
              }
      }
      if(thay==false)
      cout<<"Khong tim thay sinh vien so ma so: "<<ms;
};
int main()
{
      lophoc a;
      a.nhap();
      a.in();
      a.timsv();
      getch();
}
Bài tự làm (tổng hợp):
5. Mở rộng bài tập quản lý phòng học
Xây dựng hàm thành viên của TRUONG cho phép tìm thông tin phòng học trong trường dựa trên mã phòng.
Chương trình cho phép
nhập n trường và thông tin phòng kèm theo.
nhập mã phòng và tìm thông tin phòng trên tất cả các trường mà chương trình đang quản lý. In kết quả gồm mã trường, tên trường, và thông tin của phòng vừa tìm thấy hoặc báo lỗi không tìm được.
avatar
augustion_ptn

Posts : 634
Thanked : 100
Gia Nhập 27/08/2010

Tài Sản
Thú nuôi:

http://thanhnhancomputer.freevnn.com

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết