Thắc mắc về code quản lý lớp học

em gặp 1 số lỗi như sau ạ.
khi em thêm lớp (3) khi nhập số lớp học cần thêm nó lại tính luôn số lớp học em nhập ở (1) VD: (1) em nhập là 1 (3) em nhập là 2 thì khi chạy nó chạy tới 3 lần để em thêm mới lớp học.
Còn khi xuất ra em nếu em không thêm mới lớp học (3) thì nó xuất bình thường còn khi em thêm mới lớp học (3) thì nó chỉ xuất ra cái thêm mới không xuất ra lớp học em nhập ban đầu (1).
Em viết có hơi khó hiểu mong mọi người chỉ bảo.

#include<iostream>
#include<iomanip>
using namespace std;
#define Max 100
struct date{
	int ngay;
	int thang;
	int nam;
};
struct thongtinlophoc{
	char malophoc[5];
	char chude[30];
	char hotengv[30];
	int siso;
	date ngaybatdau;
	date ngayketthuc;
};
struct danhsach{
	int solophoc;
	thongtinlophoc danhsachlophoc[Max];
};
void nhapthongtin(thongtinlophoc &lh){
	cout << "\nNhap ma so lop hoc:";
	fflush(stdin);
	cin.getline(lh.malophoc, 6);
	cout << "\nNhap chu de:";
	fflush(stdin);
	cin.getline(lh.chude, 31);
	cout << "\nNhap ho va ten giao vien:";
	fflush(stdin);
	cin.getline(lh.hotengv, 31);
	cout << "\nNhap si so:";
	cin >> lh.siso;
	cout << "\nNhap ngay/thang/nam bat dau:";
	cin >> lh.ngaybatdau.ngay;
	cin >> lh.ngaybatdau.thang;
	cin >> lh.ngaybatdau.nam;
	cout << "\nNhap ngay/thang/nam ketthuc:";
	cin >> lh.ngayketthuc.ngay;
	cin >> lh.ngayketthuc.thang;
	cin >> lh.ngayketthuc.nam;
}
void xuatthongtin(thongtinlophoc lh){
	cout << "\nMa so lop hoc: "<<lh.malophoc;
	cout << "\nChu de: "<<lh.chude;
	cout << "\nHo va ten giao vien:"<<lh.hotengv;
	cout << "\nSi so:"<< lh.siso;
	cout << "\nNgay/thang/nam bat dau: "<<lh.ngaybatdau.ngay<<"/"<<lh.ngaybatdau.thang<<"/"<< lh.ngaybatdau.nam;
	cout << "\nNhap ngay/thang/nam ketthuc: " << lh.ngayketthuc.ngay << "/" << lh.ngayketthuc.thang << "/" << lh.ngayketthuc.nam;
}
void nhaplophoc(danhsach &list)
{
	cout << "\nNhap so lop hoc: ";
	cin >> list.solophoc;
	for (int i = 0; i < list.solophoc; i++){
		cout << "\nNhap lop hoc thu " << i + 1;
		nhapthongtin(list.danhsachlophoc[i]);
	}
}
void xuatlophoc(danhsach n)
{
	
	for (int i = 0; i < n.solophoc; i++){
		cout << "\n lop hoc thu " << i + 1;
		xuatthongtin(n.danhsachlophoc[i]);
		
	}
}
void themlophoc(danhsach &them){
	cout << "\n*************Them*************";
	int n;
	cout << "\nNhap so lop hoc can them:";
	cin >> n;
	int t = them.solophoc;
	them.solophoc += n;
	for (int i = 0; i < them.solophoc; i++){
		cout << "\nNhap lop hoc thu " << i + 1;
		nhapthongtin(them.danhsachlophoc[i]);
	}
}
/*void timkiemthongtin(danhsach list){
	int h, l;
	do{

	}
}*/
void main(){
	danhsach list;
	list.solophoc = 0;
	int n;
	do{
	do{
		cout << "\n*****************MENU******************";
		cout << "\n0. Thoat.";
		cout << "\n1. Nhap danh sach lop hoc.";
		cout << "\n2. Xuat danh sach lop hoc.";
		cout << "\n3. Them lop hoc.";
		cout << "\n4. Tim kiem thong tin lop hoc.";
		cout << "\n5. Cap nhap thong tin lop hoc.";
		cout << "\n6. Xoa lop hoc.";
		cout << "\n7. Tim so lop hoc dong nhat.";
		cout << "\nNhap lua chon:";
		cin >> n;
	} while (n < 0 && n > 8);
		switch (n)
		{
		case 1:
			nhaplophoc(list);
			break;
		case 2:
			if (list.solophoc > 0)
				xuatlophoc(list);
			else
				cout << "\nBan phai nhap danh sach lop hoc truoc khi xuat.";
			break;
		case 3:
			if (list.solophoc > 0)
			{
				themlophoc(list);
				xuatlophoc(list);
			}
			else
				cout << "\nBan phai nhap danh sach truoc khi them.";
			break;
		}
	} while (true);
	system("pause");
}

bạn quăng 1 đống code mình lười đọc lắm @.@ bạn có thể phát thảo bản mô tả code của bạn làm cái gì được không?

1 Like

Nhập

  1. Thêm lớp học
  2. Xuất danh sách lớp học
  3. Thêm mới lớp học

mà khi mình nhập 3 thì nó cứ cộng thằng sô lượng của thằng 1 vô luôn
rồi khi xuất ra thì nó chỉ xuất thằng 3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?