⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sav_load.c

📁 小型的学生成绩管理程序 用数组来设计的 有查询和检索等功能
💻 C
字号:
#include "student.h"
int saveRecords()
{
	FILE *fp;
	char fname[30];
	if(numStus==0)
	{
		printf("没有记录可存!");
		return -1;
	}
	printf("请输入要存入的文件名(直接回车选择文件stu_info):");
	gets(fname);
	if(strlen(fname)==0)
		strcpy(fname,"stu_info");
	if((fp=fopen(fname,"wb"))==NULL)
	{
		printf("不能存入文件!\n");
		return -1;
	}
	printf("\n存文件...\n");
	fwrite(records,sizeof(StuInfo)*numStus,1,fp);
	fclose(fp);
	printf("%d条记录已经存入文件,请继续操作。\n",numStus);
	savedTag=0;
	return 0;
}
int loadRecords(void)
{
	FILE *fp;
	char fname[30];
	char str[5];
	if(numStus!=0&&savedTag==0)
	{
		printf("请选择您是要覆盖现有记录(Y),还是要将");
		printf("读取的记录添加到现有记录之后(N)?\n");
		printf("直接回车则覆盖现有记录\n");
		gets(str);
		if(str[0]=='n'||str[0]=='N')
		{
			savedTag=1;
		}
		else
		{
			if(savedTag==1)
			{
				printf("读取文件将会更改原来的记录,");
				printf("是否保存原来的记录?(Y/N)");
				gets(str);
				if(str[0]!='n'&&str[0]!='N')
					saveRecords();
			}
			numStus=0;
		}
	}
	printf("请输入要读取的文件名(直接回车选择文件stu_info):");
	gets(fname);
	if(strlen(fname)==0)
		strcpy(fname,"stu_info");
	if((fp=fopen(fname,"rb"))==NULL)
	{
		printf("打不开文件!请重新选择\n");
		return -1;
	}
	printf("\n取文件...\n");
	while(!feof(fp))
	{
		if(numStus>=arraySize)
		{
			records=realloc(records,(arraySize+INCR_SIZE)*sizeof(StuInfo));
			if(records==NULL)
			{
				printf("memory failed!");
				exit(-1);
			}
			arraySize=arraySize+INCR_SIZE;
		}
		if(fread(&records[numStus],sizeof(StuInfo),1,fp)!=1)
			break;
		records[numStus].index=getIndex(records[numStus].sum);
		numStus++;
	}
	fclose(fp);
	printf("现在共有%d条记录。",numStus);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -