Giúp đỡ code quản lý sinh viên

#Lỗi : Sau khi m khai báo được các cấu trúc Struct. M định nghĩa các thành viên trong struct với hàm int . Một lỗi đó là không thể định nghĩa cho thành viên đó.

Đây là Code C++: https://codeshare.io/8pyMQe của mình viết

Với đề bài :

Viết chương trình thực hiện các chức năng sau:

  1. Nhập dữ liệu cho các file nhị phân:
  • SV.BIN chứa thông tin về: Mã số sinh viên, Họ đệm và Tên sinh viên, Giới tính, Ngày sinh
  • HP.BIN chứa thông tinvề Mã học phần, Tên môn học, Số tín chỉ
  • DIEMTHI.BIN chứa thông tin: Mã học phần, Mã số sinh viên, Điểm học phần
  1. Bổ sung, Xóa, Sửa chữa dữ liệu trong 3 file trên
    Các thao tác cập nhật 3 file trên cần đảm bảo yêu cầu:
  • Không có 2 bản ghi nào trong SV.BIN giống nhau trên Mã số sinh viên
  • Không có 2 bản ghi nào trong HP.BIN giống nhau trên Mã học phần
  • Không có 2 bản ghi nào trong DIEMTHI.BIN đồng thời giống nhau trên Mã học phần và Mã số sinh viên.
  • Cập nhật file DIEMTHI.BIN sau file SV.BIN và HP.BIN sao cho: Mọi mã học phần trong file DIEMTHI phải là một mã học phần trong file HP; Mọi Mã sinh viên trong file DIEMTHI phải là một Mã sinh viên trong file SV.
  • Ngày sinh được nhập vào theo đúng định dạng ngày tháng
  • Điểm học phần là một số thực gồm 1 chữ số sau dấu phẩy, thuộc [0…10] và lẻ đến 0,5 (thang điểm 10)
  1. Tính điểm trung bình chung tích lũy theo thang điểm 4 của từng sinh viên và ghi vào file nhị phân: Mã sinh viên, Điểm trung bình tích lũy (lấy đến 2 chữ số sau dấu phẩy)
  2. Nhập vào mã học phần, hiển thị danh sách gồm mã số, họ tên của những sinh viên không đạt học phần này (điểm <4)
  3. Nhập vào mã sinh viên, hiển thị danh sách các học phần mà sinh viên này chưa đạt
  4. Nhập vào mã sinh viên, hiển thị điểm trung bình chung tích lũy của sinh viên

Bạn muốn giúp đỡ điều gì?

3 Likes

Bạn giúp k fix mã code trên. Sau khai báo struct m khai báo hàm main ra . Và định nghĩa cho cấu trúc đó những nó báo lỗi kh được khai báo trong phạm vi

Bạn up hàm main() của bạn lên đây luôn đi.

#include <stdio.h>
#include <conio.h>
#include <string.h>
typedef struct sv     // DINH NGHIA CAU TRUC SINH VIEN 
{
	char masv[10];
	char fristname[10];
	char name[10];
	char gt;
	struct brithday
	{
		int date;
		int month;
		int year;
	};
};
typedef struct hp   // DINH NGHIA CAU TRUC MON HOC 
{
	char MaHP[10];
	char HP[10];
	int TC;
};
typedef struct diemthi
{
        char MaHP[10];
        char masv[10];
        float diem;
};
typedef struct sinhvien{

		FILE *pvsv;
		FILE *pvhp;
		FILE *pvd;
		sv dlsv(sv a);
		hp dlhp(hp b);
		diemthi dld(diemthi c);
};
////////////--------------
int k=1;
     sv a;
     FILE pvsv=fopen("SV.txt","wb");
          if(pvsv=forpen ("SV.BIN","wb")=NULL)
     printf(" Khong tao duoc File SV.BIN ");
