1. Trang chủ
  2. » Công Nghệ Thông Tin

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

14 541 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 14
Dung lượng 14,97 KB
File đính kèm quanlykhachhang.rar (2 KB)

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

tên đề tài: Quản lí khách hàng bằng liên kết đôi, code danh sách liên kết đôi. Các thao tác: thêm khách hàng đầu cuối danh sách , sửa thông itn khách hàng, xóa khách hàng. Tìm kiếm khách hàng theo mã khách hàng

Trang 1

//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

Trang 2

{

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

{

Trang 3

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)

Trang 4

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;

Trang 5

} }

}

// 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; }

Trang 6

}

// 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;

Trang 7

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

{

Trang 8

cout<<setiosflags(ios::fixed)

<<setprecision(2)<<setw(2)<<x.Makh<<setw(20)<<x.Tenkh<<setw(20)<< x.Diachi<<setw(15)<<x.Sdt;

}

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<n;i++)

{

cout<<"\n Nhap thong tin khach hang thu : "<<i+1;

Nhapkh(x);

p=getnode(x);

Inserthead(Q,p);

}

}

void inds(list &Q)

{

node*p;

p=Q.head;

Trang 9

<<"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<<setw(2)<<"Makh"<<setw(20)<<"Tenkh"<<setw(15)<<"Diachi"<<setw(10)

<<"Sdt";

while(p!=NULL) {

if(strcmp(ma,p->info.Makh)==0)

Trang 10

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<<setw(2)<<"Makh"<<setw(10)<<"Tenkh"<<setw(15)<<"Diachi"<<setw(10)

<<"Sdt";

Trang 11

{

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)

{

Trang 12

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);

Trang 13

{

//cout << "|

===================================================|" << endl

cout << "| DANH SACH |" << endl

<< "| -|" << endl << "| 1.Nhap danh sach |" << endl << "| 2.In danh sach |" << endl << "| 3.Them 1 khach hang vao dau danh sach |" << endl

<< "| 4.Them 1 khach hang vao cuoi danh sach |" << 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 |" << endl

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

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

<< "|

===================================================|" << endl

<< " \n Ban hay chon mot so:";

cin>>chon;

switch(chon) {

Trang 14

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();

}

Ngày đăng: 31/07/2016, 09:42

TỪ KHÓA LIÊN QUAN

w