intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

LẬP TRÌNH C ++ QUẢN LÝ NHÀ TRỌ

Chia sẻ: Nguyễn Vũ Minh Tâm | Ngày: | Loại File: DOC | Số trang:12

598
lượt xem
94
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

I . Mô Tả Đề Tài: Giả sử : chúng ta có một nhà trọ có 5 phòng và 7 sinh viên.Nhiệm vụ của đề tài là quản lý danh sách siên viên có trong nhà trọ,thực hiện thêm một sinh viên vào nhà trọ hoặc xóa một sinh viên ra khỏi nhà trọ,có thể xem tiền phòng của bất cứ phòng nào và số tiền mà mỗi sinh viên trong phòng đó phải trả,…

Chủ đề:
Lưu

Nội dung Text: LẬP TRÌNH C ++ QUẢN LÝ NHÀ TRỌ

  1. ĐỀ TÀI: QUẢN LÝ NHÀ TRỌ I . Mô Tả Đề Tài: Giả sử : chúng ta có một nhà trọ có 5 phòng và 7 sinh viên.Nhiệm vụ của đề tài là quản lý danh sách siên viên có trong nhà trọ,thực hiện thêm một sinh viên vào nhà trọ hoặc xóa một sinh viên ra khỏi nhà trọ,có thể xem tiền phòng của bất cứ phòng nào và số tiền mà mỗi sinh viên trong phòng đó phải trả,… II . Nội Dung Chi Tiết Của Đề Tài: 1.Dữ Liệu: -Dữ liệu vào là các file text(hoặc có thể từ bàn phím): + nhapsv.inp: là file text chứa thông tin sinh viên muốn đưa vào nhà trọ. + nhappt.inp: là file text chứa thông tin về các sinh viên có trong phòng và những thông tin khác của phòng. +nhapnt.inp: là file text chứa thông tin các phòng trọ,các sinh viên,và các thông tin khác về nhà tro. -Dữ liệu vào là các file text(hoặc có thể xuất ra màn hình): +xuatsv.out: là file text chứa thông tin sinh viên sau khi đã nhập sinh viên từ file nhapsv.inp hoặc từ bàn phím. +xuatpt.inp: là file text chứa thông tin về các sinh viên có trong phòng và những thông tin khác của phòng sau khi đã nhập phòng trọ từ file nhappt.inp hoặc từ bàn phím. +xuatnt.out: là file text chứa thông tin các phòng trọ,các sinh viên,và các thông tin khác về nhà tro sau khi đã nhập nhà trọ từ file nhapnt.inp hoặc từ bàn phím. 2.Các Lớp , Các Phương Thức và Các Giả Thuật Tương Ứng: a./Class Date: +Date.h: Gồm có các thuộc tính:ngày(d),tháng(m),năm(y).Dùng để quản lý các biến kiểu Date. #pragma once #include "iostream" using namespace std; class Date { private: int d,m,y; public: Date();//phương thức Khởi Tạo Không đối số Date(int,int,int);// phương thức Khởi tạo có đối số Date(const Date&);// phương thức coppy ~Date();//phương thức hủy void Nhap();//phương thức Nhập void In()const;// phương thức Xuất bool ktNgay(int,int,int);// phương thức Kiểm tra ngày int getDay();//phương thức Lấy ngày của một biến kiểu ngày Đề Tài Quản Lý Nhà Trọ Sinh Viên : Nguyễn Trung Trí 1
  2. int getMonth();//phương thức Lấy tháng của một biến kiểu ngày int getYear();//phương thức Lấy năm của một biến kiểu ngày void setDay(int); // phương thức đưa số int làm ngày void setMonth(int); // phương thức đưa số int làm ngày void setYear(int); // phương thức đưa số int làm ngày void cong(int n);//Cộng số int n và lấy ngày sau khi cộng n void tru(int n);//Trừ số int n và lấy ngày sau khi cộng n char* toString()const;//Chuyển biến kiểu ngày sang chuỗi friend istream& operator>>(istream& is,Date&);//Nạp Chồng pt Nhập friend ostream& operator(istream& is,Sinhvien&); friend ostream& operator
  3. masv=new char[1]; masv[0]=NULL; stt=0; +Sinhvien::Sinhvien(char* ma,char* ht,char* qq,int s,Date d) :ngaysinh(d)//phương thức khởi tạo có đối số: Đối với thuộc tính masv:Trước hết ta kiểm tra xem masv có bằng NULL hay không,nếu bằng thì ta thực hiện công việc xóa bằng hàm delete[].Sau đó ta cắp phát bộ nhớ với số phần tử bằng chiều dài của chuỗi ma được truyền vào. Vd: if(masv!=NULL) delete[] masv; masv=new char[strlen(ma)+1]; strcpy(masv,ma); Tương tự đối với các thuộc tính hoten và quequan. Đối với thuộc tính stt thì ta gán trực tiếp bằng biến s được truyền vào. Vd: stt=s; Đối với thuộc tính ngaysinh thì ta thực hiện việc copy bằng phương thức copy được hỗ trợ bên class Date. + Sinhvien::Sinhvien(const Sinhvien &s)//phương thức copy Ta chỉ cần copy từng thuộc tính của Sinhvien s qua là xong. Vd: masv=s.masv; +Sinhvien::~Sinhvien()//phương thức hủy Đối với các thuộc tính masv,hoten,quequan ta thực hiện việc xóa bằng hàm delete []. Vd: delete[] masv; Đối với thuộc tính stt thì ta gán bắng 0; Đối với thuộc tính ngaysinh thì ta gọi lạ hàm hủy bên lớp ngày. Vd: ngaysinh.~Date(); + void Sinhvien::Nhap()//phương thức nhập sinh viên từ bàn phím Đối với thuộc tính masv:để tránh dư thừa bộ nhớ ,trước hết ta khai báo một chuỗi char *tam,cấp phát và thực hiện nhập mã sinh viên vào tam.Sau đó ta kiễm tra nếu masv khác NULL thì xóa,kế tiếp cấp phát bộ nhớ với số phần tử chính là chiểu dài của chuỗi tam , tiếp theo dùng hàm strcpy(chuỗi đích,chuỗi nguồn) là xong. Vd: char *tam; tam=new char[100]; cout{tên biến} để nhập trực tiếp. + void Sinhvien::In() const//phương thức xuất ra màn hình Ta dùng cout
  4. ngaysinh.In();//hoặc coutdtam; ngaysinh.setDay(dtam); f>>mtam; ngaysinh.setMonth(mtam); f>>ytam; ngaysinh.setYear(ytam); Cuối cùng ta đống việc nhập bằng hàm f.close(); là xong. + void Sinhvien::Insvt()//phương thức xuất ra file xuatsv.out Trước hết ta khai báo con trỏ FILE *f,tiếp theo ta mỡ file xuatsv.out để ghi.Sau đó ta dùng hàm fprintf(f,”chuỗi”,biến) để xuất.Cuối cùng đóng file là xong. Vd: FILE *f;int d,y,m; d=ngaysinh.getDay(); m=ngaysinh.getMonth(); y=ngaysinh.getYear(); f=fopen("Xuatsv.out","wt"); fprintf(f,"%s",masv); fprintf(f,"\n"); fprintf(f,"%s",hoten); fprintf(f,"\n"); fprintf(f,"%s",quequan); fprintf(f,"\n"); fprintf(f,"%d",stt); fprintf(f,"\n"); fprintf(f,"%d %d %d",d,m,y); fclose(f); + char* Sinhvien::get_masv() const//phương thức lấy masv Để tránh việc dữ liệu masv bị thay đỗi ngoài ý muốn,ta thực hiện việc copy masv qua chuỗi char *kq,sau đó trả về chuỗi kq. Vd: char *kq; Đề Tài Quản Lý Nhà Trọ Sinh Viên : Nguyễn Trung Trí 4
  5. kq=new char[strlen(masv)+1]; strcpy(kq,masv); return kq; +Tương tự đối với các phương thức lấy hoten,quequan. + Date Sinhvien::get_ngaysinh() const//phương thức lấy ngaysinh. Ta chỉ việc trả về ngaysinh. Vd: return ngaysinh; +Tương tự với phương thức lấy stt. + void Sinhvien::set_masv(char *st)//phương thức đưa một chuỗi st vào làm mã số của sinh viên. Ta kiễm tra nếu masv bằng NULL thì xóa,cấp phát bộ nhớ và copy. Vd: if(masv!=NULL) delete[] masv; masv=new char[strlen(st)+1]; strcpy(masv,st); +Tương tự với các phương thức set hoten và quequan. +void Sinhvien::set_stt(int s)//phương thức đưa một số s vào và nhận giá trị của s làm stt. Ta chỉ cần gán stt=s là xong. +Tương tự với phương thức set ngaysinh. +istream& operator>>(std::istream &is,Sinhvien& S)//phương thức nạp chồng phương thức nhập từ bàn phím. Giải thuật ta cũng làm giống như phương thức nhập từ bàn phím.Nhưng cuối cùng ta trả về is( return is;) Vd: char *tam; tam=new char[100]; cout
  6. hoten=S.hoten; quequan=S.quequan; ngaysinh=S.ngaysinh; stt=S.stt; c./Class Phongtro: Gồm có các thuộc tính:số lượng sinh viên đang trọ trong phòng(sosv) , số điện(sodien) , số nước(sonuoc),số thứ tự của phòng(sttphong),ngày vào của phòng(ngayvao) và danh sách các sinh viên dó(dssv) #include "Sinhvien.h" #include "Date.h" class Phongtro { private: char *maphong; int sosv,sodien,sonuoc,sttphong; Sinhvien *dssv; Date ngayvao; public: Phongtro(); Phongtro(char*,int,int,int,int,Sinhvien*,Date); Phongtro(const Phongtro&); ~Phongtro(); void Nhap(); void Nhapptt(); void In(); void Inptt(); char* get_maphong()const; Sinhvien* get_dssv()const; int get_sosv()const; int get_sodien()const; int get_sonuoc()const; int get_sttphong() const; Date get_ngayvao()const; Date get_ngaydongtien(); void set_maphong(char*); void set_sosv(int); void set_sodien(int); void set_sonuoc(int); void set_sttphong(int); void set_ngayvao(Date); void set_dssv(Sinhvien*); void insert_sv(const Sinhvien&); void delete_sv(char*); friend istream& operator>>(istream& is,Phongtro&); friend ostream& operator
  7. Giải thuật cũng giống như Class Sinhvien.Nhưng điểm cần chú ý là dssv của chúng ta phải được cấp phát với số phần tử là số lượng sv. Vd: dssv=new Sinhvien[sosv+1]; f(sosv>0){ for(int i=0;i0){ this->dssv=new Sinhvien[sosv+1]; for(i=0;i
  8. + ostream& operator
  9. Vd: int i=0,j,k; Sinhvien *svtam; svtam=new Sinhvien[sosv+1]; while((strcmp(dssv[i].get_masv(),ma)!=0)&&i
  10. + void Phongtro::capphat(int a)//phương thức cấp phát bộ nhớ cho dssv với số lượng phần tử là a. Vd: delete[] dssv; dssv=new Sinhvien[a+1]; +Sinhvien & Phongtro::operator [](int i)//phương thức lấy sinh viên thứ i của phòng trọ { if(i>0&&isosv) return dssv[i]; } d./Class Nhatro: Gồm có các thuộc tính như mã nhà trọ(mant),tên nhà trọ(tennt),địa chỉ của nhà trọ(diachint),tổng số sinh viên đang tro(tgsosv),số phòng trong nhà trọ(sophong), tiền điện (tiendien) , tiền nước(tiennuoc),tiền phòng(tienphong) và danh sách các phòng có trong nhà trọ(dspt). #include "Phongtro.h" class Nhatro { private: char *mant,*tennt,*diachint; int tgsosv,sophong; float tiendien,tiennuoc,tienphong; Phongtro *dspt; public: Nhatro(); Nhatro(char*,char*,char*,int,int,float,float,float,Phongtro*); Nhatro(const Nhatro&); ~Nhatro(); void Nhap(); void Nhapntt(); void In(); void Inntt(); char* get_mant()const; char* get_tennt()const; char* get_diachi()const; int get_tgsosv()const; int get_sophong()const; float get_tiendien()const; float get_tiennuoc()const; float get_tienphong()const; Phongtro* get_dspt()const; void set_mant(char*); void set_tennt(char*); void set_diachi(char*); void set_tgsosv(int); void set_sophong(int); void set_tiendien(float); void set_tiennuoc(float); void set_tienphong(float); void set_dspt(Phongtro*); float get_tienmoiphong(int); float get_tienmoisv(int); Đề Tài Quản Lý Nhà Trọ Sinh Viên : Nguyễn Trung Trí 10
  11. void nhapsv(Sinhvien,int); void xoasv(char*); void search(char *); Date ngaydongtien(int); friend istream& operator>>(istream& is,Nhatro&); friend ostream& operator
  12. Vd: if(d==tgsosv){ dspt[i].insert_sv(sv); tgsosv+=1; } Ngược lại là sinh viên đã có trong phòng trọ. Vd: else{ cout
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
3=>0