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

📄 成绩管理.c

📁 c语言学生成绩管理系统 c语言学生成绩管理系统
💻 C
📖 第 1 页 / 共 2 页
字号:
				{
			    	s->id=in_id;
			    	printf("输入姓名:");
	            	gets(in_name);
			    	strcpy(s->name,in_name);
	            	printf("输入学院:");
	            	gets(in_add);
			    	strcpy(s->add,in_add);
	            	printf("输入该学生的课程数:");
	            	scanf("%d",&in_n);
	             	getchar();
			    	s->n=in_n;
		        	for(i=0;i<in_n;i++)
					{		
		            	printf("课程号:");
	         	    	scanf("%d",&in_num);
	        	    	getchar();
				    	s->subj[i].num=in_num;
		            	printf("课程名:");
		            	gets(in_sname);
				    	strcpy(s->subj[i].sname,in_sname);
		            	printf("成绩:");
		            	scanf("%d",&in_score);
				    	getchar();
				    	s->subj[i].score=in_score;
					}
			    	s->next=q;
	    	    	p->next=s;
	            	break;
				}
				else
					break;
			}
		}
		q=q->next;
		p=p->next;
	}
	if((fp=fopen(filename,"w"))==NULL)
	{
		printf("打开文件失败!");
		exit(0);
	}
	q=head->next;
	while(q)
	{
		fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
		for(i=0;i<q->n;i++)
        	fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
		q=q->next;
	}
	fclose(fp);
}

