学生成绩管理
功能
- 查询学生成绩
- 添加学生成绩
- 修改学生成绩
- 删除学生成绩
#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更换为自己的即可