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

Đề tài: Code quản lý sinh viên bằng danh sách lối vòng. Giúp mình thay đổi code kế thừa?

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

    Mặc định Code quản lý sinh viên bằng danh sách lối vòng. Giúp mình thay đổi code kế thừa?

    mình có một bài về danh sách nối vòng theo kiểu stack như thế này.
    C++ Code:
    1. #include<iostream.h>
    2. #include<iomanip.h>
    3. #include<string.h>
    4. #include<fstream.h>
    5. class SV
    6. {
    7. protected:
    8.     char ht[30];
    9.     char lop[10];
    10.     int muc;
    11. public:
    12.     void nhap()
    13.     {
    14.         cout<<"nhap ten sv:";cin.ignore();cin.get(ht,30);
    15.         cout<<"nhap lop :";cin.ignore();cin.get(lop,10);
    16.         cout<<"nhap muc uu tien :";cin>>muc;
    17.     }
    18.     void hien()
    19.     {
    20.         cout<<"ten sinh vien la:"<<ht<<endl;
    21.         cout<<"ten lop la:"<<lop<<endl;
    22.         cout<<"muc uu tien la:"<<muc<<endl;
    23.     }
    24.     friend class DS;
    25.    
    26. };
    27. class nut:public SV
    28. {
    29. protected:
    30.     nut *next;
    31. public:
    32.    
    33.     nut()
    34.     {
    35.         next=NULL;
    36.     }
    37.     nut *khoitaonut()
    38.     {
    39.         nut *p;
    40.         p=new nut;
    41.         if(p==NULL) return NULL;
    42.         p->nhap();
    43.         p->next=NULL;
    44.         return p;
    45.     }
    46.     friend class DS;
    47. };
    48. class DS:public nut
    49. {
    50. public:
    51.     //nut *head;
    52.  
    53.     DS()
    54.     {
    55.         next=NULL;
    56.     }
    57.     void themdau(nut *x)   //khai bao kieu con tro x la vi ta co the gan con tro next cho x
    58.     {
    59.            
    60.             x->next=next;
    61.             next=x;
    62.        
    63.        
    64.        
    65.        
    66.     }
    67.     nut *laydau()
    68.     {
    69.         nut *p=next,*q=next;
    70.         if(next==NULL)
    71.             cout<<"khong the lay ra";
    72.         else
    73.         {
    74.             p=p->next;
    75.             next=p;
    76.         }
    77.         return q;
    78.     }
    79.     void laynut()
    80.     {
    81.         int m;
    82.         nut *p=next;
    83.         cout<<"nhap so nut can lay ra:";cin>>m;
    84.         cout<<"cac nut duoc lay ra la:"<<endl;
    85.         for(int i=0;i<m;i++)
    86.         {
    87.            
    88.             p=laydau();
    89.             cout<<p->ht<<endl;
    90.         }
    91.         cout<<"\ndanh sach con lai la:"<<endl;
    92.             output();
    93.     }
    94.  
    95.  
    96.  
    97.     void input()
    98.     {
    99.        
    100.         int n,i;
    101.         cout<<"nhap n :";cin>>n;
    102.         for( i=0;i<n;i++)
    103.         {
    104.             cout<<"nhap thong tin sinh vien thu "<<i+1<<" :"<<endl;
    105.            
    106.            
    107.             nut *p=khoitaonut();
    108.             themdau(p);
    109.         }
    110.     }
    111.     void output()
    112.     {
    113.         int i=0;
    114.         nut *q=next;
    115.        
    116.         while(q!=NULL)
    117.         {
    118.             i=i+1;
    119.             cout<<"thong tin sinh vien thu "<<i<<" la:"<<endl;
    120.             q->hien();
    121.            
    122.            
    123.             q=q->next;
    124.         }
    125.     }
    126.     void timkiem()
    127.     {
    128.         SV sv;
    129.         cout<<"nhap ten sinh vien can tim:";cin.ignore(1);cin.get(sv.ht,30);
    130.         nut *p=next;
    131.         int kt=0;
    132.         while(p!=NULL)
    133.         {
    134.             if(strcmp(p->ht,sv.ht)==0)
    135.             {  
    136.                 kt=1;
    137.                 cout<<"thong tin sinh vien can tim la:"<<endl;
    138.                 p->hien();
    139.             }
    140.             p=p->next;
    141.         }
    142.         if(kt==0) cout<<"khong tim thay sinh vien nao"<<endl;
    143.            
    144.     }
    145.     void xoanut()
    146.     {
    147.         SV sv;
    148.         cout<<"\n nhap ten sinh vien can xoa:";cin.ignore(1);cin.get(sv.ht,30);
    149.         nut *q=next;
    150.         nut *p;
    151.         p=q->next;
    152.         cout<<"thong tin cac sinh vien duoc xoa la:"<<endl;
    153.         while(p!=NULL)
    154.         {
    155.             if(strcmp(p->ht,sv.ht)==0||p->muc==sv.muc)
    156.             {
    157.                 next=p->next;
    158.                 p->hien();
    159.                 p=p->next;
    160.                 p=p->next;
    161.             }
    162.             p=p->next;
    163.             q=q->next;
    164.         }
    165.     }
    166. };
    167.  
    168.  
    169.  
    170.    
    171.  
    172.  
    173.     /*friend fstream& operator>>(fstream& vt,DS &vp)
    174.     {
    175.         nut *p=vp.next;
    176.         while(p!=NULL)
    177.         {
    178.             vt>>vp.ht;
    179.             vt>>vp.lop;
    180.             vt>>vp.muc;
    181.             p=p->next;
    182.         }
    183.         return vt;
    184.     }
    185.     friend fstream& operator<<(fstream& vt,DS vp)
    186.     {
    187.         nut *p=vp.next;
    188.         while(p!=NULL)
    189.         {
    190.        
    191.             vt<<vp.ht;
    192.             vt<<vp.lop;
    193.             vt<<vp.muc;
    194.             p=p->next;
    195.         }
    196.         return vt;
    197.     }
    198.    
    199.     friend class SV;
    200.  
    201.  
    202.    
    203. };*/
    204. class MENU:public DS
    205. {
    206. public:
    207.     int k;
    208.     void xem()
    209.     {
    210.         cout<<"====================================\n";
    211.         cout<<"     ========================       \n";
    212.         do {
    213.            
    214.             cout<<"Moi ban chon thoa tac xu ly voi:\n";
    215.             cout<<"==========MENU===================="<<endl
    216.             <<"1.Nhap da danh sach"<<endl<<"2.Hien da danh sach"<<endl
    217.             <<"3.Loai bo cac nut"<<endl<<"4.Tim kiem cac nut"<<endl
    218.             <<"5.xoa nut"<<endl<<"6.exit"<<endl;
    219.             cout<<endl<<"Chon muc:";cin>>k;
    220.             if(k==1) DS::input();
    221.             if(k==2) {cout<<"DSSV LA:\n";DS::output();}
    222.             if(k==3) DS::laynut();
    223.             if(k==4) DS::timkiem();
    224.             if(k==5) DS::xoanut();
    225.             if(k==6) break;
    226.             cout<<"     ========================       \n";
    227.         } while(k!=6);
    228.     }
    229. };
    230. void main()
    231. {
    232.     MENU b;
    233.     b.xem();
    234.     cout<<endl;
    235.     cin.ignore(3);
    236. }
    cho mình hỏi là class DS kế thừa từ class nut tức là trong class DS không cần tạo ra một đối tượng kiểu nut nữa mà sẽ dùng ở trong class nut trên đúng không.nhưng khi lập trình về phương thức themdau() thì mình bắt buộc phải dùng "nut *x" để còn thêm đầu được hoặc như trong phương thức laydau() cũng phải sử dụng cái "nut *p,*q" để đúng với thuật toán.vì vậy mà class DS kế thừa từ class nut rồi mà vẫn phải dùng friend.ai có thể giúp mình vẫn dùng kế thừa nhưng lại không cần dùng friend hay hàm gets,sets... không. nếu không thì lại phải bỏ kế thừa à.để cho bài đỡ lủng củng.còn cái này nữa là cái xoanut() và cái toán tử ghi vào file nó không chạy theo ý muốn.xoanut() thì xóa tất cả sinh viên có tên nhập vào hoặc tất cả sinh viên có cùng mức ưu tiên.còn cái ghi vào file các bạn xem mình viết đúng chưa.
    ai giải quyết được vấn đề gì thì giúp mình nhé. vì vấn đề này khó diễn đạt bằng lời nên mình đã cố gắng miêu tả nó.mong mọi người hiểu được vấn đề và giúp mình nhé.mình cảm ơn trước.
    Đã được chỉnh sửa lần cuối bởi caocanha : 01-05-2009 lúc 06:01 PM.

  2. #2
    Ngày gia nhập
    10 2008
    Bài viết
    178

    chả biết sai chỗ nào nhưng mà kế thừa như vậy là sai bản chất của hướng đối tượng.cho dù bài có chạy đúng cũng không có nghĩa j

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

    hic.thế thì bạn có thể nói xem mình kế thừa như thế nào thì hướng đối tượng không

  4. #4
    Ngày gia nhập
    10 2008
    Bài viết
    178

    cài đặt 3 class
    class SV;
    class Node có data là kiểu SV
    class DS thì có Node phead và ptail là ok
    bài này thực ra viết dống struct nhưng dùng class thay cho nó thôi
    đừng có lạm dụng quá chuyện kế thừa.

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

    nhưng đã là hướng đối tượng thì phải kế thừa chứ.không phải là lập trình kiểu cấu trúc đâu.tại thấy bạn kia bảo là kế thừa đi ngược với hướng đối tượng nên mình mới hỏi thôi.

  6. #6
    Ngày gia nhập
    10 2008
    Bài viết
    178

    Mặc định Code quản lý sinh viên bằng danh sách lối vòng. Giúp mình thay đổi code kế thừa?

    Trích dẫn Nguyên bản được gửi bởi caocanha Xem bài viết
    nhưng đã là hướng đối tượng thì phải kế thừa chứ.không phải là lập trình kiểu cấu trúc đâu.tại thấy bạn kia bảo là kế thừa đi ngược với hướng đối tượng nên mình mới hỏi thôi.
    chả có chút kiến thức j về hướng đối tượng cả.nói không nghe thì thôi cứ để kế thừa mà viết tiếp đi
    Đã được chỉnh sửa lần cuối bởi rua_con : 02-05-2009 lúc 03:40 PM.

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

    bài mình sửa thế này rồi nhưng nó báo lỗi ở cái dòng nut *p=khoitaonut();
    nếu thêm cái kế thừa vào thì mới hết lỗi

    C++ Code:
    1. #include<iostream.h>
    2. #include<iomanip.h>
    3. #include<string.h>
    4. #include<fstream.h>
    5. class SV
    6. {
    7. protected:
    8.     char ht[30];
    9.     char lop[10];
    10.     int muc;
    11. public:
    12.     void nhap()
    13.     {
    14.         cout<<"nhap ten sv:";cin.ignore();cin.get(ht,30);
    15.         cout<<"nhap lop :";cin.ignore();cin.get(lop,10);
    16.         cout<<"nhap muc uu tien :";cin>>muc;
    17.     }
    18.     void hien()
    19.     {
    20.         cout<<"ten sinh vien la:"<<ht<<endl;
    21.         cout<<"ten lop la:"<<lop<<endl;
    22.         cout<<"muc uu tien la:"<<muc<<endl;
    23.     }
    24.     friend class DS;
    25.    
    26. };
    27. class nut:public SV
    28. {
    29. protected:
    30.     nut *next;
    31. public:
    32.    
    33.     nut()
    34.     {
    35.         next=NULL;
    36.     }
    37.     nut *khoitaonut()
    38.     {
    39.         nut *p;
    40.         p=new nut;
    41.         if(p==NULL) return NULL;
    42.         p->nhap();
    43.         p->next=NULL;
    44.         return p;
    45.     }
    46.     friend class DS;
    47. };
    48. class DS
    49. {
    50. public:
    51.     nut *head;
    52.  
    53.     DS()
    54.     {
    55.         head=NULL;
    56.     }
    57.     void themdau(nut *x)   //khai bao kieu con tro x la vi ta co the gan con tro next cho x
    58.     {
    59.            
    60.             x->next=head;
    61.             head=x;
    62.        
    63.        
    64.        
    65.        
    66.     }
    67.     nut *laydau()
    68.     {
    69.         nut *p=head,*q=head;
    70.         if(head==NULL)
    71.             cout<<"khong the lay ra";
    72.         else
    73.         {
    74.             p=p->next;
    75.             head=p;
    76.         }
    77.         return q;
    78.     }
    79.     void laynut()
    80.     {
    81.         int m;
    82.         nut *p=head;
    83.         cout<<"nhap so nut can lay ra:";cin>>m;
    84.         cout<<"cac nut duoc lay ra la:"<<endl;
    85.         for(int i=0;i<m;i++)
    86.         {
    87.            
    88.             p=laydau();
    89.             cout<<p->ht<<endl;
    90.         }
    91.         cout<<"\ndanh sach con lai la:"<<endl;
    92.             output();
    93.     }
    94.     void input()
    95.     {
    96.        
    97.         int n,i;
    98.         cout<<"nhap n :";cin>>n;
    99.         for( i=0;i<n;i++)
    100.         {
    101.             cout<<"nhap thong tin sinh vien thu "<<i+1<<" :"<<endl;
    102.             nut *p=khoitaonut();
    103.             themdau(p);
    104.         }
    105.     }
    106.     void output()
    107.     {
    108.         int i=0;
    109.         nut *q=head;
    110.        
    111.         while(q!=NULL)
    112.         {
    113.             i=i+1;
    114.             cout<<"thong tin sinh vien thu "<<i<<" la:"<<endl;
    115.             q->hien();
    116.            
    117.            
    118.             q=q->next;
    119.         }
    120.     }
    121.     void timkiem()
    122.     {
    123.         SV sv;
    124.         cout<<"nhap ten sinh vien can tim:";cin.ignore(1);cin.get(sv.ht,30);
    125.         nut *p=head;
    126.         int kt=0;
    127.         while(p!=NULL)
    128.         {
    129.             if(strcmp(p->ht,sv.ht)==0)
    130.             {  
    131.                 kt=1;
    132.                 cout<<"thong tin sinh vien can tim la:"<<endl;
    133.                 p->hien();
    134.             }
    135.             p=p->next;
    136.         }
    137.         if(kt==0) cout<<"khong tim thay sinh vien nao"<<endl;
    138.            
    139.     }
    140.     void xoanut()
    141.     {
    142.         SV sv;
    143.         cout<<"\n nhap ten sinh vien can xoa:";cin.ignore(1);cin.get(sv.ht,30);
    144.         nut *q=head;
    145.         nut *p;
    146.         p=q->next;
    147.         cout<<"thong tin cac sinh vien duoc xoa la:"<<endl;
    148.         while(p!=NULL)
    149.         {
    150.             if(strcmp(p->ht,sv.ht)==0)
    151.             {
    152.                 head=p->next;
    153.                 p->hien();
    154.                 p=p->next;
    155.                 p=p->next;
    156.             }
    157.             p=p->next;
    158.             q=q->next;
    159.         }
    160.     }
    161. };
    162.  
    163. /*friend fstream& operator>>(fstream& vt,DS &vp)
    164.     {
    165.         nut *p=vp.next;
    166.         while(p!=NULL)
    167.         {
    168.             vt>>vp.ht;
    169.             vt>>vp.lop;
    170.             vt>>vp.muc;
    171.             p=p->next;
    172.         }
    173.         return vt;
    174.     }
    175.     friend fstream& operator<<(fstream& vt,DS vp)
    176.     {
    177.         nut *p=vp.next;
    178.         while(p!=NULL)
    179.         {
    180.        
    181.             vt<<vp.ht;
    182.             vt<<vp.lop;
    183.             vt<<vp.muc;
    184.             p=p->next;
    185.         }
    186.         return vt;
    187.     }
    188.    
    189.     friend class SV;
    190.  
    191.  
    192.    
    193. };*/
    194. class MENU:public DS
    195. {
    196. public:
    197.     int k;
    198.     void xem()
    199.     {
    200.         cout<<"====================================\n";
    201.         cout<<"     ========================       \n";
    202.         do {
    203.            
    204.             cout<<"Moi ban chon thoa tac xu ly voi:\n";
    205.             cout<<"==========MENU===================="<<endl
    206.             <<"1.Nhap da danh sach"<<endl<<"2.Hien da danh sach"<<endl
    207.             <<"3.Loai bo cac nut"<<endl<<"4.Tim kiem cac nut"<<endl
    208.             <<"5.xoa nut"<<endl<<"6.exit"<<endl;
    209.             cout<<endl<<"Chon muc:";cin>>k;
    210.             if(k==1) DS::input();
    211.             if(k==2) {cout<<"DSSV LA:\n";DS::output();}
    212.             if(k==3) DS::laynut();
    213.             if(k==4) DS::timkiem();
    214.             if(k==5) DS::xoanut();
    215.             if(k==6) break;
    216.             cout<<"     ========================       \n";
    217.         } while(k!=6);
    218.     }
    219. };
    220. void main()
    221. {
    222.     MENU b;
    223.     b.xem();
    224.     cout<<endl;
    225.     cin.ignore(3);
    226. }

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

  1. Sửa lỗi undefined 't' trong code bài quản lý sinh viên bằng danh sách liên kết
    Gửi bởi bka_trung trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 08-03-2013, 12:14 AM
  2. Tối ưu code quản lý danh sách sinh viên. Mọi người giúp đỡ?
    Gửi bởi trieuvan.n01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 08-01-2011, 08:10 PM
  3. Code bài quản lý điểm sinh viên (không chạy được). Giúp mính sửa?
    Gửi bởi saobang220 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 17
    Bài viết cuối: 23-10-2010, 11:57 PM
  4. Bài tập C | Code bài tập quản lý sinh viên lỗi ở đâu, giúp mình sửa lỗi?
    Gửi bởi tianlong trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 04-05-2009, 06:47 AM
  5. Bài tập C | Code bài tập quản lý sinh viên lỗi ở đâu, giúp mình sửa lỗi?
    Gửi bởi kenlog trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 17
    Bài viết cuối: 03-05-2009, 08:48 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