void revise(book*h)//修改 { book*p = h->next; printf("请输入你要修改的书名:"); char abc[20]; scanf("%s",&abc,p->date.name); for(int i=0;i<101;i++) { if(p->date.ISBN==NULL) break; if(strcmp(p->date.name,abc)==0) { printf("原图书编号为:%s\n",p->date.ISBN); printf("原书名为%s\n",p->date.name); printf("请输入新书名:\n"); scanf("%s",&p->date.name); printf("原作者名为:%s\n",p->date.writer); printf("请输入新作者:\n"); scanf("%s",&p->date.writer); printf("原出版社为:%s\n",p->date.ad); printf("请输入新出版社:\n"); scanf("%s",&p->date.ad); printf("原价格为:%s\n",p->date.price); printf("请输入新价格:\n"); scanf("%s",&p->date.price); system("pause"); break; } }
时间: 2024-04-01 20:33:13 浏览: 72
这段代码实现了图书馆系统中的修改图书信息功能,用户输入要修改的书名,程序会遍历整个链表查找是否存在该书名对应的书籍,如果存在,则输出该书籍的原信息,并让用户输入新的书名、作者、出版社和价格。最后程序会暂停等待用户按下任意键继续执行。不过,这段代码存在一些问题,例如可能会导致内存泄漏、输入缓冲区溢出等问题。
相关问题
7) void choose(book*h) { int i; int a = 1; while (a>0) { menu(); printf("请选择:"); scanf("%d",&i); switch (i) { case 1: h=GreatLink(); break; case 2: PrintLink(h); break; case 3: Insert(h); break; case 4: Search(h); break; case 5: revise(h); break; case 6: delete(h); break; case 0: printf("【退出】\n"); printf("退出成功!感谢您的使用!\n"); system("pause");//暂停,避免输出过快 exit(0); break; default: printf("无效的命令!\n"); a = -1;//跳出循环条件 break; } } }
该函数需要一个book类型的指针h作为参数,表示书籍链表的头指针。函数主要功能是根据用户的选择执行相应的操作,具体如下:
1. 显示菜单(menu()函数);
2. 提示用户输入选择(printf("请选择:")),并读取用户输入(scanf("%d",&i));
3. 根据用户输入的选择(i)执行相应的操作,包括:
1) 创建一个新的书籍链表,并返回链表的头指针(GreatLink()函数);
2) 打印书籍链表(PrintLink()函数);
3) 在书籍链表中插入一本新书(Insert()函数);
4) 在书籍链表中查找一本书籍(Search()函数);
5) 修改一本书籍的信息(revise()函数);
6) 删除一本书籍(delete()函数);
7) 退出程序,输出感谢信息(printf()和exit(0)函数)。
4. 当用户输入无效命令时,输出提示信息(printf("无效的命令!\n")),并将循环条件a赋值为-1,跳出while循环。
需要注意的是,函数中的book类型指针h是通过传值的方式传入函数的,因此在函数内部对h的修改不会影响到函数外部的h指针。而且,在函数内部通过GreatLink()函数创建的链表头指针也不能被外部函数访问到,因此该函数的作用仅限于对链表的操作,而不会影响到链表的头指针。
void choose(book*h) { int i; int a = 1; while (a>0) { menu(); printf("请选择:"); scanf("%d",&i); switch (i) { case 1: h=GreatLink(); break; case 2: PrintLink(h); break; case 3: Insert(h); break; case 4: Search(h); break; case 5: revise(h); break; case 6: delete(h); break; case 0: printf("【退出】\n"); printf("退出成功!感谢您的使用!\n"); system("pause"); exit(0); break; default: printf("无效的命令!\n"); a = -1; break; } } }
这段代码是一个简单的控制台图书管理系统。函数 `choose` 用于提供一个菜单供用户选择,读取用户的输入并根据不同的选择调用不同的函数。具体来说,这个函数会循环打印菜单,要求用户输入选择,并根据用户的输入调用相应的函数。下面是菜单的选项和对应的功能:
1. 创建图书链表:调用 `GreatLink()` 函数创建一个图书链表,并将其返回。
2. 输出图书链表:调用 `PrintLink(h)` 函数,打印当前的图书链表。
3. 插入图书:调用 `Insert(h)` 函数,要求用户输入新的图书信息并将其插入到图书链表中。
4. 查找图书:调用 `Search(h)` 函数,要求用户输入需要查找的图书信息并在图书链表中查找。
5. 修改图书信息:调用 `revise(h)` 函数,要求用户输入需要修改的图书信息并在图书链表中进行修改。
6. 删除图书:调用 `delete(h)` 函数,要求用户输入需要删除的图书信息并将其从图书链表中删除。
0. 退出:打印退出信息并结束程序。
如果用户输入的不是菜单选项中的数字,则会提示无效的命令并退出循环。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)