else 
{
while(k)
{
      printf(" Nhap vao cac sinh vien can quan li vao:");
      printf(" Ten sinh vien la: ");
          gets(a.name);
 if(a.name[0]=='\0')
 break;
      a=dlsv(a);
        fwrite(&a,sizeof(sv),1,pvsv);
};
    fclose(fpt);
};
};
      void HP.BIN()
{
int k=1;
     hp b;
     pvhp=fopen("HP.BIN","wb");
if(pvhp=NULL)
     printf(" Khong tao duoc File HP.BIN ");
else 
{
while(k)
{
     printf(" Nhap vao cac hoc phan:");
     printf(" Ten mon hoc la: ");
         gets(b.HP);
if(b.HP[0]=='\0')
break;
     b=dlhp(b);
      fwrite(&b,sizeof(hp),1,pvhp);
}
fclose(fpt);
}
}
void DIEMTHI.BIN()
{
int k=1;
     diemthi c;
     pvd=fopen("DIEMTHI.BIN","wb");
if(pvd=NULL)
     printf(" Khong tao duoc File DIEMTHI.BIN ");
else 
{
while(k)
{
     printf(" Nhap vao cac hoc phan:");
     printf(" Ten mon hoc la: ");
          gets(b.HP);
if(c.MaHP[0]=='\0')
break;
     c=dld(c);
     fwrite(&c,sizeof(diemthi),1,pvd);
}
fclose(fpt);
}
}  
sv dlsv(sv a)
{               printf(" Ho dem sinh vien la: ");
		gets(a.fristname);
		printf(" ma so sinh vien la: ");
		gets(a.masv);
		printf(" Gioi tinh sinh vien la: ")
		gets(a.gt);
		printf(" Ngay thang nam sinh la: ");
		scanf(" %d %d %d ",&a.brithday.date,&a.brithday.month,&a.brithday.year);
                return(a);
}
	       
hp dlhp(hp b)
{
	        printf(" Ma hoc phan: ");
		gets(b.HP));
		printf(" So tin chi: ");
		scanf("%d",&b.TC);
        return(b);
diemthi dld(diemthi c)
{
	        printf(" Ma so sinh vien: ");
		gets(c.masv);
		printf(" Diem thi: ");
		scanf("%f",&c.diem);
        return(c);
}

Hàm main() của bạn đâu rồi?

typedef struct sinhvien{

		FILE *pvsv;
		FILE *pvhp;
		FILE *pvd;
		sv dlsv(sv a);
		hp dlhp(hp b);
		diemthi dld(diemthi c);
};
////////////--------------
int k=1;
     sv a;
     FILE pvsv=fopen("SV.txt","wb");
          if(pvsv=forpen ("SV.BIN","wb")=NULL)
     printf(" Khong tao duoc File SV.BIN ");
else 
{
while(k)
{
      printf(" Nhap vao cac sinh vien can quan li vao:");
      printf(" Ten sinh vien la: ");
          gets(a.name);
 if(a.name[0]=='\0')
 break;
      a=dlsv(a);
        fwrite(&a,sizeof(sv),1,pvsv);
};
    fclose(fpt);
};
};
      void HP.BIN()
{
int k=1;
     hp b;
     pvhp=fopen("HP.BIN","wb");
if(pvhp=NULL)
     printf(" Khong tao duoc File HP.BIN ");
else 
{
while(k)
{
     printf(" Nhap vao cac hoc phan:");
     printf(" Ten mon hoc la: ");
         gets(b.HP);
if(b.HP[0]=='\0')
break;
     b=dlhp(b);
      fwrite(&b,sizeof(hp),1,pvhp);
}
fclose(fpt);
}
}
void DIEMTHI.BIN()
{
int k=1;
     diemthi c;
     pvd=fopen("DIEMTHI.BIN","wb");
if(pvd=NULL)
     printf(" Khong tao duoc File DIEMTHI.BIN ");
else 
{
while(k)
{
     printf(" Nhap vao cac hoc phan:");
     printf(" Ten mon hoc la: ");
          gets(b.HP);
if(c.MaHP[0]=='\0')
break;
     c=dld(c);
     fwrite(&c,sizeof(diemthi),1,pvd);
}
fclose(fpt);
}
}  
sv dlsv(sv a)
{               printf(" Ho dem sinh vien la: ");
		gets(a.fristname);
		printf(" ma so sinh vien la: ");
		gets(a.masv);
		printf(" Gioi tinh sinh vien la: ")
		gets(a.gt);
		printf(" Ngay thang nam sinh la: ");
		scanf(" %d %d %d ",&a.brithday.date,&a.brithday.month,&a.brithday.year);
                return(a);
}
	       
hp dlhp(hp b)
{
	        printf(" Ma hoc phan: ");
		gets(b.HP));
		printf(" So tin chi: ");
		scanf("%d",&b.TC);
        return(b);
