Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 26 kết quả

Đề tài: Lỗi chương trình quản lý sinh viên, giúp mình sửa lỗi

  1. #1
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Mặc định Lỗi chương trình quản lý sinh viên, giúp mình sửa lỗi

    Mình đang làm một bài tập về quản lý Sinh viên:
    Bài tập có cấu trúc thế này: Có một lớp học trong đó có nhiều sinh viên và nhiều môn học, mỗi sinh viên lại gồm mã sinh viên và bảng điểm của mình.
    Viết chương trình quản lý lớp học đó gồm các phương thức như nhập thêm môn học, nhập thêm sinh viên , xóa sinh viên, cập nhật điểm của sinh viên.
    Mình làm bị lỗi 2 phần đó là phần nhập thêm môn học và phần nhập thêm sinh viên.
    Mã nguồn và file chạy mình up theo đính kèm. Mong các bạn chỉ ra lỗi sai dùm mình. Và ADT của bài này,
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi iamvtn : 29-09-2007 lúc 06:18 PM.

  2. #2
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Để tiện theo dõi mình up cả mã nguồn lên.
    File Môn hoc.h
    PHP Code:
    #ifndef monhoc_h
    #define monhoc_h
    #include <iostream.h>
    #include <stdio.h>
    #include <conio.h>
    #include <fstream.h>
    #include <stdlib.h>
    class MonHoc
    {
        private:
           
    char ten[30],ma[10];
          
    float diem;
       public:
           
    MonHoc()
          {
              for(
    int i 0;30;i++)
                  
    ten[i] = NULL;
             for(
    int i 0;10;i++)
                 
    ma[i] = NULL;
             
    diem 0;
          }
          
    void setmonhoc(char ma_[],char ten_[],float diem_);
          
    void setma(char ma_[]);
          
    void setten(char ten_[]);
          
    void setdiem(float diem_);
          
    float getdiem();
          
    char*getten();
          
    char *getma();
          
    friend ostreamoperator<<( ostreamcout,MonHoca);
          
    friend istreamoperator >>(istreamcin ,MonHoca);
          
    MonHoc operator =(MonHoca)
          {
              
    strcpy(ten,a.ten);
             
    strcpy(ma,a.ma);
             
    diem a.diem;
             return *
    this;
          }

    };

    void MonHoc::setmonhoc(char ma_[],char ten_[],float diem_)
    {
        
    strcpy(ten,ten_);
        
    strcpy(ma,ma_);
        
    diem diem_;
    }
    void MonHoc::setma(char ma_[])
    {
        
    strcpy(ma,ma_);
    }
    void MonHoc::setten(char ten_[])
    {
        
    strcpy(ten,ten_);
    }
    void MonHoc::setdiem(float diem_)
    {
        
    diem diem_;
    }
    float MonHoc::getdiem()
    {
        return 
    diem;
    }
    charMonHoc::getten()
    {
        return 
    ten;
    }
    charMonHoc::getma()
    {
        return 
    ma;
    }
    istreamoperator >>(istreamcin ,MonHoca)
    {
       
    cin>>a.diem;
       return 
    cin;
    }
    ostreamoperator<<(ostreamcout,MonHoca)
    {
        
    cout<<"Ten mon: "<<a.ten<<"   Ma mon: "<<a.ma<<"   Diem: "<<a.diem<<endl;
       return 
    cout;
    }
    #endif 
    Đã được chỉnh sửa lần cuối bởi iamvtn : 29-09-2007 lúc 10:09 PM.

  3. #3
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    File bảng điểm.
    PHP Code:
    #ifndef bangdiem_h
    #define bangdiem_h
    #include "monhoc.h"

    class BangDiem
    {
          private:
           
    MonHoc mh[20];
          
    int somon;
       public:
           
    BangDiem()
          {
               
    somon 0;
          }
          ~
    BangDiem()
          {
               
    delete mh;
                
    somon 0;
          }
          
    BangDiem(BangDiem &a)
          {
               
    somon a.somon;
             for(
    int i 0;somon;i++)
                 
    mh[i] = a.mh[i];
          }
          
    void chenmon(MonHoc a);
          
    void xoamon(char ma[]);
          
    void capnhatdiem(char ma[],float diem_);
          
    MonHoc laythongtin(char ma[]);
          
    friend ostreamoperator <<( ostreamcout,BangDiema);
          
    friend istreamoperator >>(istreamcinBangDiema);
          
    BangDiem operator = (BangDiem &a)
          {
              
    somon a.somon;
              for(
    int i 0;somon;i++)
             {
                 
    mh[i] = a.mh[i];
             }
             return *
    this;
          }
    };
    istreamoperator >>(istreamcinBangDiema)
    {
        
    int z 0;
        
    ifstream doc("monhoc.Dat",ios::binary);
       if(
    doc.fail())
           
    cout<<"khong ket noi dc voi file ";
       else
       {
          
    MonHoc d;
          while(
    doc.read((char*)&d,sizeof d))
          {
              
    a.mh[z].setma(d.getma());
             
    a.mh[z].setten(d.getten());z++;
          }
       }
       
    doc.close();
       
    a.somon z;
        for(
    int i 0;z;i++)
        {
           
    cout<<"nhap diem cho mon "<<a.mh[i].getten();
          
    cout<<"    co ma la "<<a.mh[i].getma()<<"  ";
          
    cin>>a.mh[i];
          
    cout<<endl;
       }
        return 
    cin;
    }
    ostreamoperator <<( ostreamcout,BangDiem &a)
    {
        for(
    int i 0;a.somon;i++)
       {
           
    cout<<a.mh[i];
       }
       return 
    cout;
    }
    void BangDiem::chenmon(MonHoc a)
    {
        
    bool z;
        for(
    int i=0;i<somon;i++)
       {
           if(
    a.getma() == mh[i].getma())
               
    false;
       }
       if(
    == true)
       {
           
    somon somon++;
           
    mh[somon++] = a;
       }
    }
    void BangDiem::xoamon(char ma[])     // 1 2 3 4 ma 6 7
    {
         for(
    int i 0;somon;i++)
       {
            if(
    strcmp(mh[i].getma(),ma) == 0)
          {
               for(
    int j i;somon;j++)
                  
    mh[j] = mh[j+1];
             
    somon --;
          }
       }
    }
    void BangDiem::capnhatdiem(char ma[],float diem_)
    {
            for(
    int i 0;somon;i++)
          {
              if(
    strcmp(ma,mh[i].getma()) == 0)
                 
    mh[i].setdiem(diem_);
          }
    }
    MonHoc BangDiem::laythongtin(char ma[])
    {
         for(
    int i 0;somon;i++)
       {
           if(
    strcmp(ma,mh[i].getma()) == 0)
                    return 
    mh[i];
       }
    }
    #endif 
    Đã được chỉnh sửa lần cuối bởi iamvtn : 29-09-2007 lúc 06:13 PM.

  4. #4
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    File sinh viên.h
    PHP Code:
    #ifndef sinhvien_h
    #define sinhvien_h
    #include "bangdiem.h"

    class SinhVien
    {
        private:
            
    char ten[30];
           
    char ma[10];
          
    BangDiem bd;
       public:
           
    SinhVien()
          {
               for(
    int i 0;30;i++)
                    
    ten[i] = NULL;
             for(
    int i 0;0;i++)
                 
    ma[i] = NULL;
          }
          ~
    SinhVien()
          {
               
    delete []ten;
             
    delete []ma;
          }
          
    char*getma();
          
    chargetten();
          
    BangDiem getbang();

          
    void capnhatdiem(char ma_[],float diem_);
          
    void laythongtin(char ma_[]);
          
    friend ostreamoperator<<(ostreamcout,SinhViena);
           
    friend istreamoperator>>(istreamcin,SinhViena);
    };
    istreamoperator>>(istreamcin,SinhViena)
    {
          
    cout<<"nhap ten sinh vien ";
       
    gets(a.ten);
       
    cout<<"nhap ma ";
       
    gets(a.ma);
        
    cin>>a.bd;
       return 
    cin;
    }
    ostreamoperator<<(ostreamcout,SinhViena)
    {

        
    cout<<"\nTen sinh vien  "<<a.ten;
          
    cout<<" Ma: "<<a.ma<<endl;
        
    cout<<a.bd;
       return 
    cout;
    }
    BangDiem SinhVien::getbang()
    {
         return 
    bd;
    }
    charSinhVien::getma()
    {
         return 
    ma;
    }
    charSinhVien::getten()
    {
         return 
    ten;
    }
    void SinhVien::laythongtin(char ma_[])
    {
       
    MonHoc a bd.laythongtin(ma_);
       
    cout<<a;
    }
    void SinhVien::capnhatdiem(char ma_[],float diem_)
    {
         
    bd.capnhatdiem(ma_,diem_);
    }
    #endif 
    Đã được chỉnh sửa lần cuối bởi iamvtn : 29-09-2007 lúc 06:13 PM.

  5. #5
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    File lớp học.h
    PHP Code:
    #ifndef lophoc_h
    #define lophoc_h
    #include "sinhvien.h"

    class LopHoc
    {
       private:
            
    SinhVien sv[50];
               
    int sosv;
       public:
           
    LopHoc()
          { 
    sosv 0; }
          ~
    LopHoc()
          { 
    delete []svsosv 0; }
          
    void themmon(MonHoc mh);
          
    void capnhatmon(char masv[],char mamh[],float diem);
          
    void themsinhvien(SinhVien a);
          
    void xoasv(char ma[]);
          
    void ghitenmon();
          
    friend ostreamoperator<<(ostreamcout,LopHoclh);
          
    friend istreamoperator>>(istreamcin ,LopHoclh);
    };
    istreamoperator>>(istreamcin,LopHoclh)
    {
        
    cout<<" Nhap so luong hoc sinh trong lop ";
       
    cin>>lh.sosv;
       for(
    int i 0;lh.sosv;i++)
       {
           
    cout<<"sinh vien thu "<<(i+1)<<endl;
          
    cin>>lh.sv[i];
       }
       return 
    cin;
    }
    ostreamoperator<<(ostreamcout,LopHoclh)
    {
         
    cout<<"Danh sach cua lop hien gio gom co "<<lh.sosv<<"  sinhvien "<<endl;
       for(
    int i 0;lh.sosv;i++)
       {
           
    cout<<lh.sv[i];
       }
       return 
    cout;
    }
    void LopHoc::xoasv(char ma[])
    {
         for(
    int i 0;sosv;i++)
       {
            if(
    strcmp(sv[i].getma(),ma)==0)
          {
              for(
    int j i;sosv;j++)
                   
    sv[j] = sv[j+1];
             
    sosv--;
          }
       }
    }
    void LopHoc::themsinhvien(SinhVien a)
    {
        
    bool co=true;
        for(
    int i 0;sosv;i++)
        {
            if(
    strcmp(sv[i].getma(),a.getma())==0)
                 
    co=false;
        }
        if(
    co)
            
    sv[sosv++] = a;
    }
    void LopHoc::capnhatmon(char masv[],char mamh[],float diem)
    {
        for(
    int i=0;i<sosv;i++)
       {
           if(
    strcmp(sv[i].getma(),masv)==0)
              
    sv[i].capnhatdiem(mamh,diem);
       }
    }
    void LopHoc::themmon(MonHoc mh)
    {
         for(
    int i 0;sosv;i++)
       {
           
    sv[i].getbang().chenmon(mh);
       }
    }
    void LopHoc::ghitenmon()
    {
        
    ofstream ghi("Monhoc.Dat",ios::binary|ios::app);
        if(
    ghi.fail())
        {
            
    cout<<"\nkhong ket noi dc voi file "<<endl;
        }
        else
        {
            
    MonHoc a;
            
    char name[20],ma[20];
            
    int n;
            
    cout<<"Moi ban Nhap so luong cac mon cua lop ";
            
    cin>>n;
            for(
    int i 0;n;i++)
            {
                
    cout<<"nhap mon thu "<<(1+i)<<endl<<endl;
                
    cout<<"\t ten mon ";
                
    gets(name);
                
    cout<<"\t ma mon ";
                
    gets(ma);
                
    a.setmonhoc(ma,name,0);
                
    ghi.write((char*) &asizeof a);
            }
            
    ghi.close();
        }
    }
    #endif 
    Đã được chỉnh sửa lần cuối bởi iamvtn : 29-09-2007 lúc 06:13 PM.

  6. #6
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Mặc định Lỗi chương trình quản lý sinh viên, giúp mình sửa lỗi

    Cuối cùng làm hàm main()
    PHP Code:
    #include "lophoc.h"
    int menu(LopHoc &a);
    void save(LopHoc &a)
    {
         
    ofstream ghi("lophoc.dat",ios::binary);
         if(
    ghi.fail())
             
    cout<<"khong ket noi dc voi file "<<endl;
         else
         {
             
    ghi.write((char*)&a,sizeof a);
         }
         
    ghi.close();
    }
    void xoa(LopHoc &a)
    {
        
    char ma[200];
        
    cout<<"\tban muon xoa sinh vien co ma la ";
        
    gets(ma);
        
    a.xoasv(ma);
        
    save(a);
        
    clrscr();
        
    cout<<" Sau khi xoa "<<endl;
        
    cout<<a;

    }
    void them(LopHoc &b)
    {
        
    SinhVien a;
       
    cout<<"nhap du lieu cho sinh vien "<<endl;
       
    cin>>a;
       
    b.themsinhvien(a);
       
    system("cls");
       
    save(b);
       
    cout<<"Sau khi them danh sach ta duoc "<<endl;
       
    cout<<b;
    }
    void capnhat(LopHoc &a)
    {
        
    char ma[20];
       
    char masv[20];
       
    float diem;
       
    cout<<"ban muon cap nhat cho sinh vien co ma la ";
       
    gets(masv);
        
    cout<<"Moi ban nhap ma cua mon can cap nhat ";
       
    gets(ma);
       
    cout<<"Diem moi la ";
       
    cin>>diem;
       
    a.capnhatmon(masv,ma,diem);
       
    save(a);
       
    system("cls");
       
    cout<<"Sau khi cap nhat diem moi thi danh sach la "<<endl<<endl;
       
    cout<<a;
    }
    void themmon(LopHoc &b)
    {
        
    MonHoc a;
       
    char ten[20],ma[20];
       
    cout<<"Nhap ten mon ";gets(ten);
       
    cout<<"Nhap ma mon ";gets(ma);
       
    a.setmonhoc(ma,ten,0);
       
    b.themmon(a);
       
    cout<<"Sau khi cap nhat mon moi danh sach co dang "<<endl;
       
    cout<<b;
       
    save(b);

    }
    void xemdanhsach(LopHoc &a)
    {
         
    ifstream doc("lophoc.dat",ios::binary);
         if(
    doc.fail())
             
    cout<<"khong ket noi dc voi file "<<endl;
         else
             while(
    doc.read((char*)&a,sizeof a));
                 
    cout<<a;
             
    cout<<endl<<endl;
          
    int n;
             do
           {
                 
    menu(a);
            }while(
    n);
    }
    void lammoidanhsach(LopHoc &a)
    {
        
    remove("monhoc.dat");
       
    remove("lophoc.dat");
         
    a.ghitenmon();
       
    cin>>a;
       
    system("cls");
       
    cout<<a;
       
    save(a);
       
    int n;
       do
       {
           
    menu(a);
       }while(
    n);
    }
    int menu(LopHoc &a)
    {
        
    int chon;
        
    cout<<"\t\t\t1/. xoa sinh vien trong danh sach "<<endl;
        
    cout<<"\t\t\t2/. them sinh vien vao danh sach "<<endl;
       
    cout<<"\t\t\t3/. cap nhat diem cho sinh vien "<<endl;
       
    cout<<"\t\t\t4/. them mot mon vao danh sach cac mon "<<endl;
       
    cout<<"\t\t\t5/. Xem DANH SACH"<<endl;
       
    cout<<"\t\t\t6/. Lam moi DANH SACH"<<endl;
       
    cout<<"\t\t\t0/. Thoat khoi menu "<<endl;
       
    cout<<"\t\t\t\t";
       
    cin>>chon;
       switch(
    chon)
       {
           case 
    0:exit(0);
            case 
    1:xoa(a);break;
          case 
    2:them(a);break;
          case 
    3:capnhat(a);break;
             case 
    4:themmon(a);break;
          case 
    5:xemdanhsach(a);break;
          case 
    6:lammoidanhsach(a);break;
       }
       return 
    chon;
    }

    main()
    {
        
    LopHoc a;
       
    menu(a);
       
    getch();

    Đã được chỉnh sửa lần cuối bởi iamvtn : 29-09-2007 lúc 06:13 PM.

  7. #7
    Ngày gia nhập
    05 2007
    Bài viết
    4

    À này post lên luôn cái ADT đi .
    Lần trươc format usb mất rồi ,mà nữa cho hỏi cái bảng điểm nằm trong sinh viên đúng không ý nhỉ...
    Vừa ngồi viết dùng char với string để làm kiểu dữ liệu cho tên và tên môn học,mã ....
    Không xong ...Lỗi như chúa..Về kiểm tra hộ bạn cái hàm tra xem nhá...
    Cái bài viết lại lớp string của thầy ý ok

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    Xem ngữ pháp đã nhé .Đầu tiên là trong cái Monhoc.h
    Code:
    class MonHoc
    {
        private:
           char ten[30],ma[10];
          float diem;
       public:
           monhoc() ---> chỗ này không được Phải là MonHoc()
          {
              for(int i = 0;i < 30;i++)
                  ten[i] = NULL;
             for(int i = 0;i < 10;i++)
                 ma[i] = NULL;
             diem = 0;
          }
    ....
    Đã được chỉnh sửa lần cuối bởi Alviss : 29-09-2007 lúc 09:46 PM.

  9. #9
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Câu thử tải cái đính kèm về đi.
    có thể ở đây tớ viết nhầm chút đỉnh.
    Nhưng chương trình của tớ chạy tốt
    Đã được chỉnh sửa lần cuối bởi iamvtn : 29-09-2007 lúc 10:10 PM.

  10. #10
    Ngày gia nhập
    06 2007
    Nơi ở
    một nơi xa xăm...
    Bài viết
    127

    ko tính ăn gian sửa bài.Thui giờ qua phần ghi tệp lớp học nhé
    Code:
    void save(LopHoc &a)
    {
     	ofstream ghi("lophoc.dat",ios::binary); 
     	if(ghi.fail())
     		cout<<"khong ket noi dc voi file "<<endl;
     	else
     	{
     		ghi.write((char*)&a,sizeof (a));
     	}
     	ghi.close();
    }
    sửa thành
    Code:
    void save(LopHoc &a)
    {
     	ofstream ghi("lophoc.dat",ios::binary|ios::app); 
     	if(ghi.fail())
     		cout<<"khong ket noi dc voi file "<<endl;
     	else
     	{
     		ghi.write((char*)&a,sizeof (a));
     	}
     	ghi.close();
    }
    thì ghi okie.Đã test rùi.Lúc trước nó không ghi được

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

  1. Chương trình quản lí sinh viên c++ | Xem giúp mình lỗi gì??
    Gửi bởi reallylove256 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 8
    Bài viết cuối: 14-03-2014, 09:40 AM
  2. Bài tập C++ Xin giúp chương trình quản lí sinh viên bị lỗi
    Gửi bởi mihoxinh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 27-12-2013, 07:17 PM
  3. Hàm trong C Fix giúp mình bài quản lí sinh viên
    Gửi bởi nam156 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 29-01-2012, 10:17 PM
  4. Về bài quản lý sinh viên bị sai chỗ nào em không sửa được . Mong các Bro chỉ giúp !
    Gửi bởi huynhsinh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 18-07-2009, 12:03 PM
  5. Chỉ giúp mình chương trình quản lý sinh viên này với!
    Gửi bởi yoyo89312 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 31-05-2008, 09:18 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