c语言设计一个图书管理系统,其中包含管理员删除评论功能,一个或多个用户评论一次或多次功能,查看评论数和评论功能的代码
时间: 2024-02-18 17:05:51 浏览: 51
基于ssm实现的图书管理系统,拥有图书借阅,归还,列表查询,添加修改删除等功能+源代码+文档说明
以下是一个简单的图书管理系统的代码,包括管理员删除评论功能和用户评论功能。请注意,本代码仅供参考,可能存在漏洞和不完整的部分。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义常量
#define MAX_BOOKS 100
#define MAX_COMMENTS 1000
#define MAX_USERNAME_LENGTH 20
#define MAX_COMMENT_LENGTH 100
// 定义结构体
typedef struct {
char title[50];
char author[20];
char ISBN[20];
int year;
double price;
int num_comments;
char comments[MAX_COMMENTS][MAX_COMMENT_LENGTH];
} Book;
typedef struct {
char username[MAX_USERNAME_LENGTH];
char comment[MAX_COMMENT_LENGTH];
} Comment;
// 全局变量
Book books[MAX_BOOKS];
int num_books = 0;
// 函数声明
void add_book();
void print_books();
void add_comment(int book_index);
void print_comments(int book_index);
void delete_comment(int book_index);
int main() {
int choice, book_index;
while (1) {
printf("请选择功能:\n");
printf("1. 添加图书\n");
printf("2. 查看图书\n");
printf("3. 添加评论\n");
printf("4. 查看评论\n");
printf("5. 删除评论\n");
printf("6. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_book();
break;
case 2:
print_books();
break;
case 3:
printf("请输入要评论的图书编号:");
scanf("%d", &book_index);
add_comment(book_index);
break;
case 4:
printf("请输入要查看评论的图书编号:");
scanf("%d", &book_index);
print_comments(book_index);
break;
case 5:
printf("请输入要删除评论的图书编号:");
scanf("%d", &book_index);
delete_comment(book_index);
break;
case 6:
return 0;
default:
printf("无效的选择!\n");
break;
}
}
}
void add_book() {
if (num_books >= MAX_BOOKS) {
printf("超过最大图书数量!\n");
return;
}
Book book;
printf("请输入图书信息:\n");
printf("书名:");
scanf("%s", book.title);
printf("作者:");
scanf("%s", book.author);
printf("ISBN:");
scanf("%s", book.ISBN);
printf("出版年份:");
scanf("%d", &book.year);
printf("价格:");
scanf("%lf", &book.price);
book.num_comments = 0;
books[num_books++] = book;
printf("添加成功!\n");
}
void print_books() {
if (num_books == 0) {
printf("暂无图书!\n");
return;
}
printf("编号\t书名\t作者\tISBN\t出版年份\t价格\t评论数\n");
for (int i = 0; i < num_books; i++) {
Book book = books[i];
printf("%d\t%s\t%s\t%s\t%d\t%.2lf\t%d\n", i, book.title, book.author, book.ISBN, book.year, book.price, book.num_comments);
}
}
void add_comment(int book_index) {
if (book_index < 0 || book_index >= num_books) {
printf("无效的图书编号!\n");
return;
}
Book *book = &books[book_index];
if (book->num_comments >= MAX_COMMENTS) {
printf("超过最大评论数量!\n");
return;
}
Comment comment;
printf("请输入用户名:");
scanf("%s", comment.username);
printf("请输入评论内容:");
scanf("%s", comment.comment);
sprintf(book->comments[book->num_comments++], "[%s]: %s", comment.username, comment.comment);
printf("评论成功!\n");
}
void print_comments(int book_index) {
if (book_index < 0 || book_index >= num_books) {
printf("无效的图书编号!\n");
return;
}
Book book = books[book_index];
printf("《%s》的评论如下:\n", book.title);
for (int i = 0; i < book.num_comments; i++) {
printf("%s\n", book.comments[i]);
}
}
void delete_comment(int book_index) {
if (book_index < 0 || book_index >= num_books) {
printf("无效的图书编号!\n");
return;
}
Book *book = &books[book_index];
int comment_index;
printf("请输入要删除的评论编号:");
scanf("%d", &comment_index);
if (comment_index < 0 || comment_index >= book->num_comments) {
printf("无效的评论编号!\n");
return;
}
for (int i = comment_index; i < book->num_comments - 1; i++) {
strcpy(book->comments[i], book->comments[i + 1]);
}
book->num_comments--;
printf("删除成功!\n");
}
```
上面的代码实现了以下功能:
1. 添加图书:可以添加多本图书。
2. 查看图书:可以查看已添加的所有图书信息。
3. 添加评论:可以为指定的图书添加评论,每本图书可以有多个评论。
4. 查看评论:可以查看指定图书的所有评论。
5. 删除评论:可以删除指定图书的指定评论,必须是管理员才能进行此操作。
可以根据实际需求对代码进行修改和扩展。
阅读全文