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

Đề tài: [ Solved ]Hàm main sổ hộ khẩu!

  1. #1
    Ngày gia nhập
    11 2008
    Nơi ở
    Quảng Ngãi
    Bài viết
    0

    Question [ Solved ]Hàm main sổ hộ khẩu!

    Oài! Lụm được bài quản lí hộ khẩu tưởng pro lắm, đem develope lên bị lỗi miết...Nhờ Mode và các bạn xem giùm Long nha.
    Ở trong main bị sao ấy, thực hiện từng thao tác riêng rẻ thì đúng nhưng làm lần lượt như dưới main thì không ra kết quả? Sao kì vậy?


    C++ Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<iostream.h>
    4. #include<string.h>
    5.  
    6.  
    7. class nhankhau
    8. {
    9.     private:
    10.         char name[25];
    11.         char birthday[15];
    12.         char que[100];
    13.         char dantoc[10];
    14.         char gioitinh[4];
    15.         char tongiao[20];
    16.         long cmnd;
    17.         char nghenghiep[40];
    18.         char quanhe[10];
    19.     public:
    20.         void nhap();
    21.         void xuat();
    22.         void nhap1();
    23.       int operator !=(nhankhau k);
    24. };
    25. //==============================================================================
    26. class shkhau
    27. {
    28.   private:
    29.         nhankhau nk[15];
    30.       long n;
    31.       char ten_ch[25];
    32.   public:
    33.         void input();
    34.         void output();
    35.     void input1();
    36.       int operator !=(shkhau x);
    37.       void them(nhankhau k);
    38.       int vitri(nhankhau k);
    39.       void xoa(nhankhau k);
    40.       void timkiem(nhankhau k);
    41. };
    42. //==============================================================================
    43. class qlhk
    44. {
    45.     private:
    46.         shkhau hk[15];
    47.         int maso;
    48.     public:
    49.         void setdata();
    50.         void print();
    51.       void them_shk(shkhau x);
    52.       int vitri_shk(shkhau x);
    53.       void xoa_shk(shkhau x);
    54.       void timkiem_shk(shkhau x);
    55.       void them_nk(shkhau x);
    56.       void xoa_nk(shkhau x);
    57.       void timkiem_nk(shkhau x);
    58. };
    59. //==============================================================================
    60. void nhankhau::nhap()
    61. {
    62.     cout<<"\n Ten: ";
    63.     cin.ignore(1);
    64.     cin.get(name,25);
    65.     cout<<"\n Quan he voi chu ho(neu la chu ho thi nhap vao chu ho): ";
    66.     cin.ignore(1);
    67.     cin.get(quanhe,10);
    68.     cout<<"\n Ngay/thang/nam sinh:\t";
    69.     cin.ignore(1);
    70.     cin.get(birthday,15);
    71.     cout<<"\n Que quan: ";
    72.     cin.ignore(1);
    73.     cin.get(que,100);
    74.     cout<<"\n Dan toc: ";
    75.     cin.ignore(1);
    76.     cin.get(dantoc,10);
    77.     cout<<"\n Gioi tinh: ";
    78.     cin.ignore(1);
    79.     cin.get(gioitinh,4);
    80.     cout<<"\n Ton giao: ";
    81.     cin.ignore(1);
    82.     cin.get(tongiao,20);
    83.     cout<<"\n So chung minh nhan dan:\t";
    84.     cin>>cmnd;
    85.     cout<<"\n Nghe nghiep: ";
    86.     cin.ignore(1);
    87.     cin.get(nghenghiep,40);
    88. }
    89. //----------------------------------------------
    90. void nhankhau::nhap1()
    91. {
    92.     cout<<"\nTen: ";
    93.     cin.ignore(1);
    94.     cin.get(name,25);
    95. }
    96. //-----------------------------------------------
    97. void nhankhau::xuat()
    98. {
    99.   cout<<"\n Ten:"<<name<<"\n Quan he: "<<quanhe
    100.   <<"\n\t Ngay/thang/nam sinh:\t"<<birthday<<"\n\tQue quan: "<<que
    101.   <<"\n\tDan toc: "<<dantoc<<"\n\tGioi tinh: "<<gioitinh
    102.   <<"\n\tTon giao: "<<tongiao<<"\n\tSo chung minh nhan dan:\t"<<cmnd
    103.   <<"\n\tNghe nghiep: "<<nghenghiep;
    104. }
    105. //-------------------------------------------------
    106. int nhankhau::operator !=(nhankhau k)
    107. {
    108.     return (strcmp(name,k.name)!=0);
    109. }
    110. //==============================================================================
    111. void shkhau::input()
    112. {
    113.     cout<<"\n So nhan khau: ";
    114.     cin>>n;
    115.     for(int i=1;i<=n;i++)
    116.     {
    117.         cout<<"\nThanh vien "<<i<<endl;
    118.         nk[i].nhap();
    119.     }
    120. }
    121. //-------------------------------------------------
    122. void shkhau::input1()
    123. {
    124.     cout<<"\nChu ho: ";
    125.    cin.ignore(1);
    126.    cin.get(ten_ch,25);
    127. }
    128. //------------------------------------------------
    129. void shkhau::output()
    130. {
    131.     for(int i=1;i<=n;i++)
    132.     {
    133.         cout<<"\n"<<i<<"."<<endl;
    134.         nk[i].xuat();
    135.     }
    136. }
    137. //--------------------------------------------------
    138. int shkhau::operator !=(shkhau x)
    139. {
    140.     return (strcmp(ten_ch,x.ten_ch)!=0);
    141. }
    142. //--------------------------------------------------
    143. void shkhau::them(nhankhau k)
    144. {
    145.     cout<<"\nThong tin nhan khau moi:\n";
    146.    k.nhap();
    147.     n+=1;
    148.     nk[n]=k;
    149. }
    150. //--------------------------------------------------
    151. int shkhau::vitri(nhankhau k)
    152. {
    153.     int p = 1;
    154.     while(p<=n&&nk[p]!=k)
    155.         p++;
    156.     if(p<=n)
    157.         return p;
    158. }
    159. //----------------------------------------------------
    160. void shkhau::xoa(nhankhau k)
    161. {
    162.     cout<<"\Nhan khau muon cat khau:\n";
    163.    k.nhap1();
    164.     int p = vitri(k);
    165.     for(int i = p+1;i<=n;i++)
    166.         nk[i-1] = nk[i];
    167.     n-=1;
    168. }
    169. void shkhau::timkiem(nhankhau k)
    170. {
    171.     cout<<"\nNhan khau muon lay thong tin:\n";
    172.    k.nhap1();
    173.     int p = vitri(k);
    174.    for(int i = 1;i<=n;i++)
    175.     if(i==p)
    176.         nk[i].xuat();
    177. }
    178. //==============================================================================
    179. void qlhk::setdata()
    180. {
    181.     cout<<"\nTong so so ho khau: "; cin>>maso;
    182.     for(int i = 1;i<=maso;i++)
    183.     {
    184.         cout<<"\nMa so: "<<i<<endl;
    185.       hk[i].input1();
    186.         hk[i].input();
    187.     }
    188. }
    189. //---------------------------------------------------
    190. void qlhk::print()
    191. {
    192.     for(int i = 1;i<=maso;i++)
    193.    {
    194.     cout<<endl<<"Ma so: "<<i;
    195.         hk[i].output();
    196.    }
    197. }
    198. //-----------------------------------------------------
    199. void qlhk::them_shk(shkhau x)
    200. {
    201.     maso++;
    202.    hk[maso]=x;                                    
    203.    cout<<"\nXuat:\n";
    204.    print();
    205. }
    206. //-----------------------------------------------------
    207. int qlhk::vitri_shk(shkhau x)
    208. {
    209.     int p;
    210.    while(p<=maso&&hk[p]!=x)
    211.     p++;
    212.    if(p<=maso)
    213.     return p;
    214. }
    215. //------------------------------------------------------
    216. void qlhk::xoa_shk(shkhau x)             //Hàm xoa_shk này không biết lỗi ở đâu
    217. {           //chỉ xóa được shk đàu tiên là đúng thôi                      
    218.     int p;             //còn mấy sổ khác không đúng
    219.    p = vitri_shk(x);
    220.    for(int i = p+1;i<=maso;i++)
    221.     hk[i-1] = hk[i];
    222.    maso--;
    223.    cout<<"\nXuat:\n";
    224.    print();
    225. }
    226. //-------------------------------------------------------
    227. void qlhk::timkiem_shk(shkhau x)
    228. {
    229.     int p=vitri_shk(x);
    230.    for(int i = 1;i<=maso;i++)
    231.     if(i==p)
    232.         hk[i].output();
    233. }
    234. //-------------------------------------------------------
    235. void qlhk::them_nk(shkhau x)
    236. {
    237.     nhankhau k;
    238.     int p = vitri_shk(x);
    239.    for(int i = 1;i<=maso;i++)
    240.     if(i==p)
    241.         hk[i].them(k);
    242.    print();
    243. }
    244. //--------------------------------------------------------
    245. void qlhk::xoa_nk(shkhau x)      
    246. {                                        
    247.     nhankhau k;                
    248.     int p = vitri_shk(x);
    249.    for(int i = 1;i<=maso;i++)
    250.     if(i==p)
    251.         hk[i].xoa(k);
    252.    print();
    253. }
    254. void qlhk::timkiem_nk(shkhau x)
    255. {
    256.     nhankhau k;
    257.    int p = vitri_shk(x);
    258.    for(int i = 1;i<=maso;i++)
    259.     if(i==p)
    260.         hk[i].timkiem(k);
    261. }
    262. //==============================================================================
    263.  
    264. void main()
    265. {
    266.     clrscr();
    267.     qlhk vungcao;
    268.    shkhau A;
    269.     vungcao.setdata();
    270.     vungcao.print();
    271.    cout<<"\nHO GIA DINH CHUYEN DEN:\n";
    272.    A.input1();
    273.     A.input();
    274.     vungcao.them_shk(A);
    275.    cout<<"\nLAY THONG TIN MOT HO GIA DINH:\n";
    276.    A.input1();
    277.    vungcao.timkiem_shk(A);
    278.    cout<<"\nTHEM MOT NHAN KHAU MOI:\n";
    279.    cout<<"\nHo gia dinh co nhan khau moi:\n";
    280.    A.input1();
    281.    vungcao.them_nk(A);
    282.    cout<<"\nXOA MOT NHAN KHAU (CHET HOAC CHUYEN DI NOI KHAC):\n";
    283.     cout<<"\nHo gia dinh cat nhan khau:\n";
    284.    A.input1();
    285.    vungcao.xoa_nk(A);
    286.    cout<<"\nLAY THONG TIN MOT NHAN KHAU: \n";
    287.     cout<<"\nHo gia dinh co nhan khau muon lay thong tin:\n";
    288.    A.input1();
    289.    vungcao.timkiem_nk(A);
    290.    getch();
    291. }

    ************************
    Viết hàm xóa trong main()

    C++ Code:
    1. cout<<"\nHO GIA DINH CHUYEN DI: \n";
    2.    A.input1();
    3.    vungcao.xoa_shk(A);
    ***************************
    Long cảm ơn trước nha!
    Long

  2. #2
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Đã được chỉnh sửa lần cuối bởi thienthan34 : 22-11-2008 lúc 03:11 PM.
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  3. #3
    No Avatar
    pen&pen Khách

    Hay nhở ! ai develope đó hả anh hai? Đưa lên đụng diễn đàn rồi!
    Khi nào xong nhớ mail cho đệ với nha. Đệ vẫn chưa làm xong đâu! Thanks!

  4. #4
    Ngày gia nhập
    11 2008
    Nơi ở
    Quảng Ngãi
    Bài viết
    0

    Trích dẫn Nguyên bản được gửi bởi thienthan34 Xem bài viết
    Cái đó củ rich rồi mà. Bài này mới hơn chứ.
    Bạn ghé qua sao không góp ý giùm mình tý , mình rất cần đó! Cảm ơn nha
    Long

  5. #5
    Ngày gia nhập
    11 2008
    Nơi ở
    Quảng Ngãi
    Bài viết
    0

    Sao không ai giúp mình hết trơn vậy ta?
    Oaoaoaoao.....!
    Long

  6. #6
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mặc định [ Solved ]Hàm main sổ hộ khẩu!

    Sorry tác giả của đoạn code trên:

    Tác giả bài viết này có "mối thù bị cướp bồ với C++"

    - Cách đặt tên hàm đảm bảo sáng mai ngủ dậy không biết tối qua code gì
    - sao không dùng operator << hay >> mà lại ngồi code tên hàm: nhap(), nhap1(), print gì gì đó
    nếu không đọc qua code class đảm bảo chẳng ai hiểu nhap nó làm gì và nhap1 nó làm gì


    Còn câu hỏi của chủ topic là vì sao sai: đơn giản vì gọi không đúng thứ tự. còn vì sao thì mình chưa test.

  7. #7
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    - Người ta nói đừng bao giờ chép code nếu không hiểu đoạn đó làm gì dù cho nó có chạy đúng. Ghi nhớ câu này đi cậu !
    - Có sữa cho cậu cậu cũng có biết nó chạy thế nào đâu. Tập viết những đoạn nhỏ, chạy đúng, hiểu kĩ rồi hãy viết cho nhiều. Code có dài cả ngàn dòng cũng chưa hẳn là code tốt. Với lại chưa đọc kĩ lý thuyết thì đừng nên code làm gì, cái thời gian tìm lỗi nó còn nhiều gấp 100 lần thời gian đọc lý thuyết.

  8. #8
    Ngày gia nhập
    04 2008
    Nơi ở
    HCMC
    Bài viết
    251

    Quả là những lời góp ý quá hay.
    Thêm 1 ít:
    Nên đặt tên hàm nói lên mục đích sử dụng hàm.Sẽ giúp bạn nhớ mình đã làm ji.
    Và người khác đọc code bạn sẽ dễ dàng hơn.
    C++ Code:
    1. for(;;){cout<<"Busy"<<endl;}
    2. system("cls");
    Hãy ủng hộ cho quỹ phát triển cộng đồng C Việt
    http://congdongcviet.com/quyphattrien-congdongcviet.cpp

  9. #9
    Ngày gia nhập
    03 2008
    Nơi ở
    Đà Nẵng city
    Bài viết
    40

    Thêm 1 ít nữa : CT dịch sẽ bỏ qua những khoảng trắng dư thừa
    vì vậy cố gắng tận dụng phím tab + space để trình bày, thêm các chú thích ở đầu các đoạn code lớn để giúp người đọc dễ hiểu, mặc khác nếu 1 time sau, mình mở ra còn biết mình đã code cái ji, chưa tính j` đến người khác, cả mình mà ko hiểu thi nguy to )

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

  1. phân biệt void main và int main. Giúp em
    Gửi bởi tuanvu_n trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 19
    Bài viết cuối: 19-08-2014, 12:02 PM
  2. Kỹ thuật C Sự khác nhau giữa khai báo void main(), int main(void) và int main(int argv, char *argc[])?
    Gửi bởi v_huster38 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-11-2013, 12:10 PM
  3. Kỹ thuật C Cần giúp về int main() và void main()
    Gửi bởi sibach trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 24-07-2012, 12:03 PM
  4. Cách khắc phục lỗi "undefined symbol main in module win main"?
    Gửi bởi trungthanhz trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 28-04-2011, 09:59 AM
  5. Lập trình C++ cách sử dụng hàm (int main, void main) trong C++?
    Gửi bởi DaiNam01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 15-01-2011, 10:44 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