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

📄 major.cpp

📁 C语言写的学生成绩管理系统
💻 CPP
字号:
/*文件名:major.cpp;输入:詹磊*/
#include <stdio.h>
#include "student.h"
#define MAX 100
void major()
{
	void inmajor();
	void upmajor();
	void demajor();
	void dimajor();
	void damajor();
	void fimajor();
	int sel1;
	do
	{
		printf("	专业记录操作: 1:添加 2:修改 3:显示 4:查找 5:删除 6:全删 0:返回=>");
		scanf("%d",&sel1);
		switch(sel1)
		{
			case 1: inmajor();break;
			case 2: upmajor();break;
			case 3: dimajor();break;
			case 4: fimajor();break;
			case 5: demajor();break;
			case 6: damajor();break;
			case 0: break;
			default:printf("\t**选择错误\n");break;
		}
	} while (sel1!=0);
}
void inmajor()    /*添加一个记录*/
{
	FILE *fp;
	MAJOR major,major1;
	if ((fp=fopen("major.dat","ab+"))==NULL)
		if ((fp=fopen("major.dat","wb+"))==NULL)
		{
			printf("\t>>不能建立major.dat文件\n");
			return;
		}
	printf("	输入格式:专业号 专业名\n");
	printf("	专业记录:");
	scanf("%d%s",&major.mno,&major.mname);
	rewind(fp);
	while (!feof(fp))
	{
		fread(&major1,sizeof(MAJOR),1,fp);
		if (major1.mno==major.mno) break;
	}
	if (!feof(fp))
		printf("	\t>>专业号重复\n");
	else
		fwrite(&major,sizeof(MAJOR),1,fp);
	fclose(fp);
}
void upmajor()    /*修改一个记录*/
{
	FILE *fp;
	MAJOR major,nmajor;
	int i,num;
	if ((fp=fopen("major.dat","rb+"))==NULL)
	{
		printf("\t>>不能打开major.dat文件\n");
		return;
	}
	fseek(fp,0,2);
	if(ftell(fp)>0)				/*文件不空*/
	{
		rewind(fp);
		printf("	要修改的专业号:");
		scanf("%d",&num);
		for (i=0;!feof(fp) && fread(&major,sizeof(MAJOR),1,fp)==1;i++)
			if (major.mno==num) break;
		if (feof(fp))
		{
			printf("\t>>没有%d专业号的专业\n",num);
			return;
		}
		printf("	输入格式:专业名:");
		scanf("%s",nmajor.mname);			/*获取新专业名*/
		nmajor.mno=major.mno;				/*不能修改专业号*/
		fseek(fp,-(long)sizeof(MAJOR),SEEK_CUR);	/*指向修改记录开头*/
		fwrite(&nmajor,sizeof(MAJOR),1,fp);	/*用nmajor覆盖当前记录*/
		fclose(fp);
	}
	else
	{
		printf("\t>>无任何记录\n");
		fclose(fp);
	}
}
void demajor()					/*删除一个记录*/
{
	void damajor();
	FILE *fp;
	MAJOR major[MAX];
	int i,j,n,num;
	if ((fp=fopen("major.dat","rb"))==NULL)
	{
		printf("\t>>不能打开major.dat文件\n");
		return;
	}
	fseek(fp,0,2);
	if (ftell(fp)>0)			/*文件不空*/
	{
		rewind(fp);
		for(n=0;!feof(fp) && fread(&major[n],sizeof(MAJOR),1,fp);n++);		/*n为记录个数*/
		printf("	要删除的专业号:");
		scanf("%d",&num);
		for (i=0;i<n && major[i].mno!=num;i++);
		if (i>=n)
		{
			printf("\t>>没有%d专业号的专业\n",num);
			return;
		}
		fclose(fp);				/*关闭,重新以"w+"模式打开文件*/
		if (n>1)				/*原来记录数>1时重写文件*/
		{
			for (j=i;j<n-1;j++)		/*记录移动*/
				major[i]=major[i+1];
			fp=fopen("major.dat","wb");
			for (i=0;i<n-1;i++)
				fwrite(&major[i],sizeof(MAJOR),1,fp);
			fclose(fp);
		}
		else damajor();
	}
	else
	{
		printf("\t>>无任何记录\n");
		fclose(fp);
	}
}
void dimajor()		/*显示全部记录*/
{
	FILE *fp;
	int i;
	MAJOR major;
	if ((fp=fopen("major.dat","rb"))==NULL)
	{
		printf("\t>>不能打开major.dat文件\n");
		return;
	}
	fseek(fp,0,2);
	if (ftell(fp)>0)			/*文件不空*/
    {
		rewind(fp);
		printf("	记录号  专业号		专业名\n");
		i=0;
		while (1)
		{
			fread(&major,sizeof(MAJOR),1,fp);
			if (feof(fp)) break;
				printf(" %6d%10d%12s\n",i+1,major.mno,major.mname);
			i++;
		}
	}
	else
		printf("\t>>无任何记录\n");
}
void damajor()			/*删除全部记录*/
{
	FILE *fp;
	if ((fp=fopen("major.dat","wb"))==NULL)
	{
		printf("\t>>不能打开major.dat文件\n");
		return;
	}
		printf("\t>>全部记录已删\n");
		fclose(fp);
}
void fimajor()				/*查找记录*/
{
	int i=0,num;
	FILE *fp;
	MAJOR major;
	if ((fp=fopen("major.dat","rb"))==NULL)
	{
		printf("\t>>不能打开major.dat文件\n");
		return;
	}
	fseek(fp,0,2);
	if (ftell(fp)>0)		/*文件不空*/
	{
		printf("	输入专业号:");
		scanf("%d",&num);
		rewind(fp);
		while (1)
		{
			fread(&major,sizeof(MAJOR),1,fp);
			if (feof(fp) || major.mno==num) break;
			i++;
		}
		if (!feof(fp))
		{
			printf("	记录号	专业号		专业名\n");
			printf(" %6d%10d%12s\n",i+1,major.mno,major.mname);
		}
		else
			printf("\t>>查无此记录\n");
	}
	else
		printf("\t>>无任何记录\n");
}

⌨️ 快捷键说明

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