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

📄 学生成绩管理系统.cpp

📁 这是一个用C++实现的简单的学生成绩管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				cin>>score[i].Math;
				cout<<"\n英语成绩: ";
				cin>>score[i].English;
		
				score[i].total=score[i].Chinese+score[i].Math+score[i].English;
				score[i].average=(score[i].total*1.0)/3;	
			}
		}
		if(!flag)
			    cout<<"没有找到符合条件的记录!\n";
		break;
	}
	return;
}
		
//3.2按学号编辑修改函数
void mod_num(record score[],int n)
{
	int number,flag ,i;
	char ask;
	while(1)
	{
		flag=0;    //查找标志,查找成功flag=1
		cout << "\n请输入学号: ";
		cin >> number;
		for(i=0;i<n;i++)
		{
			if(number==score[i].number)
			{
				flag=1;
				cout << "当前要修改的记录信息:\n";
				dis_table();
				dis_row(score[i]);
				cout << "请重新输入以下信息:\n";
				cout<<"姓名: ";
		        cin>>score[i].name;
		        cout<<"\n学号: ";
				cin>>score[i].number;
				cout<<"\n语文成绩: ";
				cin>>score[i].Chinese;
				cout<<"\n数学成绩: ";
				cin>>score[i].Math;
				cout<<"\n英语成绩: ";
				cin>>score[i].English;
		
				score[i].total=score[i].Chinese+score[i].Math+score[i].English;
				score[i].average=(score[i].total*1.0)/3;
				cout << "\n继续修改请按y键,否则按其他键......";
		        cin >> ask;
		        if(ask!='y' && ask!='Y')
			    break;
		     }	   
		}
		if(!flag)
			cout<<"没有找到符合条件的记录!\n";
		break;
	}
	return;

}

//3.3显示全部学生的记录
void dis_all(record score[],int n)
{
	char press;
	int i;
	for(i=0;i<n;i++)
	{
		if(i%20==0)//每显示20行数据记录后重新显示一下表头
		{
			cout << endl << endl;
			dis_char(' ',25);
			cout << "学生的信息录";
			cout << endl;
			dis_char('*',72);
			cout << endl;
			cout << "序号";
			dis_table();  //调用显示表头函数显示表头
		}
		cout << setw(4) << (i+1); 
		dis_row(score[i]);//调用显示一个数组元素的函数
		if((i+1)%20==0)//满20行则显示下一屏
		{
			dis_char('*',72);   
			cout << endl;
			cout << "按回车键继续显示下屏,按其他键结束显示!";
			cout << endl;
			cout << "请按键......";  
			cin >> press; 
			if(press!='\n')
				break;
		}
	}
	dis_char('*',72);
	cout << endl;
	return;
}

//4 显示信息录文件主控函数
void display()
{
	record score[M];
	FILE *fp;
	int ask;
	int i=0;
	if((fp=fopen("address.txl","rb"))==NULL)
	{
		cout << "can't open file!\n";
		return;
	}
	while(!feof(fp))
	{
		//将信息录信息读到score数组中
		fread(&score[i++],sizeof(record),1,fp);
	}
	i-=1;
	while(1)
	{
		cout << endl << endl;
		dis_char(' ',10);
		cout << "显示信息录信息(共有" << i << "条记录)\n";
		dis_char('*',50);
		cout << endl;
		dis_char(' ',17);
		cout << "1.按自然顺序显示\n";
		dis_char(' ',17);
		cout << "2.按姓名顺序显示\n";
		dis_char(' ',17);
		cout << "3.按学号顺序显示\n";
		dis_char(' ',17);
		cout << "4.按平均成绩顺序显示\n";
		dis_char(' ',17);
		cout << "5.退出显示程序\n";
		dis_char('*',50);
		cout << endl;
		dis_char(' ',16);
		cout << "请输入代码选择(1~5) ";  
		cin >> ask;
		switch(ask)
		{
		  
		  case 1 :
			dis_all(score,i);//调用显示数组函数
			break;
		  case 2 :
			sort_name(score,i);//调用按姓名排序显示记录信息函数
			break;
		  case 3 :
			sort_num(score,i);//调用按学号排序函数
			break;
		  case 4 :
			sort_aver(score,i);//调用按平均成绩排序函数
			break;
		  case 5 :
			fclose(fp);//退出显示程序
			return;
		  default :
				cout<<"输入数字不在范围之内,请重试\n";
				continue;
		}
	}
}

