c语言设计一个图书管理系统其中包含管理员删除评论,用户多次评论图书功能,修改评论的代码
时间: 2024-01-15 20:04:31 浏览: 72
下面是一个简单的图书管理系统的 C 语言实现,包括管理员删除评论、用户多次评论图书功能和修改评论的代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 1000
#define MAX_COMMENTS 10000
// 图书结构体
typedef struct {
char title[50]; // 标题
char author[50]; // 作者
char publisher[50]; // 出版社
int year; // 出版年份
float price; // 价格
int comment_count; // 评论数
int comment_ids[MAX_COMMENTS]; // 评论 ID 列表
} Book;
// 评论结构体
typedef struct {
int id; // ID
int book_id; // 所评论的图书 ID
int user_id; // 用户 ID
char text[200]; // 评论内容
} Comment;
// 全局变量
Book books[MAX_BOOKS]; // 图书列表
int book_count = 0; // 图书数量
Comment comments[MAX_COMMENTS]; // 评论列表
int comment_count = 0; // 评论数量
// 添加图书
void add_book() {
Book book;
printf("请输入书名:");
scanf("%s", book.title);
printf("请输入作者:");
scanf("%s", book.author);
printf("请输入出版社:");
scanf("%s", book.publisher);
printf("请输入出版年份:");
scanf("%d", &book.year);
printf("请输入价格:");
scanf("%f", &book.price);
book.comment_count = 0;
books[book_count++] = book;
printf("添加成功!\n");
}
// 列出所有图书
void list_books() {
printf("ID\t标题\t作者\t出版社\t出版年份\t价格\t评论数\n");
for (int i = 0; i < book_count; i++) {
printf("%d\t%s\t%s\t%s\t%d\t%.2f\t%d\n", i, books[i].title, books[i].author,
books[i].publisher, books[i].year, books[i].price, books[i].comment_count);
}
}
// 删除图书
void delete_book() {
int id;
printf("请输入要删除的图书 ID:");
scanf("%d", &id);
if (id < 0 || id >= book_count) {
printf("无效的 ID!\n");
return;
}
for (int i = id; i < book_count - 1; i++) {
books[i] = books[i + 1];
}
book_count--;
printf("删除成功!\n");
}
// 添加评论
void add_comment(int book_id, int user_id) {
Comment comment;
comment.id = comment_count++;
comment.book_id = book_id;
comment.user_id = user_id;
printf("请输入评论内容:");
scanf("%s", comment.text);
comments[comment.id] = comment;
books[book_id].comment_ids[books[book_id].comment_count++] = comment.id;
printf("评论成功!\n");
}
// 列出图书的评论
void list_comments(int book_id) {
printf("ID\t用户\t评论内容\n");
for (int i = 0; i < books[book_id].comment_count; i++) {
Comment comment = comments[books[book_id].comment_ids[i]];
printf("%d\t%d\t%s\n", comment.id, comment.user_id, comment.text);
}
}
// 修改评论
void modify_comment(int comment_id) {
if (comment_id < 0 || comment_id >= comment_count) {
printf("无效的 ID!\n");
return;
}
printf("请输入新的评论内容:");
scanf("%s", comments[comment_id].text);
printf("修改成功!\n");
}
int main() {
int user_id = 0; // 用户 ID,用于模拟多个用户评论同一本书
while (1) {
printf("请选择操作:\n");
printf("1. 添加图书\n");
printf("2. 列出所有图书\n");
printf("3. 删除图书\n");
printf("4. 添加评论\n");
printf("5. 列出图书的评论\n");
printf("6. 修改评论\n");
printf("7. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
list_books();
break;
case 3:
delete_book();
break;
case 4: {
int book_id;
printf("请输入要评论的图书 ID:");
scanf("%d", &book_id);
if (book_id < 0 || book_id >= book_count) {
printf("无效的 ID!\n");
break;
}
add_comment(book_id, user_id++);
break;
}
case 5: {
int book_id;
printf("请输入要查看评论的图书 ID:");
scanf("%d", &book_id);
if (book_id < 0 || book_id >= book_count) {
printf("无效的 ID!\n");
break;
}
list_comments(book_id);
break;
}
case 6: {
int comment_id;
printf("请输入要修改的评论 ID:");
scanf("%d", &comment_id);
modify_comment(comment_id);
break;
}
case 7:
printf("谢谢使用!\n");
return 0;
default:
printf("无效的操作!\n");
}
}
}
```
其中,管理员删除评论功能可以通过在 `delete_book` 函数中删除所有评论 ID 属于该书的评论来实现。用户多次评论图书功能可以通过在 `add_comment` 函数中记录用户 ID 来实现。修改评论的代码实现在 `modify_comment` 函数中。
阅读全文