Mình có đoạn code như sau:
Mã:
#include <iostream>#include <conio.h>using namespace std; //XÂY DỰNG CÁC CẤU TRÚC DANH SÁCH KHÁCH HÀNG //Cấu trúc khách hàngstruct khach_hang{ char c_phase[25]; char c_name[30]; char c_code[11]; char c_address[80]; int c_kwh;}; //Cấu trúc một node trong danh sách khách hàngtypedef struct c_node ptr_client;struct c_node{ khach_hang client; ptr_client *next;}; //Cấu trúc danh sách khách hàngtypedef struct c_ds ptr_ds;struct c_ds{ int c_numnode; ptr_client *c_head, *c_tail;}; //XÂY DỰNG CẤU TRÚC DANH SÁCH NHÂN VIÊN //Cấu trúc nhân viênstruct nhan_vien{ char e_code[11]; char e_name[30]; char e_start[10]; ptr_ds c_list;}; //Cấu trúc một node trong danh sách nhân viêntypedef struct e_node ptr_employee;struct e_node{ nhan_vien employee; ptr_employee *next;}; //Cấu trúc danh sách nhân viêntypedef struct e_ds ptr_list;struct e_ds{ int e_numnode; ptr_employee *e_head, *e_tail;}; //FUNCTION//Hàm khởi tạo danh sách khách hàngvoid initialize_client_list(ptr_list *list){ list->e_head->employee.c_list.c_head=NULL; list->e_head->employee.c_list.c_tail=NULL; list->e_head->employee.c_list.c_numnode=0;}//Hàm khởi tạo danh sách nhân viênvoid initialize_employee_list (ptr_list *list){ list->e_numnode=0; //-------------------------------// list->e_head=NULL; // Khởi tạo danh sách nhân viên // list->e_tail=NULL; //-------------------------------//}//Hàm con dùng để nhập danh sách khách hàng của mỗi nhân viênvoid input_client (ptr_list *list){ char c_select[1]; int temp=1; do { ptr_client *c_newnode = new ptr_client; //Tạo 1 node mới để chứa thông tin khách hàng //Gắn node c_newnode vào danh sách if (list->e_head->employee.c_list.c_numnode>0) { list->e_head->employee.c_list.c_tail->next=c_newnode; //Chèn vào sau node cuối list->e_head->employee.c_list.c_tail=c_newnode; //Cập nhật lại node cuối } else { c_newnode->next=list->e_head->employee.c_list.c_head; list->e_head->employee.c_list.c_head=c_newnode; list->e_head->employee.c_list.c_tail=c_newnode; } cin.ignore(1); cout<<" "<<temp<<". Ten khach hang: "; cin.getline(c_newnode->client.c_name,30); cout<<" Ma khach hang: "; cin>>c_newnode->client.c_code; cout<<" So kw tieu thu: "; cin>>c_newnode->client.c_kwh; cin.ignore(1); cout<<" Ky thu: "; cin.getline(c_newnode->client.c_phase,25); cout<<" Dia chi: "; cin.getline(c_newnode->client.c_address,80); cout<<"
Nhap them khach hang? [Y/N]: "; cin>>c_select[0]; temp++; list->e_head->employee.c_list.c_numnode++; }while((c_select[0]=='Y')||(c_select[0]=='y'));}//Hàm nhập nhân viên và khách hàng (khi mới chạy chương trình lần đầu)void input_employee (ptr_list *list){ char e_select[1]; do{ ptr_employee *e_newnode = new ptr_employee; //Tạo 1 node mới để chứa thông tin nhân viên //Gắn node e_newnode vào danh sách if (list->e_numnode>0) //Nếu trong danh sách đã có ít nhất 1 node { list->e_tail->next=e_newnode; //Chèn vào sau node cuối list->e_tail=e_newnode; //Cập nhật lại node cuối } else //Nếu danh sách chưa có node nào { e_newnode->next=list->e_head; list->e_head=e_newnode; list->e_tail=e_newnode; } initialize_client_list(list); //Khởi tạo danh sách khách hàng của nhân viên hiện tại cout<<"
--------------------------------------------
"; cout<<" Ten nhan vien: "; cin.ignore(1); cin.getline(e_newnode->employee.e_name,30); cout<<" Ma nhan vien: "; cin>>e_newnode->employee.e_code; cout<<" Ngay bat dau lam [dd/mm/yy]: "; cin>>e_newnode->employee.e_start; cout<<" Chiu trach nhiem thu tien nhung khach hang:
"; input_client (list); cout<<"
Nhap them nhan vien? [Y/N]: "; cin>>e_select[0]; list->e_numnode++; }while ((e_select[0]=='Y')||(e_select[0]=='y'));} //------------------------------------------------------------------// void main (){ ptr_list *list; list = new ptr_list; initialize_employee_list (list); cout<<"
\t\t CHUONG TRINH QUAN LY THONG TIN CONG TY DIEN LUC
"; cout<<" Day la lan dau chay chuong trinh. Nhan phim Enter de bat dau nhap thong tin...
"; getch(); system("cls"); cout<<"
\t\t CHUONG TRINH QUAN LY THONG TIN CONG TY DIEN LUC
"; input_employee(list); //cout<<"
ten khach hang thu nhat cua nhan vien thu nhat: "<<list->e_head->employee.c_list.c_head->client.c_name; //cout<<"
So khach hang cua nhan vien thu nhat: "<<list->e_head->employee.c_list.c_numnode; //cout<<"
Ten khach hang thu 2 cua nhan vien thu nhat: "<<list->e_head->employee.c_list.c_head->next->client.c_name; //cout<<"
Ten nhan vien thu 2: "<<list->e_head->next->employee.e_name; //cout<<"
So khach hang cua nhan vien thu 2: "<<list->e_head->next->employee.c_list.c_numnode;*/ }
Chương trình mình đặt tên theo kiểu c_ và e_ (c là client, e là employee)...
Mình muốn tạo danh sách khách hàng trong mỗi node nhân viên. Khi chạy chuơng trình lần đầu thì người dùng nhập nhân viên, rồi nhập các khách hàng của nhân viên đó, sau đó chuyển sang nhân viên thứ 2...
Mình code và thử xuất 1 số thông tin (trong phần in đậm - code) thì thông tin của nhân viên thứ 2 bị đè lên nhân viên thứ nhất. Minh chưa hiểu bị sai chỗ nào. Mong các bạn chỉ dùm... Cám ơn đã đọc bài.
View more random threads:
Pallet nhựa Long An đã trở thành một trong những lựa chọn phổ biến cho nhu cầu vận chuyển và lưu trữ hàng hóa trong nhiều ngành công nghiệp. Với đặc tính nhẹ nhàng, chắc chắn và dễ vận chuyển, các...
Thanh lý pallet nhựa Long An giá rẻ