Quản lý chung cư môn cấu trúc dữ liệu và giải thuật it05 Ehou .Xây dựng phần mềm bằng C++ yêu cầu giải quyết các bài toán về quản lý chung cư Môn cấu trúc dữ liệu và giải thuật . Viện đại học Mở Hà Nội
Trang 1/* QUẢN LÝ PHÍ CHUNG CƯ
Cu Dan: So phong, ho ten, dien thoai, email, nam bat dau, dien tich
1.1 Nhao danh sach cu dan tu ban phim
1.2 In danh sach cu dan len man hinh
1.3 Luu danh sach cu dan vao file
1.4 Doc danh sach cu dan tu file
1.5 Tim kiem cu dan thoe ho ten
1.6 Tim kiem cu dan theo so phong
1.7 Sap xep danh sach cu dan theo so phong
1.8 Them mot cu dan moi
1.9 Xoa mot cu dan
1.10 tinh tong dien tich cac can ho
1.11 Cho biet ten can ho co dien tich lon nhat
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
//Khai bao CTDL danh sach lien ket don
struct CuDan
{
int iSoPhong;
char sHoTen[25];
char sDienThoai[10];
char sEmail[30];
int iNamBatDau;
float fDienTich;
};
struct NodeCD
{
CuDan info;
struct NodeCD *next;
};
struct ListCD
{
NodeCD *Head;
NodeCD *Tail;
};
//Khoi tao danh sach
void KhoiTao(ListCD &Q)
{
Q.Head = NULL;
Q.Tail = NULL;
Trang 2}
//Tao nut chua thong tin 1 CuDan
NodeCD *getNodeCD( CuDan x )
{
NodeCD *p;
p = new NodeCD;
if(p==NULL)
{
printf("\n Cap phat khong thanh cong");
exit(1);
}
p->info = x;
p->next = NULL;
return p;
}
//Nhap thong tin cua 1 CuDan
void nhapCuDan( CuDan &x)
{
fflush(stdin);
printf("\n Nhap So Phong:"); scanf("%d",&x.iSoPhong);
printf("Nhap Ten CuDan:");
fflush(stdin); gets(x.sHoTen);
printf("Nhap Dien Thoai:");
fflush(stdin); gets(x.sDienThoai);
printf("Nhap Email:");
fflush(stdin); gets(x.sEmail);
printf("\n Nhap Nam Den O:"); scanf("%d", x.iNamBatDau);
printf("\n Nhap Dien Tich:"); scanf("%f", x.fDienTich);
}
//In thong tin cua 1 CuDan
void InCuDan(CuDan x)
{
printf("\n %10s",x.iSoPhong);
printf("%15s",x.sHoTen);
printf("%15s",x.sDienThoai);
printf("%30s",x.sEmail);
printf("%7d",x.iNamBatDau);
printf("%10.1f",x.fDienTich);
}
//1.1 Nhap danh sach Cu Dan Tu Ban Phim
void NhapDSCuDan( ListCD &Q )
{
NodeCD *p;
Trang 3int n,i;
CuDan x;
printf("Nhap so CuDan:"); scanf("%d", n);
for(i=0;i<n;i++)
{
NhapCuDan(x);
p = getNodeCD(x);
ChenDau(Q,p);
}
}
//1.2 In danh sach CuDan len man hinh
void InDSCuDan( ListCD Q )
{
NodeCD *p;
for(p=Q.Head; p!=NULL; p=p->next)
InCuDan(p->info);
}
//1.5 Tim kiem CuDan theo Ho Ten
NodeCD *TimCuDanHoTen( ListCD Q, char ht[] )
{
NodeCD *p;
for(p=Q.Head; p!=NULL; p=p->next)
if(strcmp(p->info.sHoTen, ht)==0)
break;
return p;
}
//1.6 Tim kiem CuDan theo So phong
NodeCD *TimCuDanSoPhong( ListCD Q, int sP )
{
NodeCD *p;
for(p=Q.Head; p!=NULL; p=p->next)
if( p->info.iSoPhong == sP )
break;
return p;
}
//1.7 Sap xep danh sach cu dan theo so phong
void SX_CuDan_SoPhong( ListCD &Q )
{
NodeCD *p, *q;
CuDan tg;
for(p=Q.Head; p!=NULL; p=p->next)
Trang 4for(q=p->next; q!=NULL; q=q->next)
if( p->info.iSoPhong < q->info.iSoPhong ) {
tg = p->info;
p->info = q->info;
q->info= tg;
} }
//1.8 Chen them 1 nut vao dau DS
void ChenDau( ListCD &Q, NodeCD *p)
{
if(Q.Head == NULL)
{
Q.Head = p;
Q.Tail = p;
}
else
{
p->next = Q.Head;
Q.Head = p;
}
}
//1.9 Xoa 1 nut dau danh sach
void XoaDau( ListCD &Q )
{
NodeCD *p;
if(Q.Head != NULL)
{
p = Q.Head;
Q.Head = Q.Head->next;
delete p;
if(Q.Head == NULL)
Q.Tail = NULL;
}
}
//1.10 tinh tong dien tich cac can ho
void TongTienHang( ListCD Q )
{
NodeCD *p;
float s=0;
for(p=Q.Head; p!=NULL; p=p->next)
s = s + p->info.fDienTich printf("\n Tong tien cac can ho:%10.0f",s);
Trang 5}
//1.11 Cho biet ten can ho co dien tich lon nhat
void tenCuDanSoLuongMax( ListCD Q )
{
NodeCD *p;
float max;
max = Q.Head->info.fDienTich;
for(p=Q.Head ; p!=NULL; p= ->next)
if(p->info.fDienTich > max)
max = p->info.fDienTich;
printf("\n Ten CuDan co dien tich lon nhat:");
for(p=Q.Head; p!=NULL; p=p->next)
if(p->info.fDienTich == max)
printf("- %15s", p->info.sHoTen);
}
//CHUONG TRINH CHINH - MENU
int main()
{
ListCD Q;
NodeCD *p, *q;
int chon;
KhoiTao(Q);
do
{
printf("\n 1 Nhap DS Cu dan");
printf("\n 2 In DS Cu dan");
printf("\n 3 Luu DS cu dan vao file");
printf("\n 4 Doc DS cu dan tu file");
printf("\n 5 Tim kiem Cu dan theo ho ten");
printf("\n 6 Tim kiem Cu dan theo so phong");
printf("\n 7 Sap xep DS Cu dan tang dang theo so phong");
printf("\n 8 Them cu dan moi");
printf("\n 9 Xoa mot cu dan");
printf("\n 10 Tinh tong dien tich cac can ho");
printf("\n 11 Ten cu dan co dien tich lon nhat");
printf("\n Moi ban chon:");
scanf("%d", &chon);
switch(chon)
{
case 1: //Nhap danh sach cu dan
NhapDSCuDan(Q);
Trang 6break;
case 2: //In danh sach cu dan
InDSCuDan(Q);
break;
case 3:
case 4:
case 5: //Tim kiem cu dan theo ho ten
char ht[10];
printf("\n Nhap Ho Ten can tim kiem:");
fflush(stdin); gets(ht);
p = TimCuDanHoTen(Q, ht);
if (p != NULL)
{
printf("\n Tim kiem thay");
InCuDan(p->info);
}
else
printf("\n Khong tim kiem thay");
break;
case 6:
int sP;
printf("\n Nhap So Phong can tim kiem:");
scanf("%d", &sP);
p = TimCuDanSoPhong(Q, sP);
if (p != NULL)
{
printf("\n Tim kiem thay");
InCuDan(p->info);
}
else
printf("\n Khong tim kiem thay");
break;
case 7:
SX_CuDan_SoPhong(Q);
printf("\n DS Cu dan sau sap xep \n");
InDSCuDan(Q);
break;
Trang 7CuDan x;
printf("Nhap cu dan can chen:");
NhapCuDan(x);
p = getNodeCD(x);
ChenDau(Q,p);
printf("\n DS Cu dan sau chen them moi \n");
InDSCuDan(Q);
break;
case 9: //Xoa cu dan
XoaDau(Q);
printf("\n DS Cu dan sau khi xoa \n");
InDSCuDan(Q);
break;
case 10: //Tinh tong dien tich cac can ho
TongTienHang(Q);
break;
case 11: //Ten Can ho co dien tich lon
tenCuDanSoLuongMax(Q);
break;
case 0:
exit(1);
}
} while (chon!=0);
}