Advertisement
Guest User

aa

a guest
Nov 21st, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.41 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. #include<stdlib.h>
  5. struct GV
  6. {
  7.     int MGV,SDT,NC;
  8.     char HvT[25],PT[25];
  9.     float HSL,ML,T;
  10. };
  11. struct DNode
  12. {
  13.     GV info;
  14.     struct DNode *next;
  15.     struct DNode *previous;
  16. };
  17. struct DLIST
  18. {
  19.     DNode *Head;
  20.     DNode *Tail;
  21. };
  22. DLIST Q;
  23. void init(DLIST &Q)
  24. {
  25.     Q.Head=NULL;
  26.     Q.Tail=NULL;
  27. }
  28. DNode *getNode(GV x)
  29. {
  30.     DNode *p;
  31.     p=new DNode;
  32.     if(p==NULL)
  33.         {
  34.             printf("\n Khong du bo nho");
  35.             exit(1);
  36.         }
  37.     p->info=x;
  38.     p->next=NULL;
  39.     p->previous=NULL;
  40.     return p;
  41. }
  42. void Nhap(GV &x)
  43. {
  44.     printf("\n Nhap ma GV:");
  45.     scanf("%d",&x.MGV);
  46.     printf("\n Nhap ho ten:");
  47.     fflush(stdin);
  48.     gets(x.HvT);
  49.     printf("\n Nhap so dien thoai:");
  50.     fflush(stdin);
  51.     scanf("%d",&x.SDT);
  52.     printf("\n Nhap ten lop phu trach:");
  53.     fflush(stdin);
  54.     gets(x.PT);
  55.     printf("\n Nhap he so luong:");
  56.     fflush(stdin);
  57.     scanf("%f",&x.HSL);
  58.     printf("\n Nhap ngay lam viec:");
  59.     scanf("%d",&x.NC);
  60.     printf("\n Nhap muc thuong:");
  61.     scanf("%f",&x.T);
  62.     x.ML=x.HSL*x.NC+x.T;
  63. }
  64. void hienDSGV(DLIST Q)
  65. {
  66.     DNode *p;
  67.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  68.     for(p=Q.Head;p!=NULL;p=p->next)
  69.     {
  70.         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);
  71.     }
  72. }
  73. void ChenDau(DLIST &Q,DNode *p)
  74. {
  75.     if(Q.Head==NULL)
  76.     {
  77.         Q.Head=p;
  78.         Q.Tail=p;
  79.     }
  80.     else
  81.     {
  82.         p->next=Q.Head;
  83.         Q.Head->previous=p;
  84.         Q.Head=p;
  85.     }
  86. }
  87. void ChenSau(DLIST &Q,DNode *p)
  88. {
  89.     if(Q.Head==NULL)
  90.     {
  91.         Q.Head=p;
  92.         Q.Tail=p;
  93.     }
  94.     else
  95.     {
  96.         Q.Tail->next=p;
  97.         p->previous=Q.Tail;
  98.         Q.Tail=p;
  99.     }
  100. }
  101. void ChenGiua(DLIST &Q, GV x)
  102. {
  103.     int m;
  104.     DNode *p;
  105.     printf("Vao Sau Giao Vien Co Ma la:  ");scanf("%d", &m);
  106.     p=Q.Head;
  107.     while(p!=NULL)
  108.     {
  109.         if(p->info.MGV==m)
  110.         {
  111.             Nhap(x);
  112.             DNode *q;
  113.             q=getNode(x);
  114.             q->next=p->next;
  115.             q->previous=p;
  116.             p->next=q;
  117.             if(p==Q.Tail)
  118.             Q.Tail = q;
  119.             break;
  120.         }
  121.         p=p->next;
  122.     }
  123. }
  124. void xoaDau(DLIST &Q,DNode *p)
  125. {
  126.     if(Q.Head!=NULL)
  127.     {
  128.         p=Q.Head;
  129.         Q.Head=Q.Head->next;
  130.         Q.Head->previous=NULL;
  131.         delete p;
  132.         if(Q.Head==NULL)
  133.             Q.Tail=NULL;
  134.     }
  135. }
  136. void XoaCuoi(DLIST &Q)
  137. {
  138.     DNode *p;
  139.     if(Q.Head!=NULL)
  140.     {
  141.         p=Q.Tail;
  142.         Q.Tail=Q.Tail->previous;
  143.         Q.Tail->next=NULL;
  144.         delete(p);
  145.         if(Q.Head==NULL)
  146.             Q.Tail=NULL;
  147.     }
  148.     else
  149.         printf("Khong Thanh Cong");
  150. }
  151. void xoak(DLIST &Q)
  152. {
  153.     int k;
  154.     DNode *q;
  155.     DNode *p;
  156.     printf("Nhap Ma can xoa");scanf("%d", &k);
  157.     for(p=Q.Head;p!=NULL;p=p->next)
  158.     {
  159.         q=p->next;
  160.         if(q->info.MGV==k)
  161.         {
  162.             q->next->previous=p;
  163.             p->next=q->next;
  164.             if(p->next==NULL)
  165.                 Q.Tail=p;
  166.             delete(q);
  167.         }
  168.     }
  169. }
  170. void sxTanghsl(DLIST Q,DNode *p,DNode *q)
  171. {
  172.     GV tg;
  173.     for(p=Q.Head;p!=NULL;p=p->next)
  174.     for(q=p->next;q!=NULL;q=q->next)
  175.         if(p->info.HSL>q->info.HSL)
  176.         {
  177.             tg=p->info;
  178.             p->info=q->info;
  179.             q->info=tg;
  180.         }
  181. }
  182. void sxGiamhsl(DLIST Q,DNode *p,DNode *q)
  183. {
  184.     GV tg;
  185.     for(p=Q.Head;p!=NULL;p=p->next)
  186.     for(q=p->next;q!=NULL;q=q->next)
  187.         if(p->info.HSL<q->info.HSL)
  188.         {
  189.             tg=p->info;
  190.             p->info=q->info;
  191.             q->info=tg;
  192.         }
  193. }
  194. void timHvT(DLIST Q,char a[])
  195. {
  196.     DNode *p;
  197.     printf("\n Nhap ten GV :");
  198.     fflush(stdin);
  199.     gets(a);
  200.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  201.     for(p=Q.Head;p!=NULL;p=p->next)
  202.     {
  203.         if(strcmp(p->info.HvT,a)==0)
  204.         {
  205.             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);
  206.         }  
  207.     }
  208. }
  209. void timMGV(DLIST Q,int b)
  210. {
  211.     DNode *p;
  212.     printf("\n Nhap ma GV :");
  213.     scanf("%d",&b);
  214.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  215.     for(p=Q.Head;p!=NULL;p=p->next)
  216.     {
  217.         if(p->info.MGV==b)
  218.         {
  219.             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);
  220.         }  
  221.     }
  222. }
  223. void timPT(DLIST Q,char a[])
  224. {
  225.     DNode *p;
  226.     printf("\n Nhap ten GV :");
  227.     fflush(stdin);
  228.     gets(a);
  229.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  230.     for(p=Q.Head;p!=NULL;p=p->next)
  231.     {
  232.         if(strcmp(p->info.PT,a)==0)
  233.         {
  234.             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);
  235.         }  
  236.     }
  237. }
  238. void thongkecungHSL(DLIST Q)
  239. {
  240.     DNode *p,*q;
  241.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  242.     for(p=Q.Head;p!=NULL;p=p->next)
  243.     for(q=p->next;q!=NULL;q=q->next)
  244.     {
  245.         if(p->info.HSL==q->info.HSL)
  246.         {
  247.             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);
  248.             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);
  249.         }
  250.     }
  251. }
  252. void thongkecungNC(DLIST Q)
  253. {
  254.     DNode *p,*q;
  255.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  256.     for(p=Q.Head;p!=NULL;p=p->next)
  257.     for(q=p->next;q!=NULL;q=q->next)
  258.     {
  259.         if(p->info.NC==q->info.NC)
  260.         {
  261.             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);
  262.             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);
  263.         }
  264.     }
  265. }
  266. void timMaxML(DLIST Q)
  267. {
  268.     DNode *p;
  269.     float max;
  270.     max=Q.Head->info.ML;
  271.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  272.     for(p=Q.Head;p!=NULL;p=p->next)
  273.     {
  274.         if(p->info.ML>max)
  275.             max=p->info.ML;
  276.     }
  277.     for(p=Q.Head;p!=NULL;p=p->next)
  278.     {
  279.         if(max==p->info.ML)
  280.             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);
  281.     }
  282. }
  283. void timMinML(DLIST Q)
  284. {
  285.     DNode *p;
  286.     float min;
  287.     min=Q.Head->info.ML;
  288.     for(p=Q.Head;p!=NULL;p=p->next)
  289.     {
  290.         if(p->info.ML<min)
  291.             min=p->info.ML;
  292.     }
  293.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  294.     for(p=Q.Head;p!=NULL;p=p->next)
  295.     {
  296.         if(min==p->info.ML)
  297.             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);
  298.     }
  299. }
  300. void hienHSLhonx(DLIST Q,float c)
  301. {
  302.     DNode *p;
  303.     printf("\n Nhap he so luong x=");
  304.     scanf("%f",&c);
  305.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  306.     for(p=Q.Head;p!=NULL;p=p->next)
  307.     {
  308.         if(p->info.HSL>c)
  309.         {
  310.             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);
  311.         }
  312.     }
  313. }
  314. void timMaxNC(DLIST Q)
  315. {
  316.     DNode *p;
  317.     float max;
  318.     max=Q.Head->info.NC;
  319.     for(p=Q.Head;p!=NULL;p=p->next)
  320.     {
  321.         if(p->info.NC>max)
  322.             max=p->info.NC;
  323.     }
  324.     printf("\n%-5s%-15s%-15s%-10s%-10s%-10s%-10s%-10s","maGV","HoTen","SDT","PhuTrach","HSL","NgayCong","Thuong","Luong");
  325.     for(p=Q.Head;p!=NULL;p=p->next)
  326.     {
  327.         if(max==p->info.NC)
  328.             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);
  329.     }
  330. }
  331. void demML(DLIST Q,DNode *p)
  332. {
  333.     int dem;
  334.     float x;
  335.     dem=0;
  336.     printf("\n Nhap luong bat ki:");
  337.     scanf("%f",&x);
  338.     for(p=Q.Head;p!=NULL;p=p->next)
  339.     {
  340.         if(p->info.ML>x)
  341.             dem=dem++;
  342.     }
  343.     printf("\n So giao vien cung he so luong la %d",dem);
  344. }
  345. void menuthem(DLIST &Q, DNode *p, GV x){
  346.     int n;
  347.     printf("\n\n1.Them vao dau");
  348.     printf("\n2.Them vao cuoi");
  349.     printf("\n3.Them vao giua");
  350.     printf("\n4.Them giao vien");
  351.     printf("\n5.Xoa cuoi");
  352.     printf("\n6.Xoa dau");
  353.     printf("\n7.Xoa ma k");
  354.     printf("\n8.Back");
  355.     printf("\n9.Exit");
  356.     printf("\n\nNhap lua chon: ");scanf("%d", &n);
  357.     switch(n){
  358.         case 1:
  359.             system("cls");
  360.             Nhap(x);
  361.             p=getNode(x);
  362.             ChenDau(Q,p);
  363.             hienDSGV(Q);
  364.             menuthem(Q,p,x);
  365.         case 2:
  366.             system("cls");
  367.             Nhap(x);
  368.             p=getNode(x);
  369.             ChenSau(Q,p);
  370.             hienDSGV(Q);
  371.             menuthem(Q,p,x);
  372.         case 3:
  373.             system("cls");
  374.             ChenGiua(Q,x);
  375.             hienDSGV(Q);
  376.             menuthem(Q,p,x);
  377.         case 4:
  378.             system("cls");
  379.             int i,o;
  380.             printf("Them bao nhieu giao vien: ");scanf("%d", &o);
  381.             for(i=0;i<o;i++){
  382.                 Nhap(x);
  383.                 p=getNode(x);
  384.                 ChenDau(Q,p);
  385.             }
  386.             hienDSGV(Q);
  387.             menuthem(Q,p,x);
  388.         case 5:
  389.             system("cls");
  390.             XoaCuoi(Q);
  391.             hienDSGV(Q);
  392.             menuthem(Q,p,x);
  393.         case 6:
  394.             system("cls");
  395.             xoaDau(Q,p);
  396.             hienDSGV(Q);
  397.             menuthem(Q,p,x);
  398.         case 7:
  399.             system("cls");
  400.             xoak(Q);
  401.             hienDSGV(Q);
  402.             menuthem(Q,p,x);
  403.         case 8:
  404.             system("cls");
  405.             break;
  406.         case 9:
  407.             exit(0);
  408.     }
  409. }
  410. void thaotac(DLIST &Q, DNode *p, GV x){
  411.     int n;
  412.     p=NULL;
  413.     printf("\n\n1.Tim ten");
  414.     printf("\n2.Tim ma");
  415.     printf("\n3.Tim phu trach lop");
  416.     printf("\n4.Thong ke cac GV cung he so luong");
  417.     printf("\n5.Sap xep he so luong tang");
  418.     printf("\n6.Sap xep he so luong giam");
  419.     printf("\n7.thong ke cac GV cung ngay cong");
  420.     printf("\n8.Tim giao vien co muc luong cao nhat");
  421.     printf("\n9.Tim giao vien co muc luong thap nhat");
  422.     printf("\n10.Giao vien co HSL cao hon x");
  423.     printf("\n11.Tim GV co ngay cong cao nhat");
  424.     printf("\n12.Nhap them hoac xoa du lieu");
  425.     printf("\n13.exit");
  426.     printf("\n\nNhap lua chon: ");scanf("%d", &n);
  427.     switch(n){
  428.         case 1:
  429.             system("cls");
  430.             char a[25];
  431.             timHvT(Q,a);
  432.                 thaotac(Q,p,x);
  433.         case 2:
  434.             system("cls");
  435.             int b;
  436.             timMGV(Q,b);
  437.                 thaotac(Q,p,x);
  438.         case 3:
  439.             system("cls");
  440.             timPT(Q,a);
  441.             thaotac(Q,p,x);
  442.         case 4:
  443.             system("cls");
  444.             thongkecungHSL(Q);
  445.             thaotac(Q,p,x);
  446.         case 5:
  447.             system("cls");
  448.             DNode *p,*q;
  449.             sxTanghsl(Q,p,q);
  450.             hienDSGV(Q);
  451.             thaotac(Q,p,x);
  452.         case 6:
  453.             system("cls");
  454.            
  455.             sxGiamhsl(Q,p,q);
  456.             hienDSGV(Q);
  457.             thaotac(Q,p,x);
  458.         case 7:
  459.             system("cls");
  460.             thongkecungNC(Q);
  461.             thaotac(Q,p,x);
  462.         case 8:
  463.             system("cls");
  464.             timMaxML(Q);
  465.             thaotac(Q,p,x);
  466.         case 9:
  467.             system("cls");
  468.             timMinML(Q);
  469.             thaotac(Q,p,x);
  470.         case 10:
  471.             system("cls");
  472.             float c;
  473.             hienHSLhonx(Q,c);
  474.             thaotac(Q,p,x);
  475.         case 11:
  476.             system("cls");
  477.             timMaxNC(Q);
  478.             thaotac(Q,p,x);
  479.         case 12:
  480.             system("cls");
  481.             menuthem(Q,p,x);
  482.             thaotac(Q,p,x);
  483.         case 13:
  484.             exit(0);
  485.         default:
  486.             printf("Lua chon sai");
  487.             thaotac(Q,p,x);
  488.     }
  489. }
  490. void Menu(DLIST &Q, DNode *p, GV x){
  491.     int n,i,o;
  492.     printf("1.Nhap du lieu: ");
  493.     printf("\n\nNhap lua chon: ");scanf("%d", &n);
  494.     switch(n){
  495.         case 1:
  496.             system("cls");
  497.             printf("Co bao nhieu GV: ");scanf("%d", &o);
  498.             for(i=0;i<o;i++){
  499.                 printf("\nGV thu %d", i+1);
  500.                 Nhap(x);
  501.                 p=getNode(x);
  502.                 ChenDau(Q,p);
  503.             }
  504.             printf("Danh sach vua nhap la: ");
  505.             hienDSGV(Q);
  506.             thaotac(Q,p,x);
  507.             break;
  508.     }
  509. }
  510. int main(){
  511.     DNode *p,*q;
  512.     GV x;
  513.     init(Q);
  514.     Menu(Q,p,x);
  515.     getch ();
  516.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement