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

📄 quee_remv_modi.c

📁 小型的学生成绩管理程序 用数组来设计的 有查询和检索等功能
💻 C
字号:
#include "student.h"
int findRecord(char *target,int targetType,int from)
{
	int i;
	for(i=from;i<numStus;i++)
	{
		if((targetType==0&&strcmp(target,records[i].number)==0)||
			(targetType==1&&strcmp(target,records[i].name)==0)||
			(targetType==2&&atoi(target)==records[i].index))
			return i;
	}
	return -1;
}
void queryInfo(void)
{
	char str[5];
	char target[20];
	int type;
	int count;
	int i,j;
	if(numStus==0)
	{
		printf("没有可供查询的记录!");
		return;
	}
	while(1)
	{
		printf("请输入查询的方式:(直接输入回车则结束查询)\n");
		printf("1.按学号\n");
		printf("2.按姓名\n");
		printf("3.按名次\n");
		gets(str);
		if(strlen(str)==0)
			break;
		if(str[0]=='1')
		{
			printf("请输入欲查询的学生的学号:");
			gets(target);
			type=0;
		}
		else if(str[0]=='2')
		{
			printf("请输入欲查询的学生的姓名:");
			gets(target);
			type=1;
		}
		else
		{
			printf("请输入欲查询的学生的名次:");
			gets(target);
			type=2;
		}
		i=findRecord(target,type,0);
		if(i==1)
		{
			showTable();
		}
		count=0;
    	while(i!=-1)
		{
			count++;
	    	printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender);
    		for(j=0;j<NUM_SUBJECT;j++)
		    	printf("\t%.1f",records[i].score[j]);
    		printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index);
    		i=findRecord(target,type,i+1);
		}
    	if(count==0)
	    	printf("没有符合条件的学生!\n");
    	else
	    	printf("一共找到了%d名学生的信息\n\n",count);
	}
}
void removeRecord(void)
{
	char str[5];
	char target[20];
	int type;
	int i,j;
	int tmpi;
	if(numStus==0)
	{
		printf("没有可供删除的记录!");
		return;
	}
	while(1) {
		printf("请输入如何找到欲删除的记录的方式:");
		printf("(直接输入回车则结束移除操作)\n");
		printf("1.按学号\n");
		printf("2.按姓名\n");
		printf("3.按名次\n");
		gets(str);
		if(strlen(str)==0)
			break;
		if(str[0]=='1')
		{
			printf("请输入该学生的学号:");
			gets(target);
			type=0;
		}
		else if(str[0]=='2')
		{
			printf("请输入该学生的姓名:");
			gets(target);
			type=1;
		}
		else
		{
			printf("请输入该学生的名次:");
			gets(target);
			type=2;
		}
		i=findRecord(target,type,0);
		if(i==-1)
			printf("没有符合条件的学生!\n");
		while(i!=-1)
		{
			showTable();
			printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender);
			for(j=0;j<NUM_SUBJECT;j++)
				printf("\t%.1f",records[i].score[j]);
			printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index);
			printf("确定要删除这个学生的信息吗?(Y/N)");
			gets(str);
			if(str[0]=='y'||str[0]=='Y')
			{
				numStus--;
				tmpi=records[i].index;
				for(j=i;j<numStus;j++)
				{
					copyRecord(&records[j+1],&records[j]);
				}
				for(j=0;j<numStus;j++)
				{
					if(records[j].index>tmpi)
						records[j].index--;
				}
			}
			i=findRecord(target,type,i+1);
		}
	}
	savedTag=1;
}
void copyRecord(StuInfo *src,StuInfo *dest)
{
	int j;
	strcpy(dest->number,src->number);
	strcpy(dest->name,src->name);
	strcpy(dest->gender,src->gender);
	for(j=0;j<NUM_SUBJECT;j++)
	{
		dest->score[j]=src->score[j];
	}
	dest->sum=src->sum;
	dest->average=src->average;
	dest->index=src->index;
}
void modifyRecord(void)
{
	char str[5];
	char target[20];
	int type;
	int i,j;
	int tmpi;
	float sum,mark;
	int count=0;
	if(numStus==0)
	{
		printf("没有可供修改的记录!");
		return;
	}
	while(1) {
		printf("请输入如何找到欲修改的记录的方式:");
		printf("(直接输入回车则结束移除操作)\n");
		printf("1.按学号\n");
		printf("2.按姓名\n");
		printf("3.按名次\n");
		gets(str);
		if(strlen(str)==0)
			break;
		if(str[0]=='1')
		{
			printf("请输入该学生的学号:");
			gets(target);
			type=0;
		}
		else if(str[0]=='2')
		{
			printf("请输入该学生的姓名:");
			gets(target);
			type=1;
		}
		else
		{
			printf("请输入该学生的名次:");
			gets(target);
			type=2;
		}
		i=findRecord(target,type,0);
		if(i==-1)
			printf("没有符合条件的学生!\n");
		while(i!=-1)
		{
			showTable();
			printf("%s\t%s\t%s",records[i].number,records[i].name,records[i].gender);
			for(j=0;j<NUM_SUBJECT;j++)
				printf("\t%.1f",records[i].score[j]);
			printf("\t%.1f\t%.1f\t%d\n",records[i].sum,records[i].average,records[i].index);
			printf("确定要修改这个学生的信息吗?(Y/N)");
			gets(str);
			if(str[0]=='y'||str[0]=='Y')
			{
				tmpi=records[i].index;
				printf("下面请重新输入该学生的信息:\n");
				printf("请输入学号:");
				gets(records[i].number);
				printf("请输入姓名:");
				gets(records[i].name);
				printf("请输入性别(0为女,1为男):");
				gets(str);
				if(str[0]=='0')
					strcpy(records[i].gender,"女");
				else
					strcpy(records[i].gender,"男");
				sum=0;
				for(j=0;j<NUM_SUBJECT;j++)
				{
					printf("请输入%s成绩:",subject[j]);
					gets(str);
					mark=(float)atof(str);
					records[i].score[j]=mark;
					sum+=mark;
				}
				records[i].sum=sum;
				records[i].average=sum/NUM_SUBJECT;
				count=0;
				for(j=0;j<numStus;j++)
				{
					if(j==i)
						continue;
					if(records[j].index>tmpi&&records[j].sum>sum)
						records[j].index--;
					else if(records[j].index<=tmpi&&records[j].sum<sum)
						records[j].index++;
					if(records[j].sum>sum)
						count++;
				}
				records[i].index=count+1;
			}
			i=findRecord(target,type,i+1);
		}
	}
	savedTag=1;
}

⌨️ 快捷键说明

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