diemthi dld(diemthi c)
{
	        printf(" Ma so sinh vien: ");
		gets(c.masv);
		printf(" Diem thi: ");
		scanf("%f",&c.diem);
        return(c);
}

Đây không phải hàm main của bạn, đây là code bạn post từ link đầu tiên rồi.

1 Like
int k=1;
     sv a;
     FILE pvsv=fopen("SV.txt","wb");
          if(pvsv=forpen ("SV.BIN","wb")==NULL)
     printf(" Khong tao duoc File SV.BIN ");
//Nằm trong khai báo struct sinhvien

Chưa gì đã thấy không ổn rồi. Bạn xem lại toán tử so sánh bằng nhau trong C++ là gì.

2 Likes
int k=1;
sv a;
FILE pvsv=open(“SV.BIN”,“wb”);
if(pvsv=orpen (“SV.BIN”,“wb”)==NULL)
printf(" Khong tao duoc File SV.BIN ");

À là như này đúng kh ạ. Nhưng lỗi là nó không cho khai báo trong phạm vi FILE pvsv=open

Bạn đã học Python trước đó rồi phải không?
C/C++ và nhiều ngôn ngữ khác cần 1 điểm khởi đầu (entry point) là một hàm được chỉ định chạy đầu tiên và bắt đầu chương trình đó.
Mặc định là hàm main().

3 Likes

Đây là hàm int sau struct
mk khai báo với cấu trúc struct sinhvien

Có thể fix mã code kia cho m với được kh ạ.

Hm, tớ rất thất vọng khi cậu tự nhận đang làm bài tập lớn của BKHN đấy.
Dưới đây là một vài lời hướng dẫn tương đối nặng nề. Cậu có thể cân nhắc mở ra nếu như cậu nghĩ cậu là người cầu tiến, muốn học hỏi. Đừng mở ra nếu như cậu có tâm hồn mỏng manh yếu đuối nhé! :smile:

Cậu lên học lại môn này đi Học.

  • Tới code format tử tế cậu cũng không làm được.
  • Cậu có chắc cậu đang code Cpp không? Phần include của cậu đâu?
  • Code của cậu copy lên không có hàm main. Lúc được hỏi copy hàm main lên cậu cũng không copy nổi tên function “main”.
  • Cậu còn không mô tả nổi vấn đề của cậu. Thông điệp lỗi của cậu đâu? Cậu gặp vấn đề thực sự là gì?
    Trông mớ code cậu đưa cho bọn tớ giống một bữa sáng được tiêu hóa dở, copy paste từ các bài khác nhau, của một người chưa viết nổi một hàm main tử tế, học hành một cách cẩu thả. Cậu nghĩ cậu sẽ thành kỹ sư với cái kiểu viết code này không?
    Tớ chắc chắn cậu còn chưa build nổi bài này. Một chương trình không được build không phải là một chương trình, nên nó không có lỗi.

Bởi vì cậu “khoe” cậu đang làm Bài tập lớn của ĐHBKHN (vốn chẳng mang thêm thông tin gì cho bất cứ ai muốn giúp cậu), cậu xứng đáng nhận được những lời đánh giá khắt khe trên của tớ (với tư cách đồng môn của cậu, không phải là thành viên BQT ở đây).
Nếu cậu không bắt đầu học code tử tế, đừng hi vọng cậu tồn tại được ở ngoài kia. Tớ hay bất cứ ai, nếu cần tìm kỹ sư, cũng sẽ không bao giờ ngó tới kiểu kỹ sư dốt nát tới mức này, trừ khi tớ/bất cứ ai không quan tâm tới business hoạt động hay không.
Và cậu cũng nên thôi cái trò lên trên mạng nhờ người khác làm hộ bài tập đi. Nó là đường ngắn nhất để biến cậu trở thành một kẻ thất bại (và cậu đang là kẻ thất bại). Với thái độ học hỏi đó, đừng hi vọng cậu kiếm được công việc kỹ sư tử tế quá 5 triệu 1 tháng, cùng lắm cậu chỉ đi chạy grab và show off với mấy em năm nhất rằng mình đã từng học đại học BKHN thôi.
Cậu sẽ không dám ngẩng mặt lên nhìn bất cứ ai, từ gia đình, tới bạn bè, nếu cậu còn tiếp tục kiểu học hành này.

9 Likes

Cảm ơn bạn ! Mình đã đọc và hiểu. Chúc bạn vui vẻ trong cuộc sống
Chào bạn !

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