Tải bản đầy đủ (.docx) (14 trang)

Danh sách liên kết đôi:quản lí khách hàng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (52.55 KB, 14 trang )

//Bài tập về danh sách liên kết đôi (danh sách liên kết kép)
//Đề tài : Quản lí khách hàng
//SV thực hiện:Trần Thị Thu khoa CNTT Viện ĐH Mở Hà Nội
#include<fstream>
#include<iostream>
#include<string>
#include<windows.h>
#include <iomanip>
#include<conio.h>
using namespace std;
struct khach
{
char Makh[30];
char Tenkh[30];
char Diachi[30];
int Sdt;
};
// khai bao cau truc mot node
struct node
{
khach info; // khai bao du lieu
struct node *next;
struct node *previous;
};
struct list // khai bao mot danh sach
{


node *head;//nut dau
node *tail;// nut cuoi
};


//list Q;
// node *new_element;
// tao mot danh sach rong
void khoitao(list &Q)
{
Q.head=NULL;
Q.tail=NULL;
}
// tao danh sach moi
node *getnode(khach x)
{
node*p;
p=new node;
if(p==NULL)
{
cout<<"khong du bo nho !";
exit(1);
}
else
{
p->info=x;
p->next=NULL;


p->previous==NULL;
}
return p;
}
// Them 1 khach hang vao dau danh sach
void Inserthead(list &Q, node *p)

{
if(Q.head==NULL)
{
Q.head=p;
Q.tail=p;
}
else
{
p->next=Q.head;
Q.head->previous=p;
Q.head=p;
}
}
// Them 1 khach hang vao cuoi danh sach
void Inserttail(list &Q, node *p)
{
if(Q.head==NULL)
{


Q.head=p;
Q.tail=p;
}
else
{
Q.tail->next=p;
p->previous=Q.tail;
Q.tail=p;
}
}

//xoa 1 khach hang o dau danh sach
void Removehead(list &Q)
{
node*p;
if(Q.head!=NULL)
{
p=Q.head;
Q.head=Q.head->next;
delete p;
if(Q.head==NULL)
{
Q.tail=NULL;
}
}
}
// Xoa bo 1 khach hang o cuoi danh sach


void Removetail(list &Q)
{
node*p;
if(Q.tail==NULL)
{
p=Q.tail;
Q.tail->next=NULL;
delete p;
if(Q.head==NULL)
{
Q.tail=NULL;
}

if(Q.head==NULL)
{
Q.tail=NULL;
}
else
{
Q.head->previous=NULL;
}
}
}
// xoa khach hang theo ma khach hang
int xoama(list &Q )


{
char x[10];
cout<<"\n Nhap ma khach hang can xoa\n";fflush(stdin);gets(x);
node*p;
node*q;
q = NULL;
p = Q.head;
while(p!= NULL)
{
if(strcmp(p->info.Makh,x) == 0)
break;
q = p;
p = p->next;
}
if(p==0)
return 0;

if(q!=NULL)
{
if(p==Q.tail)
Q.tail=q;
q->next=p->next;
free(p);
}
else
{
Q.head=p->next;


if(Q.head==NULL)
Q.tail=NULL;
}
return 1;
}
// nhap thong tin cua 1 khach hang
void Nhapkh(khach &x)
{
cout<<"\nNhap ma khach hang:"; cin>>x.Makh;
cout<<"\nNhap ten khach hang:"; fflush(stdin); gets(x.Tenkh);
cout<<"\nNhap dia chi khach hang:"; fflush(stdin); gets(x.Diachi);
cout<<"\nNhap So dien thoai:"; cin>>x.Sdt;
}
void Inkh(khach x)// in thong tin cua 1 khach hang x
{
cout<<"\n";
cout<<

x.Diachi<}


