bạn có cách nào lấy 1 ký tự từ bàn phím ngoài getch() k
Lỗi với hàm getch()
bạn cho mình xin cái kiểu cấu trúc mà bạn cần ghi vào với
struct NgaySinh
{
public:
char ngay[3],thang[3],nam[5];
};
struct SinhVien
{
public:
int stt;
char maLop[15],maSV[20],hoTen[50];
NgaySinh ngaysinh;
float diemTB;
};
đây b
bạn muốn ghi vào cái dữ liệu vào đâu?
void action::MenuSuaDanhSach(List &l)
{
SinhVien sv;
List l1;
Init(l1);
int soSV,i;
int luachon;
string menu[]={"___Menu chinh sua ho so___","1. Tao Danh sach moi.","2. Them ho so.","3. Sua ho so."};
luachon = ShowMenu(menu,sizeof(menu)/sizeof(menu[0]));
if(luachon==0) return;
if(luachon==1||luachon==2)
{
DANHSACH:
i=1;
system("cls");
cout<<"Nhap so sinh vien: ";
cin>>soSV;
cin.ignore();
if(soSV<=0)
{
system("cls");
cout<<"Nhap sai vui long nhap lai"<<endl;
goto DANHSACH;
}
}
if(luachon==1)
{
Init(l);
}
else if (luachon==2)
{
QuickSort(l,1);
i=l.pLast->sv.stt+1;
soSV=soSV+i-1;
}
else if(luachon==3)
{
l1=TimKiem(l);
if(l1.pFirst!=NULL)
{
Node *h = l1.pFirst;
i=h->sv.stt;
soSV=i;
}
}
SUAHOSO:
for(i;i<=soSV;i++)
{
system("cls");
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl;
cout<<"Sinh vien thu: "<<i<<endl;
sv.stt=i;
cout<<"Ma lop: ";
gets(sv.maLop);
cout<<"Ma sinh vien: ";
gets(sv.maSV);
cout<<"Ho vs ten: ";
gets(sv.hoTen);
cout<<"Ngay sinh (dd/mm/yyyy): ";
NGAYSINH1:
sv.ngaysinh.ngay[0]=getch();
if(sv.ngaysinh.ngay[0]>'3'||sv.ngaysinh.ngay[0]<'0') goto NGAYSINH1;
cout<<sv.ngaysinh.ngay[0];
NGAYSINH2:
sv.ngaysinh.ngay[1]=getch();
if((int)sv.ngaysinh.ngay[1]==8)
{
system("cls");
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl;
cout<<"Sinh vien thu: "<<i<<endl;
cout<<"Ma lop: "<<sv.maLop<<endl;
cout<<"Ma sinh vien: "<<sv.maSV<<endl;
cout<<"Ho vs ten: "<<sv.hoTen<<endl;
cout<<"Ngay sinh (dd/mm/yyyy): ";
goto NGAYSINH1;
}
else if((sv.ngaysinh.ngay[0]=='3'&&(sv.ngaysinh.ngay[1]>'1'||sv.ngaysinh.ngay[1]<'0'))||(sv.ngaysinh.ngay[0]=='0'&&sv.ngaysinh.ngay[1]=='0')) goto NGAYSINH2;
cout<<sv.ngaysinh.ngay[1]<<"/";
THANGSINH1:
sv.ngaysinh.thang[0]=getch();
if((int)sv.ngaysinh.thang[0]==8)
{
system("cls");
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl;
cout<<"Sinh vien thu: "<<i<<endl;
cout<<"Ma lop: "<<sv.maLop<<endl;
cout<<"Ma sinh vien: "<<sv.maSV<<endl;
cout<<"Ho vs ten: "<<sv.hoTen<<endl;
cout<<"Ngay sinh (dd/mm/yyyy): "<<sv.ngaysinh.ngay[0];
goto NGAYSINH2;
}
else if(sv.ngaysinh.thang[0]>'1'||sv.ngaysinh.thang[0]<'0') goto THANGSINH1;
cout<<sv.ngaysinh.thang[0];
THANGSINH2:
sv.ngaysinh.thang[1]=getch();
if((int)sv.ngaysinh.thang[1]==8)
{
system("cls");
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl;
cout<<"Sinh vien thu: "<<i<<endl;
cout<<"Ma lop: "<<sv.maLop<<endl;
cout<<"Ma sinh vien: "<<sv.maSV<<endl;
cout<<"Ho vs ten: "<<sv.hoTen<<endl;
cout<<"Ngay sinh (dd/mm/yyyy): "<<sv.ngaysinh.ngay[0]<<sv.ngaysinh.ngay[1]<<"/";
goto THANGSINH1;
}
else if(sv.ngaysinh.thang[0]=='1'&&(sv.ngaysinh.thang[1]>'2'||sv.ngaysinh.thang[1]<'0')) goto THANGSINH2;
cout<<sv.ngaysinh.thang[1]<<"/";
NAMSINH1:
sv.ngaysinh.nam[0]=getch();
if((int)sv.ngaysinh.nam[0]==8)
{
system("cls");
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl;
cout<<"Sinh vien thu: "<<i<<endl;
cout<<"Ma lop: "<<sv.maLop<<endl;
cout<<"Ma sinh vien: "<<sv.maSV<<endl;
cout<<"Ho vs ten: "<<sv.hoTen<<endl;
cout<<"Ngay sinh (dd/mm/yyyy): "<<sv.ngaysinh.ngay[0]<<sv.ngaysinh.ngay[1]<<"/"<<sv.ngaysinh.thang[0];
goto THANGSINH2;
}
else if(sv.ngaysinh.nam[0]>'2'||sv.ngaysinh.nam[0]<'1') goto NAMSINH1;
cout<<sv.ngaysinh.nam[0];
NAMSINH2:
sv.ngaysinh.nam[1]=getch();
if((int)sv.ngaysinh.nam[1]==8)
{
system("cls");
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl; cout<<"Sinh vien thu: "<<i<<endl;
cout<<"Ma lop: "<<sv.maLop<<endl;
cout<<"Ma sinh vien: "<<sv.maSV<<endl;
cout<<"Ho vs ten: "<<sv.hoTen<<endl;
cout<<"Ngay sinh (dd/mm/yyyy): "<<sv.ngaysinh.ngay[0]<<sv.ngaysinh.ngay[1]<<"/"<<sv.ngaysinh.thang[0]<<sv.ngaysinh.thang[1]<<"/";
goto NAMSINH1;
}
else if(sv.ngaysinh.nam[1]>'9'||sv.ngaysinh.nam[1]<'0') goto NAMSINH2;
cout<<sv.ngaysinh.nam[1];
NAMSINH3:
sv.ngaysinh.nam[2]=getch();
if((int)sv.ngaysinh.nam[2]==8)
{
system("cls");
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl;
cout<<"Sinh vien thu: "<<i<<endl;
cout<<"Ma lop: "<<sv.maLop<<endl;
cout<<"Ma sinh vien: "<<sv.maSV<<endl;
cout<<"Ho vs ten: "<<sv.hoTen<<endl;
cout<<"Ngay sinh (dd/mm/yyyy): "<<sv.ngaysinh.ngay[0]<<sv.ngaysinh.ngay[1]<<"/"<<sv.ngaysinh.thang[0]<<sv.ngaysinh.thang[1]<<"/"<<sv.ngaysinh.nam[0]<<sv.ngaysinh.nam[1];
goto NAMSINH2;
}
else if(sv.ngaysinh.nam[2]>'9'||sv.ngaysinh.nam[2]<'0') goto NAMSINH3;
cout<<sv.ngaysinh.nam[2];
NAMSINH4:
sv.ngaysinh.nam[3]=getch();
if((int)sv.ngaysinh.nam[3]==8)
{
system("cls");
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl;
cout<<"Sinh vien thu: "<<i<<endl;
cout<<"Ma lop: "<<sv.maLop<<endl;
cout<<"Ma sinh vien: "<<sv.maSV<<endl;
cout<<"Ho vs ten: "<<sv.hoTen<<endl;
cout<<"Ngay sinh (dd/mm/yyyy): "<<sv.ngaysinh.ngay[0]<<sv.ngaysinh.ngay[1]<<"/"<<sv.ngaysinh.thang[0]<<sv.ngaysinh.thang[1]<<"/"<<sv.ngaysinh.nam[0]<<sv.ngaysinh.nam[1]<<sv.ngaysinh.nam[2];
goto NAMSINH3;
}
else if(sv.ngaysinh.nam[3]>'9'||sv.ngaysinh.nam[3]<'0') goto NAMSINH4;
cout<<sv.ngaysinh.nam[3]<<'\n';
cout<<sv.ngaysinh.ngay<<"/"<<sv.ngaysinh.thang<<"/"<<sv.ngaysinh.nam<<'\n';
NHAPDIEMTB:
cout<<"Diem trung binh tich luy: ";
cin>>sv.diemTB;
cin.ignore();
if(sv.diemTB<0||sv.diemTB>10)
{
if(luachon==1) cout<<"=================================Them moi ho so================================="<<endl;
if(luachon==2) cout<<"===================================Them ho so==================================="<<endl;
if(luachon==3) cout<<"====================================Sua ho so==================================="<<endl;
cout<<"Sinh vien thu: "<<i<<endl;
cout<<"Ma lop: "<<sv.maLop<<endl;
cout<<"Ma sinh vien: "<<sv.maSV<<endl;
cout<<"Ho vs ten: "<<sv.hoTen<<endl;
cout<<"Ngay sinh (dd/mm/yyyy): "<<sv.ngaysinh.ngay[0]<<sv.ngaysinh.ngay[1]<<"/"<<sv.ngaysinh.thang[0]<<sv.ngaysinh.thang[1]<<"/"<<sv.ngaysinh.nam[0]<<sv.ngaysinh.nam[1]<<sv.ngaysinh.nam[2];
cout<<"Diem ban vua nhap khong dung."<<endl;
goto NHAPDIEMTB;
}
strupr(sv.maLop);
ChuanHoaChinhTa(sv.hoTen);
ChuanHoaChuoiFile(sv.hoTen,' ','*');
Node *p = GetNode(sv.stt,sv.maLop,sv.maSV,sv.hoTen,sv.ngaysinh.ngay,sv.ngaysinh.thang,sv.ngaysinh.nam,sv.diemTB);
if(luachon==1||luachon==2) addLast(l,p);
else if(luachon==3)
{
for(Node *q = l.pFirst;q!=NULL;q=q->Right)
{
if(p->sv.stt==q->sv.stt)
{
hoanViNode(l,q,p);
if(q->sv.stt!=l1.pLast->sv.stt)
{
Node *h=l1.pFirst;
while(h->sv.stt!=q->sv.stt) h=h->Right;
h=h->Right;
i=h->sv.stt;
soSV=i;
goto SUAHOSO;
}
}
}
}
}
LUACHONLUUFILE:
system("cls");
cout<<"Ban co muon luu danh sach khong?<y/n>: ";
luachon=getch();
if(luachon=='y'||luachon=='Y')
{
fstream f;
f.open("data.dat",ios::out|ios::binary);
for(Node *p = l.pFirst;p!=NULL;p=p->Right)
{
f.write(reinterpret_cast<char*>(&p->sv),sizeof(SinhVien));
}
f.close();
}
else if(luachon=='n'||luachon=='N')
return ;
else goto LUACHONLUUFILE;
}
code nhập dữ liệu
ghi hết bạn ơi
f.write(reinterpret_cast<char*>(&p->sv),sizeof(SinhVien));
Trong cấu trúc của bạn, cái chỗ ngày tháng năm sinh sao không dùng kiểu int và tạo một hàm để kiểm tra tính hợp lệ của ngày sinh vậy bạn?
cin >> sv.ngaysinh.ngay[0]; cout << sv.ngaysinh.ngay[0];
Nó sẽ nhận vào ký tự đầu tiên thôi nhé, không cần dùng getch()
mình làm như trên thì lúc nhập nó đẹp mắt hơn thôi. còn cái cin 1 phần tử nó lại làm mắt cái ý định mình đang làm r
Mình nghĩ viết hàm nhập vào ngày sinh rồi kiểm tra sẽ dễ và ngắn hơn so với dùng goto.
Mình nhớ là có từng thử viết hàm này. Không dài lắm và lúc kiểm tra xong thì chỉ cần cho nó vào trước đoạn lựa chọn là xong.