完善这段代码//删除开课信息函数 void ManagerDeleteTimetable(struct Timetable *timetable) { int i, j,flag=0; char c1[10]; printf("请输入要删除开课的课程号:\n"); scanf("%s",c1); for (i = 1; i < c+1; i++) { if (strcmp(timetable[i].cid, c1) == 0) { //找到要删除的开课信息 flag=1; for (j = i; j < c-1; j++) { // 将后面的开课信息向前移动 strcpy(timetable[j].tid, timetable[j + 1].tid); strcpy(timetable[j].cid, timetable[j + 1].cid); strcpy(timetable[j].tsemester, timetable[j + 1].tsemester); strcpy(timetable[j].ttime, timetable[j + 1].ttime); strcpy(timetable[j].tteach, timetable[j + 1].tteach); strcpy(timetable[j].taddress, timetable[j + 1].taddress); strcpy(timetable[j].tstate, timetable[j + 1].tstate); } } } if(flag==1) { printf("删除成功,显示结果请选择菜单\n"); c--; } if(flag==0) printf("未开设该课程!\n"); }
时间: 2024-03-26 13:35:57 浏览: 51
这段代码的功能是删除一个开课信息,但是在删除之前需要先输入要删除的课程号。这里有一些问题需要完善:
1. 在输入要删除的课程号之前,应该先判断是否有开设课程。如果没有开设课程,就不需要输入要删除的课程号了。
2. 在查找要删除的开课信息时,应该使用一个变量来记录是否找到了要删除的开课信息。如果找到了,就将标记变量设置为1。如果没有找到,就输出提示信息。
3. 在删除开课信息时,应该将变量c减1,因为开课信息的数量减少了。
4. 在删除开课信息时,应该将最后一个开课信息的值复制到要删除的位置,这样才能保证开课信息数组没有空洞。
下面是完善后的代码:
```c
//删除开课信息函数
void ManagerDeleteTimetable(struct Timetable *timetable) {
int i, j, flag = 0;
char c1[10];
if (c == 0) { // 没有开设课程
printf("没有开设课程!\n");
return;
}
printf("请输入要删除开课的课程号:\n");
scanf("%s", c1);
for (i = 1; i < c + 1; i++) {
if (strcmp(timetable[i].cid, c1) == 0) {
//找到要删除的开课信息
flag = 1;
for (j = i; j < c; j++) {
// 将后面的开课信息向前移动
strcpy(timetable[j].tid, timetable[j + 1].tid);
strcpy(timetable[j].cid, timetable[j + 1].cid);
strcpy(timetable[j].tsemester, timetable[j + 1].tsemester);
strcpy(timetable[j].ttime, timetable[j + 1].ttime);
strcpy(timetable[j].tteach, timetable[j + 1].tteach);
strcpy(timetable[j].taddress, timetable[j + 1].taddress);
strcpy(timetable[j].tstate, timetable[j + 1].tstate);
}
c--; // 开课信息数量减1
break; // 找到了要删除的开课信息,退出循环
}
}
if (flag == 1) {
printf("删除成功,显示结果请选择菜单\n");
} else {
printf("未开设该课程!\n");
}
}
```
阅读全文