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

📄 course.cpp

📁 很好的C程序设计教程
💻 CPP
字号:
/*文件名:course.cpp*/
#include <stdio.h>
#include "student.h"
#define MAX 100
void course()		/*课程管理*/
{
	void incour();
	void upcour();
	void decour();
	void dicour();
	void dacour();
	void ficour();
	int sel1;
	do
	{
		printf("  课程记录操作: 1:添加 2:修改 3:显示 4:查找 5:删除 6:全删 0:返回=>");
		scanf("%d",&sel1);
		switch(sel1)
		{
		case 1:incour();break;
		case 2:upcour();break;
		case 3:dicour();break;
		case 4:ficour();break;
		case 5:decour();break;
		case 6:dacour();break;
		case 0:break;
		default:printf("\t**选择错误\n");break;
		}
	} while (sel1!=0);
}
void incour()		/*添加一个记录*/
{
	FILE *fp;
	COURSE cour,cour1;
	if ((fp=fopen("course.dat","ab+"))==NULL) 
		if ((fp=fopen("course.dat","wb+"))==NULL) 
		{
			printf("\t>>不能建立course.dat文件\n");
			return;
		}
     printf("    输入格式:课程号 课程名\n");
     printf("    课程记录:");
     scanf("%d%s",&cour.cno,cour.cname);
	rewind(fp);
	while (!feof(fp))
	{
		fread(&cour1,sizeof(COURSE),1,fp);
		if (cour1.cno==cour.cno) break;
	}
	if (!feof(fp))
		printf("\t>>课程号重复\n");
	else
		fwrite(&cour,sizeof(COURSE),1,fp);
   	fclose(fp);
}
void upcour()		/*修改一个记录,不能修改课程号,只能修改课程名*/
{
    	FILE *fp;
    	COURSE cour,ncour;
    	int i,num;
    	if ((fp=fopen("course.dat","rb+"))==NULL) 
{
printf("\t>>不能打开course.dat文件\n");
        	return;
    	}
	fseek(fp,0,2);
	if (ftell(fp)>0)	/*文件不空*/
	{
		rewind(fp);
		printf("    要修改的课程号:");
		scanf("%d",&num);
		for (i=0;!feof(fp) && fread(&cour,sizeof(COURSE),1,fp)==1;i++)
			if (cour.cno==num) break;
		if (feof(fp)) 
		{
			printf("\t>>没有%d课程号的课程\n",num);
			return;
		}
		printf("    输入格式:课程名\n");
		scanf("%s",ncour.cname);					/*获取新课程名*/
		ncour.cno=cour.cno;							/*不能修改课程号*/
		fseek(fp,-(long)sizeof(COURSE),SEEK_CUR);	/*指向修改记录开头*/
		fwrite(&ncour,sizeof(COURSE),1,fp);	/*用newcour覆盖当前记录*/
		fclose(fp);
	}
	else
	{
		printf("\t>>无任何记录\n");
		fclose(fp);
	}
}
void decour()		/*删除一个记录*/
{
	void dacour();
	FILE *fp;
	COURSE cour[MAX];
	int i,j,n,num;
    	if ((fp=fopen("course.dat","rb"))==NULL) 
	{
		printf("\t>>不能打开course.dat文件\n");
     	return;
	}
	fseek(fp,0,2);
	if (ftell(fp)>0)		/*文件不空*/
	{
		rewind(fp);
		for (n=0;!feof(fp) && fread(&cour[n],sizeof(COURSE),1,fp);n++);
	/*n为记录个数*/
		printf("    要删除的课程号:");
		scanf("%d",&num);
		for (i=0;i<n && cour[i].cno!=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++)		/*记录移动*/
				cour[i]=cour[i+1];
			fp=fopen("course.dat","wb");
			for (i=0;i<n-1;i++)
				fwrite(&cour[i],sizeof(COURSE),1,fp);
			fclose(fp);
		}
		else dacour();
	}
	else
	{
		printf("\t>>无任何记录\n");
		fclose(fp);
	}
}
void dicour()		/*显示全部记录*/
{
FILE *fp;
	int i;
	COURSE cour;
    	if ((fp=fopen("course.dat","rb"))==NULL) 
	{
		printf("\t>>不能打开course.dat文件\n");
        	return;
	}
	fseek(fp,0,2);
	if (ftell(fp)>0) 	/*文件不空*/
	{
		rewind(fp);
		printf("    记录号   课程号       课程名\n");
		i=0;
		while (1) 
		{
			fread(&cour,sizeof(COURSE),1,fp);
			if (feof(fp)) break;
			printf(" %6d%10d%20s\n",i+1,cour.cno,cour.cname);
			i++;
		}
	}
	else 
		printf("\t>>无任何记录\n");
}
void dacour()		/*删除全部记录*/
{
	FILE *fp;
    	if ((fp=fopen("course.dat","wb"))==NULL) 
	{
		printf("\t>>不能打开course.dat文件\n");
        	return;
	}
	printf("\t>>全部记录已删\n");
fclose(fp);
}
void ficour()		/*查找记录*/
{
	int i=0,num;
	FILE *fp;
	COURSE cour;
    	if ((fp=fopen("course.dat","rb"))==NULL) 
	{
		printf("\t>>不能打开course.dat文件\n");
        	return;
}
	fseek(fp,0,2);
	if (ftell(fp)>0)	/*文件不空*/
	{
		printf("    输入课程号:");
		scanf("%d",&num);
		rewind(fp);
		while (1) 
		{
			fread(&cour,sizeof(COURSE),1,fp);
			if (feof(fp) || cour.cno==num) break;
			i++;
		}
		if (!feof(fp)) 
		{
			printf("    记录号   课程号       课程名\n");
			printf(" %6d%10d%20s\n",i+1,cour.cno,cour.cname);
		}
		else
			printf("\t>>查无此记录\n");
	}
	else
		printf("\t>>无任何记录\n");
}

⌨️ 快捷键说明

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