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

Đề tài: quản lí sinh viên

  1. #1
    Ngày gia nhập
    12 2008
    Bài viết
    22

    Mặc định quản lí sinh viên

    tình hình là thế này: mình có làm 1 bài tập lớn về quản lí sinh viên bằng file,nhưng mình làm mới chỉ được thế này và có nhiều chỗ khó làm mong mọi người giúp đỡ
    Code:
    #include <iostream.h>
    #include <iomanip.h>
    #include <fstream.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    #include <ctype.h>
    
    struct SV
    {
    	char *hovaten;
    	int namsinh;
    	char *masv;
    	int gioitinh;
    	int diem_CC[10],diem_KT[10],diem_Thi[10];
    	float diem_TB[10];
    };
    
    struct MON
    {	char *tenmon;
    };
    class sinhvien
    {
    	int sosv;int somon;
    	SV *sv;MON *mon;
    	char fname[30];
    	char flame[30];
    	static int size;
    	static int size2;
    public:
    	sinhvien(char *fn,char *fl);
    	void tao();
    	void xoa();
    	void them();
    	void xemsuaTT();
    	void xemsuaD();
    	void timkiemten();
    	void timkiemma();
    	void inTT();
    	void inD();
    };
    
    
    int sinhvien::size=sizeof(SV);
    int sinhvien::size2=sizeof(MON);
    //________________________________HAM KHOI TAO_________________________________///
    sinhvien::sinhvien(char *fn,char *fl)
    {
    	sosv=0;sv=NULL;somon=0;
    	strcpy(fname,fn);strcpy(flame,fl);
    	fstream g;
    	g.open(flame,ios::in|ios::ate|ios::binary);
    	if(g.bad()){g.open(flame,ios::out|ios::trunc|ios::binary);
    			cout<<endl<<endl;
    			cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    			cout<<endl<<endl<<endl;
    			cout<<"\t \t \t   NHAP SO MON TRONG HOC KY: ";
    			cin>>somon;
    			g.write((char*)(&somon),size);
    			for(int i=1;i<=somon;i++)
    			{cout<<endl<<endl;
    			cout<<"\t \t \t \t     MON"<<i<<":";cin.ignore(1);cin.getline(mon[i].tenmon,25);
    			 cout<<endl<<endl;
    			 g.write((char*)(&mon[i]),size2);g.close();
    			}
    		    }
    	else {g.seekg(0,ios::beg);g.read((char*)(&somon),size);
    				  for(int j;j<=somon;j++)
    				  {g.read((char*)(&mon[j]),size2);}
    	      g.close();
    	     }
    	fstream f;
    	f.open(fname,ios::in|ios::ate|ios::binary);
    	if (f.bad()) sosv = 0;
    	else sosv = int(f.tellg() /size);
    	f.close();
    
    
    }
    
    //________________________HAM TAO________________________________//
    void sinhvien::tao()
    {
    	fstream f;
    	int n=sosv;
    	cout<<endl<<endl;
    	cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	cout<<"\t \t \t \tTAO DANH SACH"<<endl;
    	cout<<"\t \t \t     ___________________"<<endl<<endl;
    	cout<<"\t \t \t  So sinh vien trong danh sach:"<<sosv;
    		   cout<<"\n \t \t \t \t    So mon: "<<somon;
    	if(n==0){       f.open(fname,ios::out|ios::trunc|ios::binary);
    			cout<<"\n \t \t    Chua co File,nhap so sinh vien trong lop: ";cin>>sosv;
    				for(int i=1;i<=sosv;i++)
    				{{cout<<"\nSinh Vien thu : "<<i;
    				cout<<"\nHo va ten: ";cin.ignore(1);cin.getline(sv[i].hovaten,25);
    				cout<<"Nam sinh : ";cin>>sv[i].namsinh;
    				cout<<"Ma SV: ";cin.ignore(1);cin.getline(sv[i].masv,10);
    				cout<<"Gioi Tinh(1=nam||0=Nu): ";cin>>sv[i].gioitinh;}
    					for(int j=1;j<=somon;j++)
    				 {cout<<"\nDiem mon thu: "<<j;
    				cout<<"\nDiem chuyen can: ";cin>>sv[i].diem_CC[j];
    				cout<<"Diem kiem tra: ";cin>>sv[i].diem_KT[j];
    				cout<<"Diem thi: ";cin>>sv[i].diem_Thi[j];
    				sv[i].diem_TB[j]=((0.2*sv[i].diem_CC[j]+0.8*sv[i].diem_KT[j])+sv[i].diem_Thi[j])/2;}
    				f.write((char*)(&sv[i]),size);};
    				f.close();}
    	else {cout<<"\n \t \t    FILE da co.Ban co muon tao moi khong (C/K): ";char traloi=getch();
    			if (toupper(traloi)=='C'){
    						f.open(fname,ios::out|ios::trunc|ios::binary);
    						cout<<"\n\t \t \t      Nhap so SV trong lop: ";cin>>sosv;
    				for(int i=1;i<=sosv;i++)
    				{{cout<<"\nSinh Vien thu : "<<i;
    				cout<<"\nHo va ten: ";cin.ignore(1);cin.getline(sv[i].hovaten,25);
    				cout<<"Nam sinh : ";cin>>sv[i].namsinh;
    				cout<<"Ma SV: ";cin.ignore(1);cin.getline(sv[i].masv,10);
    				cout<<"Gioi Tinh(1=nam||0=Nu): ";cin>>sv[i].gioitinh;}
    					for(int j=1;j<=somon;j++)
    				 {cout<<"\nDiem mon thu: "<<j;
    				cout<<"\nDiem chuyen can: ";cin>>sv[i].diem_CC[j];
    				cout<<"Diem kiem tra: ";cin>>sv[i].diem_KT[j];
    				cout<<"Diem thi: ";cin>>sv[i].diem_Thi[j];
    				sv[i].diem_TB[j]=((0.2*sv[i].diem_CC[j]+0.8*sv[i].diem_KT[j])+sv[i].diem_Thi[j])/2;}
    				f.write((char*)(&sv[i]),size);};
    				f.close();}
    			else {f.open(fname,ios::in|ios::ate|ios::binary);f.close();}}
    
    
    }
    //__________________________________HAM THEM_________________________//
    void sinhvien::them()
    {
    	fstream f;
    	f.open(fname,ios::in|ios::out|ios::binary);
    	f.seekg(0,ios::end);
    	int them;
    	int n=sosv;
    	cout<<endl<<endl;
    	cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	cout<<"\t \t \t  So sinh vien trong danh sach:"<<sosv<<endl;
    	cout<<"\n \t \t     Ban muon nhap them bao nhieu sinh vien: ";
    	cin>>them;
    	int i=1;
    while(i<=them)
    	{
    	cout<<"\nSinh vien thu: "<<(i+n);
    	cout<<"\nHo va ten: ";cin.ignore(1);cin.getline(sv[i+n].hovaten,25);
    	cout<<"Nam sinh : ";cin>>sv[i+n].namsinh;
    	cout<<"Ma SV: ";cin.ignore(1);cin.getline(sv[i+n].masv,10);
    	cout<<"Gioi Tinh(1=nam||0=Nu): ";cin>>sv[i+n].gioitinh;
    			for(int j=1;j<=somon;j++)
    	{cout<<"\nDiem mon thu: "<<j;
    	 cout<<"\nDiem chuyen can: ";cin>>sv[i+n].diem_CC[j];
    	 cout<<"Diem kiem tra: ";cin>>sv[i+n].diem_KT[j];
    	 cout<<"Diem thi: ";cin>>sv[i+n].diem_Thi[j];
    	 sv[i+n].diem_TB[j]=((0.2*sv[i+n].diem_CC[j]+0.8*sv[i+n].diem_KT[j])+sv[i+n].diem_Thi[j])/2;
    	}
    	f.write((char*)(&sv[i+n]),size);
    	i++;sosv++;
    	};
    	f.close();
    }
    //_______________________________HAM XOA____________________________//
    void sinhvien::xoa()
    {
    	fstream f;
    	f.open(fname,ios::in|ios::binary);
    	f.seekg(0,ios::end);
    	int n;cout<<endl<<endl;
    	cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	cout<<"\t \t \t  So sinh vien trong danh sach:"<<sosv<<endl;
    	cout<<"\n \t \t \t\   Ban can xoa sinh vien thu:";
    	cin>>n;
    	int c=sosv;
    	{for(int i=1;i<n;i++)	   {f.seekg((i-1)*size,ios::beg);
    				    f.read((char*)(&sv[i]),size);}
    	 for(int a=n+1;a<=c;a++){f.seekg((a-1)*size,ios::beg);
    				    f.read((char*)(&sv[a]),size);}
    	}
    	f.close();
    	fstream x;
    
    	x.open(fname,ios::out|ios::trunc|ios::app|ios::binary);
    	{for(int j=1;j<n;j++)	   {x.write((char*)(&sv[j]),size);}
    	 for(int b=n+1;b<=c;b++){x.write((char*)(&sv[b]),size);}
    	}
    	cout<<endl<<endl<<endl;
    	if(n<0||n>c)
    	cout<<"\t\t\t\tBan da nhap sai"<<endl<<endl<<endl;
    	else
    	{cout<<"\t               .........DA XOA SINH VIEN.........."<<endl;
    	cout<<"BAN VUI LONG THOAT KHOI CHUONG TRINH, KHOI DONG LAI DE THAY DOI DUOC THIET LAP";
    	cout<<endl<<endl;}
    	cout<<"\t \t \t An phim bat ky de quay lai";
    	getch();
    	x.close();
    
    
    
    }
    
    
    //_______________________________XEM SUA_________________________//
    void sinhvien::xemsuaTT()
    {
    	fstream f;
    	f.open(fname,ios::in|ios::out|ios::binary);
    	f.seekg(0,ios::end);
    	cout<<endl<<endl;
    	cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	cout<<"So sv: "<<sosv;
    while(1){
    	int k;
    	cout<<"\n Xem-sua thong tin sinh vien(An 0 de quay lai): ";
    	cin>>k;
    	if(k<1||k>sosv)break;
    	f.seekg((k-1)*size,ios::beg);
    	f.read((char*)(&sv[k]),size);
    	cout<<"\nHo va ten: "<<sv[k].hovaten;
    	cout<<"\nNam sinh: "<<sv[k].namsinh;
    	cout<<"\nMa SV: "<<sv[k].masv;
    	cout<<"\nGioi tinh(1=nam||=Nu): "<<sv[k].gioitinh;
    	char traloi=getch();
    		cout << "\n Ban co muon sua khong (C/K) ?";
    		cin >> traloi;
    		if (toupper(traloi) == 'C') {
    			f.seekg(-size,ios::cur);
    			cout <<"\n Ho ten: "; cin.ignore(1);cin.getline(sv[k].hovaten,25);
    			cout<<"Nam sinh: ";cin>>sv[k].namsinh;
    			cout<<"Ma SV: ";cin.ignore(1);cin.getline(sv[k].masv,10);
    			cout<<"Gioi Tinh(1=nam||0=Nu): ";cin>>sv[k].gioitinh;
    			f.write((char*)(&sv[k]),size);
    					    }
    	}
    	f.close();
    }
    
    void sinhvien::xemsuaD()
    {
    	fstream f;
    	f.open(fname,ios::in|ios::out|ios::binary);
    	f.seekg(0,ios::end);
    	cout<<endl<<endl;
    	cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	cout<<"\t \t \t  So sinh vien trong danh sach:"<<sosv<<endl;
    while(1){
    	int k;
    	cout<<"\n\t \t \tXem-Sua diem sinh vien thu(An 0 de quay lai):";
    	cin>>k;
    	if(k<1||k>sosv)break;
    	f.seekg((k-1)*size,ios::beg);
    	f.read((char*)(&sv[k]),size);
    	cout<<"\nHo va ten: "<<sv[k].hovaten;
    		for(int j=1;j<=somon;j++)
    	{cout<<"\nDiem mon thu: "<<j;
    	 cout<<"\nDiem chuyen can: "<<sv[k].diem_CC[j];
    	 cout<<"\nDiem kiem tra: "<<sv[k].diem_KT[j];
    	 cout<<"\nDiem thi: "<<sv[k].diem_Thi[j];
    	 cout<<"\nDiem TB: "<<sv[k].diem_TB[j];
    	}
    
    	char traloi=getch();
    		cout << "\n Ban co muon sua khong (C/K) ?";
    		cin >> traloi;
    		if (toupper(traloi) == 'C') {
    			f.seekg(-size,ios::cur);
    				for(int j=1;j<=somon;j++)
    			{cout<<"\nDiem mon thu: "<<j;
    			 cout<<"\nDiem chuyen can: ";cin>>sv[k].diem_CC[j];
    			 cout<<"Diem kiem tra: ";cin>>sv[k].diem_KT[j];
    			 cout<<"Diem thi: ";cin>>sv[k].diem_Thi[j];
    			 sv[k].diem_TB[j]=((0.2*sv[k].diem_CC[j]+0.8*sv[k].diem_KT[j])+sv[k].diem_Thi[j])/2;
    			}
    			f.write((char*)(&sv[k]),size);
    					    }
    	}
    	f.close();
    }
    
    //___________________________TIM KIEM______________________________________//
    void sinhvien::timkiemten()
    {
    	 fstream f;
    	 f.open(fname,ios::in|ios::binary);
    	 f.seekg(0,ios::end);
    	 char *name;
    	 cout<<endl<<endl;
    	 cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	 cout<<"\t \t \t  So sinh vien trong danh sach:"<<sosv<<endl;
    	 cout<<"\n\t \t \t       Nhap ten sinh vien: ";
    	 cin.getline(name,25);
    	 int k=1;int dem=0;
    while(k<=sosv)
    	{f.seekg((k-1)*size,ios::beg);
    	 f.read((char*)(&sv[k]),size);
    	 if(strcmp(name,sv[k].hovaten)==0)
    	 {cout<<"\n \t \t    So thu tu cua sinh vien trong danh sach la:"<<k;
    	  cout<<"\n \t \t    Ma sinh vien:"<<sv[k].masv;
    	  cout<<"\n \t \t    Gioi tinh: "<<sv[k].gioitinh;
    	  dem++;}
    	 k++;
    	};
    	cout<<endl;
    	cout<<"\t \t    >>>>Da tim thay "<<dem<<" sinh vien";
    	cout<<endl<<endl<<endl<<"\t \t \t    An phim bat ky de quay ve";
    	f.close();
    	getch();
    
    }
    
    
    void sinhvien::timkiemma()
    {
    	 fstream f;
    	 f.open(fname,ios::in|ios::ate|ios::binary);
    	 char *name;
    	  f.seekg(0,ios::end);
    	 cout<<endl<<endl;
    	 cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	 cout<<"\t \t \t  So sinh vien trong danh sach:"<<sosv<<endl;
    	 cout<<"\n\t \t \t       Nhap ma sinh vien: ";
    	 cin.getline(name,10);
    	 int k=1;int dem=0;
    while(k<=sosv)
    	{f.seekg((k-1)*size,ios::beg);
    	 f.read((char*)(&sv[k]),size);
    	 if(strcmp(name,sv[k].masv)==0) {cout<<"\n \t \t    So thu tu cua sinh vien trong danh sach la:"<<k;
    					 cout<<"\n \t \t \t          Ho va ten:"<<sv[k].hovaten;dem++;};
    	 k++;
    	};
    	cout<<endl;
    	cout<<"\t \t \t        Tim thay "<<dem<<" sinh vien";
    	cout<<endl<<endl<<endl<<"\t \t \t    An phim bat ky de quay ve";
    	f.close();
    	getch();
    	
    }
    //____________________________IN_____________________________//
    void sinhvien::inTT()
    {	fstream f;
    	f.open(fname,ios::in|ios::out|ios::binary);
    	f.seekg(0,ios::end);cout<<endl<<endl;
    	cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	cout<<"\t\t\t           SO SINH VIEN: "<<sosv<<endl;
    	cout<<"\t\t\tDANH SACH THONG TIN VE SINH VIEN:"<<"\n"<<"\n";
    	int k=1,n=sosv;
    	cout<<setw(20)<<setiosflags(ios::left)<<"HO VA TEN";
    	cout<<setw(20)<<setiosflags(ios::left)<<"   NAM SINH";
    	cout<<setw(20)<<setiosflags(ios::left)<<"     MA SV";
    	cout<<setw(20)<<setiosflags(ios::left)<<"   GIOI TINH";
    	cout<<endl<<endl;
    while(k<=n)
           {f.seekg((k-1)*size,ios::beg);
    	f.read((char*)(&sv[k]),size);
    	cout<<setw(25)<<setiosflags(ios::left)<<sv[k].hovaten;
    	cout<<setw(20)<<setiosflags(ios::left)<<sv[k].namsinh;
    	cout<<setw(22)<<setiosflags(ios::left)<<sv[k].masv;
    	cout<<setiosflags(ios::left)<<sv[k].gioitinh<<endl<<endl;
    	k++;
           }
    	cout<<endl<<endl<<endl;
    	cout<<"\t\t\t   An phim bat ky de thoat";
    	f.close();getch();
    }
    
    void sinhvien::inD()
    {	fstream f;
    	f.open(fname,ios::in|ios::out|ios::binary);
    	f.seekg(0,ios::end);cout<<endl<<endl;
    	 cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    	cout<<"\t \t               SO SINH VIEN: "<<sosv<<endl;
    	cout<<"\t \t  DANH SACH DIEM TRUNG BINH CUA SINH VIEN:"<<"\n"<<"\n";
    	int k=1,n=sosv;
    	cout<<"HO VA TEN"<<"\t"<<"MON"<<"\t"<<"     DIEM TB";
    	cout<<endl<<endl;
    while(k<=n)
           {f.seekg((k-1)*size,ios::beg);
    	f.read((char*)(&sv[k]),size);
    	cout<<sv[k].hovaten;
    		for(int j=1;j<=somon;j++)
    	{cout<<"\t \t"<<j<<"\t \t";
    	 cout<<sv[k].diem_TB[j]<<endl<<"\t \t"<<endl;
    	}
    	k++;
           }
    	cout<<endl<<endl<<endl;
    	cout<<"\t\t\t   An phim bat ky de thoat";
    	f.close();getch();
    }
    
    //____________________________________HAM MAIN_________________________________//
    void main()
    {
    	int chon,chon2,chon3,chon4;textbackground(BLACK);textcolor(2);
    	sinhvien SV("DSSV.txt","somon.txt") ;
    	while (1) {clrscr();cout<<endl<<endl;
    		cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    		cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl;
    		cout << "\n\n\t \t \t1: TAO DANH SACH SINH VIEN";
    		cout << "\n\n\t \t \t2: THEM SINH VIEN VAO DANH SACH";
    		cout << "\n\n\t \t \t3: XEM-SUA";
    		cout << "\n\n\t \t \t4 :XOA";
    		cout << "\n\n\t \t \t5 :TIM KIEM";
    		cout << "\n\n\t \t \t6 :HIEN THI";
    		cout << "\n\n\t \t \t0: KET THUC";
    		cout<<endl<<endl<<endl<<endl<<"\t \t \t          Ban chon: ";
    	chon = getch();
    	chon = chon-48;
    	clrscr();
    	if (chon == 1) SV.tao();
    	else if (chon == 2) SV.them();
    	else if(chon==3) {
    				while(1){clrscr();cout<<endl<<endl;
    					cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    					cout<<"\t \t \t \t   XEM-SUA"<<endl;
    					cout<<"\t \t \t \t ___________"<<endl<<endl;
    					cout<<"\n \n \t\t\t1.XEM-SUA THONG TIN SINH VIEN";
    					cout<<"\n \n \t\t\t2.XEM-SUA DIEM CUA SINH VIEN";
    					cout<<"\n \n \t\t\t0.QUAY LAI";
    					cout<<endl<<endl;
    					cout<<"\t \t \t\ \t    Ban chon: ";
    					chon2=getch();
    					chon2=chon2-48;
    					clrscr();
    					if(chon2==1) SV.xemsuaTT();
    					else if(chon2==2) SV.xemsuaD();
    					     else break;
    					}
    			 }
    	else if(chon==4) SV.xoa();
    	else if(chon==5) {
    				while(1){clrscr();cout<<endl<<endl;
    					cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    					cout<<"\t \t \t \t   TIM KIEM"<<endl;
    					cout<<"\t \t \t\t ____________"<<endl<<endl;
    					cout<<"\n \n \t \t\t    1.TIM KIEM THEO TEN";
    					cout<<"\n \n \t \t\t    2.TIM KIEM THEO MA SV";
    					cout<<"\n \n \t \t\t    0.QUAY LAI";
    					cout<<endl<<endl;
    					cout<<"\t \t \t\ \t    Ban chon: ";
    					chon4=getch();
    					chon4=chon4-48;
    					clrscr();
    					if(chon4==1) SV.timkiemten();
    					else if(chon4==2) SV.timkiemma();
    					     else break;
    					}
    			}
    	else if(chon==6) {
    				while(1){clrscr();cout<<endl<<endl;
    					cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    					cout<<"\n \n \t \t  \t         HIEN THI";
    					cout<<"\n \t \t \t        __________"<<endl<<endl<<endl;
    					cout<<"\n \n \t \t \t1.THONG TIN SINH VIEN";
    					cout<<"\n \n \t \t \t2.DIEM TRUNG BINH CUA SINH VIEN";
    					cout<<"\n \n \t \t \t0.QUAY LAI";
    					cout<<endl<<endl<<endl;
    					cout<<"\t \t \t \t Ban chon:";
    					chon3=getch();
    					chon3=chon3-48;
    					clrscr();
    					if(chon3==1) SV.inTT();
    					else if(chon3==2) SV.inD();
    					     else break;
    					}
    			 }
    	else break;
    		  }
    }
    ở bài mình làm mình có 1 vài thắc mắc và vài chỗ không hiểu như sau:
    + những câu lệnh bôi đỏ đáy mình vẫn chưa hiểu rõ lắm,chỉ thấy trong sách viết thế nên áp dụng thôi,chứ bản chất chưa hiểu rõ lắm,thấy mọi người bảo chỗ đó mình viết sai
    +các bạn khác xem bài mình thì bảo mình phải cấp phát bộ nhớ VD sv=new SV; hoặc tương tự thế nhưng mình không hiểu sao phải làm thế trong khi minh ko cần mà vẫn chạy ổn
    +giờ mới thấy là không ổn,trong hàm xóa của mình nếu các bạn xóa xong mà ko thóat ra mà vẫn trong chương trình để xem thông tin sinh viên thì nó sẽ in sai......Why???.....chìn vì thế ma mình phải bắt người sử dụng la nếu ma xóa thì phải thoát ra(^^! gà quá mà)
    và kòn nhiều chỗ sai sót nữa nhưng giờ tớ hỏi tạm it thế thôi
    ^^ mong mọi người giúp đỡ tớ.Thank
    Đã được chỉnh sửa lần cuối bởi Mr_BimBim : 19-12-2008 lúc 11:35 AM.

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

    ô kìa hổng ai vô đây trả lời dùm sao
    )

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

    Cậu mắc lỗi cơ bản :
    C++ Code:
    1. char *name;
    2.      cout<<endl<<endl;
    3.      cout<<"**********************   CHUONG TRINH QUAN LY SINH VIEN   **********************"<<endl<<endl<<endl;
    4.      cout<<"\t \t \t  So sinh vien trong danh sach:"<<sosv<<endl;
    5.      cout<<"\n\t \t \t       Nhap ten sinh vien: ";
    6.      cin.getline(name,25);
    char* name chỉ là con trỏ, nó không thể chưa dữ liệu khi chưa được cấp phát ! Chỉ khi cậu chạy trong dos với TC++ thì may ra -> nhưng cái này là sai !
    Đọc vào 1 chỗ này thì tui đoán các phần còn lại cậu cũng sai tương tự :
    C++ Code:
    1. struct SV
    2. {
    3.     char *hovaten; // Thằng này chỉ là con trỏ
    4.     int namsinh;
    5.     char *masv;     // Thằng này cũng vậy !
    6.     int gioitinh;
    7.     int diem_CC[10],diem_KT[10],diem_Thi[10];
    8.     float diem_TB[10];
    9. };

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

    nếu vậy thì thay bằng mảng cũng được mà
    hình như vẫn chạy ổn
    tớ thử oy
    nhưng mấy câu hỏi tớ hỏi ở trên thì tớ chưa trả lời được
    đang thấy khó hỉu quá

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    g.write((char*)(&somon),size);
    đang ôn thi,nhìn bài dài dài,hơi oải thoai nhìn qua dòng đỏ mà trả lời vậy
    cái write hay read thì chỉ có thể đọc hay viết dạng char thôi nha( không như trong C fwrite hay fread có thể chấp nhận cả unsigned char ) vì thế người ta cho thêm (char*)(&somon) để chuyển somon từ kiểu int sang kiểu char để ghi ra file thôi,tương tự với read cũng vậy

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

    Mặc định quản lí sinh viên

    g.write((char*)(&somon),size);
    Kiểu gì thì ghi cũng được cả, int ghi cũng được. Vấn đề là somon là kiểu int trong khi size là int sinhvien::size=sizeof( SV );

  7. #7
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    int sinhvien::size=sizeof(SV);
    int sinhvien::size2=sizeof(MON);
    nhìn không kỹ ,nhìn mỗi dòng đỏ thôi,cậu để size = sizeof(int)
    Kiểu gì thì ghi cũng được cả, int ghi cũng được. Vấn đề là somon là kiểu int trong khi size là int sinhvien::size=sizeof( SV );
    hì,anh nhớ nhầm thì phải
    write(const _CharT* __s, streamsize __n)

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

    Ý anh là file ở binary phải cast to char* nhưng không có nghĩa kiểu dữ liệu ghi phải là char*.
    C++ Code:
    1. int x = 5;
    2. write( reinterpret_cast< char* >( &x ), sizeof( int ) );

  9. #9
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    uhm,thì ý em cũng thế,kiểu gì thì kiểu muốn ghi ra file thì phải đưa về chuỗi

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

    Trích dẫn Nguyên bản được gửi bởi coder_gate Xem bài viết
    uhm,thì ý em cũng thế,kiểu gì thì kiểu muốn ghi ra file thì phải đưa về chuỗi
    moij người nói khó hỉu ghê

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

  1. Quản lí sinh viên bằng stack dùng danh sách liên kết. Làm sao để nhập nhiều sinh viên?
    Gửi bởi hoainamken trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 24-08-2011, 10:34 AM
  2. Bài tập quản lý sinh viên trong lập trình C#. Tìm kiếm sinh viên in ra cả danh sách?
    Gửi bởi anhduc12c5 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 24-08-2011, 08:32 AM
  3. Chương trình quản lí sinh viên viết trong visual c++ 2010. Lỗi không chạy khi in danh sách sinh viên theo năm
    Gửi bởi hikaru1015 trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 9
    Bài viết cuối: 03-06-2011, 09:31 AM
  4. Kỹ thuật C code bài tập về quản lý sinh viên. Không hiển thị đc tên với mã số sinh viên?
    Gửi bởi seudaudokt 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: 06-09-2010, 12:18 AM
  5. Chương trình quản lý sinh viên viết bằng C. Làm sao tìm kiếm sinh viên theo tên và sắp xếp?
    Gửi bởi linhdong24 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 24-06-2009, 12:53 AM

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