// 添加学生 void add_student() { int i; if (stu_num >= MAX_STU_NUM) { printf("\t\t\t学生数已达上限,添加失败!\n"); return; } for (i = 0; i < stu_num; i++) { printf("请输入新添加的学生学号:"); scanf("%s",id); if (strcmp(students[i].id, id) == 0) { printf("该学号已存在!\n"); }优化此段代码
时间: 2024-03-13 21:46:10 浏览: 134
可以将输入新添加学生学号的代码放到for循环外面,避免重复输入,同时可以在输入学号时进行格式和输入值的验证,例如:
```
void add_student() {
int i;
char id[ID_LEN]; // 学号长度需要定义
if (stu_num >= MAX_STU_NUM) {
printf("\t\t\t学生数已达上限,添加失败!\n");
return;
}
printf("请输入新添加的学生学号:");
scanf("%s", id);
// 进行格式和输入值的验证
if (strlen(id) != ID_LEN || !is_valid_id(id)) {
printf("学号格式不正确或输入值不合法!\n");
return;
}
for (i = 0; i < stu_num; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("该学号已存在!\n");
return;
}
}
strcpy(students[stu_num].id, id);
printf("请输入学生姓名:");
scanf("%s", students[stu_num].name);
// 其他属性的输入和处理
...
stu_num++; // 学生数加1
printf("添加成功!\n");
}
// 判断学号是否合法
int is_valid_id(char *id) {
int i;
for (i = 0; i < ID_LEN; i++) {
if (!isdigit(id[i])) {
return 0;
}
}
return 1;
}
```
这样就可以避免重复输入学号,并且增加了学号格式和输入值的验证,保证了数据的正确性。
阅读全文