|
|
|
@ -2,6 +2,14 @@
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include "data.h"
|
|
|
|
|
|
|
|
|
|
struct book{
|
|
|
|
|
int id;
|
|
|
|
|
char name;
|
|
|
|
|
char author;
|
|
|
|
|
float price;
|
|
|
|
|
struct book *next;
|
|
|
|
|
}*books;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -98,10 +106,56 @@ int make_choice(void)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int confirm(const char* msg)
|
|
|
|
|
// 添加新图书信息
|
|
|
|
|
void add_data()
|
|
|
|
|
{
|
|
|
|
|
struct book *p, *q;
|
|
|
|
|
|
|
|
|
|
p = (struct book*)malloc(sizeof(struct book));
|
|
|
|
|
|
|
|
|
|
printf("请依次输入图书信息:\n");
|
|
|
|
|
printf("图书编号:");
|
|
|
|
|
scanf("%d", &p->id);
|
|
|
|
|
printf("图书名称:");
|
|
|
|
|
scanf("%s", p->name);
|
|
|
|
|
printf("图书作者:");
|
|
|
|
|
scanf("%s", p->author);
|
|
|
|
|
printf("图书价格:");
|
|
|
|
|
scanf("%f", &p->price);
|
|
|
|
|
|
|
|
|
|
q = books;
|
|
|
|
|
while(q != NULL && p->id > q->id)
|
|
|
|
|
q = q->next;
|
|
|
|
|
|
|
|
|
|
p->next = q; // 指向下一个节点
|
|
|
|
|
books = p; // 新节点成为链表头
|
|
|
|
|
|
|
|
|
|
printf("图书信息添加成功!\n");
|
|
|
|
|
}
|
|
|
|
|
// 更新图书信息
|
|
|
|
|
void update_data()
|
|
|
|
|
{
|
|
|
|
|
char c = 'n'; // 默认选择是 no
|
|
|
|
|
printf("%s(Y/N): ", msg); // 提示输入 yes/no 进行确认
|
|
|
|
|
scanf(" %c%*[^\n]", &c); // 读取第一个字符,忽略剩余字符
|
|
|
|
|
return c == 'y' || c == 'Y'; // 返回确认结果
|
|
|
|
|
int id;
|
|
|
|
|
struct book *p;
|
|
|
|
|
|
|
|
|
|
printf("请输入要修改的图书编号:");
|
|
|
|
|
scanf("%d", &id);
|
|
|
|
|
|
|
|
|
|
p = find(id); // 查找编号为id的图书
|
|
|
|
|
if(p != NULL)
|
|
|
|
|
{
|
|
|
|
|
printf("请依次输入修改后的图书信息:\n");
|
|
|
|
|
printf("图书名称:");
|
|
|
|
|
scanf("%s", p->name);
|
|
|
|
|
printf("图书作者:");
|
|
|
|
|
scanf("%s", p->author);
|
|
|
|
|
printf("图书价格:");
|
|
|
|
|
scanf("%f", &p->price);
|
|
|
|
|
|
|
|
|
|
printf("图书信息修改成功!\n");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
printf("没有找到编号为%d的图书!\n", id);
|
|
|
|
|
}
|
|
|
|
|
}
|