//4.1按姓名排序
void sort_name(record score[],int n)
{
	int i,j;
	record score_t[M],temp;
	for(i=0;i<n;i++)
	{
		score_t[i]=score[i];//将score数组读到score_t数组中
	}
	for(i=1;i<n;i++)
	   for(j=0;j<n-i;j++)
	   {
		  if(strcmp(score_t[j].name,score_t[j+1].name)>0)//使用字符串比较函数
		  {
			temp=score_t[j];	 
			score_t[j]=score_t[j+1];
			score_t[j+1]=temp;
		  }
	   }
	dis_all(score_t,n);//调用显示函数对已排序数组列表显示
	return;
}
//4.2按学号排序
void sort_num(record score[],int n)
{
	int i,j;
	record score_t[M],temp;
	for(i=0;i<n;i++)
	{
		score_t[i]=score[i];//将score数组读到score_t数组中
	}
	for(i=1;i<n;i++)
	   for(j=0;j<n-i;j++)
	   {
		  if(score_t[j].number>score_t[j+1].number)//
		  {
			temp=score_t[j];	 
			score_t[j]=score_t[j+1];
			score_t[j+1]=temp;
		  }
	   }
	dis_all(score_t,n);//调用显示函数对已排序数组列表显示
	return;
}
//4.3按平均成绩排序
void sort_aver(record score[],int n)
{
	int i,j;
	record score_t[M],temp;
	for(i=0;i<n;i++)
	{
		score_t[i]=score[i];//将score数组读到score_t数组中
	}
	for(i=1;i<n;i++)
	   for(j=0;j<n-i;j++)
	   {
		  if(score_t[j].average>score_t[j+1].average)//
		  {
			temp=score_t[j];	 
			score_t[j]=score_t[j+1];
			score_t[j+1]=temp;
		  }
	   }
	dis_all(score_t,n);//调用显示函数对已排序数组列表显示
	return;
}

//5 删除功能函数实现
void dele()
{
	record temp,score[M];
	int ask;
	int i=0,length;
	FILE * fp;
	if((fp=fopen("address.txl","rb"))==NULL)
	{
		cout << "can't open file!" << endl;
		return;
	}
	while(fread(&temp,sizeof(record),1,fp)==1)//读通讯录文件
	{
		score[i++]=temp;
	}
	length=i;
	while(1)
	{
		cout<<endl;
		dis_char(' ',18);
		cout << "记录的删除\n";
		dis_char('*',50);
		cout << endl;
		dis_char(' ',17);
		cout << "1.按姓名删除\n";
		dis_char(' ',17);
		cout << "2.按学号删除\n";
		dis_char(' ',17);
		cout << "3.返回上一层\n";
		dis_char('*',50);
		cout << endl;
		dis_char(' ',14);
		cout << "请输入号码选择(1~3) ";  
		cin >> ask; 
		switch(ask)
		{
		  case 1 :
			dele_name(score,&i);//调用按姓名删除函数
			break;
		  case 2 :
			dele_num(score,&i);//调用按学号删除函数
			break;
		  case 3 :
			return;//退出删除程序
		  default :
				cout<<"输入数字不在范围之内,请重试\n";
				continue;
		}
		if(length>i)
		{
			fclose(fp);// 关闭文件,准备以新建文件的方式打开文件
			fp=fopen("address.txl","wb");
			fwrite(score,sizeof(record),length-1,fp);
			fclose(fp);
			fp=fopen("address.txl","rb");
		}
	}
	fclose(fp);
	return;
}
//5.1按姓名删除函数
void dele_name(record score[],int* n)
{
	char d_name[20],sure;
	int i;
	cout << "请输入姓名:";
	cin >> d_name;
	for(i=0;i<*n;i++)
	{
		if(strcmp(score[i].name,d_name)==0)
		    break;//找到要删除的记录
	}
	if(i!=*n)
	{
		cout << "要删除的记录如下:\n";
		dis_table();
		dis_row(score[i]);
		cout << "确定删除---y,否则按其他键......";  
		cin >> sure;  
		if(sure!='y' && sure!='Y')
			return;
		for(;i<*n-1;i++)//自删除位置开始,其后记录依次前移
			score[i]=score[i+1];
		*n=*n-1;//数组总记录数减1
	}
	else
		cout << "要删除的记录没有找到......";  
	return;
}
//5.2调用按学号删除函数
void dele_num(record score[],int* n)
{
	char sure;
	int i,num;
	cout << "请输入学号:";
	cin >> num;
	for(i=0;i<*n;i++)
	{
		if(score[i].number== num)
		   break;//找到要删除的记录
	}
	if(i!=*n)
	{
		cout << "要删除的记录如下:\n";
		dis_table();
		dis_row(score[i]);
		cout << "确定删除---y,否则按其他键......";  
		cin >> sure;  
		if(sure!='y' && sure!='Y')
			return;
		for(;i<*n-1;i++)//自删除位置开始,其后记录依次前移
			score[i]=score[i+1];
		*n=*n-1;//数组总记录数减1
	}
	else 
		cout << "要删除的记录没有找到......";  
	return;
}

//6 建立学生信息录函数
void create()
{
	FILE * fp;
	if((fp=fopen("address.txl","wb"))==NULL)
	{
		cout << "can't open file!\n";
		return;
	}
	fclose(fp);
	cout << "\n\n文件成功建立,请使用-信息输入功能-输入信息!";
	return;
}


			
			
		







⌨️ 快捷键说明

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