c语言设计一个图书管理系统,其中包含管理员删除评论功能,一个或多个用户评论一次或多次功能,查看评论数和评论功能的中文代码
时间: 2024-02-18 20:04:50 浏览: 82
以下是一个简单的C语言图书管理系统,其中包含管理员删除评论、一个或多个用户评论一次或多次、查看评论数和评论功能的中文代码。
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义图书结构体
struct Book {
char title[100];
char author[100];
float price;
int num_reviews;
char **reviews;
};
// 声明函数
void add_review(struct Book *book, char *review);
void delete_review(struct Book *book, int review_index);
void print_book(struct Book *book);
int main() {
// 初始化图书
struct Book book;
strcpy(book.title, "《追风筝的人》");
strcpy(book.author, "卡勒德·胡赛尼");
book.price = 29.80;
book.num_reviews = 0;
book.reviews = NULL;
// 用户评论
add_review(&book, "这是一本很好的书。");
add_review(&book, "我非常喜欢这本书。");
add_review(&book, "这本书让我感动了。");
add_review(&book, "我推荐这本书给大家。");
// 打印图书信息
print_book(&book);
// 管理员删除评论
delete_review(&book, 2);
// 打印图书信息
print_book(&book);
return 0;
}
// 添加评论
void add_review(struct Book *book, char *review) {
// 增加评论数
book->num_reviews++;
// 重新分配内存
book->reviews = realloc(book->reviews, book->num_reviews * sizeof(char *));
// 分配内存
book->reviews[book->num_reviews - 1] = malloc(strlen(review) + 1);
// 复制评论
strcpy(book->reviews[book->num_reviews - 1], review);
}
// 删除评论
void delete_review(struct Book *book, int review_index) {
// 如果评论数为0,则直接返回
if (book->num_reviews == 0) {
return;
}
// 释放内存
free(book->reviews[review_index]);
// 移动指针
for (int i = review_index; i < book->num_reviews - 1; i++) {
book->reviews[i] = book->reviews[i + 1];
}
// 减少评论数
book->num_reviews--;
// 重新分配内存
book->reviews = realloc(book->reviews, book->num_reviews * sizeof(char *));
}
// 打印图书信息
void print_book(struct Book *book) {
printf("书名:%s\n", book->title);
printf("作者:%s\n", book->author);
printf("价格:%f\n", book->price);
printf("评论数:%d\n", book->num_reviews);
printf("评论:\n");
for (int i = 0; i < book->num_reviews; i++) {
printf("%d. %s\n", i + 1, book->reviews[i]);
}
}
```
阅读全文