Bước tới nội dung

Bảng tra cứu thuật ngữ ngôn ngữ lập trình C/Ví dụ mẫu

Tủ sách mở Wikibooks
/*********************
Chương trình qan lý sinh viên
***********************/
#include <stdio.h>
#include<conio.h>
#include< stdlib.h>
#include<type.h>
#include<string.h>
void taomenu( )
void themsv ( );
void timkiem ( );
void loaibo( );
void danhsach( );
void vitrihv (char st[ ], int d ); /* tìm v trí hp lý */
void lietke ( );
#define sizesv size of (sinhvien)
typedef(truct sinhvien)
    { char hoten[30] ;
      int diem ;
      struct sinhvien *tiep ;
    } sinhvien ;
  sinhvien *head;
  sinhvien *sv ;
  void main ( )
     { clrscr ( );
        gotoxy(1,12);
        printf (" chương trình quản lý danh sách sinh viên (DSLK)\n");
        getch ( ) ;
        taomenu ( );
    } /* kết thúc hàm main ( ) */
void taomenu ( )
    { char ch ;
     do
      { clrscr( );
        printf(" thêm sinh viên tìm kiếm loại bỏ liệt kê Quit \n");
        ch = toupper (getch());
        switch (ch)
              { case "I' :themsv() ;break ;
                 case ' I ' : timkiem( ) ; break ;
                 case ' L; : loaibo( ) ;break ;
                 case ' D' : lietke( ) ; break ;
                 case ' Q ' : exit (1) ; break ;
                 default : break ;
            }
  }
while ( ch!= 'Q');
}
void themsv ( )
{ char tensv [30] ; int diem ;
   clrscr ( );
    printf(" thêm sinh viên vào danh sách \n");
    gotoxy(1,10) ; printf(" họ và tên : "); gets( tensv);
     printf("điểm :"); scanf("%d", &diem);
     vitrihv ( tensv, diem);
}
void vitrihv( char st [ ] ) int d )
{ sinhvien *find = NULL , *next = NULL; int kq ; char ch ;
   sv = NULL ;
   if ((sv = ( sinhvien*) malloc ( sizesv )) = = NULL)
        { printf(" không đủ bộ nhớ \n") ; getch( ) ; return }
       strcpy ( svă hoten, st);
      svă diem = d ;
/* nếu danh sách ban đầu là rng */
    if ( head = = NULL)
           { head = sv ; headă tiep = NULL ; }
    else
{ /* tìm vị trí mới của phần tử trong danh sách */
          find = head ; next = find ;
           while ((find!=NULL) &&((kq=strcmp(findă hoten, sv ă hoten))< 0)
                   { next = find ; find = findătiep ;}
                   if ( kq = = 0)
                       { printf("sinh viên đã có trong danh sách . Ghi đè (Y/N) ? \n");
                           ch = getch( ); ch = toupper (ch);
                           if (ch = 'N')
                               { free(sv) ; return ; }
                           else
                                  find --> diem = d ;
                             free (sv) ;
                        return ;
                   }
/* nếu phn t thêm vào đầu danh sách */
              if (find = = head )
                    { sv ă tiep = head ; head = sv ; }
              else { sv ă tiep = find ; next ă tiep = sv ; }
    }
}
void timkiem( )
   { char tensv[30] ; int kq ; clrscr ( );
       printf(" tên sinh viên cần tìm :") ; gets(tensv);
       if((tensv !=" " ) && (head1 = NULL))
            { sv = head ;
               while ((sv! = NULL) &&((kq = strcmp(svăhoten, tensv))< 0)
               sv = sv ă tiep ;
               if(kq = = 0);
                     printf (" Họ và tên %s điểm %d", svăhoten, svă diem);
              else printf (" không có sinh viên %s \n", tensv);
           }
        getch( ) ;
   }
void loaibo( )
{ char tensv [30] ; int kq ; sinhvien *next ;
  clrscr ( )
  printf ( " tên sinh viên cần loại bỏ :"); scanf("%s", tensv );
  iF((tensv!=NULL) && (head!= NULL))
    { sv = head ; next = sv ;
       while ((kq = strcmp (svă hoten, tensv )) < 0)
          { next = sv ; sv = sv ă tiep ; }
          if ( kq = = 0)
             { if ( sv = = head )
                 { head = head ă tiep ; free (sv) ; return ; }
                    next ă tiep = sv ă tiep ;
     free(sv);
                 }
        else
            { printf (" không có tên %s \n", tensv );
      }
  }
}
void lietke( )
{ clrscr( )
sv = head ;
while ( sv! = NULL)
    { printf(" Họ và tên : %s \n" , svăhoten );
        printf(" điểm : %d \n\n", svă diem);
        sv = svătiep ;
    }
    getch( );
  }