学生成绩管理

学生成绩管理

功能

  1. 查询学生成绩
  2. 添加学生成绩
  3. 修改学生成绩
  4. 删除学生成绩
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define	M	100 //学生最大数量

struct	Student {
	char number[15];
	char name[10];
	float  grade;
};
struct Student	 student[M];
int	booknum=0; // 实际学生数量
void menu() {
	printf("			*************************************\n");
	printf("			学生成绩管理系统       \n");
	printf("			|   1.显示所有信息   |         \n");
	printf("			|   2.添加信息       |         \n");
	printf("			|   3.删除信息       |         \n");
	printf("			|   4.修改信息       |         \n");
	printf("			|   0.退出           |         \n");
	printf("			*************************************\n");
}

void ReadFile() {
	FILE*fp=fopen("study.txt","r");
	int	i=0,j=0;
	char st[80];
	if(fp==NULL) {
		printf("文件读取失败!\n");
		return;
	}
	fgets(st,80,fp);
	while(!feof(fp)) {
		fscanf(fp,"%s%s%f\n",student[i].number,student[i].name,&student[i].grade);
		i++;
	}
	booknum=i;
//	printf("%d\n",booknum);
//	printf("\n\n文件读取成功!\n\n");
	fclose(fp);
}
void DisplayAll() {

	ReadFile();
	int i;
	printf("学号	姓名	成绩\n");
	if(booknum==0) {
		printf("没有学生信息,请添加!");
	} else
		for(i=0; i<booknum; i++)
			printf("%s	%s	%.2f\n",student[i].number,student[i].name,student[i].grade);


}
void addStudent() {
	ReadFile();
	printf("请输入学号:\n");

	while(1) {

		//	printf("请输入学号:\n");
		scanf("%s",student[booknum].number);
		int count=0;
		for(int i=0; i<booknum; i++) {
			if(strcmp(student[booknum].number,student[i].number)!=0) {
				count++;
			}
		}
		if(count==booknum)
			break;
		else
			printf("学号重复,请重新输入学号:\n");

	}
	printf("请输入姓名:\n");
	scanf("%s",student[booknum].name);
	printf("请输入成绩:\n");
	scanf("%f",&student[booknum].grade) ;
	FILE*fp=fopen("study.txt","w");
	booknum++;
	fprintf(fp,"%s	%s	%s\n","学号","姓名","成绩");
	for(int i=0; i<booknum; i++) {
		fprintf(fp, "%s %s %.2f\n",student[i].number,student[i].name,student[i].grade);

	}
	printf("添加成功!\n");
	fclose(fp);

}
void DeleteStudent() {
	ReadFile();
	printf("请输入所删除学生的学号:\n");
	bool bl=true;

	while(bl) {
		char num[15] ;
		//	printf("请输入学号:\n");
		scanf("%s",num);
		int count=0;
		for(int i=0; i<booknum; i++) {
			if(strcmp(num,student[i].number)==0) {
				FILE*fp=fopen("study.txt","w");
				fprintf(fp,"%s	%s	%s\n","学号","姓名","成绩");
				for(int j=0; j<booknum&&j!=i; j++) {
					fprintf(fp, "%s %s %.2f\n",student[j].number,student[j].name,student[j].grade);

				}
				fclose(fp);
				printf("删除成功!\n");
				bl=false;
				break;
			} else
				count++;
		}
		if(count==booknum)
			printf("此学生不存在,请重新输入学号:\n");

	}

}
void ChangeStudent() {
	ReadFile();
	printf("请输入所要修改的学生的学号:\n");
	bool bl=true;

	while(bl) {
		char num[15] ;
		//	printf("请输入学号:\n");
		scanf("%s",num);
		int count=0;
		for(int i=0; i<booknum; i++) {
			if(strcmp(num,student[i].number)==0) {
				printf("请输入新的成绩:\n") ;
				scanf("%f",&student[i].grade) ;
				FILE*fp=fopen("study.txt","w");
				fprintf(fp,"%s	%s	%s\n","学号","姓名","成绩");
				for(int j=0; j<booknum; j++) {
					fprintf(fp, "%s %s %.2f\n",student[j].number,student[j].name,student[j].grade);

				}
				fclose(fp);
				printf("修改成功!\n");
				bl=false;
				break;
			} else
				count++;
		}
		if(count==booknum)
			printf("此学生不存在,请重新输入学号:\n");

	}

}

int main() {


	int n;
	while(1) {
		menu();
		//ReadFile();

		printf("请输入操作编号: ");
		scanf("%d", &n);
		switch(n) {
			case 1:	{
				DisplayAll();
				break;
			}
			case 2:
				addStudent()
				;
				break;
			case 3:
				DeleteStudent()
				;
				break;
			case 4:
				ChangeStudent();
				;
				break;
			case 0:
				printf("已退出");
				exit(1);

		}
	}
	return 0;
}


注意:将代码中的study.txt更换为自己的即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值