Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Code quản lý sách viết trên C | Lỗi phần xuất dữ liệu, giúp mình sửa lỗi?

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    61

    Wink Code quản lý sách viết trên C | Lỗi phần xuất dữ liệu, giúp mình sửa lỗi?

    Đề bài :
    Xây dựng một chương trình quản lý sách trong đó dữ liệu cấu trúc được mô tả như sau:
    typedef struct {
    char ms[10]; // mã sách
    char tens[30]; //tên sách
    int sl; //số lượng có
    int slm; // số lượng mượn
    int slc; //số lượng còn = sl-slm
    } sach;
    Menu chọn như sau:
    1. Nhập sách
    2. Liệt kê sách trong thư viện
    3. Sắp xếp sách theo mã sách
    4. Tìm sách khi nhập mã sách
    5. Xoá sách khi nhập mã sách
    0. Thoát

    Code của em chạy được ,nhưng mà cái phần xuất là số liệu thì toàn là 0 .Em xem kỹ lắm rồi nhưng k biết mình sai chỗ nào .
    Mong mọi người giúp đỡ .Cảm ơn nhiều !!!!
    PHP Code:
     #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <ctype.h>
    #include <dos.h>
    #include <io.h>
    #include <stdlib.h>
    #define ESC 27
    typedef  struct {
        
    char ms[10];
        
    char tens[30];
        
    int sl;
        
    int slm;
        
    int slc;
        } 
    sach;
    void ghi(char *name)
    {
      
    sach s;
      
    FILE *f;
      
    char tl='C';
      
    clrscr();
      
    f=fopen(name,"w");
      if(
    f==NULL){
         
    printf("\n khong tao duoc tep");
         return;
         }
      do{
        
    printf("\n Nhap ma sach :");
        
    fflush(stdin);    gets(s.ms);
        
    printf("\n Ten sach :");
        
    fflush(stdin);    gets(s.tens);

        
    printf("\n So luong co  :");    scanf("%d",&s.sl);
        
    printf("\n So luong muon :");    scanf("%d",&s.slm);
        
    s.slc=(s.sl-s.slm);

        
    fwrite(&s,sizeof(sach),1,f);
        
    printf("\n co nhap tiep nua khong(c/k)?");
        
    tl=getche();
      }while (
    toupper(tl)!='K');
      
    fclose(f);
    }
    void doc(char *name,sach *s,int &n)
    {
       
    FILE *f;
       
    int i=0;
       
    f=fopen(name,"r");
       if(
    f==NULL){
         
    printf("\n chua co tep nay");
         return;
       }
        
    n=filelength(fileno(f))/sizeof(sach);
        while(
    i<n){
       
    fread(&s[i],sizeof(sach),1,f);
       
    i++;
       }
       
    getch();
       
    fclose(f);
    }
    void hthi(sach *s,int n)
    {
      
    int i;
      
    printf("\n Danh muc sach ");
      
    printf("\n==============================================================================");
      
    printf("\n|STT| Ma sach|  Ten           |Sl co |Sl muon|Sl con ");
      
    printf("\n==============================================================================");
      for(
    i=0;i<n;i++)
      {
      
    printf("\n|%3d|%8s|%15s ",(i+1),s[i].ms,s[i].tens);
         
    printf("|%3d   |%3d    |%3d",s[i].sl,s[i].slm,s[i].slc);
      }
      
    printf("\n==============================================================================");
    }
    void sxep(sach *s,int n)
    {
      
    int i,j;
      
    sach t;
      for(
    i=0;i<n;i++)
        for(
    j=i+1;j<n;j++)
          if(
    strcmp(s[i].ms,s[j].ms)>0)
        {
    t=s[i];
         
    s[i]=s[j];
         
    s[j]=t;
        }
    }
    int tknhiphan(sach *s,int n,char *ma)
    {
      
    int low=0,high=n-1,mid;
      while(
    low<=high)
      {
        
    mid=(low+high)/2;
        if(
    strcmp(s[mid].ms,ma)>0)
          
    high=mid-1;
        else if(
    strcmp(s[mid].ms,ma)<0)
          
    low=mid+1;
        else return(
    mid);
      }
      return(-
    1);
    }
    void xoa(char *ma,int &n,sach *s,char *ten){
       
    int k;FILE *f;
      
    int i;
       
    k=tknhiphan(s,n,ma);
       if(
    k==-1){
         
    printf("\n Khong co sach ma :",ma);
         return;
        }

        for(
    i=k;i<n-1;i++)
          
    s[i]=s[i+1];
          
    n=n-1;

        if((
    f=fopen(ten,"w"))==NULL){
          
    printf("\n khong mo duoc");
          return;
          }
        for(
    i=0;i<n;i++)
          
    fwrite(&s[i],sizeof(sach),1,f);
          
    fclose(f);

    }
    void menu(void)
    {
      
    char name[]="sach.dat";
      
    sach *s;
      
    int n,i;
      
    char ma[15];
      
    int chon;
      do
      {  
    clrscr();
         
    printf("\n 1. Nhap Sach ");
         
    printf("\n 2. Liet ke sach trong thu vien");
         
    printf("\n 3. Sap xep hteo ma sach ");
         
    printf("\n 4. Tim sach khi nhap ma");
         
    printf("\n 5. Xoa sach khi nhap ma");
         
    printf("\n 6. Them sach ");
         
    printf("\n ESC. Thoat");
         
    printf("\n chon:");
         
    chon=getche();
         switch(
    chon)
         {
           case 
    '1':ghi(name);
            break;

           case 
    '3'doc(name,s,n);
              
    printf("\n Chua sap xep");
              
    hthi(s,n);
              
    sxep(s,n);
              
    printf("\n Da sap xep");
              
    hthi(s,n);
              
    getch();
            break;
           case 
    '4':  doc(name,s,n);
              
    printf("\n Nhap ma sach can tim:");
              
    fflush(stdin);
              
    gets(ma);
              
    i=tknhiphan(s,n,ma);
              if(
    i==-1)
                
    printf("\n Khong co sach co ma :%s",ma);
              else
                {
                  
    printf("\n sach thu  %d trong danh sach",i);
                  
    printf("\n ten sach:%s",s[i].tens);
                  
    printf("\n So luong sach :%d",s[i].sl);
                  
    printf("\n So luong muon :%d",s[i].slm);
                  
    printf("\n So luong con :%d",s[i].slc);
                }
            
    getch();
            break;
         case 
    '5':     doc(name,s,n);
              
    printf("\n nhap ma sach can xoa:");
              
    fflush(stdin);
              
    gets(ma);
              
    printf("\n Danh muc truoc khi xoa");
              
    hthi(s,n);
              
    xoa(ma,n,s,name);
              
    printf("\n Danh muc sau khi xoa");
              
    hthi(s,n);
              
    getch();
              break;
         case 
    '2'doc(name,s,n);
              
    hthi(s,n);
              
    getch();
            break;
         }
      }while(
    chon != ESC);

    }

    void main()
    {
       
    menu();

    Đã được chỉnh sửa lần cuối bởi rong3sao : 22-05-2009 lúc 12:57 AM.

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    61

    oài k ai biết à .
    Chán ,tôi vừa tìm dc lỗi rồi ,bỏ cái clrscr đi là dc .

  3. #3
    Ngày gia nhập
    01 2009
    Nơi ở
    PTIT
    Bài viết
    5

    chắc dùng C++4.5 ấy j.Thế mới phải bỏ cái đấy
    Thanks this 4room

  4. #4
    Ngày gia nhập
    05 2009
    Bài viết
    8

    Wink Xem Thu Bai Tap Sach Nay Di!hoi Dai Do!

    GOI CHO BAN BAI TAP SACH NAY
    NO TUY DAI NHUNG CO HUU ICH ĐẤY!
    Ở ĐÂY SỬ DỤNG CẤU TRUC LIÊN KẾT VÒNG

    C Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include "stdlib.h"
    4. #include "string.h"
    5. typedef struct Sach{
    6.     int MaSo;  
    7.     char TenSach[50];
    8.     char TenTacGia[50];
    9.     char NXB[50];
    10.     int NamXB;
    11.     int TrangThai;
    12. }SACH;
    13. typedef SACH datatype;
    14. typedef struct Node
    15. {
    16.     datatype info;
    17.     struct Node* Next;
    18. }NODE;
    19. typedef NODE* NodePtr;
    20. // Ham chua thong tin cua danh sach lien kiet.
    21. typedef struct DSLK
    22. {
    23.     NodePtr pHead;
    24.     NodePtr pTail;
    25. }DS;
    26.  
    27.  
    28. void Init( DS &ds )
    29. {
    30.     ds.pHead = NULL;
    31. }
    32. NodePtr NewNode()
    33. {
    34.     NodePtr newnode;
    35.     newnode = (NodePtr) malloc (sizeof(NODE));  
    36.     return newnode;//tra ve node moi cap phat
    37. }
    38. NodePtr CreateNode ( datatype x )
    39. {
    40.     NodePtr P = (NodePtr) malloc (sizeof(NODE));
    41.     P -> info = x;  
    42.     P -> Next = NULL;
    43.     return P;
    44. }
    45. void FreeNode( NodePtr P)
    46. {
    47.     free(P);
    48. }
    49. int IsEmpty( DS ds)
    50. {
    51.     if( ds.pHead==NULL)
    52.         return 1;
    53.     else
    54.         return 0;
    55.  
    56. }
    57. void Nhap( datatype &x)
    58. {  
    59.     printf(" \nNhap Ma so:");
    60.     scanf("%d", &x.MaSo);
    61.     fflush(stdin);
    62.     printf(" \nNhap Ten Sach:");
    63.     gets( x.TenSach );
    64.     fflush(stdin);
    65.     printf(" \nNhap Ten Tac Gia:");
    66.     gets( x.TenTacGia );
    67.     fflush(stdin);
    68.     printf(" \nNhap Ten NXB:");
    69.     gets( x.NXB);
    70.     fflush( stdin );
    71.     printf(" \nNhap nam xuat ban:");
    72.     scanf("%d", &x.NamXB);
    73.     fflush( stdin );
    74.     printf(" \nNhap Trang Thai cua sach: \n1. Da Muon \n 0. Chua Muon ");
    75.     scanf("%d",&x.TrangThai);
    76.  
    77. }
    78. void ShowNode( datatype x)
    79. {
    80.     //xuat thong tin cua mot cuon sach
    81.     printf("\n MS  Sach   : %d", x.MaSo);
    82.     printf("\n Ten Sach   : %s", x.TenSach);
    83.     printf("\n Tac  gia   : %s", x.TenTacGia);
    84.     printf("\n Nha   XB   : %s", x.NXB);
    85.     printf("\n Nam   XB   : %d", x.NamXB);
    86.     if(x.TrangThai==0)//kiem tra trang thai cua sach
    87.         printf("\nTrang thai  : Sach Chua Ai Muon");
    88.     else
    89.         printf("\nTrang thai  : Sach Da Duoc Muon");
    90.  
    91.     }
    92. void ShowList( DSLK ds )
    93. {
    94.     NodePtr P;
    95.     if(IsEmpty(ds))
    96.     {
    97.         printf("\nKhong co gi de xem!");
    98.         return;
    99.     }
    100.     P = ds.pHead;  
    101.     while (P != NULL )  
    102.     {
    103.         ShowNode(P->info);
    104.         printf("\nDia chi cua node tiep theo : %d",P->Next);
    105.         P = P -> Next;
    106.     }
    107. }
    108. void addfirst( DSLK &ds, datatype x )
    109. {
    110.     NodePtr P = CreateNode(x);
    111.     if( IsEmpty(ds) )
    112.     {
    113.         ds.pHead = ds.pTail = P;
    114.     }
    115.     else
    116.     {
    117.         P -> Next = ds.pHead;
    118.         ds.pHead = P;
    119.     }
    120.     printf("\nDa them vao thanh cong!Nhan Enter");
    121. }
    122. void addlast( DSLK &ds, datatype x )
    123. {
    124.     NodePtr P = CreateNode(x);
    125.     if( IsEmpty(ds) )
    126.  
    127.         ds.pHead = ds.pTail = P;
    128.     else
    129.     {
    130.         ds.pTail -> Next = P;
    131.         P->Next=NULL;
    132.         ds.pTail=P;
    133.     }
    134.     printf("\nDa them vao thanh cong!Nhan Enter");
    135. }
    136.  
    137. void addafter( DSLK &ds, datatype x )
    138. {
    139.  
    140.     int MS; //Bien luu Ma So phan tu truoc phan tu can chen.
    141.     printf(" Nhap ma so de them sau:");
    142.     scanf("%d",&MS);
    143.     NodePtr P,q;
    144.     q = CreateNode(x); // tao mot node.
    145.     P= ds.pHead;
    146.     //Nhap(x);
    147.     //Neu DS rong.
    148.     if( IsEmpty(ds)) //&& P->info.MaSo >= 0)
    149.     {
    150.         //ds.pHead = ds.pTail= q; //Thi DS se co chi 1 phan tu.
    151.         return;
    152.     }
    153.     while( P->info.MaSo!=MS )
    154.     {   P= P-> Next;
    155.     if(P==NULL)
    156.     {
    157.         printf("\nKhong co ma so nay");
    158.         return;
    159.     }
    160.     }
    161.     q->Next=P->Next;
    162.     P->Next=q;
    163.     //return ;
    164.     printf("\nDa them xong nhan enter");
    165.     return;
    166.  
    167. }
    168.  
    169.  
    170. void deletefirst( DSLK &ds )
    171. {
    172.  
    173.     NodePtr P = NewNode();
    174.  
    175.     if( IsEmpty (ds))
    176.     {
    177.         printf("\nDanh sach rong");
    178.         return ;
    179.     }
    180.     else
    181.     {
    182.       P=ds.pHead;
    183.      if(ds.pHead ==ds.pTail)
    184.      {
    185.         ds.pHead=NULL;
    186.         free(P);
    187.      }
    188.     else
    189.      {
    190.         ds.pHead=P->Next;
    191.         free(P);
    192.      }
    193.         printf("\nDa xoa xong!Nhan Enter!");
    194.     }
    195.  
    196. }
    197. void deletelast(DSLK &ds)
    198. {
    199.     NodePtr P=NewNode ();
    200.     NodePtr q=NewNode();
    201.     q=ds.pTail;
    202.     if(IsEmpty(ds))
    203.     {
    204.         printf("\Danh sach rong");
    205.         return;
    206.     }
    207.     else
    208.     {
    209.          P=ds.pHead;
    210.          if(ds.pHead==ds.pTail)
    211.         {
    212.             ds.pHead=NULL;
    213.             free(P);
    214.          }
    215.          else
    216.  
    217.          {
    218.  
    219.              while(P->Next!=ds.pTail)
    220.              {
    221.                 P=P->Next;
    222.              }
    223.              P->Next=NULL;
    224.              ds.pTail=P;
    225.              free(q);
    226.          }
    227.         //printf("\nDa xoa xong!Nhan Enter!");
    228.     }
    229. }
    230. void xoaSau(NodePtr &P)
    231. {
    232.     NodePtr q;
    233.     P=NewNode();
    234.     if(P->Next==NULL)
    235.         return;
    236.     else
    237.         {
    238.             q=P->Next;
    239.             P->Next=q->Next;
    240.             free(q);
    241.         }
    242. }
    243.  
    244. void deleteAll(DSLK &ds)
    245. {
    246.     NodePtr P;
    247.     if(IsEmpty(ds))
    248.     {   printf("\nDanh sach rong");
    249.         return;
    250.     }
    251.     else{
    252.  
    253.         while(ds.pHead!=NULL)
    254.         {
    255.             P=ds.pHead;
    256.             ds.pHead=P->Next;
    257.             free(P);
    258.         }
    259.         //printf("\nDa xoa xong!Nhan Enter!");
    260.    }
    261. }
    262. void deleteMS( DSLK &ds)
    263. {
    264.     int MS;
    265.     NodePtr P=NewNode ();
    266.     NodePtr q=NewNode ();
    267.     printf("\nNhap MS can xoa:");
    268.     scanf("%d",&MS);
    269.     P= ds.pHead;
    270.  
    271.     if( IsEmpty(ds))
    272.     {
    273.         printf("DS rong");
    274.         return;
    275.     }
    276.  
    277.  
    278.     while( P!= NULL  )
    279.     {
    280.         if( P-> info.MaSo==MS)
    281.         {
    282.             if( P == ds.pHead )
    283.             {
    284.                 deletefirst(ds);
    285.                 P= P-> Next;
    286.             }
    287.             else
    288.             {
    289.                 q->Next=P->Next;
    290.                 free(P);
    291.                 P= q-> Next;
    292.  
    293.             }
    294.         }
    295.         else
    296.         {
    297.             q =P;
    298.             P= P->Next;
    299.         }
    300.     }
    301.         printf("\nDa xoa xong!Nhan Enter!");
    302. }
    303. void deleteTS( DSLK &ds)
    304. {
    305.     char ts[50];
    306.     NodePtr P=NewNode ();
    307.     NodePtr q=NewNode ();
    308.     printf("\nNhap ten sach can xoa:");
    309.     fflush(stdin);
    310.     gets(ts);
    311.     P= ds.pHead;
    312.  
    313.     if( IsEmpty(ds))
    314.     {
    315.         printf("DS rong");
    316.         return;
    317.     }
    318.  
    319.  
    320.     while( P!= NULL  )
    321.     {
    322.         if(stricmp(P->info.TenSach,ts)==0)
    323.         {
    324.             if( P == ds.pHead )
    325.             {
    326.                 deletefirst(ds);
    327.                 P= P-> Next;
    328.             }
    329.             else
    330.             {
    331.                 q->Next=P->Next;
    332.                 free(P);
    333.                 P= q-> Next;
    334.  
    335.             }
    336.         }
    337.         else
    338.         {
    339.             q =P;
    340.             P= P->Next;
    341.         }
    342.     }
    343.     printf("\nDa xoa xong!Nhan Enter!");
    344. }
    345.  
    346. void deleteTG( DSLK &ds)
    347. {
    348.     char tg[50];
    349.     NodePtr P=NewNode ();
    350.     NodePtr q=NewNode ();
    351.     printf("\nNhap ten tac gia can xoa:");
    352.     fflush(stdin);
    353.     gets(tg);
    354.     P= ds.pHead;
    355.  
    356.     if( IsEmpty(ds))
    357.     {
    358.         printf("DS rong");
    359.         return;
    360.     }
    361.  
    362.  
    363.     while( P!= NULL  )
    364.     {
    365.         if(stricmp(P->info.TenTacGia,tg)==0)
    366.         {
    367.             if( P == ds.pHead )
    368.             {
    369.                 deletefirst(ds);
    370.                 P= P-> Next;
    371.             }
    372.             else
    373.             {
    374.                 q->Next=P->Next;
    375.                 free(P);
    376.                 P= q-> Next;
    377.  
    378.             }
    379.         }
    380.         else
    381.         {
    382.  
    383.             q =P;
    384.             P= P->Next;
    385.             //printf("\nKhong co ten tac gia nay");
    386.         }
    387.     }
    388.         printf("\nDa xoa xong!Nhan Enter!");
    389. }
    390.  
    391. void deleteNXB( DSLK &ds)
    392. {
    393.     char nxb[50];
    394.     NodePtr P=NewNode ();
    395.     NodePtr q=NewNode ();
    396.     printf("\nNhap ten nha xuat ban can xoa:");
    397.     fflush(stdin);
    398.     gets(nxb);
    399.     P= ds.pHead;
    400.  
    401.     if( IsEmpty(ds))
    402.     {
    403.         printf("DS rong");
    404.         return;
    405.     }
    406.  
    407.  
    408.     while( P!= NULL  )
    409.     {
    410.         if(stricmp(P->info.NXB,nxb)==0)
    411.         {
    412.             if( P == ds.pHead )
    413.             {
    414.                 deletefirst(ds);
    415.                 P= P-> Next;
    416.             }
    417.             else
    418.             {
    419.                 q->Next=P->Next;
    420.                 free(P);
    421.                 P= q-> Next;
    422.  
    423.             }
    424.         }
    425.         else
    426.         {
    427.             q =P;
    428.             P= P->Next;
    429.         }
    430.     }
    431.     printf("\nDa xoa xong!Nhan Enter!");
    432. }
    433.  
    434. void deleteNam( DSLK &ds)
    435. {
    436.     int nam;
    437.     NodePtr P=NewNode ();
    438.     NodePtr q=NewNode ();
    439.     printf("\nNhap nam xuat ban can xoa:");
    440.     scanf("%d",&nam);
    441.     P= ds.pHead;
    442.  
    443.     if( IsEmpty(ds))
    444.     {
    445.         printf("DS rong");
    446.         return;
    447.     }
    448.  
    449.     while( P!= NULL  )
    450.     {
    451.         if(P->info.NamXB==nam)
    452.         {
    453.             if( P == ds.pHead )
    454.             {
    455.                 deletefirst(ds);
    456.                 P= P-> Next;
    457.             }
    458.             else
    459.             {
    460.                 q->Next=P->Next;
    461.                 free(P);
    462.                 P= q-> Next;
    463.             }
    464.         }
    465.         else
    466.         {
    467.             q =P;
    468.             P= P->Next;
    469.         }
    470.     }
    471.         printf("\nDa xoa xong!Nhan Enter!");
    472. }
    473. void Timsach(DSLK ds)
    474. {
    475.     NodePtr q=NewNode();
    476.     q=ds.pHead;
    477.     int maso;
    478.     printf("\Nhap ma so sach ban can tim : ");
    479.     scanf("%d",&maso);
    480.     printf("\nDay la thong tim ma ban tim! ");
    481.     while(q!=NULL &&q->info.MaSo!=maso)
    482.  
    483.         q=q->Next;
    484.         if(q==NULL)
    485.         {
    486.         printf("\nKhong tim thay sach theo yeu cau! Vui long thu lai! ");
    487.         return;
    488.         }
    489.         ShowNode(q->info);
    490. }
    491. void Timsach1(DSLK ds)
    492. {
    493.     NodePtr q=NewNode();   
    494.     q=ds.pHead;
    495.     char ten[30];
    496.     printf("\Nhap ten sach ban can tim : ");
    497.     fflush(stdin);
    498.     gets(ten);
    499.     int k=0;   
    500.     printf("\nDay la thong tim ma ban tim! ");
    501.     while(q!=NULL  )
    502.     {
    503.         if(stricmp(q->info.TenSach,ten)==0)//dung ham so sanh chuoi stricmp
    504.         {
    505.             k++;
    506.             ShowNode(q->info);
    507.             q=q->Next;
    508.         }
    509.  
    510.         else
    511.         q= q->Next;
    512.     }
    513.         if(k==0)
    514.         printf("\nKhong co sach nay trong thu vien!Vui long thu lai ten #");
    515.  
    516. }
    517. void Timsach2(DSLK ds)
    518. {
    519.  
    520.     NodePtr q=NewNode();
    521.     q=ds.pHead;
    522.     char tentg[30];
    523.     printf("\Nhap ten tac gia ban can tim : ");
    524.     fflush(stdin);
    525.     gets(tentg);
    526.     int t=0;
    527.     printf("\nDay la thong tim ma ban tim! ");
    528.     while(q!=NULL  )
    529.     {
    530.         if(stricmp(q->info.TenTacGia,tentg)==0)//dung ham so sanh chuoi stricmp
    531.         {
    532.             t++;
    533.             ShowNode(q->info);
    534.             q=q->Next;
    535.         }
    536.  
    537.         else
    538.         q= q->Next;
    539.     }
    540.         if(t==0)
    541.  
    542.         printf("\nKhong co sach nay trong thu vien!Vui long thu lai ten #");
    543.  
    544. }
    545. void Timsach3(DSLK ds)
    546. {
    547.  
    548.     NodePtr q=NewNode();
    549.     q=ds.pHead;
    550.     char nhaxb[30];
    551.     printf("\Nhap ten nha xuat ban ma ban can tim : ");
    552.     fflush(stdin);
    553.     gets(nhaxb);
    554.     int t=0;
    555.     printf("\nDay la thong tim ma ban tim! ");
    556.     while(q!=NULL  )
    557.     {
    558.         if(stricmp(q->info.NXB,nhaxb)==0)//dung ham so sanh chuoi stricmp
    559.         {
    560.             t++;
    561.             ShowNode(q->info);
    562.             q=q->Next;
    563.         }
    564.  
    565.         else
    566.         q= q->Next;
    567.     }
    568.         if(t==0)
    569.  
    570.         printf("\nKhong co sach nay trong thu vien!Vui long thu lai ten #");
    571. }
    572. void Timsach4(DSLK ds)
    573. {
    574.     NodePtr q=NewNode();
    575.     q=ds.pHead;
    576.     int nam;
    577.     printf("\Nhap nam xuat ban ma ban  can tim : ");
    578.     scanf("%d",&nam);
    579.     int t=0;
    580.     printf("\nDay la thong tim ma ban tim! ");
    581.     while(q!=NULL  )
    582.     {
    583.         if(q->info.NamXB==nam)
    584.         {
    585.             t++;
    586.             ShowNode(q->info);
    587.             q=q->Next;
    588.         }
    589.         else
    590.         q= q->Next;
    591.     }
    592.         if(t==0)
    593.  
    594.         printf("\nKhong co sach nay trong thu vien!Vui long thu lai ten #");
    595.  
    596. }
    597.  
    598. void muonsach(DSLK ds)
    599. {
    600.     NodePtr q=NewNode();
    601.     q=ds.pHead;
    602.     if(IsEmpty(ds))
    603.     {
    604.         printf("\nHien tai thu vien da dong cua!");
    605.         return;
    606.     }
    607.     int maso;
    608.     printf("\Nhap ma so sach ma ban muon muon: ");
    609.     scanf("%d",&maso);
    610.     printf("\nDay la thong tin");
    611.     while(q!=NULL && q->info.MaSo!=maso)
    612.  
    613.         q=q->Next;
    614.         if(q==NULL)
    615.         {
    616.             printf("\nKhong thay ma so sach nay trong thu vien!");
    617.             return;
    618.         }
    619.  
    620.         if(q->info.TrangThai==0)
    621.         {
    622.             q->info.TrangThai=1;
    623.             ShowNode(q->info);
    624.            }
    625.            else
    626.            printf("\nSach nay da duoc nguoi khac muon");
    627. }
    628. void trasach(DSLK ds)
    629. {
    630.     NodePtr q=NewNode();
    631.     q=ds.pHead;
    632.     if(IsEmpty(ds))
    633.     {
    634.         printf("Hien tai thu vien da dong cua !");
    635.         return;
    636.     }
    637.     int maso;
    638.     printf("\Nhap ma so sach ma ban muon tra: ");
    639.     scanf("%d",&maso);
    640.     while(q!=NULL && q->info.MaSo!=maso)
    641.  
    642.         q=q->Next;
    643.         if(q==NULL)
    644.         {
    645.         printf("\nKhong phai sach cua thu vien!");
    646.         return;
    647.         }
    648.         if(q->info.TrangThai!=0)
    649.         {
    650.             q->info.TrangThai=0;
    651.             ShowNode(q->info);
    652.          }
    653.            else
    654.            printf("\nSach nay chua ai muon nen khong can phai tra");
    655. }
    656.  
    657. void sachchuamuon(DSLK ds)
    658. {
    659.     NodePtr q=NewNode();
    660.     q=ds.pHead;
    661.     if(IsEmpty(ds))
    662.     {
    663.         printf("\nDanh sach rong !");
    664.         return;
    665.     }
    666.     int chua=0;
    667.     while(q!=NULL  )
    668.     {
    669.         if(q->info.TrangThai==0)
    670.         {
    671.             chua++;
    672.             ShowNode(q->info);
    673.             q=q->Next;
    674.         }
    675.  
    676.         else
    677.         q= q->Next;
    678.     }
    679.            if(chua==0)
    680.         printf("\nDanh sach rong");
    681.  
    682. }
    683. void sachdamuon(DSLK ds)
    684. {
    685.     NodePtr q=NewNode();
    686.     q=ds.pHead;
    687.     if(IsEmpty(ds))
    688.     {
    689.         printf("\nDanh sach rong !");
    690.         return;
    691.     }
    692.     int da=0;
    693.     while(q!=NULL  )
    694.     {
    695.         if(q->info.TrangThai!=0)
    696.         {
    697.             da++;
    698.             ShowNode(q->info);
    699.             q=q->Next;
    700.         }
    701.  
    702.         else
    703.         q= q->Next;
    704.     }
    705.         if(da==0)
    706.             printf("\nDanh sach rong!");
    707. }
    708. void SaveFile(DSLK ds)
    709. {
    710.  
    711.     NodePtr P;
    712.     P=ds.pHead;
    713.     char filename[50];
    714.     printf("\nNhap ten file de luu: ");
    715.     fflush(stdin);
    716.     gets(filename);
    717.     FILE *fout;
    718.     fout = fopen(filename, "wb");
    719.     while(P!= NULL)
    720.     {
    721.             fwrite(&P->info, sizeof(P->info),1, fout);
    722.             P=P->Next;
    723.     }
    724.     fclose(fout);
    725.  
    726. }
    727. void ReadFile(DSLK &ds)
    728. {
    729.     NodePtr P=NewNode();
    730.     char filename[50];
    731.     printf("\nNhap ten file de nap du lieu: ");
    732.     fflush(stdin);
    733.     gets(filename);
    734.     FILE *fin;
    735.     fin = fopen(filename, "rb");
    736.     if(fin==NULL)
    737.     {
    738.         printf("\nKhong co File nay");
    739.         getch();
    740.         return;
    741.     }
    742.     while(!feof(fin))
    743.     {
    744.         fread(&P->info,sizeof(P->info),1,fin);
    745.         addlast(ds,P->info);
    746.     }
    747.  
    748.     fclose(fin);
    749. }
    750. void sapxepMS(DSLK &ds)
    751. {
    752.     if(IsEmpty(ds))
    753.     {
    754.         printf("\nDanh sach rong !");
    755.         return;
    756.     }
    757.     NodePtr min,p,q,tam;
    758.     p=ds.pHead;
    759.     while(p!=ds.pTail)
    760.     {
    761.         q=p->Next;
    762.         min=p;
    763.         while(q!=NULL)
    764.         {
    765.             if(q->info.MaSo<min->info.MaSo)
    766.             min=q;
    767.             q=q->Next;
    768.         }
    769.     tam->info=min->info;
    770.     min->info=p->info;
    771.     p->info=tam->info;
    772.     p=p->Next;
    773.     }
    774. }
    775. void sapxepTS(DSLK &ds)
    776. {
    777.     if(IsEmpty(ds))
    778.     {
    779.         printf("\nDanh sach rong !");
    780.         return;
    781.     }
    782.     NodePtr min,p,q,tam;
    783.     p=ds.pHead;
    784.     while(p!=ds.pTail)
    785.     {
    786.         q=p->Next;
    787.         min=p;
    788.         while(q!=NULL)
    789.         {
    790.             if(stricmp(q->info.TenSach,min->info.TenSach)<0)
    791.             min=q;
    792.             q=q->Next;
    793.         }
    794.     tam->info=min->info;
    795.     min->info=p->info;
    796.     p->info=tam->info;
    797.     p=p->Next;
    798.     }
    799. }
    800. void sapxepTG(DSLK &ds)
    801. {
    802.     if(IsEmpty(ds))
    803.     {
    804.         printf("\nDanh sach rong !");
    805.         return;
    806.     }
    807.     NodePtr min,p,q,tam;
    808.     p=ds.pHead;
    809.     while(p!=ds.pTail)
    810.     {
    811.         q=p->Next;
    812.         min=p;
    813.         while(q!=NULL)
    814.         {
    815.             if(stricmp(q->info.TenTacGia,min->info.TenTacGia)<0)
    816.             min=q;
    817.             q=q->Next;
    818.         }
    819.     tam->info=min->info;
    820.     min->info=p->info;
    821.     p->info=tam->info;
    822.     p=p->Next;
    823.     }
    824. }
    825. void sapxepNhaXB(DSLK &ds)
    826. {
    827.     if(IsEmpty(ds))
    828.     {
    829.         printf("\nDanh sach rong !");
    830.         return;
    831.     }
    832.     NodePtr min,p,q,tam;
    833.     p=ds.pHead;
    834.     while(p!=ds.pTail)
    835.     {
    836.         q=p->Next;
    837.         min=p;
    838.         while(q!=NULL)
    839.         {
    840.             if(stricmp(q->info.NXB,min->info.NXB)<0)
    841.             min=q;
    842.             q=q->Next;
    843.         }
    844.     tam->info=min->info;
    845.     min->info=p->info;
    846.     p->info=tam->info;
    847.     p=p->Next;
    848.     }
    849. }
    850. void sapxepNam(DSLK &ds)
    851. {
    852.     if(IsEmpty(ds))
    853.     {
    854.         printf("\nDanh sach rong !");
    855.         return;
    856.     }
    857.     NodePtr min,p,q,tam;
    858.     p=ds.pHead;
    859.     while(p!=ds.pTail)
    860.     {
    861.         q=p->Next;
    862.         min=p;
    863.         while(q!=NULL)
    864.         {
    865.             if(q->info.NamXB>min->info.NamXB)
    866.             min=q;
    867.             q=q->Next;
    868.         }
    869.     tam->info=min->info;
    870.     min->info=p->info;
    871.     p->info=tam->info;
    872.     p=p->Next;
    873.     }
    874. }
    875. void update(DSLK ds)
    876. {
    877.     datatype x;
    878.     NodePtr q=NewNode();
    879.     NodePtr p;
    880.     q=ds.pHead;
    881.     if(IsEmpty(ds))
    882.     {
    883.         printf("Hien tai thu vien da dong cua !");
    884.         return;
    885.     }
    886.     int maso;
    887.     printf("\Nhap ma so sach ma ban muon thay doi thong tin: ");
    888.     scanf("%d",&maso);
    889.     while(q!=NULL && q->info.MaSo!=maso)
    890.  
    891.         q=q->Next;
    892.         p->info=q->info;
    893.         if(q==NULL)
    894.         {
    895.         printf("\nKhong phai sach cua thu vien!");
    896.         return;
    897.         }
    898.         int chon;
    899.                 clrscr();
    900.                 do{
    901.                 clrscr();
    902.                 printf("\nMenu thay doi du lieu\n");
    903.                 printf("\n1.Cuon sach truon khi thay doi thong tin");
    904.                 printf("\n2.Thay doi ma so sach");
    905.                 printf("\n3.Thay doi ten sach");
    906.                 printf("\n4.Thay doi ten tac gia");
    907.                 printf("\n5.Thay doi nha xuat ban");
    908.                 printf("\n6.Thay doi nam xuat ban");
    909.                 printf("\n7.Thay doi trang thai cuon sach");
    910.                 printf("\n8.Cuon sach sau khi thay doi thong tin");
    911.                 printf("\n0.Tro lai menu chinh");
    912.                 printf("\nVui long chon mot muc: ");
    913.                 scanf("%d",&chon);
    914.  
    915.                 switch(chon)
    916.                 {
    917.                     case 1:
    918.                     printf(" \nTruoc khi thay doi:");
    919.                     ShowNode(p->info);
    920.                     getch();
    921.                     break;
    922.                     case 2:
    923.                     fflush(stdin);
    924.                     printf(" \nNhap Ma so Sach:");
    925.                     scanf("%d",&x.MaSo);
    926.                     q->info.MaSo=x.MaSo;
    927.                     break;
    928.                     case 3:
    929.                     fflush(stdin);
    930.                     printf(" \nNhap Ten Sach:");
    931.                     gets(q->info.TenSach);
    932.                     fflush(stdin);
    933.                     break;
    934.                     case 4:
    935.                     fflush(stdin);
    936.                     printf(" \nNhap Ten tac gia:");
    937.                     gets(q->info.TenTacGia);
    938.                     fflush(stdin);
    939.                     break;
    940.                     case 5:
    941.                     fflush(stdin);
    942.                     printf(" \nNhap nha XB:");
    943.                     gets(q->info.NXB);
    944.                     fflush(stdin);
    945.                     break;
    946.                     case 6:
    947.                     fflush(stdin);
    948.                     printf(" \nNhap nam xuat ban:");
    949.                     scanf("%d",&x.NamXB);
    950.                     q->info.NamXB=x.NamXB;
    951.                     break;
    952.                     case 7:
    953.                     fflush(stdin);
    954.                     printf(" \nNhap Trang thai[1.Da muon 0.Chua muon]:");
    955.                     scanf("%d",&x.TrangThai);
    956.                     q->info.TrangThai=x.TrangThai;
    957.                     break;
    958.                     case 8:
    959.                     printf(" \nSau khi thay doi:");
    960.                     ShowNode(q->info);
    961.                     getch();
    962.                     break;
    963.                     case 0:
    964.                     printf("\nNhan Enter de thoat!");
    965.                     return;
    966.                     //break;
    967.                 }
    968.  
    969.             }while(1);
    970. }
    971. void main()
    972. {
    973.     clrscr();
    974.     DS ds;
    975.     NodePtr P,q;
    976.     datatype x;
    977.     Init( ds);
    978.     int menu,tt,t;
    979.     tt:do
    980.     {
    981.     clrscr();
    982.  
    983.     printf("*******************Demo chuong trinh quan ly thu vien sach*********************");
    984.     printf("\n_______________________________________________________________________________");
    985.     printf("\n1.Nhap du lieu\n2.Xoa du lieu\n3.Tim du lieu\n4.Hien thi du lieu\n5.Muon,Tra sach\n6.Xu ly tren File\n7.Xem sach theo sap xep\n8.UPDATE\n0.Thoat CT");
    986.     printf("\nVui long chon mot muc: ");
    987.     scanf("%d",&menu);
    988.         switch( menu )
    989.         {
    990.  
    991.             case 1:
    992.                 int menu1;
    993.                 clrscr();
    994.                 do{
    995.                 clrscr();
    996.                 printf("\nMenu nhap du lieu\n");
    997.                 printf("\n1.Nhap vao dau danh sach");
    998.                 printf("\n2.Nhap vao cuoi danh sach");
    999.                 printf("\n3.Them vao sau mot cuon sach theo ma so");
    1000.                 //printf("\n4.Them vao dang sau mot cuo sach theo ma so");
    1001.                 printf("\n0.Tro lai menu chinh");
    1002.                 printf("\nVui long chon mot muc: ");
    1003.                 scanf("%d",&menu1);
    1004.                 switch(menu1)
    1005.                 {
    1006.                     case 1:
    1007.                     Nhap(x);
    1008.                     addfirst(ds,x);
    1009.                     getch();
    1010.                     break;
    1011.                     case 2:
    1012.                     Nhap(x);
    1013.                     addlast(ds,x);
    1014.                     getch();
    1015.                     break;
    1016.                     case 3:
    1017.                     printf("\Nhap thong tin cuon sach can chen:");
    1018.                     Nhap(x);
    1019.                     addafter(ds,x);
    1020.                     //ShowList(ds);
    1021.                     getch();
    1022.                     break;
    1023.                     case 4:
    1024.                     break;
    1025.                     case 0:
    1026.                     goto tt;
    1027.                 }
    1028.             }while(1);
    1029.            //   break ;
    1030.             case 2:
    1031.                 int menu2;
    1032.                 clrscr();
    1033.                 do{
    1034.                 clrscr();
    1035.                 printf("\nMenu xoa du lieu\n");
    1036.                 printf("\n1.Xoa dau danh sach");
    1037.                 printf("\n2.Xoa cuoi danh sach");
    1038.                 printf("\n3.Xoa theo ma so");
    1039.                 printf("\n4.Xoa theo ten sach");
    1040.                 printf("\n5.Xoa theo ten tac gia");
    1041.                 printf("\n6.Xoa theo nha xuat ban");
    1042.                 printf("\n7.Xoa theo nam xuat ban");
    1043.                 printf("\n8.Xoa tat ca danh sach");
    1044.                 printf("\n0.Tro lai menu chinh");
    1045.                 printf("\nVui long chon mot muc: ");
    1046.                 scanf("%d",&menu2);
    1047.                 switch(menu2)
    1048.                 {
    1049.                     case 1:
    1050.                     deletefirst(ds);
    1051.                     getch();
    1052.                     break;
    1053.                     case 2:
    1054.                     deletelast(ds);
    1055.                     break;
    1056.                     case 3:
    1057.                     deleteMS(ds);
    1058.                     getch();
    1059.                     break;
    1060.                     case 4:
    1061.                     deleteTS(ds);
    1062.                     getch();
    1063.                     break;
    1064.                     case 5:
    1065.                     deleteTG(ds);
    1066.                     getch();
    1067.                     break;
    1068.                     case 6:
    1069.                     deleteNXB(ds);
    1070.                     getch();
    1071.                     break;
    1072.                     case 7:
    1073.                     deleteNam(ds);
    1074.                     getch();
    1075.                     break;
    1076.                     case 8:
    1077.                     deleteAll(ds);                    
    1078.                     break;
    1079.                     case 0:
    1080.                     goto tt;
    1081.                 }
    1082.             }while(1);
    1083.             //break;
    1084.             case 3:
    1085.                 int menu3;
    1086.                 clrscr();
    1087.                 do{
    1088.                 clrscr();
    1089.                 printf("\nMenu tim du lieu\n");
    1090.                 printf("\n1.Tim theo ma so");
    1091.                 printf("\n2.Tim theo ten sach");
    1092.                 printf("\n3.Tim theo ten tac gia");
    1093.                 printf("\n4.Tim theo Nha xuat ban");
    1094.                 printf("\n5.Tim theo Nam xuat ban");
    1095.                 printf("\n0.Tro la menu chinh");
    1096.                 printf("\nVui long chon mot muc: ");
    1097.                 scanf("%d",&menu3);
    1098.                 switch(menu3)
    1099.                 {
    1100.                     case 1:
    1101.                     Timsach(ds);
    1102.                     getch();
    1103.                     break;
    1104.                     case 2:
    1105.                     Timsach1(ds);
    1106.                     getch();
    1107.                     break;
    1108.                     case 3:
    1109.                     Timsach2(ds);
    1110.                     getch();
    1111.                     break;
    1112.                     case 4:
    1113.                     Timsach3(ds);
    1114.                     getch();
    1115.                     break;
    1116.                     case 5:
    1117.                     Timsach4(ds);
    1118.                     getch();
    1119.                     break;
    1120.                     case 0:
    1121.                     goto tt;
    1122.                 }
    1123.             }while(1);
    1124.             //break;
    1125.             case 4:
    1126.                 ShowList( ds);
    1127.                 printf("\nVui Long Nhan Enter va Chon Lai");
    1128.                 getch();
    1129.                 break;
    1130.             case 5:
    1131.                 int menu5;
    1132.                 clrscr();
    1133.                 do{
    1134.                 clrscr();
    1135.                 printf("\nMenu tra muon sach\n");
    1136.                 printf("\n1.Muon sach");
    1137.                 printf("\n2.Danh sach chua duoc muon");
    1138.                 printf("\n3.Danh sach da duoc muon");
    1139.                 printf("\n4.Tra sach");
    1140.                 printf("\n0.Tro lai menu truoc");
    1141.                 printf("\nVui long chon mot muc: ");
    1142.                 scanf("%d",&menu5);
    1143.                 switch(menu5)
    1144.                 {
    1145.                     case 1:
    1146.                     muonsach(ds) ;
    1147.                     getch();
    1148.                     break;
    1149.                     case 2:
    1150.                     printf("\nDanh sach chua ai muon");
    1151.                     sachchuamuon(ds);
    1152.                     getch();
    1153.                     break;
    1154.                     case 3:
    1155.                     printf("\nDanh sach da duoc muon:");
    1156.                     sachdamuon(ds);
    1157.                     getch();
    1158.                     break;
    1159.                     case 4:
    1160.                     trasach(ds);
    1161.                     getch();
    1162.                     break;
    1163.                     case 0:
    1164.                     goto tt;
    1165.                 }
    1166.             }while(1);
    1167.                  //break;
    1168.                case 6:
    1169.                 int menu6;
    1170.                 clrscr();
    1171.                 do{
    1172.                 clrscr();
    1173.                 printf("\nMenu Xu ly tren file\n");
    1174.                 printf("\n1.Doc File");
    1175.                 printf("\n2.Viet File");
    1176.                 printf("\n0.Tro lai menu chinh");
    1177.                 printf("\nVui long chon mot muc: ");
    1178.                 scanf("%d",&menu6);
    1179.                 switch(menu6)
    1180.                 {
    1181.                     case 1:
    1182.                     deleteAll(ds);
    1183.                     ReadFile(ds);
    1184.                     deletelast(ds);
    1185.                     break;
    1186.                     case 2:
    1187.                     SaveFile(ds);
    1188.                     break;
    1189.                     case 0:
    1190.                     goto tt;
    1191.                 }
    1192.             }while(1);
    1193.             case 7:
    1194.                 int menu7;
    1195.                 clrscr();
    1196.                 do{
    1197.                 clrscr();
    1198.                 printf("\nMenu xem sach theo yeu cau sap xep\n");
    1199.                 printf("\n1.Sap xep theo ma so");
    1200.                 printf("\n2.Sap xep theo ten sach");
    1201.                 printf("\n3.Sap xep theo ten tac gia");
    1202.                 printf("\n4.Sap xep theo Nha xuat ban");
    1203.                 printf("\n5.Sap xep theo Nam xuat ban");
    1204.                 printf("\n0.Tro la menu chinh");
    1205.                 printf("\nVui long chon mot muc: ");
    1206.                 scanf("%d",&menu7);
    1207.                 switch(menu7)
    1208.                 {
    1209.                     case 1:
    1210.                     sapxepMS(ds);
    1211.                     ShowList(ds);
    1212.                     getch();
    1213.                     break;
    1214.                     case 2:
    1215.                     sapxepTS(ds);
    1216.                     ShowList(ds);
    1217.                     getch();
    1218.                     break;
    1219.                     case 3:
    1220.                     sapxepTG(ds);
    1221.                     ShowList(ds);
    1222.                     getch();
    1223.                     break;
    1224.                     case 4:
    1225.                     sapxepNhaXB(ds);
    1226.                     ShowList(ds);
    1227.                     getch();
    1228.                     break;
    1229.                     case 5:
    1230.                     sapxepNam(ds);
    1231.                     ShowList(ds);
    1232.                     getch();
    1233.                     break;
    1234.                     case 0:
    1235.                     goto tt;
    1236.                 }
    1237.             }while(1);
    1238.             //break;
    1239.             case 8:
    1240.             update(ds);
    1241.             getch();
    1242.             break;
    1243.             case 0:
    1244.             return;
    1245.             //break;
    1246.         }
    1247.     }while(1);
    1248.      //getch();
    1249. }
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 27-05-2009 lúc 01:50 AM. Lý do: cảng cáo không đưa code vào tag

  5. #5
    Ngày gia nhập
    03 2009
    Bài viết
    61

    Ghê quá ,kinh khủng

Các đề tài tương tự

  1. Viết hàm đếm các phần tử là số nguyên tố trong mảng, giúp sửa code
    Gửi bởi mrcuhuy trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 31-12-2013, 11:59 AM
  2. Giúp em viết code về chuỗi String 3 bài này trên Eclipse vs m.n
    Gửi bởi nampo12b5 trong diễn đàn Nhập môn lập trình Java
    Trả lời: 6
    Bài viết cuối: 02-11-2013, 09:24 PM
  3. Phần mềm viết code và chạy c++ trên ubuntu 10 là phần mềm gì?
    Gửi bởi vipnho0209 trong diễn đàn Công cụ, Tài liệu lập trình trên Linux
    Trả lời: 7
    Bài viết cuối: 07-04-2011, 10:49 AM
  4. Source code Đề tài quản lý điểm viết trên C#
    Gửi bởi chuoibigyb trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 06-04-2011, 08:30 PM
  5. Code quản lý nhân viên viết bằng C | giúp mình chỗ chưa hiểu?
    Gửi bởi rong3sao trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 16-04-2009, 11:49 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn