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

Đề tài: Bt oop

  1. #1
    Ngày gia nhập
    11 2021
    Bài viết
    0

    Mặc định Bt oop

    main.cpp
    C++ Code:
    1. #include <stdio.h>
    2. #include <tchar.h>
    3. #include <iostream>
    4. #include "studentscore.cpp"
    5.  
    6. using namespace std;
    7.  
    8. int _tmain(int argc, _TCHAR *argv[])
    9. {
    10.     StudentScore p;
    11.     char menu;
    12.     while (true)
    13.     {
    14.         system("CLS");
    15.         cout << "CHUONG TRINH QUAN LY SINH VIEN C/C++\n";
    16.         cout << "*************************MENU**************************\n";
    17.         cout << "**1. Nhap danh sach sinh vien                        **\n";
    18.         cout << "**2. Tim kiem sinh vien                              **\n";
    19.         cout << "**3. Hien thi diem ttb cua tat ca sv                 **\n";
    20.         cout << "**4. Hien thi danh sach diem cua mot sinh vien       **\n";
    21.         cout << "**5. Sap xep theo ten sinh vien                       **\n";
    22.         cout << "**7. Xoa mot sinh vien                               **\n";
    23.         cout << "**8. sua thong tin mot sinh vien                     **\n";
    24.         cout << "**9. Hien thi toan bo sinh vien                      **\n";
    25.         cout << "**a. Sao luu thong tin                               **\n";
    26.         cout << "**   Phim 0 thoat khoi chuong trinh                  **\n";
    27.         cout << "*******************************************************\n";
    28.         cout << "\n  Chon: ";
    29.         cin.ignore();
    30.         cin >> menu;
    31.  
    32.         switch (menu)
    33.         {
    34.         case '1':
    35.             p.nhapDSSV();
    36.             cout << "\nNhan phim bat ky de quay lai";
    37.             system("PAUSE>NULL");
    38.             break;
    39.         case '2':
    40.             int n;
    41.             cout << "\nChon chuc nang tim kiem: ";
    42.             cout << "\n1. Tim kiem theo ma sinh vien";
    43.             cout << "\n2. Tim kiem theo ten";
    44.             cout << "\nNhap lua chon cua ban: ";
    45.             cin >> n;
    46.             if(n == 1)
    47.             p.timkiemtheomasv();
    48.             else if(n == 2)
    49.             p.timkiemtheotenSV();
    50.             else
    51.             cout << "\nKhong co chuc nang nay!";
    52.             cout << "\nNhan phim bat ky de quay lai";
    53.             system("PAUSE>NULL");
    54.             break;
    55.         case '3':
    56.             p.hienthidiemTTB();
    57.             cout << "\nNhan phim bat ky de quay lai";
    58.             system("PAUSE>NULL");
    59.             break;
    60.         case '4':
    61.             p.hienthiDSdiem1SV();
    62.             cout << "\nNhan phim bat ky de quay lai";
    63.             system("PAUSE>NULL");
    64.             break;
    65.         case '5':
    66.             p.sapxeptheoTen();
    67.             cout << "\nNhan phim bat ky de quay lai";
    68.             system("PAUSE>NULL");
    69.             break;
    70.         //case '6':
    71.             //p.themmotsinhvien();
    72.             //cout << "\nNhan phim bat ky de quay lai";
    73.             //system("PAUSE>NULL");
    74.             //break;
    75.         case '7':
    76.             p.xoamotsinhvien();
    77.             cout << "\nNhan phim bat ky de quay lai";
    78.             system("PAUSE>NULL");
    79.             break;
    80.         case '8':
    81.             p.suathongtinmotsv();
    82.             cout << "\nNhan phim bat ky de quay lai";
    83.             system("PAUSE>NULL");
    84.             break;
    85.         case '9':
    86.             p.hienthitoanbosinhvien();
    87.             cout << "\nNhan phim bat ky de quay lai";
    88.             system("PAUSE>NULL");
    89.             break;
    90.         case 'a':
    91.             p.luuthongtinvaofile();
    92.             cout << "\nNhan phim bat ky de quay lai";
    93.             system("PAUSE>NULL");
    94.             break;
    95.         case 'b':
    96.             p.loadthongtintufile();
    97.             cout << "\nNhan phim bat ky de quay lai";
    98.             system("PAUSE>NULL");
    99.             break;
    100.         case '0':
    101.             return 0;
    102.             break;
    103.         }
    104.     }
    105.     return 0;
    106. }
    Scode.cpp
    C++ Code:
    1. #include <iostream>
    2. #include <string.h>
    3. #include <cstdlib>
    4. #include <fstream>
    5. #include <iomanip>
    6. #include <math.h>
    7. #include <ctype.h>
    8.  
    9. using namespace std;
    10.  
    11. class monhoc
    12. {
    13. private:
    14.     char *tenmonhoc;
    15.     int soTC;
    16.     float diemCC;
    17.     float diemGK;
    18.     float diemHP;
    19.     float diemTB;
    20.  
    21. public:
    22.     monhoc()
    23.     {
    24.         tenmonhoc = new char[255];
    25.     }
    26.  
    27. public:
    28.     monhoc(char *a_tenmonhoc,
    29.            int a_soTC,
    30.            float a_diemCC,
    31.            float a_diemGK,
    32.            float a_diemHP)
    33.     {
    34.         tenmonhoc = new char[strlen(a_tenmonhoc) + 1];
    35.         strcpy(tenmonhoc, a_tenmonhoc);
    36.  
    37.         soTC = a_soTC;
    38.  
    39.         diemCC = a_diemCC;
    40.  
    41.         diemGK = a_diemGK;
    42.  
    43.         diemHP = a_diemHP;
    44.     }
    45.  
    46.     ~monhoc()
    47.     {
    48.         delete tenmonhoc;
    49.     }
    50.  
    51.     float getdiemTB()
    52.     {
    53.         diemTB = 0.2 * diemCC + 0.3 * diemGK + 0.5 * diemHP;
    54.         return diemTB;
    55.     }
    56.  
    57.     void settenmonhoc(char *a_tenmonhoc)
    58.     {
    59.         tenmonhoc = new char[strlen(a_tenmonhoc) + 1];
    60.         strcpy(tenmonhoc, a_tenmonhoc);
    61.     }
    62.  
    63.     char *gettenmonhoc()
    64.     {
    65.         return tenmonhoc;
    66.     }
    67.  
    68.     void setsoTC(int a_soTC)
    69.     {
    70.         soTC = a_soTC;
    71.     }
    72.  
    73.     int getsoTC()
    74.     {
    75.         return soTC;
    76.     }
    77.  
    78.     void setdiemCC(float a_diemCC)
    79.     {
    80.         diemCC = a_diemCC;
    81.     }
    82.  
    83.     float getdiemCC()
    84.     {
    85.         return diemCC;
    86.     }
    87.  
    88.     void setdiemGK(float a_diemGK)
    89.     {
    90.         diemGK = a_diemGK;
    91.     }
    92.  
    93.     float getdiemGK()
    94.     {
    95.         return diemGK;
    96.     }
    97.  
    98.     void setdiemHP(float a_diemHP)
    99.     {
    100.         diemHP = a_diemHP;
    101.     }
    102.  
    103.     float getdiemHP()
    104.     {
    105.         return diemHP;
    106.     }
    107.     void xeploai()
    108.     {
    109.         float L = getdiemTB();
    110.         if (L <= 10 && L > 8.4)
    111.             cout << "A";
    112.         if (L < 8.5 && L > 7.9)
    113.             cout << "B+";
    114.         if (L < 8 && L > 6.9)
    115.             cout << "B";
    116.         if (L < 7 && L > 6.5)
    117.             cout << "C+";
    118.         if (L < 6.5 && L > 5.4)
    119.             cout << "C";
    120.         if (L < 5.5 && L > 4.9)
    121.             cout << "D+";
    122.         if (L < 5 && L > 3.9)
    123.             cout << "D";
    124.         if (L < 4)
    125.             cout << "F";
    126.     }
    127.     void nhapthongtinmonhoc()
    128.     {
    129.         cout << "\n-------------------------";
    130.         cout << "\n\t -Nhap ten mon hoc: ";
    131.         cin.ignore();
    132.         cin.get(tenmonhoc, 255);
    133.         cout << "\n\t -Nhap so tin chi: ";
    134.         cin >> soTC;
    135.         do
    136.         {
    137.             cout << "\n\t -Nhap diem chuyen can: ";
    138.             cin >> diemCC;
    139.             if (diemCC > 10)
    140.             {
    141.                 diemCC = 0;
    142.                 cout << "\nMoi nhap lai diem chuyen can!";
    143.             }
    144.             else if (diemCC < 0)
    145.             {
    146.                 diemCC = 0;
    147.                 cout << "\nMoi nhap lai diem chuyen can!";
    148.             }
    149.         } while (diemCC == 0);
    150.  
    151.         do
    152.         {
    153.             cout << "\n\t -Nhap diem kiem tra giua ky: ";
    154.             cin >> diemGK;
    155.             if (diemGK > 10)
    156.             {
    157.                 diemGK = 0;
    158.                 cout << "\nMoi nhap lai diem kiem tra giua ky!";
    159.             }
    160.             else if (diemGK < 0)
    161.             {
    162.                 diemGK = 0;
    163.                 cout << "\nMoi nhap lai diem kiem tra giua ky!";
    164.             }
    165.         } while (diemGK == 0);
    166.  
    167.         do
    168.         {
    169.             cout << "\n\t -Nhap diem thi ket thuc hoc phan: ";
    170.             cin >> diemHP;
    171.             if (diemHP > 10)
    172.             {
    173.                 diemHP = 0;
    174.                 cout << "\nMoi nhap lai diem thi ket thuc hoc phan!";
    175.             }
    176.             else if (diemHP < 0)
    177.             {
    178.                 diemHP = 0;
    179.                 cout << "\nMoi nhap laidiem thi ket thuc hoc phan!";
    180.             }
    181.         } while (diemHP == 0);
    182.     }
    183.  
    184.     void hienthi()
    185.     {
    186.         cout << diemCC;
    187.         cout << endl;
    188.         cout << "------------>Thong tin diem:";
    189.         cout << "----------------------------------"
    190.              << "\n\t  ten mon hoc: " << tenmonhoc
    191.              << "\n\t  so tin chi: " << soTC
    192.              << "\n\t  diem chuyen can: " << diemCC
    193.              << "\n\t  diem kiem tra giua ky: " << diemGK
    194.              << "\n\t  diem thi ket thuc hoc phan: " << diemHP
    195.              << "\n\t  diem trung binh mon: " << getdiemTB();
    196.     }
    197. };
    198.  
    199. class diem
    200. {
    201. private:
    202.     int somonhoc;
    203.     float diemTTB;
    204.     monhoc *a_monhoc;
    205.  
    206. public:
    207.     diem()
    208.     {
    209.         a_monhoc = 0;
    210.     }
    211.  
    212.     diem(int a_somonhoc)
    213.     {
    214.         somonhoc = a_somonhoc;
    215.     }
    216.  
    217.     ~diem()
    218.     {
    219.         delete[] a_monhoc;
    220.     }
    221.  
    222.     void setsomonhoc(int a_somonhoc)
    223.     {
    224.         somonhoc = a_somonhoc;
    225.         //     if (a_monhoc)
    226.         //      delete[]a_monhoc;
    227.         // a_monhoc = new monhoc[this->somonhoc];
    228.     }
    229.  
    230.     int getsomonhoc()
    231.     {
    232.         return somonhoc;
    233.     }
    234.  
    235.     int getTSTC(int TSTC = 0)
    236.     {
    237.         for (int i = 0; i < somonhoc; i++)
    238.             TSTC += a_monhoc[i].getsoTC();
    239.         return TSTC;
    240.     }
    241.  
    242.     float getdiemTTB(float tu = 0, int mau = 0, float diemTTB = 0)
    243.     {
    244.         for (int i = 0; i < somonhoc; i++)
    245.         {
    246.             tu += a_monhoc[i].getdiemTB() * a_monhoc[i].getsoTC();
    247.         }
    248.           mau = getTSTC();
    249.  
    250.         diemTTB = tu / mau; // getTSDVHT();
    251.         return float(diemTTB);
    252.     }
    253.  
    254.     void nhap()
    255.     {
    256.         int a_somonhoc;
    257.         do
    258.         {
    259.             cout << "nhap so mon hoc: \n";
    260.             cin >> a_somonhoc;
    261.             setsomonhoc(a_somonhoc);
    262.         } while ((a_somonhoc <= 0) && (a_somonhoc > 8));
    263.         a_monhoc = new monhoc[a_somonhoc];
    264.         for (int i = 0; i < a_somonhoc; i++)
    265.         {
    266.             a_monhoc[i].nhapthongtinmonhoc();
    267.         }
    268.     }
    269.  
    270.     void hienthi()
    271.     {
    272.         cout << setiosflags(ios::showpoint) << setprecision(3);
    273.         for (int i = 0; i < somonhoc; i++)
    274.             a_monhoc[i].hienthi();
    275.     }
    276.  
    277.     void luuthongtinvaofile(ofstream &f)
    278.     {
    279.         for (int i = 0; i < somonhoc; i++)
    280.         {
    281.             f << a_monhoc[i].gettenmonhoc() << " ,"
    282.               << a_monhoc[i].getdiemCC() << " ,"
    283.               << a_monhoc[i].getdiemGK() << " ,"
    284.               << a_monhoc[i].getdiemHP() << " ,"
    285.               << a_monhoc[i].getsoTC() << endl;
    286.         }
    287.     }
    288. }
    Student.cpp
    C++ Code:
    1. #include <iostream>
    2. #include <string.h>
    3. #include <cstdlib>
    4. #include <fstream>
    5. #include <iomanip>
    6.  
    7. using namespace std;
    8.  
    9. class Student
    10. {
    11. protected:
    12.     char *masv;
    13.     char *hodem;
    14.     char *ten;
    15.     int ngaysinh;
    16.     int thangsinh;
    17.     int namsinh;
    18.     char *diachi;
    19.     bool gioitinh;
    20.     char *que;
    21.     char *lop;
    22.     char *khoa;
    23.     int dienthoai;
    24.  
    25. public:
    26.     Student()
    27.     {
    28.         masv = new char[20];
    29.         hodem = new char[255];
    30.         ten = new char[20];
    31.         diachi = new char[255];
    32.         gioitinh = new char[255];
    33.         que = new char[255];
    34.         lop = new char[20];
    35.         khoa = new char[30];
    36.     }
    37.  
    38. public:
    39.     Student(char a_masv[20],
    40.             char *a_hodem,
    41.             char *a_ten,
    42.             int a_ngaysinh,
    43.             int a_thangsinh,
    44.             int a_namsinh,
    45.             char *a_diachi,
    46.             bool a_gioitinh,
    47.             char *a_que,
    48.             char a_lop[20],
    49.             char a_khoa[30],
    50.             int a_dienthoai)
    51.     {
    52.         // masv = new char[strlen(a_masv)+1];
    53.         strcpy(masv, a_masv);
    54.  
    55.         hodem = new char[strlen(a_hodem) + 1];
    56.         strcpy(hodem, a_hodem);
    57.         strcpy(ten, a_ten);
    58.  
    59.         ngaysinh = a_ngaysinh;
    60.  
    61.         thangsinh = a_thangsinh;
    62.  
    63.         namsinh = a_namsinh;
    64.  
    65.         diachi = new char[strlen(a_diachi) + 1];
    66.         strcpy(diachi, a_diachi);
    67.  
    68.         gioitinh = a_gioitinh;
    69.  
    70.         que = new char[strlen(a_que) + 1];
    71.         strcpy(que, a_que);
    72.  
    73.         strcpy(lop, a_lop);
    74.  
    75.         strcpy(khoa, a_khoa);
    76.  
    77.         dienthoai = a_dienthoai;
    78.     }
    79.  
    80.     ~Student()
    81.     {
    82.         // delete masv;
    83.         delete hodem;
    84.         delete ten;
    85.         delete diachi;
    86.         delete que;
    87.     }
    88.  
    89.     void setmasv(char a_masv[10])
    90.     {
    91.         // masv = new char[strlen(a_masv)+1];
    92.         strcpy(masv, a_masv);
    93.     }
    94.  
    95.     char *getmasv()
    96.     {
    97.         return masv;
    98.     }
    99.  
    100.     void sethodem(char *a_hodem)
    101.     {
    102.         hodem = new char[strlen(a_hodem) + 1];
    103.         strcpy(hodem, a_hodem);
    104.     }
    105.  
    106.     char *gethodem()
    107.     {
    108.         return hodem;
    109.     }
    110.     void setten(char *a_ten)
    111.     {
    112.         ten = new char[strlen(a_ten) + 1];
    113.         strcpy(ten, a_ten);
    114.     }
    115.  
    116.     char *getten()
    117.     {
    118.         return ten;
    119.     }
    120.  
    121.     void setngaysinh(int a_ngaysinh)
    122.     {
    123.         ngaysinh = a_ngaysinh;
    124.     }
    125.  
    126.     int getngaysinh()
    127.     {
    128.         return ngaysinh;
    129.     }
    130.  
    131.     void setthangsinh(int a_thangsinh)
    132.     {
    133.         thangsinh = a_thangsinh;
    134.     }
    135.  
    136.     int getthangsinh()
    137.     {
    138.         return thangsinh;
    139.     }
    140.  
    141.     void setnamsinh(int a_namsinh)
    142.     {
    143.         namsinh = a_namsinh;
    144.     }
    145.  
    146.     int getnamsinh()
    147.     {
    148.         return namsinh;
    149.     }
    150.  
    151.     void setdiachi(char *a_diachi)
    152.     {
    153.         diachi = new char[strlen(a_diachi) + 1];
    154.         strcpy(diachi, a_diachi);
    155.     }
    156.  
    157.     char *getdiachi()
    158.     {
    159.         return diachi;
    160.     }
    161.  
    162.     void setgioitinh(bool a_gioitinh)
    163.     {
    164.         gioitinh = a_gioitinh;
    165.     }
    166.  
    167.     bool getgioitinh()
    168.     {
    169.         return gioitinh;
    170.     }
    171.  
    172.     void setque(char *a_que)
    173.     {
    174.         que = new char[strlen(a_que) + 1];
    175.         strcpy(que, a_que);
    176.     }
    177.  
    178.     char *getque()
    179.     {
    180.         return que;
    181.     }
    182.  
    183.     void setlop(char a_lop[10])
    184.     {
    185.         strcpy(lop, a_lop);
    186.     }
    187.  
    188.     char *getlop()
    189.     {
    190.         return lop;
    191.     }
    192.  
    193.     void setkhoa(char a_khoa[30])
    194.     {
    195.         strcpy(khoa, a_khoa);
    196.     }
    197.  
    198.     char *getkhoa()
    199.     {
    200.         return khoa;
    201.     }
    202.  
    203.     void setdienthoai(float a_dienthoai)
    204.     {
    205.         dienthoai = a_dienthoai;
    206.     }
    207.  
    208.     float getdienthoai()
    209.     {
    210.         return dienthoai;
    211.     }
    212.  
    213.     void nhapthongtin()
    214.     {
    215.         cout << "\n ------>Nhap thong tin sinh vien: <------";
    216.         cout << "\n\t -Nhap ma sinh vien: ";
    217.         cin.ignore();
    218.         cin.get(masv, 30);
    219.         cout << "\n\t -Nhap ho va ten dem sinh vien: ";
    220.         cin.ignore();
    221.         cin.get(hodem, 255);
    222.         cout << "\n\t -Nhap ten sinh vien: ";
    223.         cin.ignore();
    224.         cin.get(ten, 255);
    225.         cout << "\n\t -Nhap ngay sinh sinh vien: ";
    226.         do
    227.         {
    228.             cout << "\n\t Ngay tu 1 den 31";
    229.             cout << "\n\t\t -Ngay: ";
    230.             cin >> ngaysinh;
    231.             if (ngaysinh > 31)
    232.             {
    233.                 ngaysinh = 0;
    234.                 cout << "\nMoi nhap lai ngay sinh!";
    235.             }
    236.             else if (ngaysinh <= 0)
    237.             {
    238.                 ngaysinh = 0;
    239.                 cout << "\nMoi nhap lai ngay sinh!";
    240.             }
    241.         } while (ngaysinh == 0);
    242.         do
    243.         {
    244.             cout << "\n\t Thang nhap tu 1 den 12";
    245.             cout << "\n\t\t -Thang: ";
    246.             cin >> thangsinh;
    247.             if (thangsinh > 12)
    248.             {
    249.                 thangsinh = 0;
    250.                 cout << "\nMoi nhap lai thang sinh!";
    251.             }
    252.             else if (thangsinh <= 0)
    253.             {
    254.                 thangsinh = 0;
    255.                 cout << "\nMoi nhap lai thang sinh!";
    256.             }
    257.  
    258.         } while (thangsinh == 0);
    259.  
    260.         do
    261.         {
    262.             cout << "\n\t Nam nhap tu 1990 den 2004";
    263.             cout << "\n\t\t -Nam: ";
    264.             cin >> namsinh;
    265.             if (namsinh < 1990)
    266.             {
    267.                 namsinh = 0;
    268.                 cout << "\nMoi nhap lai nam sinh!";
    269.             }
    270.             else if (namsinh > 2004)
    271.             {
    272.                 namsinh = 0;
    273.                 cout << "\nMoi nhap lai nam sinh!";
    274.             }
    275.         } while (namsinh == 0);
    276.         cout << "\n\t -Nhap dia chi sinh vien: ";
    277.         cin.ignore();
    278.         cin.get(diachi, 255);
    279.         cout << "\n\t -Nhap gioi tinh sinh vien(0-nu, 1-nam): ";
    280.         cin >> gioitinh;
    281.         cout << "\n\t -Nhap que quan sinh vien: ";
    282.         cin.ignore();
    283.         cin.get(que, 255);
    284.         cout << "\n\t -Nhap dien thoai sinh vien: ";
    285.         cin >> dienthoai;
    286.         cout << "\n\t -Nhap lop sinh vien: ";
    287.         cin.ignore();
    288.         cin.get(lop, 20);
    289.         cout << "\n\t -Nhap khoa sinh vien: ";
    290.         cin.ignore(); // xoa bo nho dem
    291.         cin.get(khoa, 30);
    292.     }
    293.  
    294.     void hienthi()
    295.     {
    296.         cout << "--------->Thong tin sinh vien: <--------- ";
    297.         cout << "\n\t ma sinh vien: " << masv;
    298.         cout << "\n\t ho va ten : " << hodem << " " << ten;
    299.         cout << "\n\t ngay sinh : " << ngaysinh << "/" << thangsinh << "/" << namsinh;
    300.         cout << "\n\t dia chi : " << diachi;
    301.         cout << "\n\t gioi tinh : " << (gioitinh == true ? "Nam" : "Nu");
    302.         cout << "\n\t que quan : " << que;
    303.         cout << "\n\t so dien thoai : " << dienthoai;
    304.         cout << "\n\t lop : " << lop;
    305.         cout << "\n\t khoa: " << khoa;
    306.     }
    307.     void xuatDS()
    308.     {
    309.         cout << "|" << setw(12) << left << masv
    310.              << "|" << setw(25) << left << hodem
    311.              << "|" << setw(8) << left << ten
    312.              << "|" << setw(1) << ngaysinh << "/" << thangsinh << "/" << setw(16) << left << namsinh
    313.              << "|" << setw(19) << left << diachi
    314.              << "|" << setw(10) << left << (gioitinh == true ? "nam" : "nu")
    315.              << "|" << setw(10) << left << que
    316.              << "|" << setw(14) << left << dienthoai
    317.              << "|" << setw(13) << left << lop
    318.              << "|" << setw(8) << left << khoa << "|"<< endl;
    319.     }
    320. };
    studentscore.cpp
    C++ Code:
    1. #include <iostream>
    2. #include <string.h>
    3. #include <cstdlib>
    4. #include <fstream>
    5. #include <iomanip>
    6. #include "Student.cpp"
    7. #include "Score.cpp"
    8. using namespace std;
    9. #define SWAP(type, x, y) \
    10.     do                   \
    11.     {                    \
    12.         type tmp = x;    \
    13.         x = y;           \
    14.         y = tmp;         \
    15.     } while (0)
    16. class StudentScore
    17. {
    18. private:
    19.     int sosv;
    20.     Student *a_Student;
    21.     diem *a_diem;
    22.  
    23. public:
    24.     StudentScore()
    25.     {
    26.         sosv = 0;
    27.          a_Student = new Student[100];
    28.         a_diem = new diem[100];
    29.     }
    30.  
    31.     ~StudentScore()
    32.     {
    33.         delete[] a_Student;
    34.         delete[] a_diem;
    35.     }
    36.  
    37.     void nhapDSSV()
    38.     {
    39.        
    40.         int n;
    41.         cout << "Moi nhap so luong sinh vien can them: ";
    42.         cin >> n;
    43.         cout << "\n\t\t+-------------NHAP THONG TIN SINH VIEN--------------+";
    44.         for (int i = 0; i < n; i++)
    45.         {
    46.             cout << "\n Nhap thong tin cua sinh vien thu " << i + 1 << ":";
    47.             a_Student[i].nhapthongtin();
    48.             cout << "\n";
    49.             a_diem[i].nhap();
    50.             sosv++;
    51.         }
    52.     }
    53.  
    54.     void timkiemtheomasv()
    55.     {
    56.         char t[10];
    57.         cout << "Nhap ma sinh vien:\n";
    58.         cin.ignore();
    59.         cin.get(t, 10);
    60.         for (int i = 0; i < sosv; i++)
    61.         {
    62.             if (strcmp(a_Student[i].getmasv(), t) == 0)
    63.             {
    64.                 a_Student[i].hienthi();
    65.                 break;
    66.             }
    67.             else
    68.                 cout << "\n khong tim thay ai";
    69.         }
    70.     }
    71.    
    72.     void timkiemtheotenSV()
    73.     {
    74.         Student arrayFound[20];
    75.         char tenSV[30];
    76.         int found = 0;
    77.         char ten[30];
    78.         cin.ignore();
    79.         cout << "\nMoi nhap ten sinh vien :";
    80.         cin.get(ten, 20);
    81.         for (int i = 0; i < sosv; i++)
    82.         {
    83.             strcpy(tenSV, a_Student[i].getten());
    84.             if (strstr(strupr(tenSV), strupr(ten)))
    85.             {
    86.                 a_Student[i].hienthi();
    87.             }
    88.         }
    89.     }
    90.  
    91.     void hienthidiemTTB()
    92.     {
    93.         for (int i = 0; i < sosv; i++)
    94.         {
    95.             cout << "tenSV: " << a_Student[i].gethodem() << " " << a_Student[i].getten() << " | DiemTB: " << a_diem[i].getdiemTTB() << endl;
    96.         }
    97.     }
    98.  
    99.     void hienthiDSdiem1SV()
    100.     {
    101.         char t[10];
    102.         cout << "nhap ma sinh vien:";
    103.         cin.ignore();
    104.         cin.get(t, 10);
    105.         for (int i = 0; i < sosv; i++)
    106.         {
    107.             if (strcmp(a_Student[i].getmasv(), t) == 0)
    108.             {
    109.                 a_diem[i].hienthi();
    110.                 break;
    111.                 // return;
    112.             }
    113.             else
    114.                 cout << "\n khong tim thay ai";
    115.         }
    116.     }
    117.  
    118.    
    119.     void sapxeptheoTen()
    120.     {
    121.  
    122.        
    123.         for (int i = 0; i < sosv - 1; i++)
    124.         {
    125.             for (int j = i + 1; j < sosv; j++)
    126.             {
    127.                 // Nếu tìm ra phần tử có thành viên name lớn hơn
    128.                 //  thì hoán đổi với số đang xét
    129.                 if (strcmp(a_Student[i].getten(), a_Student[j].getten()) > 0)
    130.                     SWAP(Student, a_Student[i], a_Student[j]);
    131.             }
    132.         }
    133.         cout << "\nSap xep theo ten sinh vien thanh cong!";
    134.     }
    135.  
    136.     void hienthitoanbosinhvien()
    137.     {
    138.         cout << "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++DANH SACH SINH VIEN+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
    139.         cout << setfill('-');
    140.         cout << "+" << setw(148) << "-"
    141.              << "+" << endl;
    142.         cout << setfill(' ');
    143.         cout << "|" << setw(12) << left << "MaSV"
    144.              << "|" << setw(25) << left << "Ho Dem"
    145.              << "|" << setw(8) << left << "Ten"
    146.              << "|" << setw(20) << left << "Ngay thang nam sinh"
    147.              << "|" << setw(19) << left << "Dia chi"
    148.              << "|" << setw(10) << left << "Gioi Tinh"
    149.              << "|" << setw(10) << left << "Que Quan"
    150.              << "|" << setw(14) << left << "SDT"
    151.              << "|" << setw(13) << left << "Lop HP"
    152.              << "|" << setw(8) << left << "Khoa"
    153.              << "|" << endl;
    154.         for (int i = 0; i < sosv; i++)
    155.         {
    156.             cout << setfill('-');
    157.             cout << "+" << setw(148) << "-"
    158.                  << "+" << endl;
    159.             cout << setfill(' ');
    160.             a_Student[i].xuatDS();
    161.            
    162.         }
    163.         cout << setfill('-');
    164.         cout << "+" << setw(148) << "-"
    165.              << "+" << endl;
    166.         cout << setfill(' ');
    167.     }
    168.    
    169.    
    170.  
    171.     void xoamotsinhvien()
    172.     {
    173.         int vt;
    174.         cout << "\n nhap vi tri can xoa: ";
    175.         cin >> vt;
    176.         cout << "\nBan co chac chan muon xoa(y/n)!";
    177.         cout << "\n(Nhap y de tiep tuc xoa, n de thoat ):";
    178.         char t;
    179.         cin.ignore();
    180.         cin >> t;
    181.         if (t == 'y')
    182.         {
    183.             vt--;
    184.             if (vt < 0 && vt > sosv)
    185.                 return;
    186.             for (int i = vt; i < sosv; i++)
    187.             {
    188.                 a_Student[i] = a_Student[i + 1];
    189.                 a_diem[i] = a_diem[i + 1];
    190.             }
    191.             sosv--;
    192.         }
    193.         else
    194.         {
    195.             cout << "\nBan khong muon xoa!";
    196.         }
    197.     }
    198.  
    199.     void suathongtinmotsv()
    200.     {
    201.         char t[10];
    202.         bool traloi;
    203.         cout << "\n nhap ma sinh vien can sua: ";
    204.         cin.ignore();
    205.         cin.get(t, 10);
    206.         for (int i = 0; i < sosv; i++)
    207.             if (strcmp(a_Student[i].getmasv(), t) == 0)
    208.             {
    209.                 a_Student[i].hienthi();
    210.                 cout << "\nCo sua thong tin sinh vien ko?(0-yes, 1=no) ";
    211.                 cin >> traloi;
    212.                 if (traloi == 0)
    213.                 {
    214.                     a_Student[i].nhapthongtin();
    215.                 }
    216.                 cout << "\nCo sua diem sinh vien ko?(0-yes, 1=no) ";
    217.                 cin >> traloi;
    218.                 if (traloi == 0)
    219.                 {
    220.                     a_diem[i].hienthi();
    221.                     cout << "\nCo sua diem ko?(0-yes, 1=no) ";
    222.                     cin >> traloi;
    223.                     if (traloi == 0)
    224.                     {
    225.                         a_diem[i].nhap();
    226.                     }
    227.                 }
    228.             }
    229.     }
    230.  
    231.     void luuthongtinvaofile()
    232.     {
    233.         ofstream f("ketqua.txt");
    234.         f << sosv << endl;
    235.         for (int i = 0; i < sosv; i++)
    236.         {
    237.  
    238.             f << a_Student[i].getmasv() << " ,"
    239.               << a_Student[i].gethodem() << " "
    240.               << a_Student[i].getten() << " ,"
    241.               << a_Student[i].getngaysinh() << " ,"
    242.               << a_Student[i].getthangsinh() << " ,"
    243.               << a_Student[i].getnamsinh() << " ,"
    244.               << a_Student[i].getdiachi() << " ,"
    245.               << a_Student[i].getgioitinh() << " ,"
    246.               << a_Student[i].getque() << " ,"
    247.               << a_Student[i].getdienthoai() << " ,"
    248.               << a_Student[i].getlop() << " ,"
    249.               << a_Student[i].getkhoa() << " ,"
    250.               << a_diem[i].getsomonhoc() << endl;
    251.             a_diem[i].luuthongtinvaofile(f);
    252.         }
    253.         f.close();
    254.     }
    255.  
    256. };

    Mọi người ơi giúp em sữa lỗi với ạ
    Lỗi khi em thực hiên chức năng sắp xếp theo tên sinh viên lại in ra giá trị rác ạ.

    ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++DANH SACH SINH VIEN++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++
    +----------------------------------------------------------------------------------------------------------------------------------------------------+
    |MaSV |Ho Dem |Ten |Ngay thang nam sinh |Dia chi |Gioi Tinh |Que Quan |SDT |Lop HP |Khoa |
    +----------------------------------------------------------------------------------------------------------------------------------------------------+
    |`0†‘ | |C:\WINDOWS|0/0/0 | |nam | |0 | | „‘ |
    +----------------------------------------------------------------------------------------------------------------------------------------------------+
    | | | |0/0/0 | |nam | |0 | | „‘Â |
    | | | |0/0/0 | |nam | |1 |`0†‘ | „‘ |
    +----------------------------------------------------------------------------------------------------------------------------------------------------+
    |10000 |T |TInh |1/1/2001 |1 |nam |1 |1 |1 |1 |
    +----------------------------------------------------------------------------------------------------------------------------------------------------+


    Mong mọi người giúp em.
    Đã được chỉnh sửa lần cuối bởi Diabloa : 25-11-2021 lúc 03:37 PM. Lý do: Đưa mã vào khung xem mã

  2. #2
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    610

    In ra bình thường là như thế nào? Khi không dùng thêm sinh viên thì làm gì có nội dung gì để in ra nhỉ!

    - - - Nội dung đã được cập nhật ngày 25-11-2021 lúc 02:30 PM - - -

    Gọi settenmonhoc(char*) sẽ gây ra memory leak

    - - - Nội dung đã được cập nhật ngày 25-11-2021 lúc 02:47 PM - - -

    Dòng 247 scode.cpp, tính "mau" nhiều lần, nên bỏ ra ngoài vòng lặp
    Đã được chỉnh sửa lần cuối bởi khoaph : 25-11-2021 lúc 03:03 PM.

  3. #3
    Ngày gia nhập
    11 2021
    Bài viết
    0

    Dạ em nhầm cái chức năng thêm sinh viên đó là thêm sinh viên vào vị trí mà em viết nhầm thành hàm thêm sv

  4. #4
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    610

    Lớp Student, gọi setten, sethodem, setdiachi, setque gây memory leak

  5. #5
    Ngày gia nhập
    11 2021
    Bài viết
    0

    Em đã sửa code lại r mà chạy vẫn còn lỗi chức năng sắp xếp vẫn ra giá trị rác . Mong anh xem giúp em ạ.
    Em cảm ơn.

    - - - Nội dung đã được cập nhật ngày 25-11-2021 lúc 03:29 PM - - -

    - - - Nội dung đã được cập nhật ngày 25-11-2021 lúc 03:30 PM - - -

    Dạ giờ sửa sao đây anh.

  6. #6
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    610

    Mặc định Bt oop

    Khi bạn có mảng Student[sosv]
    Nếu bạn gọi new Student[sosv + 1]
    Chương trình sẽ cấp phát vùng nhớ mới khác chứa giá trị rác
    Bạn phải copy thủ công từng Student từ vùng nhớ cũ sang vùng nhớ mới
    Và mỗi lần bạn goi new bạn đã gây memory leak nghiêm trọng
    Bạn nên thử dùng danh sách liên kết thay cho mảng

  7. #7
    Ngày gia nhập
    11 2021
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi khoaph Xem bài viết
    Khi bạn có mảng Student[sosv]
    Nếu bạn gọi new Student[sosv + 1]
    Chương trình sẽ cấp phát vùng nhớ mới khác chứa giá trị rác
    Bạn phải copy thủ công từng Student từ vùng nhớ cũ sang vùng nhớ mới
    Và mỗi lần bạn goi new bạn đã gây memory leak nghiêm trọng
    Bạn nên thử dùng danh sách liên kết thay cho mảng
    Dạ để em viết thử.

    - - - Nội dung đã được cập nhật ngày 25-11-2021 lúc 03:56 PM - - -

    Trích dẫn Nguyên bản được gửi bởi Diabloa Xem bài viết
    Dạ để em viết thử.
    Cảm ơn anh.

  8. #8
    Ngày gia nhập
    12 2015
    Nơi ở
    Đà Nẵng
    Bài viết
    610

    Bạn cũng có thể dùng vector thay cho mảng, copy sẽ được thực hiện tự động

    - - - Nội dung đã được cập nhật ngày 25-11-2021 lúc 08:50 PM - - -

    Nếu không chèn student vào giữa bạn vẫn có thể dùng mảng nhưng khai báo kích thước đủ lớn để có thể chứa tất cả student

    - - - Nội dung đã được cập nhật ngày 25-11-2021 lúc 08:55 PM - - -

    Khi đó dùng 1 biến n để lưu số lượng student hiện tại, khi thêm thì cập nhật student thứ n rồi tăng n

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