Quản lý sinh viên bằng lập trình C++ hướng đối tượng

  1. #include<fstream.h>

  2. #include<iostream.h>

  3. #include<conio.h>

  4. #include<stdio.h>

  5. #include<iomanip.h>

  6. #include<ctype.h>

  7. #include<stdlib.h>

  8. #include<time.h>

  9. #include<string.h>

  10.  

  11. /*              XAY DUNG CLASS NGAY SINH                */

  12.  

  13. class

    ngaysinh

  14. {

  15. protected

    :

  16.    

    int

    ngay

    ;

  17.    

    int

    thang

    ;

  18.    

    int

    nam

    ;

  19. public

    :

  20.     ngaysinh

    (

    int

    ngay,

    int

    thang,

    int

    nam

    )

    ;

  21.     ~ngaysinh

    (

    )

    ;

  22.    

    void

    nhapns

    (

    )

    ;

  23.    

    void

    hienns

    (

    )

    ;

  24. }

    ;

  25.  

  26. ngaysinh

    ::

    ngaysinh

    (

    int

    ngay,

    int

    thang,

    int

    nam

    )

  27. {

  28.     ngay

    =

    ngay

    ;

  29.     thang

    =

    thang

    ;

  30.     nam

    =

    nam

    ;

  31. }

  32. ngaysinh

    ::

    ~ngaysinh

    (

    )

  33. {

  34.     ngay

    =

    thang

    =

    nam

    =

    0

    ;

  35. }

  36.  

  37. void

    ngaysinh

    ::

    nhapns

    (

    )

  38. {

  39.    

    char

    ch

    ;

  40. cout

    <<

    \n

    nhap ngay, thang, nam sinh(dd/mm/yyyy)  “

    ;

  41. cin

    >>

    ngay

    >>

    ch

    >>

    thang

    >>

    ch

    >>

    nam

    ;

    ngaychthangchnam

  42. }

    ;

  43.  

  44. void

    ngaysinh

    ::

    hienns

    (

    )

  45. {

  46. cout

    <<

    endl

    ;

    endl

  47. cout

    <<

    ngay

    <<

    “/”

    <<

    thang

    <<

    “/”

    <<

    nam

    <<

    endl

    ;

    ngaythangnamendl

  48. }

    ;

  49.  

  50. /*                       XAY DUNG CLASS NGUOI                           */

  51.  

  52. class

    nguoi

    :

    public

    ngaysinh

  53. {

  54.    

    protected

    :

  55.        

    int

    masv

    ;

  56.        

    char

    ten

    [

    30

    ]

    ;

  57.         ngaysinh ns

    ;

  58.        

    int

    gt

    ;

  59.    

    public

    :

  60.        

    void

    nhapn

    (

    )

    ;

  61.        

    void

    inn

    (

    )

    ;

  62. }

    ;

  63.  

  64. void

    nguoi

    ::

    nhapn

    (

    )

  65. {

  66. cout

    <<

    \n

    Nhap ma so sinh vien:”

    ;

    cin

    >>

    masv

    ;

    masv

  67. cout

    <<

    \n

    Nhap ho va ten sinh vien:”

    ;

  68. cin

    .

    get

    (

    ten,

    30

    )

    ;

    ten,

  69. cin

    .

    ignore

    (

    1

    )

    ;

  70.     ns.

    nhapns

    (

    )

    ;

  71. cout

    <<

    \n

    Nhap gioi tinh ( Nam 1 / Nu 0 ) :”

    ;

    cin

    >>

    gt

    ;

    gt

  72. }

  73.  

  74. void

    nguoi

    ::

    inn

    (

    )

  75. {

  76. cout

    <<

    \n

    Ma so sinh vien:”

    <<

    masv

    ;

    masv

  77. cout

    <<

    \n

    Ho va ten:”

    <<

    ten

    ;

    ten

  78. cout

    <<

    \n

    Ngay sinh:”

    ;

    ns.

    hienns

    (

    )

    ;

    ns.

  79. cout

    <<

    \n

    Gioi tinh:”

    ;

  80.    

    if

    (

    gt

    ==

    1

    )

  81.    

    else

  82. }

  83.  

  84. /*                   XAY DUNG CLASS DIEM                               */

  85.  

  86. class

    diem

    :

    public

    nguoi

  87. {

  88.    

    private

    :

  89.        

    float

    dtb

    ;

  90.        

    float

    drl

    ;

  91.        

    float

    dcong

    ;

  92.    

    public

    :

  93.         diem

    (

    )

    {

    }

  94.        

    void

    nhapd

    (

    )

    ;

  95.        

    void

    ind

    (

    )

    ;

  96.        

    void

    sapxep

    (

    )

    ;

  97.        

    void

    timkiemdiem_dtb

    (

    float

    diemtb

    )

    ;

  98.        

    void

    timkiemdiem_masv

    (

    int

    msv

    )

    ;

  99.        

    void

    timkiemdiem_ten

    (

    char

    tensv

    [

    ]

    )

    ;

  100.        

    void

    ghi_file

    (

    )

    ;

  101.        

    void

    doc_file

    (

    int

    sod

    )

    ;

  102.        

    int

    diem

    ::

    dem

    (

    )

    ;

  103.        

    float

    laydtb

    (

    )

    ;

  104. }

    ;

  105.  

  106. //HAM NHAP

  107.  

  108. void

    diem

    ::

    nhapd

    (

    )

  109. {

  110.     nhapn

    (

    )

    ;

  111. cout

    <<

    \n

    Nhap diem trung binh:”

    ;

    cin

    >>

    dtb

    ;

    dtb

  112. cout

    <<

    \n

    Nhap diem ren luyen:”

    ;

    cin

    >>

    drl

    ;

    drl

  113. cout

    <<

    \n

    Nhap diem cong:”

    ;

    cin

    >>

    dcong

    ;

    dcong

  114. }

  115.  

  116. //HAM IN

  117.  

  118. void

    diem

    ::

    ind

    (

    )

  119. {

  120.     inn

    (

    )

    ;

  121. cout

    <<

    \n

    Diem TB:”

    <<

    dtb

    ;

    dtb

  122. cout

    <<

    \n

    Diem ren luyen:”

    <<

    drl

    ;

    drl

  123. cout

    <<

    \n

    Diem cong:”

    <<

    dcong

    ;

    dcong

  124. }

  125.  

  126. //HAM GHI FILE

  127.  

  128. void

    diem

    ::

    ghi_file

    (

    )

  129. {

  130.    

    fstream

    f

    ;

  131.     f.

    open

    (

    “DIEM.TXT”

    , ios

    ::

    binary

    |

    ios

    ::

    app

    |

    ios

    ::

    out

    )

    ;

  132.     f.

    write

    (

    (

    char

    *

    )

    this

    ,

    sizeof

    (

    *

    this

    )

    )

    ;

  133.     f.

    close

    (

    )

    ;

  134. }

  135.  

  136. //HAM DOC FILE

  137.  

  138. void

    diem

    ::

    doc_file

    (

    int

    sod

    )

  139. {

  140.    

    fstream

    f

    ;

  141.     f.

    open

    (

    “DIEM.TXT”

    ,ios

    ::

    binary

    |

    ios

    ::

    in

    )

    ;

  142.     f.

    seekg

    (

    sod

    *

    sizeof

    (

    diem

    )

    )

    ;

  143.     f.

    read

    (

    (

    char

    *

    )

    this

    ,

    sizeof

    (

    *

    this

    )

    )

    ;

  144.     f.

    close

    (

    )

    ;

  145. }

  146.  

  147. //HAM DEM

  148.  

  149. int

    diem

    ::

    dem

    (

    )

  150. {

  151.    

    ifstream

    f

    ;

  152.     f.

    open

    (

    “DIEM.TXT”

    , ios

    ::

    binary

    )

    ;

  153.     f.

    seekg

    (

    0

    , ios

    ::

    end

    )

    ;

  154.    

    if

    (

    !

    f

    )

  155.        

    return

    0

    ;

  156.    

    else

  157.        

    return

    (

    int

    )

    f.

    tellg

    (

    )

    /

    sizeof

    (

    diem

    )

    ;

  158. }

  159.  

  160. //TIM KIEM DIEM THEO MA SV

  161.  

  162. void

    diem

    ::

    timkiemdiem_masv

    (

    int

    msv

    )

  163. {

  164.     diem d

    ;

  165.    

    int

    so

    =

    diem

    ::

    dem

    (

    )

    ;

  166.    

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    so

    ;

    i

    ++

    )

  167.    

    {

  168.         d.

    doc_file

    (

    i

    )

    ;

  169.        

    if

    (

    masv

    ==

    msv

    )

  170.             d.

    ind

    (

    )

    ;

  171.    

    }

  172. }

  173.  

  174. //TIM KIEM DIEM THEO TEN

  175.  

  176. void

    diem

    ::

    timkiemdiem_ten

    (

    char

    tensv

    [

    ]

    )

  177. {

  178.     diem d

    ;

  179.    

    int

    so

    =

    diem

    ::

    dem

    (

    )

    ;

  180.    

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    so

    ;

    i

    ++

    )

  181.    

    {

  182.         d.

    doc_file

    (

    i

    )

    ;

  183.        

    if

    (

    ten

    ==

    tensv

    )

  184.             d.

    ind

    (

    )

    ;

  185.    

    }

  186. }

  187.  

  188. //TIM KIEM THEO DTB

  189.  

  190. void

    diem

    ::

    timkiemdiem_dtb

    (

    float

    diemtb

    )

  191. {

  192.     diem d

    ;

  193.    

    int

    so

    =

    diem

    ::

    dem

    (

    )

    ;

  194.    

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    so

    ;

    i

    ++

    )

  195.    

    {

  196.         d.

    doc_file

    (

    i

    )

    ;

  197.        

    if

    (

    dtb

    ==

    diemtb

    )

  198.             d.

    ind

    (

    )

    ;

  199.    

    }

  200. }

  201.  

  202. /*                   XAY DUNG CLASS SINH VIEN                         */

  203.  

  204. class

    sinhvien

    :

    public

    nguoi

  205. {

  206.    

    private

    :

  207.        

    char

    qq

    [

    50

    ]

    ;

  208.        

    char

    cs

    [

    20

    ]

    ;

  209.    

    public

    :

  210.         sinhvien

    (

    )

    {

    }

  211.        

    void

    nhapsv

    (

    )

    ;

  212.        

    void

    insv

    (

    )

    ;

  213.        

    void

    dssv

    (

    )

    ;

  214.        

    void

    ghi_file

    (

    )

    ;

  215.        

    void

    doc_file

    (

    int

    sosv

    )

    ;

  216.        

    int

    sinhvien

    ::

    dem

    (

    )

    ;

  217.        

    void

    timkiem_masv

    (

    int

    msv

    )

    ;

  218.        

    void

    timkiem_ten

    (

    char

    ten

    [

    ]

    )

    ;

  219. }

    ;

  220.  

  221. //HAM NHAP

  222.  

  223. void

    sinhvien

    ::

    nhapsv

    (

    )

  224. {

  225.  

  226.     nhapn

    (

    )

    ;

  227. cout

    <<

    \n

    Nhap que quan:”

    ;

  228. cin

    .

    get

    (

    qq,

    50

    )

    ;

    qq,

  229. cin

    .

    ignore

    (

    1

    )

    ;

  230. cout

    <<

    \n

    Nhap dien chinh sach:”

    ;

  231. cin

    .

    get

    (

    cs,

    20

    )

    ;

    cs,

  232. cin

    .

    ignore

    (

    1

    )

    ;

  233. }

  234.  

  235. //HAM IN

  236.  

  237. void

    sinhvien

    ::

    insv

    (

    )

  238. {

  239.     inn

    (

    )

    ;

  240. cout

    <<

    \n

    Que quan:”

    <<

    qq

    ;

    qq

  241. cout

    <<

    \n

    Dien chinh sach:”

    <<

    cs

    ;

    cs

  242. }

  243.  

  244. //GHI FILE

  245.  

  246. void

    sinhvien

    ::

    ghi_file

    (

    )

  247. {

  248.    

    fstream

    f

    ;

  249.     f.

    open

    (

    “SINHVIEN.TXT”

    , ios

    ::

    binary

    |

    ios

    ::

    app

    |

    ios

    ::

    out

    )

    ;

  250.     f.

    write

    (

    (

    char

    *

    )

    this

    ,

    sizeof

    (

    *

    this

    )

    )

    ;

  251.     f.

    close

    (

    )

    ;

  252. }

  253.  

  254. //DOC FILE

  255.  

  256. void

    sinhvien

    ::

    doc_file

    (

    int

    sosv

    )

  257. {

  258.    

    fstream

    f

    ;

  259.     f.

    open

    (

    “SINHVIEN.TXT”

    ,ios

    ::

    binary

    |

    ios

    ::

    in

    )

    ;

  260.     f.

    seekg

    (

    sosv

    *

    sizeof

    (

    sinhvien

    )

    )

    ;

  261.     f.

    read

    (

    (

    char

    *

    )

    this

    ,

    sizeof

    (

    *

    this

    )

    )

    ;

  262.     f.

    close

    (

    )

    ;

  263. }

  264.  

  265. //DEM SO SINH VIEN

  266.  

  267. int

    sinhvien

    ::

    dem

    (

    )

  268. {

  269.      

    ifstream

    f

    ;

  270.      f.

    open

    (

    “SINHVIEN.TXT”

    , ios

    ::

    binary

    )

    ;

  271.      f.

    seekg

    (

    0

    , ios

    ::

    end

    )

    ;

  272.      

    if

    (

    !

    f

    )

  273.        

    return

    0

    ;

  274.      

    else

  275.        

    return

    (

    int

    )

    f.

    tellg

    (

    )

    /

    sizeof

    (

    sinhvien

    )

    ;

  276. }

  277.  

  278. //HIEN THI DANH SACH SINH VIEN

  279.  

  280. void

    sinhvien

    ::

    dssv

    (

    )

  281. {

  282.     sinhvien sv

    ;

  283. cout

    <<

    \n

    Co tat ca “

    <<

    sinhvien

    ::

    dem

    (

    )

    <<

    ” sinhvien”

    ;

    sinhvien

  284.    

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    sv.

    dem

    (

    )

    ;

    i

    ++

    )

  285.    

    {

  286.         sv.

    doc_file

    (

    i

    )

    ;

  287.         sv.

    insv

    (

    )

    ;

  288.    

    }

  289. }

  290.  

  291. //TIM KIEM THEO MA SO SV

  292.  

  293. void

    sinhvien

    ::

    timkiem_masv

    (

    int

    msv

    )

  294. {

  295.     sinhvien sv

    ;

  296. cout

    <<

    \n

    Sinh vien co ma so sinh vien “

    <<

    msv

    <<

    ”  la:

    \n

    ;

    msv

  297.    

    int

    sosv

    =

    sinhvien

    ::

    dem

    (

    )

    ;

  298.    

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    sosv

    ;

    i

    ++

    )

  299.    

    {

  300.         sv.

    doc_file

    (

    i

    )

    ;

  301.        

    if

    (

    masv

    ==

    msv

    )

  302.             sv.

    insv

    (

    )

    ;

  303.    

    }

  304.  

  305. }

  306.  

  307. //TIM KIEM THEO TEN

  308.  

  309. void

    sinhvien

    ::

    timkiem_ten

    (

    char

    tensv

    [

    ]

    )

  310. {

  311.     sinhvien sv

    ;

  312. cout

    <<

    \n

    Nhung sinh vien ten “

    <<

    tensv

    <<

    ” la:

    \n

    ;

    tensv

  313.    

    int

    sosv

    =

    sinhvien

    ::

    dem

    (

    )

    ;

  314.    

    for

    (

    int

    i

    =

    0

    ;

    i

    <

    sosv

    ;

    i

    ++

    )

  315.    

    {

  316.         sv.

    doc_file

    (

    i

    )

    ;

  317.        

    if

    (

    ten

    ==

    tensv

    )

  318.             sv.

    insv

    (

    )

    ;

  319.    

    }

  320. }

  321.  

  322. //MAIN MENU

  323.  

  324. void

    MM

    (

    sinhvien

    &

    sv,diem

    &

    d

    )

  325. {

  326. cout

    <<

    \n

    *              HE THONG QUAN LY SINH VIEN             *”

    ;

  327. cout

    <<

    \n

    *  QUAN LY SINH VIEN                                  *”

    ;

  328. cout

    <<

    \n

    *  1. Nhap vao sinh vien                              *”

    ;

  329. cout

    <<

    \n

    *  2. Tim kiem theo ma so sinh vien                   *”

    ;

  330. cout

    <<

    \n

    *  3. Tim kiem theo ten sinh vien                     *”

    ;

  331. cout

    <<

    \n

    *  4. Danh sach sinh vien                             *”

    ;

  332. cout

    <<

    \n

    *  5. Xoa                                             *”

    ;

  333. cout

    <<

    \n

    *  QUAN LY DIEM                                       *”

    ;

  334. cout

    <<

    \n

    *  6. Nhap diem cua sinh vien                         *”

    ;

  335. cout

    <<

    \n

    *  7. Tim kiem theo ma so sinh vien                   *”

    ;

  336. cout

    <<

    \n

    *  8. Tim kiem theo ten                               *”

    ;

  337. cout

    <<

    \n

    *  9. Tim kiem theo diem trung binh                   *”

    ;

  338. cout

    <<

    \n

    *  10. Danh sach SV theo thu tu giam dan cua DTB      *”

    ;

  339. cout

    <<

    \n

    *  QUAN LY HOC BONG                                   *”

    ;

  340. cout

    <<

    \n

    *  12. Danh sach hoc bong                             *”

    ;

  341. cout

    <<

    \n

    *  13. Gioi thieu                                     *”

    ;

  342. cout

    <<

    \n

    *  14. Thoat chuong trinh                             *”

    ;

  343. cout

    <<

    \n

    \n

    Lua chon cong viec tuong ung “

    ;

  344.    

    int

    n

    ;

  345. cin

    >>

    n

    ;

  346.    

    switch

    (

    n

    )

  347.    

    {

  348.        

    case

    (

    1

    )

    :

  349.            

    {

  350.                 sv.

    nhapsv

    (

    )

    ;

  351.                 MM

    (

    sv,d

    )

    ;

  352.                

    break

    ;

  353.            

    }

  354.        

    case

    (

    2

    )

    :

  355.            

    {

  356.                

    int

    ma

    ;

  357. cout

    <<

    \n

    Ma so sinh vien can tim: “

    ;

  358. cin

    >>

    ma

    ;

    ma

  359.                 sv.

    timkiem_masv

    (

    ma

    )

    ;

  360.                 MM

    (

    sv,d

    )

    ;

  361.                

    break

    ;

  362.            

    }

  363.        

    case

    (

    3

    )

    :

  364.            

    {

  365.                

    char

    t

    [

    30

    ]

    ;

  366. cout

    <<

    \n

    Ten sinh vien can tim: “

    ;

  367.                 fflush

    (

    stdin

    )

    ;

  368. cin

    .

    get

    (

    t,

    30

    )

    ;

    t,

  369.                 sv.

    timkiem_ten

    (

    t

    )

    ;

  370.                 MM

    (

    sv,d

    )

    ;

  371.                

    break

    ;

  372.            

    }

  373.        

    case

    (

    4

    )

    :

  374.            

    {

  375.                 sv.

    dssv

    (

    )

    ;

  376.                 MM

    (

    sv,d

    )

    ;

  377.                

    break

    ;

  378.            

    }

  379.    

    /*    case (5) :

  380.             {

  381.                 cv.nhap();

  382.                 MM(ld,cv);

  383.                 break;

  384.             }    */

  385.        

    case

    (

    6

    )

    :

  386.            

    {

  387.                 d.

    nhapd

    (

    )

    ;

  388.                 MM

    (

    sv,d

    )

    ;

  389.                

    break

    ;

  390.            

    }

  391.        

    case

    (

    7

    )

    :

  392.            

    {

  393.                

    int

    ma

    ;

  394. cout

    <<

    \n

    Ma so sinh vien can tim: “

    ;

  395. cin

    >>

    ma

    ;

    ma

  396.                 d.

    timkiemdiem_masv

    (

    ma

    )

    ;

  397.                 MM

    (

    sv,d

    )

    ;

  398.                

    break

    ;

  399.            

    }

  400.        

    case

    (

    8

    )

    :

  401.            

    {

  402.                

    char

    t

    [

    30

    ]

    ;

  403. cout

    <<

    \n

    Ten sinh vien can tim: “

    ;

  404.                 fflush

    (

    stdin

    )

    ;

  405. cin

    .

    get

    (

    t,

    30

    )

    ;

    t,

  406.                 d.

    timkiemdiem_ten

    (

    t

    )

    ;

  407.                 MM

    (

    sv,d

    )

    ;

  408.                

    break

    ;

  409.            

    }

  410.        

    case

    (

    9

    )

    :

  411.            

    {

  412.                

    float

    d1

    ;

  413. cout

    <<

    \n

    DTB can tim: “

    ;

  414. cin

    >>

    d1

    ;

    d1

  415.                 d.

    timkiemdiem_dtb

    (

    d1

    )

    ;

  416.                 MM

    (

    sv,d

    )

    ;

  417.                

    break

    ;

  418.            

    }

  419.    

    /*    case(10) :

  420.             {

  421.                

  422.             }

  423.         case(11) :

  424.             {

  425.            

  426.             }

  427.         case (12):

  428.             {

  429.                

  430.             }          */

  431.        

    case

    (

    13

    )

    :

  432.            

    {

  433.                    

    <<

    \n

    ————————–“

  434.                    

    <<

    “—————————-“

  435.                    

    <<

    \n

    —————–“

    ;

  436.                 MM

    (

    sv,d

    )

    ;

  437.                

    break

    ;

  438.            

    }

  439.        

    case

    (

    14

    )

    :

  440.            

    {

  441.                

    exit

    (

    1

    )

    ;

  442.                

    break

    ;

  443.            

    }

  444.  

  445. default

    :

    cout

    <<

    “Gia tri nhap vao khong thich hop”

    ;

  446.    

    }

  447. }

  448.  

  449. //CHUONG TRINH CHINH

  450.  

  451. void

    main

    (

    )

  452. {

  453.     clrscr

    (

    )

    ;

  454.     sinhvien sv

    (

    )

    ;

  455.     diem d

    (

    )

    ;

  456.     MM

    (

    sv,d

    )

    ;

  457. }