FILE * optimize_database( FILE *original_db, int sorted, long total ){
	struct StudentInfo * stu[total];

	//GET USER CHOICE
	FILE *new_db = original_db;
	int choice =  get_optimize_choice();
	if( choice == 0 ){
		return original_db;
	}

	//CONDUCT USER CHOICE
	new_db = fopen( NEW_DB_FILE, "w+" );
	long stu_count = read_original_db( original_db, total, stu );
	if( choice == 1 ){
	 	if( sorted == 'n' ){
			puts( "Sorting students......" );
			sort_stu( stu, stu_count );
			sorted = 'y';
			new_db = write_new_db( original_db, new_db, sorted, stu_count, stu );
		}else{
			puts( "The students have been sorted befor; Now, I deleted removed students info." );
			new_db = write_new_db( original_db, new_db, sorted, stu_count, stu );
		}
	}else if( choice == 2 ){
		puts( "Deleting Removed students......");
		new_db = write_new_db( original_db, new_db, sorted, stu_count, stu );
		puts( "Delete Successfully" );
	}

	//RETURN NEW-DB
	printf( "\n> Press any key to continue: ");
	getchar();
	return new_db;
}
示例#2
0
int main(int argc, char *argv[])
{
	if (argc < 2) {
		printf("./a.out stufile stufile_bin\n"
				"or ./a.out stufile_bin\n");
		exit(-1);
	}
	int n;
	if (strcmp(argv[1], "stufile") == 0) {
		FILE *fp = fopen(argv[1], "r");
		if (fp == NULL) {
			perror(argv[1]);
			exit(-1);
		}
		FILE *fp_bin = fopen(argv[2], "w");
		if (fp_bin == NULL) {
			perror(argv[2]);
			exit(-1);
		}
		n = cnt_stu(fp);
#ifdef DEBUG
		printf("n = %d\n", n);
#endif
		struct STU a[n];
		rewind(fp);
		read_file(fp, a, n);
		sort_stu(a, n);
		show_stu(a, n);
		write_file_bin(fp_bin, a, n);
		fclose(fp);
		fclose(fp_bin);
	}
	else if (strcmp(argv[1], "stufile_bin") == 0) {
		FILE *fp = fopen(argv[1], "r");
		int n = read_file_bin_head(fp);
		struct STU a[n];
		read_file_bin(fp, a, n);
		show_stu(a, n);
		fclose(fp);
	}

	return 0;
}