Quiz IT (Structuring data & File)

September 10, 2012 2:43 pm C
  1. จงเขียนโปรแกรม

1.1  รับข้อมูลนักศึกษาซึ่งประกอบด้วย รหัส 7 ตัวอักษร  ชื่อไม่เกิน 20 ตัวอักษร และ คะแนนวิชา Math   Eng   ComPro  และวิชา  Bio  เป็นจำนวนเต็ม แล้วเขียนข้อมูลลงแฟ้ม student.txt จำนวน 3 คน

Host by img.kusumoto.co

#include <stdio.h>
#include <stdlib.h> //use function 'exit' 
/*
Code By Weerayut Hongsa (Kusumoto)
Software Engineering 
Prince of Songkla University
Phuket Campus
http://kusumoto.co
*/
 
//writedata.c
struct student {
	char id[7];
	char name[20];
	int math,eng,bio,compro;
	long max_cred;
};
struct student stu_rec;
int numofcus = 3; //Loop Construction
FILE *fptr;
void getstu(void);
main(void) {
	//Open File for writing
	fptr = fopen("C:\\student.txt", "wb");
	if (fptr == NULL) { //Check File in part
		printf("\n Error open file");
		exit(1); 
	}
	getstu(); //Run Function Input Data
	fclose(fptr); //Close File
	printf("\n");
	return(0);
}
void getstu(void) {
	int i;
	for(i=0; i<numofcus; i++) { //Loop Input Method
		printf("======== No. %d ==========\n",i+1);
		printf("Student id :: ");
		rewind(stdin);
		gets(stu_rec.id);
		printf("Student Name :: ");
		rewind(stdin);
		gets(stu_rec.name);
		printf("Math score :: ");
		scanf("%d", &stu_rec.math);
		printf("Eng score :: ");
		scanf("%d", &stu_rec.eng);
		printf("Compro score :: ");
		scanf("%d", &stu_rec.compro);
		printf("Bio score :: ");
		scanf("%d", &stu_rec.bio);
		fwrite(&stu_rec, sizeof(struct student), 1, fptr);
		printf("Writing Student id : %s Complete\n", stu_rec.id);
	}
 
}

1.1  อ่านข้อมูลจากแฟ้ม student.txt ที่ได้จากข้อ 2.1 ขึ้นมาแล้วแสดงทั้งหมด  พร้อมทั้งคะแนนเฉลี่ย แต่ละคน เมื่อพิมพ์ครบทุกคน ให้พิมพ์คะแนนเฉลี่ยของแต่ละวิชาในบรรทัดสุดท้าย

Host by img.kusumoto.co

#include <stdio.h>
#include <stdlib.h> //use function 'exit' 
/*
Code By Weerayut Hongsa (Kusumoto)
Software Engineering 
Prince of Songkla University
Phuket Campus
http://kusumoto.co
*/
 
//readdata.c
struct student {
	char id[7];
	char name[20];
	int math,eng,bio,compro;
	long max_cred;
};
struct student stu_rec;
int numofcus = 3; //Loop Construction
FILE *fptr;
void readstu(void);
main(void) {
	//Open File for reading
	fptr = fopen("C:\\student.txt", "rb");
	if (fptr == NULL) { //Check File in part
		printf("\n Error open file");
		exit(1); 
	}
	readstu(); //Run Function Ouput Data
	fclose(fptr); //Close File
	printf("\n");
	return(0);
}
void readstu(void) {
	float a;
		rewind(fptr);
		printf("Reading from file: student.txt\n");
		printf("\nID\tName\t\tMath\tEng\tCompro\tBio\tMean");
		do  {
			fread(&stu_rec, sizeof(struct student), 1, fptr);
			if (feof(fptr)) break;
			a = (stu_rec.math+stu_rec.eng+stu_rec.bio+stu_rec.compro)/3;
			printf("\n%s\t%s\t%d\t%d\t%d\t%d\t%.2f",stu_rec.id,stu_rec.name,stu_rec.math,stu_rec.eng,stu_rec.compro,stu_rec.bio,a);
		}while (!feof(fptr));
 
 
}