void Nhap_kh(list &Q) // Nhap danh sach khach hang
{
int i,n;
khach x;
node *p;
cout<<"\n Nhap so khach hang: "; cin>>n;
for(i=0;i{
cout<<"\n Nhap thong tin khach hang thu : "<Nhapkh(x);
p=getnode(x);
Inserthead(Q,p);
}
}
void inds(list &Q)
{
node*p;
p=Q.head;

cout<<<"Sdt";
while(p!=NULL)
{
Inkh(p->info);
p=p->next;



}
}
// tim kiem 1 khach hang theo ma khach hang nao do
int timkiemtheoma(list Q)
{
node*p;
int dem=0;
char ma[30];
khach x;
cout<<"\n nhap ma khach hang can tim:";
fflush(stdin);
gets(ma);
p=Q.head;

cout<<<"Sdt";
while(p!=NULL)
{
if(strcmp(ma,p->info.Makh)==0)
{
Inkh(p->info);
dem++;
}
p=p->next;
}


if(dem==0)
{

cout<<"\n Khong tim thay ma khach hang trong danh sach !";
}
}
//tim kiem theo ten khach hang nao do
int timkiemtheoten(list Q)
{
node *p;
int dem=0;
char ten[30];
khach x;
cout<<"\n Nhap ten khach hang can tim";
fflush(stdin);
gets(ten);
p=Q.head;

cout<<<"Sdt";
while(p!=NULL)
{
if(strcmp(ten,p->info.Tenkh)==0)
{
Inkh(p->info);
dem++;
}


p=p->next;
}
if(dem==0)
{

cout<<"\n Khong tim thay ten khach hang trong danh
sach !";
}
}

//sap xep theo ma khach hang
void sapxepma(list Q)
{
node*p,*q;
p= Q.head;
khach x;
while(p != NULL)
{
q = p->next;
while(q != NULL)
{
if(p->info.Makh > q->info.Makh)
{
x = p->info;
p->info = q->info;


q->info = x;
}
q = q->next;
}
p= p->next;
}
}
int main()

{
list Q;
node *p;
node *q;
node *new_element;
khach x;
int chon;
khoitao(Q);
do
{
//cout << "|
===================================================|" << endl
cout <<

"|

DANH SACH

|" << endl

<< "|---------------------------------------------------|" << endl
<< "| 1.Nhap danh sach
<< "| 2.In danh sach

|" << endl
|" << endl


<< "| 3.Them 1 khach hang vao dau danh sach


|" <<

<< "| 4.Them 1 khach hang vao cuoi danh sach

|" <<

endl
endl
<< "| 5.Xoa 1 khach hang o dau danh sach

|" << endl

<< "| 6.Xoa 1 khach hang o cuoi danh sach

|" << endl

<< "| 7.Xoa 1 khach hang theo ma khach hang

|" <<

endl
<< "| 8.Tim kiem 1 khach hang theo ma khach hang

|" <<

<< "| 9.Tim kiem 1 khach hang theo ten khach hang

|" <<

endl

endl
<< "| 10.Sap xep theo ma khach tang dan
<< "| 0. Dung chuong trinh!

|" << endl
|" << endl

<< "|
===================================================|" << endl
<< " \n. Ban hay chon mot so:";
cin>>chon;
switch(chon)
{
case 1: Nhap_kh(Q) ; break;
case 2: inds(Q);break;
case 3: cout<<"\n Nhap thong tin khach can bo xung vao dau
DS";
Nhapkh(x);
p=getnode(x);
Inserthead(Q,p);break;


case 4: cout<<"\n Nhap thong tin khach hang can bo xung vao
cuoi DS";
Nhapkh(x);
p=getnode(x);
Inserttail(Q,p);break;
case 5:Removehead(Q);break;
case 6:Removetail(Q);break;
case 7:xoama(Q);break;

case 8: timkiemtheoma(Q);break;
case 9: timkiemtheoten(Q);break;
case 10: sapxepma(Q);inds(Q);break;
}
}while(chon!=0);
getch();
}



×