Professional Documents
Culture Documents
Đề tài:
Lecturer Management Tree
NỘI DUNG............................................................................................
I. Giới thiệu chung........................................................................
I.1 Chủ đề..............................................................................
I.2 Phân chia nhiệm vụ..........................................................
Đây là một chương trình quản lý giáo viên đơn giản thể hiện một
vài chức năng như:
Tìm kiếm giáo viên trong trường
Quan hệ cấp trên – cấp dưới giữa hai giáo viên trong trường
...
2.2 CODE
#define WINDOWS
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<string>
using namespace std;
struct node
{
char name[50];
int age,x; // x - do cao cua cay
bool g; // gioi tinh
char position[50];
node* fc; // Pointer cua con dau
node* ns; // Pointer cua anh em ben canh
node();
void getData();
};
node::node()
{
fc=ns=NULL;
g=0;
strcpy(name,"");
strcpy(position,"");
age=x=0;
}
void node::getData()
{
char ch;
fflush(stdin);
cout<<"\nTen: ";
gets(name);
cout<<"Tuoi cua "<<name<<": ";
cin>>age;
fflush(stdin);
cout<<"\nTen vi tri: ";
gets(position);
cout<<name<<" la (m/f): ";
cin>>ch;
if(ch=='m')
g=1;
}
class uniTree
{
public:
node* start;
uniTree();
};
uniTree::uniTree()
{
start = NULL;
}
if(ptr==NULL)
return;
while(ptr!=NULL)
{
destroy(ptr->fc);
temp = ptr;
ptr = ptr->ns;
delete temp;
}
start = NULL;
}
void uniTree::show(node* ptr)
{
char g[10];
strcpy(g,"Female");
if(ptr->g)
strcpy(g,"Male");
cout<<"\n\nTen: "<< ptr->name <<endl;
cout<<"Tuoi: "<< ptr->age <<endl;
cout<<"Vi tri cong viec "<< ptr->position <<endl;
cout<<"Gioi tinh: "<<g<<endl;
}
if(ptr==NULL)
return;
while(ptr!=NULL)
{
cout<< ptr->name <<endl;
display(ptr->fc);
ptr = ptr->ns;
}
}
if(ptr==NULL)
return;
while(ptr!=NULL)
{
updateX(ptr->fc,x++);
if(ptr->ns!=NULL)
ptr->ns->x = x;
ptr = ptr->ns;
}
}
node* uniTree::traverseRight(node* ptr, char s[50])
{
ptr = ptr->ns;
while(ptr!=NULL)
{
if(strcmp(ptr->name,s)==0)
return ptr;
else if (traverseDown(ptr,s)!=NULL)
return traverseDown(ptr,s);
else
ptr = ptr->ns;
}
return NULL;
}
node* uniTree::traverseDown(node* ptr, char s[50])
{
// tim o nut con
ptr = ptr->fc;
while(ptr!=NULL)
{
if( strcmp(ptr->name,s)==0 )
return ptr;
else if(traverseRight(ptr,s)!=NULL)
return traverseRight(ptr,s);
else
ptr = ptr->fc;
}
return NULL;
}
node* uniTree::search(char s[50])
{
/*
tim theo ten
con tro chi vao tên hien tai
*/
if(strcmp(ptr->name,s)==0)
return ptr;
else if(traverseRight(start,s)!=NULL)
return traverseRight(start,s);
else if(traverseDown(start,s)!=NULL)
return traverseDown(start,s);
else
{
return NULL;
cout<<"***Not found***";
}
}
void uniTree::find()
{
/*
Co cung do cao: là dong nghiep hoac dong cap o nhanh khac
Khac do cao = 1 - Sep hoac truong bo mon khac
Khac do cao = 2 - Sep cua sep
khac do cao >2 xa qua nen bo
*/
char name1[50],name2[50];
cout<<"Nhap ten hai nguoi:\n";
fflush(stdin);
gets(name1);
fflush(stdin);
gets(name2);
node* ptr1 = search(name1);
node* ptr2 = search(name2);
node* ptr;
node* ptrk=ptr1;
node* ptrk1=ptr2;
switch(ptr1->x - ptr2->x)
{
case 0:
char s[50];
strcpy(s,"Dong nghiep");
ptr = ptr1;
while(ptr!=NULL)
{
if(ptr==ptr2)
{
cout<<endl<<name1<<" la "<<s<<" cua
"<<name2<<endl;
return;
}
ptr = ptr->ns;
}
ptr = ptr2;
while(ptr!=NULL)
{
if(ptr==ptr1)
{
cout<<endl<<name1<<" is "<<s<<" cua
"<<name2<<endl;
return;
}
ptr = ptr->ns;
}
cout<<endl<<name1<<" va "<<name2<<" la nguoi dong
cap";
break;
case 1:
char str3[50];
strcpy(str3,"Cap tren");
ptr2 = ptr2->fc;
while(ptr2!=NULL)
{
if(ptr2==ptr1)
{
cout<<endl<<name1<<" is "<<name2<<"'s "<<str3;
return;
}
ptr2=ptr2->ns;
}
strcpy(str3,"Cap duoi cua dong nghiep");
cout<<endl<<name1<<" is "<<name2<<"'s "<<str3;
break;
case -1:
char str[10];
strcpy(str,"Cap Tren");
ptr = ptrk->fc;
while(ptr!=NULL)
{
if(ptr==ptrk1)
{
cout<<endl<<name1<<" la "<<str<<" cua "<<name2;
return;
}
ptr=ptr->ns;
}
strcpy(str,"Dong nghiep cua sep");
cout<<endl<<name1<<" la "<<str<<name2;
break;
case 2:
char str1[50];
strcpy(str1,"Cap duoi");
ptr2 = ptr2->fc->fc;
while(ptr2!=NULL)
{
if(ptr2==ptr1)
{
cout<<endl<<name1<<" la Sep "<<str1<<" cua
"<<name2;
return;
}
ptr2 = ptr2->ns;
}
break;
case -2:
char str2[50];
strcpy(str2,"Cap tren");
ptr1 = ptr1->fc->fc;
while(ptr1!=NULL)
{
if(ptr1==ptr2)
{
cout<<endl<<name1<<" la sep cua "<<str2<<" cua
"<<name2;
return;
}
ptr1 = ptr1->ns;
}
break;
default:
cout<<"Quan he xa qua (T _ T)";
break;
}
}
void uniTree::addNew()
{
node* temp = new node;
temp->getData();
if(start == NULL)
{
start = temp;
temp->x=0;
}
else
{
cout<<"\nNhap mot ten co quan he: ";
char name[50];
fflush(stdin);
gets(name);
cout<<"\n1. Cap duoi\n2. Dong nghiep\n\n"<< temp->name <<"
la ____ voi "<<name<<" : ";
int opt;
cin>>opt;
switch(opt)
{
case 1:
addChild(search(name),temp);
break;
case 2:
addSib(search(name),temp);
break;
}
}
cout<<"\nDa them thanh cong.\n";
}
while(a->ns!=NULL)
a=a->ns;
a->ns = b;
b->x = a->x;
}
if(a->fc==NULL)
a->fc = b;
else
addSib(a->fc,b);
b->x = a->x+1;
}
int main()
{
uniTree T[100];
int opt,n,n1,n2;
char c,name[50];
cout<<"\nNhap Truong so = ";
cin>>n;
while(1)
{
#ifdef WINDOWS
system("cls");
#endif
cout<<"\n\n\n\t Truong so = "<<n<<"\n\n\t1. Them nguoi moi\
n\t2. Tim quan he giua hai nguoi\n\t3. Tim kiem\n\t4. Huy\n\t5. Hien
thi cay\n\t6. Thay doi truong\n\t7. Ket noi hai cay\n\t8. Thoat\n\n\
tBan chon = ";
cin>>opt;
cout<<endl;
switch(opt)
{
default:
cout<<"Khong co chuc nang";
break;
case 1:
T[n].addNew();
break;
case 2:
T[n].find();
break;
case 3:
cout<<"Nhap ten nguoi can tim: ";
fflush(stdin);
gets(name);
T[n].show(T[n].search(name));
break;
case 4:
T[n].destroy(T[n].start);
cout<<"Cay "<<n<<" Da huy";
break;
case 5:
T[n].display(T[n].start);
break;
case 6:
cout<<"Nhap truong so: ";
cin>>n;
break;
case 7:
cout<<"Ghep __ voi __ \n";
cin>>n2>>n1;
connect(&T[n1],&T[n2]);
break;
case 8:
return 0;
}
cout<<"\n\nPress any key to continue.....";
cin>>c;
}
}
Phần mềm đạt một số mục tiêu nhất định tuy nhiên còn nhiều
khuyết điểm như tính năng hạn chế. Gặp một vài lỗi trong quá
trình chạy.
Tuy nhiên những gì thu được từ sau bài tập lớn lần này giúp chúng
em tự tin hơn để tiếp tục đam mê trong ngành lập trình.
Chúng em rất mong nhận được sự quan tâm và góp ý từ phía cô!
Chúng em xin chân thành cảm ơn!
[1]
[2] https://www.youtube.com/watch?v=9zfpOe1Xs7Q&t=461s