Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<conio.h>
- #include<string.h>
- #include<stdlib.h>
- struct GV
- {
- int MGV,SDT,NC;
- char HvT[25],PT[25];
- float HSL,ML,T;
- };
- struct DNode
- {
- GV info;
- struct DNode *next;
- struct DNode *previous;
- };
- struct DLIST
- {
- DNode *Head;
- DNode *Tail;
- };
- DLIST Q;
- void init(DLIST &Q)
- {
- Q.Head=NULL;
- Q.Tail=NULL;
- }
- DNode *getNode(GV x)
- {
- DNode *p;
- p=new DNode;
- if(p==NULL)
- {
- printf("\n Khong du bo nho");
- exit(1);
- }
- p->info=x;
- p->next=NULL;
- p->previous=NULL;
- return p;
- }
- void Nhap(GV &x)
- {
- printf("\n Nhap ma GV:");
- scanf("%d",&x.MGV);
- printf("\n Nhap ho ten:");
- fflush(stdin);
- gets(x.HvT);
- printf("\n Nhap so dien thoai:");
- fflush(stdin);
- scanf("%d",&x.SDT);
- printf("\n Nhap ten lop phu trach:");
- fflush(stdin);
- gets(x.PT);
- printf("\n Nhap he so luong:");
- fflush(stdin);
- scanf("%f",&x.HSL);
- printf("\n Nhap ngay lam viec:");
- scanf("%d",&x.NC);
- printf("\n Nhap muc thuong:");
- scanf("%f",&x.T);
- x.ML=x.HSL*x.NC+x.T;
- }
- void hienDSGV(DLIST Q)
- {
- DNode *p;
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- }
- }
- void ChenDau(DLIST &Q,DNode *p)
- {
- if(Q.Head==NULL)
- {
- Q.Head=p;
- Q.Tail=p;
- }
- else
- {
- p->next=Q.Head;
- Q.Head->previous=p;
- Q.Head=p;
- }
- }
- void ChenSau(DLIST &Q,DNode *p)
- {
- if(Q.Head==NULL)
- {
- Q.Head=p;
- Q.Tail=p;
- }
- else
- {
- Q.Tail->next=p;
- p->previous=Q.Tail;
- Q.Tail=p;
- }
- }
- void ChenGiua(DLIST &Q, GV x)
- {
- int m;
- DNode *p;
- printf("Vao Sau Giao Vien Co Ma la: ");scanf("%d", &m);
- p=Q.Head;
- while(p!=NULL)
- {
- if(p->info.MGV==m)
- {
- Nhap(x);
- DNode *q;
- q=getNode(x);
- q->next=p->next;
- q->previous=p;
- p->next=q;
- if(p==Q.Tail)
- Q.Tail = q;
- break;
- }
- p=p->next;
- }
- }
- void xoaDau(DLIST &Q,DNode *p)
- {
- if(Q.Head!=NULL)
- {
- p=Q.Head;
- Q.Head=Q.Head->next;
- Q.Head->previous=NULL;
- delete p;
- if(Q.Head==NULL)
- Q.Tail=NULL;
- }
- }
- void XoaCuoi(DLIST &Q)
- {
- DNode *p;
- if(Q.Head!=NULL)
- {
- p=Q.Tail;
- Q.Tail=Q.Tail->previous;
- Q.Tail->next=NULL;
- delete(p);
- if(Q.Head==NULL)
- Q.Tail=NULL;
- }
- else
- printf("Khong Thanh Cong");
- }
- void xoak(DLIST &Q)
- {
- int k;
- DNode *q;
- DNode *p;
- printf("Nhap Ma can xoa");scanf("%d", &k);
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- q=p->next;
- if(q->info.MGV==k)
- {
- q->next->previous=p;
- p->next=q->next;
- if(p->next==NULL)
- Q.Tail=p;
- delete(q);
- }
- }
- }
- void sxTanghsl(DLIST Q,DNode *p,DNode *q)
- {
- GV tg;
- for(p=Q.Head;p!=NULL;p=p->next)
- for(q=p->next;q!=NULL;q=q->next)
- if(p->info.HSL>q->info.HSL)
- {
- tg=p->info;
- p->info=q->info;
- q->info=tg;
- }
- }
- void sxGiamhsl(DLIST Q,DNode *p,DNode *q)
- {
- GV tg;
- for(p=Q.Head;p!=NULL;p=p->next)
- for(q=p->next;q!=NULL;q=q->next)
- if(p->info.HSL<q->info.HSL)
- {
- tg=p->info;
- p->info=q->info;
- q->info=tg;
- }
- }
- void timHvT(DLIST Q,char a[])
- {
- DNode *p;
- printf("\n Nhap ten GV :");
- fflush(stdin);
- gets(a);
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(strcmp(p->info.HvT,a)==0)
- {
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- }
- }
- }
- void timMGV(DLIST Q,int b)
- {
- DNode *p;
- printf("\n Nhap ma GV :");
- scanf("%d",&b);
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(p->info.MGV==b)
- {
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- }
- }
- }
- void timPT(DLIST Q,char a[])
- {
- DNode *p;
- printf("\n Nhap ten GV :");
- fflush(stdin);
- gets(a);
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(strcmp(p->info.PT,a)==0)
- {
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- }
- }
- }
- void thongkecungHSL(DLIST Q)
- {
- DNode *p,*q;
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- for(q=p->next;q!=NULL;q=q->next)
- {
- if(p->info.HSL==q->info.HSL)
- {
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",q->info.MGV,q->info.HvT,q->info.SDT,q->info.PT,q->info.HSL,q->info.NC,q->info.T,q->info.ML);
- }
- }
- }
- void thongkecungNC(DLIST Q)
- {
- DNode *p,*q;
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- for(q=p->next;q!=NULL;q=q->next)
- {
- if(p->info.NC==q->info.NC)
- {
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",q->info.MGV,q->info.HvT,q->info.SDT,q->info.PT,q->info.HSL,q->info.NC,q->info.T,q->info.ML);
- }
- }
- }
- void timMaxML(DLIST Q)
- {
- DNode *p;
- float max;
- max=Q.Head->info.ML;
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(p->info.ML>max)
- max=p->info.ML;
- }
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(max==p->info.ML)
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- }
- }
- void timMinML(DLIST Q)
- {
- DNode *p;
- float min;
- min=Q.Head->info.ML;
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(p->info.ML<min)
- min=p->info.ML;
- }
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(min==p->info.ML)
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- }
- }
- void hienHSLhonx(DLIST Q,float c)
- {
- DNode *p;
- printf("\n Nhap he so luong x=");
- scanf("%f",&c);
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(p->info.HSL>c)
- {
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- }
- }
- }
- void timMaxNC(DLIST Q)
- {
- DNode *p;
- float max;
- max=Q.Head->info.NC;
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(p->info.NC>max)
- max=p->info.NC;
- }
- printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(max==p->info.NC)
- printf("\n%-5d%-15s%-15d%-10s%-10.2f%-10d%-10.2f%-10.2f",p->info.MGV,p->info.HvT,p->info.SDT,p->info.PT,p->info.HSL,p->info.NC,p->info.T,p->info.ML);
- }
- }
- void demML(DLIST Q,DNode *p)
- {
- int dem;
- float x;
- dem=0;
- printf("\n Nhap luong bat ki:");
- scanf("%f",&x);
- for(p=Q.Head;p!=NULL;p=p->next)
- {
- if(p->info.ML>x)
- dem=dem++;
- }
- printf("\n So giao vien cung he so luong la %d",dem);
- }
- void menuthem(DLIST &Q, DNode *p, GV x){
- int n;
- printf("\n\n1.Them vao dau");
- printf("\n2.Them vao cuoi");
- printf("\n3.Them vao giua");
- printf("\n4.Them giao vien");
- printf("\n5.Xoa cuoi");
- printf("\n6.Xoa dau");
- printf("\n7.Xoa ma k");
- printf("\n8.Back");
- printf("\n9.Exit");
- printf("\n\nNhap lua chon: ");scanf("%d", &n);
- switch(n){
- case 1:
- system("cls");
- Nhap(x);
- p=getNode(x);
- ChenDau(Q,p);
- hienDSGV(Q);
- menuthem(Q,p,x);
- case 2:
- system("cls");
- Nhap(x);
- p=getNode(x);
- ChenSau(Q,p);
- hienDSGV(Q);
- menuthem(Q,p,x);
- case 3:
- system("cls");
- ChenGiua(Q,x);
- hienDSGV(Q);
- menuthem(Q,p,x);
- case 4:
- system("cls");
- int i,o;
- printf("Them bao nhieu giao vien: ");scanf("%d", &o);
- for(i=0;i<o;i++){
- Nhap(x);
- p=getNode(x);
- ChenDau(Q,p);
- }
- hienDSGV(Q);
- menuthem(Q,p,x);
- case 5:
- system("cls");
- XoaCuoi(Q);
- hienDSGV(Q);
- menuthem(Q,p,x);
- case 6:
- system("cls");
- xoaDau(Q,p);
- hienDSGV(Q);
- menuthem(Q,p,x);
- case 7:
- system("cls");
- xoak(Q);
- hienDSGV(Q);
- menuthem(Q,p,x);
- case 8:
- system("cls");
- break;
- case 9:
- exit(0);
- }
- }
- void thaotac(DLIST &Q, DNode *p, GV x){
- int n;
- p=NULL;
- printf("\n\n1.Tim ten");
- printf("\n2.Tim ma");
- printf("\n3.Tim phu trach lop");
- printf("\n4.Thong ke cac GV cung he so luong");
- printf("\n5.Sap xep he so luong tang");
- printf("\n6.Sap xep he so luong giam");
- printf("\n7.thong ke cac GV cung ngay cong");
- printf("\n8.Tim giao vien co muc luong cao nhat");
- printf("\n9.Tim giao vien co muc luong thap nhat");
- printf("\n10.Giao vien co HSL cao hon x");
- printf("\n11.Tim GV co ngay cong cao nhat");
- printf("\n12.Nhap them hoac xoa du lieu");
- printf("\n13.exit");
- printf("\n\nNhap lua chon: ");scanf("%d", &n);
- switch(n){
- case 1:
- system("cls");
- char a[25];
- timHvT(Q,a);
- thaotac(Q,p,x);
- case 2:
- system("cls");
- int b;
- timMGV(Q,b);
- thaotac(Q,p,x);
- case 3:
- system("cls");
- timPT(Q,a);
- thaotac(Q,p,x);
- case 4:
- system("cls");
- thongkecungHSL(Q);
- thaotac(Q,p,x);
- case 5:
- system("cls");
- DNode *p,*q;
- sxTanghsl(Q,p,q);
- hienDSGV(Q);
- thaotac(Q,p,x);
- case 6:
- system("cls");
- sxGiamhsl(Q,p,q);
- hienDSGV(Q);
- thaotac(Q,p,x);
- case 7:
- system("cls");
- thongkecungNC(Q);
- thaotac(Q,p,x);
- case 8:
- system("cls");
- timMaxML(Q);
- thaotac(Q,p,x);
- case 9:
- system("cls");
- timMinML(Q);
- thaotac(Q,p,x);
- case 10:
- system("cls");
- float c;
- hienHSLhonx(Q,c);
- thaotac(Q,p,x);
- case 11:
- system("cls");
- timMaxNC(Q);
- thaotac(Q,p,x);
- case 12:
- system("cls");
- menuthem(Q,p,x);
- thaotac(Q,p,x);
- case 13:
- exit(0);
- default:
- printf("Lua chon sai");
- thaotac(Q,p,x);
- }
- }
- void Menu(DLIST &Q, DNode *p, GV x){
- int n,i,o;
- printf("1.Nhap du lieu: ");
- printf("\n\nNhap lua chon: ");scanf("%d", &n);
- switch(n){
- case 1:
- system("cls");
- printf("Co bao nhieu GV: ");scanf("%d", &o);
- for(i=0;i<o;i++){
- printf("\nGV thu %d", i+1);
- Nhap(x);
- p=getNode(x);
- ChenDau(Q,p);
- }
- printf("Danh sach vua nhap la: ");
- hienDSGV(Q);
- thaotac(Q,p,x);
- break;
- }
- }
- int main(){
- DNode *p,*q;
- GV x;
- init(Q);
- Menu(Q,p,x);
- getch ();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement