You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
1.6 KiB

}
else
{
printf("学生已存在");
}
}
//修改
void update_data(void)
{
int num;
printf("输入学生学号:");
scanf("%d", &num);
int f = 0;
for (int i = 0; i < num_parts; i++)
{
if (num == stu[i].number)
{
f = 1;
break;
}
}
if (f == 0)
{
printf("学生不存在");
}
else
{
printf("输入学生学号:");
scanf("%d", &stu[num].number);
printf("输入学生姓名:");
scanf("%s", stu[num].name);
printf("输入学生成绩:");
scanf("%d", &stu[num].score);
printf("学生 %d 已更新", num);
}
}
//删除
void delete_data(void)
{
int num;
printf("输入学生学号:");
scanf("%d", &num);
int f = 0, i, j;
for (i = 0; i < num_parts; i++)
{
if (num == stu[i].number)
{
f = 1;
break;
}
}
if (f == 0)
{
printf("学生不存在");
}
else
{
for (j = i; j < num_parts - 1; j++)
{
stu[j] = stu[j + 1];
}
num_parts--;
printf("删除成功");
}
}
void read_data(void)
{
puts("读取数据");
printf("请输入文件名");
char filename[256];
scanf("%s", filename);
FILE *fp = fopen(filename, "r");
if (fp == NULL)
{
perror(filename);
return;
}
int i = 0;
while (fscanf(fp, "%d,%[^,],%d", &stu[i].number, stu[i].name, &stu[i].score) == 3)
{
i++;
}
fclose(fp);
num_parts = i;
printf("读取 %d 记录\n", num_parts);
}