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

📄 student.cpp

📁 学生成绩管理系统
💻 CPP
字号:
//	函数头文件
#include<stdio.h>		//输入输出函数 文件调用	
#include<stdlib.h>		//exit函数和清屏函数 文件调用
#include<string.h>		//字符串函数 文件调用

//	函数声名
void sr();		//数据输入
void hz();		//数据汇总
void cx();		//数据查询
void pm();		//数据排序

//	结构体的定义	
struct student		//结构体的类型
{
	char name[10];
	double Chiese;
	double Math;
	double English;
	double zongfen;
};

//	主函数
void main()
{
	int q=0;

	
	while (q != 5)
	{
		system("cls");		//清屏函数
		printf("\n------------------------------------------\n");
		printf("\t1.	Input Name&score(输入姓名和分数)\n");
		printf("\t2.	Total Score(分数汇总)\n");
		printf("\t3.	Check(查询)\n");
		printf("\t4.	Sort (排名)\n");
		printf("\t5.	Exit(退出)\n");
		printf("\n------------------------------------------\n");
		printf("\n请选择1-5:");
		scanf("%d",&q);

		switch (q)
		{
			case 1:
				sr();
			break;
			case 2:
				hz();
			break;
			case 3:
				cx();
			break;
			case 4:
				pm();
			break;
			case 5:
				exit(0);		//退出函数(退出程序)
			break;
		}		
	}
}

//	输入学生信息函数
void sr()
{
	struct student stu;		//结构体的声名
	char h='y',z;
	FILE *fp;		//  文件指针
//	if ((fp=fopen ("xinxi.txt","w"))== NULL)
//	{
//		printf("文件打开有错误!");
//		exit(1);
//	}

	while (h=='y' || h=='Y')
	{
		printf("请输入学生姓名:");
		scanf("%s",stu.name);		
		printf("请输入语文成绩:");
		scanf("%lf",&stu.Chiese );
		printf("请输入数学成绩:");
		scanf("%lf",&stu.Math );
		printf("请输入英语成绩:");
		scanf("%lf",&stu.English );
		//结构体的引用		用结构体的名字加点(.)访问结构体里的成员 
		stu.zongfen=stu.Chiese+stu.English+stu.Math;		
		printf("是否保存?(y/n)");
		scanf(" %c",&z);
		if(z=='y' || z=='Y')
		{
				if ((fp=fopen ("xinxi.dat","ab"))== NULL)		//打开文件并判断是否有错误
				{
					printf("文件打开有错误!");
					exit(1);
				}
				fwrite(&stu,sizeof(struct student),1,fp);	//把数据写入文件
				fclose(fp);		//关闭文件
		}
		printf("是否继续输入信息?(y/n)");
		scanf(" %c",&h);
	}	
}

//	分数汇总函数
void hz()
{
	FILE *fp;
	struct student stu;		//结构体的声名
	
	if ((fp=fopen ("xinxi.dat","rb"))== NULL)
	{
				{
					printf("文件打开有错误!");
					exit(1);
				}
	}
	printf("\n\tName\t\tTotal\n");
	while(fread(&stu,sizeof(struct student),1,fp)==1)	//把数据从文件读出来
	{
		printf("\t%s\t\t%.lf\n",stu.name,stu.zongfen);
	}	
	printf("请按Enter返回!");
	getchar();
	getchar();		//接收Enter键
	fclose(fp);
}

//	分数查询函数
void cx()
{
	FILE *fp;
	struct student stu,str;
	char temp[10];
	
	strcpy(str.name,"");		//str.name赋值为空,为下面判断做准备
	if ((fp=fopen ("xinxi.dat","rb"))== NULL)
	{
		{
			printf("文件打开有错误!");
			exit(1);
		}
	}	
	printf("请输要查询姓名:");
	scanf("%s",temp);
	while(fread(&stu,sizeof(struct student),1,fp)==1)	//从文件读数据
	{
		if(strcmp(temp,stu.name)==0)		//判断文件里的数据与你输入的是否相同
		{
			str=stu;		//把找到的数据赋给一个新变量			
		}
	}
	if(strcmp(str.name,"")!=0)		//判断新变量是否为空
	{
		printf("-----------------------------------------------------------\n\n");
		printf("\n\tName\t\tChiese\t\tMath\t\tEnglish\t\tTotal\n");
		printf("\t%s\t\t%.lf\t\t%.lf\t\t%.lf\t\t%.lf\n",str.name,str.Chiese,str.Math,str.English,str.zongfen);		//输出查询到的所有数据
		printf("\n-----------------------------------------------------------\n\n");
	}
	else
	{
		printf("-----------------------------------------------------------\n\n");
		printf("查无此人!");
		printf("\n-----------------------------------------------------------\n\n");	
	}
	printf("请按Enter返回!");
	getchar();
	getchar();
	fclose(fp);	
}

//	分数排明函数
void pm()
{
	FILE *fp;
	int i,j,k=0;
	struct student str[10],temp;
	
	if ((fp=fopen ("xinxi.dat","rb"))== NULL)
	{
				{
					printf("文件打开有错误!");
					exit(1);
				}
	}
	while(fread(&temp,sizeof(struct student),1,fp)==1)	//读文件
	{
		str[k]=temp;		//把文件里的数据存储到一个结构体数组
		k++;		//计算读文件的次数(文件里存储学生的个数)
	}
	fclose(fp);		//关闭文件

	
	// 冒泡排序法
	for(i=0;i<k-1;i++)
		for(j=i+1;j<k;j++)
			if(str[i].zongfen < str[j].zongfen)
			{
				temp=str[i];
				str[i]=str[j];
				str[j]=temp;
			}
	

	//    输出前3名的数据
	printf("\n\tName\t\tChiese\t\tMath\t\tEnglish\t\tTotal\n");
	for(i=0;i<3;i++)		
	{
		printf("\t%s\t\t%.lf\t\t%.lf\t\t%.lf\t\t%.lf\n",str[i].name,str[i].Chiese,str[i].Math,str[i].English,str[i].zongfen);
	}
	printf("请按Enter返回!");
	getchar();
	getchar();
}

⌨️ 快捷键说明

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