void delet_id()
{
	int id,i;
	linklist *p,*q,*r;
	linklist *subj;
	system("cls");
	printf("请输入你要删除的学生学号:");
	scanf("%d",&id);
	getchar();
	q=(linklist *)malloc(sizeof(linklist));
	head=(linklist *)malloc(sizeof(linklist));
	subj=(linklist *)malloc(sizeof(linklist));
	printf("请输入文件名:");
	gets(filename);
	if((fp=fopen(filename,"r"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	r=head;
	while(feof(fp)==0)
	{
		p=(linklist *)malloc(sizeof(linklist));
		fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
		for(i=0;i<p->n;i++)
			fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
		r->next=p;
		r=p;
	}
	r->next=NULL;
	fclose(fp);
	p=head;
	q=head->next;
	while(q)
	{
		if(q->id!=id)
		{
			q=q->next;
			p=p->next;
		}
		else
		{
			p->next=q->next;
			free(q);
			break;
		}
	}
	if((fp=fopen(filename,"w"))==NULL)
	{
		printf("打开文件失败!");
		exit(0);
	}
	q=head->next;
	while(q)
	{
		fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
		for(i=0;i<q->n;i++)
        	fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
		q=q->next;
	}
	printf("删除该学生后文件中学生信息是:\n");
	fclose(fp);
}


void delet_name()
{
	int i;
	char name[20];
	linklist *p,*q,*r;
	linklist *subj;
	system("cls");
	printf("请输入你要删除的学生姓名:");
	gets(name);
	q=(linklist *)malloc(sizeof(linklist));
	head=(linklist *)malloc(sizeof(linklist));
	subj=(linklist *)malloc(sizeof(linklist));
	printf("请输入文件名:");
	gets(filename);
	if((fp=fopen(filename,"r"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	r=head;
	while(feof(fp)==0)
	{
		p=(linklist *)malloc(sizeof(linklist));	
		fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
		for(i=0;i<p->n;i++)
			fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
		r->next=p;
		r=p;
	}
	r->next=NULL;
	fclose(fp);
	p=head;
	q=head->next;
	while(q)
	{
		if(strcmp(q->name,name)!=0)
		{
			q=q->next;
			p=p->next;
		}
		else
		{
			p->next=q->next;
			free(q);
			break;
		}
	}
	if((fp=fopen(filename,"w"))==NULL)
	{
		printf("打开文件失败!");
		exit(0);
	}
	q=head->next;
	while(q)
	{
		fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
		for(i=0;i<q->n;i++)
        	fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
		q=q->next;
	}
	fclose(fp);
}

void modify_id()
{
	int id,i;
	int in_id,in_n,in_score,in_num;
	char in_name[20],in_add[20],in_sname[20];
	linklist *p,*subj;
	linklist *r,*q;
	system("cls");
	printf("请输入你要修改的学生学号:");
	scanf("%d",&id);
	getchar();
	printf("请输入文件名:");
	gets(filename);
	if((fp=fopen(filename,"r+"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	q=(linklist *)malloc(sizeof(linklist));
	subj=(linklist *)malloc(sizeof(linklist));
	head=(linklist *)malloc(sizeof(linklist));
	r=head;
	while(feof(fp)==0)	
	{
	    p=(linklist *)malloc(sizeof(linklist));
		fscanf(fp,"%d%s%s%d\n",&p->id,p->name,p->add,&p->n);
		for(i=0;i<p->n;i++)
			fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
		r->next=p;
		r=p;
	}
	r->next=NULL;
	fclose(fp);
	q=head->next;
	while(q)
	{
		if(q->id!=id)
			q=q->next;
		else
		{
	    	printf("请输入新的信息:\n");
	    	printf("输入学号:");
	    	scanf("%d",&in_id);
	    	getchar();
			q->id=in_id;
	    	printf("输入姓名:");
	    	gets(in_name);
			strcpy(q->name,in_name);
	    	printf("输入学院:");
	    	gets(in_add);
			strcpy(q->add,in_add);
	    	printf("输入该学生的课程数:");
	    	scanf("%d",&in_n);
	    	getchar();
			q->n=in_n;
	    	for(i=0;i<in_n;i++)
			{		
		    	printf("课程号:");
		    	scanf("%d",&in_num);
		    	getchar();
				q->subj[i].num=in_num;
		    	printf("课程名:");
		    	gets(in_sname);
				strcpy(q->subj[i].sname,in_sname);
		    	printf("成绩:");
		    	scanf("%d",&in_score);
		    	getchar();
				q->subj[i].score=in_score;
			}
			break;
		}
	}
	if((fp=fopen(filename,"w"))==NULL)
	{
		printf("打开文件失败!");
		exit(0);
	}
	q=head->next;
	while(q)
	{
		fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
		for(i=0;i<q->n;i++)
        	fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
		q=q->next;
	}
	fclose(fp);
}

void modify_name()
{
	int i;
	int in_id,in_n,in_score,in_num;
	char in_name[20],in_add[20],in_sname[20];
	char name[20];
	linklist *p,*subj;
	linklist *r,*q;
	system("cls");
	printf("请输入你要修改的学生姓名:");
	gets(name);
	printf("请输入文件名:");
	gets(filename);
	if((fp=fopen(filename,"r+"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	q=(linklist *)malloc(sizeof(linklist));
	subj=(linklist *)malloc(sizeof(linklist));
	head=(linklist *)malloc(sizeof(linklist));
	r=head;
	while(feof(fp)==0)	
	{
	    p=(linklist *)malloc(sizeof(linklist));
		fscanf(fp,"%d%s%s%d\n",&p->id,p->name,p->add,&p->n);
		for(i=0;i<p->n;i++)
			fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
		r->next=p;
		r=p;
	}
	r->next=NULL;
	fclose(fp);
	q=head->next;
	while(q)
	{
		if(strcmp(q->name,name)!=0)
			q=q->next;
		else
		{
	    	printf("请输入新的信息:\n");
	    	printf("输入学号:");
	    	scanf("%d",&in_id);
	    	getchar();
			q->id=in_id;
	    	printf("输入姓名:");
	    	gets(in_name);
			strcpy(q->name,in_name);
	    	printf("输入学院:");
	    	gets(in_add);
			strcpy(q->add,in_add);
	    	printf("输入该学生的课程数:");
	    	scanf("%d",&in_n);
	    	getchar();
			q->n=in_n;
	    	for(i=0;i<in_n;i++)
			{		
		    	printf("课程号:");
		    	scanf("%d",&in_num);
		    	getchar();
				q->subj[i].num=in_num;
		    	printf("课程名:");
		    	gets(in_sname);
				strcpy(q->subj[i].sname,in_sname);
		    	printf("成绩:");
		    	scanf("%d",&in_score);
		    	getchar();
				q->subj[i].score=in_score;
			}
			break;
		}
	}
	if((fp=fopen(filename,"w"))==NULL)
	{
		printf("打开文件失败!");
		exit(0);
	}
	q=head->next;
	while(q)
	{
		fprintf(fp,"%d %s %s %d\n",q->id,q->name,q->add,q->n);
		for(i=0;i<q->n;i++)
        	fprintf(fp,"%d %s %d\n",q->subj[i].num,q->subj[i].sname,q->subj[i].score);
		q=q->next;
	}
	fclose(fp);
}



void count()
{
	int x;
	void average();
	void saverage();
	void subjnum();
	system("cls");
	printf("*********************统计子系统***********************\n");
	printf(" 1:求指定课程的平均分\n");
	printf(" 2:求指定学生的平均分\n");
	printf(" 3:求指定学生的课程数\n");
	printf(" 4:退出\n");
	printf("输入您要进行的步骤:");
	scanf("%d",&x);
	getchar();
	switch(x)
	{
	case 1:{
		      average();
			  printf("\n按回车键返回主菜单:");
			  getchar();
		   }
		   break;
	case 2:{
		      saverage();
			  printf("\n按回车键返回主菜单:");
			  getchar();
		   }
		   break;
    case 3:{
	          subjnum();
			  printf("\n按回车键返回主菜单:");
			  getchar();
		   }
		   break;
    case 4:
		   break;
	}
}
void average()
{
	int num,i,j;
	linklist *p,*r;
	linklist *subj;
	int ave,sum=0;
	system("cls");
	printf("请输入你要求平均分的课程号:");
	scanf("%d",&num);
	getchar();
	head=(linklist *)malloc(sizeof(linklist));
	subj=(linklist *)malloc(sizeof(linklist));
	printf("请输入文件名:");
	gets(filename);
	if((fp=fopen(filename,"r"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	j=0;
	r=head;
	while(feof(fp)==0)
	{
		p=(linklist *)malloc(sizeof(linklist));
		fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
		for(i=0;i<p->n;i++)
			fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
		r->next=p;
		r=p;
	}
	r->next=NULL;
	fclose(fp);
	p=head->next;
	while(p)
	{
		for(i=0;i<p->n;i++)
		{
	    	if(p->subj[i].num==num)
			{
				sum=sum+p->subj[i].score;
				j++;
			}
		}
		p=p->next;
	}
	ave=sum/j;
	printf("平均分是:%d",ave);
}
void saverage()
{
	int id,i;
	linklist *p,*r;
	linklist *subj;
	int ave,sum=0;
	system("cls");
	printf("请输入你要求平均分的学生学号:");
	scanf("%d",&id);
	getchar();
	head=(linklist *)malloc(sizeof(linklist));
	subj=(linklist *)malloc(sizeof(linklist));
	printf("请输入文件名:");
	gets(filename);
	if((fp=fopen(filename,"r"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	r=head;
	while(feof(fp)==0)
	{
		p=(linklist *)malloc(sizeof(linklist));
		fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
		for(i=0;i<p->n;i++)
			fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
		r->next=p;
		r=p;
	}
	r->next=NULL;
	fclose(fp);
	p=head->next;
	while(p)
	{
		if(p->id!=id)
			p=p->next;
		else
		{
			for(i=0;i<p->n;i++)
				sum=sum+p->subj[i].score;
			ave=sum/p->n;
			printf("\n该学生的平均分是:%d\n",ave);
			break;
		}
	}
}
void subjnum()
{
	linklist *p,*subj;
	int id,i;
	p=(linklist *)malloc(sizeof(linklist));
	subj=(linklist *)malloc(sizeof(linklist));
	system("cls");
	printf("请输入文件名:");
	gets(filename);
	if((fp=fopen(filename,"r"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	printf("请输入你要求课程数的学生的学号:");
	scanf("%d",&id);
	getchar();
	while(feof(fp)==0)
	{
    	fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
		for(i=0;i<p->n;i++)
			fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
		if(p->id==id)
		{
			printf("该学生所学课程的门数是:%d\n",p->n);
			break;
		}
	}
	fclose(fp);
}

void beifen()
{
	linklist *p,*subj;
	char filename1[20];
	FILE *fp1;
	int i;
	subj=(linklist *)malloc(sizeof(linklist));
	p=(linklist *)malloc(sizeof(linklist));
	system("cls");
	printf("请输入文件名:");
	gets(filename);
	if((fp=fopen(filename,"r"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	printf("请输入你要备份的文件名:");
	gets(filename1);
	if((fp1=fopen(filename1,"w+"))==NULL)
	{
		printf("打开文件错误!\n");
		exit(0);
	}
	while(feof(fp)==0)
	{
		fscanf(fp,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
		fprintf(fp1,"%d %s %s %d\n",p->id,p->name,p->add,p->n);
		for(i=0;i<p->n;i++)
		{
			fscanf(fp,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
        	fprintf(fp1,"%d %s %d\n",p->subj[i].num,p->subj[i].sname,p->subj[i].score);
		}
	}
	fclose(fp);
	fclose(fp1);
	if((fp1=fopen(filename1,"r"))==NULL)
		printf("打开文件错误!\n");
	printf("\n备份文件中学生信息是:\n");
	while(feof(fp1)==0)
	{
		fscanf(fp1,"%d%s%s%d",&p->id,p->name,p->add,&p->n);
		printf("学号:%d\n",p->id);
    	printf("姓名:%s\n",p->name);
    	printf("学院:%s\n",p->add);
		printf("课程数:%d\n",p->n);
		printf("   课程号    课程名    成绩\n");
		for(i=0;i<p->n;i++)
		{
			fscanf(fp1,"%d%s%d\n",&p->subj[i].num,p->subj[i].sname,&p->subj[i].score);
			printf("   %d         %s         %d\n",p->subj[i].num,p->subj[i].sname,p->subj[i].score);
		}
	}
	fclose(fp1);
}

⌨️ 快捷键说明

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