#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义图书结构体
typedef struct Book {
char book_id[20];
char book_name[50];
char author[50];
float price;
int sales;
int stock;
} Book;
// 定义全局变量
Book book_list[100];
int book_count = 0;
// 函数声明
void build_book_list();
void search_by_id();
void search_by_name();
void modify_book();
void delete_by_id();
void delete_by_name();
void insert_book();
void sort_by_price();
void sort_by_sales();
void sort_by_stock();
void set_stock_alarm();
void show_all_books();
int main() {
int choice;
do {
printf("图书管理系统\n");
printf("1. 构建图书信息库表\n");
printf("2. 根据书号查到图书信息\n");
printf("3. 根据书名查找图书信息\n");
printf("4. 修改信息\n");
printf("5. 根据书号删除信息\n");
printf("6. 根据书名删除信息\n");
printf("7. 插入一个书名不重复的图书信息\n");
printf("8. 将图书按照价格排序\n");
printf("9. 按销量排序\n");
printf("10. 按库存量排序\n");
printf("11. 存量设置报警\n");
printf("12. 显示所有信息\n");
printf("0. 退出\n");
printf("请选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
build_book_list();
break;
case 2:
search_by_id();
break;
case 3:
search_by_name();
break;
case 4:
modify_book();
break;
case 5:
delete_by_id();
break;
case 6:
delete_by_name();
break;
case 7:
insert_book();
break;
case 8:
sort_by_price();
break;
case 9:
sort_by_sales();
break;
case 10:
sort_by_stock();
break;
case 11:
set_stock_alarm();
break;
case 12:
show_all_books();
break;
case 0:
printf("谢谢使用!\n");
break;
default:
printf("输入错误,请重新选择!\n");
break;
}
} while (choice != 0);
return 0;
}
// 构建图书信息库表
void build_book_list() {
printf("请输入图书数量:");
scanf("%d", &book_count);
for (int i = 0; i < book_count; i++) {
printf("请输入第%d本图书的信息:\n", i + 1);
printf("书号:");
scanf("%s", book_list[i].book_id);
printf("书名:");
scanf("%s", book_list[i].book_name);
printf("作者:");
scanf("%s", book_list[i].author);
printf("价格:");
scanf("%f", &book_list[i].price);
printf("销量:");
scanf("%d", &book_list[i].sales);
printf("库存:");
scanf("%d", &book_list[i].stock);
}
printf("图书信息库表构建完成!\n");
}
// 根据书号查到图书信息
void search_by_id() {
char book_id[20];
printf("请输入要查找的书号:");
scanf("%s", book_id);
for (int i = 0; i < book_count; i++) {
if (strcmp(book_list[i].book_id, book_id) == 0) {
printf("书号:%s,书名:%s,作者:%s,价格:%.2f,销量:%d,库存:%d\n",
book_list[i].book_id, book_list[i].book_name, book_list[i].author,
book_list[i].price, book_list[i].sales, book_list[i].stock);
return;
}
}
printf("没有找到该书号的图书!\n");
}
// 根据书名查找图书信息
void search_by_name() {
char book_name[50];
printf("请输入要查找的书名:");
scanf("%s", book_name);
for (int i = 0; i < book_count; i++) {
if (strcmp(book_list[i].book_name, book_name) == 0) {
printf("书号:%s,书名:%s,作者:%s,价格:%.2f,销量:%d,库存:%d\n",
book_list[i].book_id, book_list[i].book_name, book_list[i].author,
book_list[i].price, book_list[i].sales, book_list[i].stock);
}
}
printf("查找完成!\n");
}
// 修改信息
void modify_book() {
char book_id[20];
printf("请输入要修改的书号:");
scanf("%s", book_id);
for (int i = 0; i < book_count; i++) {
if (strcmp(book_list[i].book_id, book_id) == 0) {
printf("请输入修改后的信息:\n");
printf("书号:");
scanf("%s", book_list[i].book_id);
printf("书名:");
scanf("%s", book_list[i].book_name);
printf("作者:");
scanf("%s", book_list[i].author);
printf("价格:");
scanf("%f", &book_list[i].price);
printf("销量:");
scanf("%d", &book_list[i].sales);
printf("库存:");
scanf("%d", &book_list[i].stock);
printf("修改完成!\n");
return;
}
}
printf("没有找到该书号的图书!\n");
}
// 根据书号删除信息
void delete_by_id() {
char book_id[20];
printf("请输入要删除的书号:");
scanf("%s", book_id);
for (int i = 0; i < book_count; i++) {
if (strcmp(book_list[i].book_id, book_id) == 0) {
for (int j = i; j < book_count - 1; j++) {
book_list[j] = book_list[j + 1];
}
book_count--;
printf("删除成功!\n");
return;
}
}
printf("没有找到该书号的图书!\n");
}
// 根据书名删除信息
void delete_by_name() {
char book_name[50];
printf("请输入要删除的书名:");
scanf("%s", book_name);
for (int i = 0; i < book_count; i++) {
if (strcmp(book_list[i].book_name, book_name) == 0) {
for (int j = i; j < book_count - 1; j++) {
book_list[j] = book_list[j + 1];
}
book_count--;
printf("删除成功!\n");
}
}
printf("删除完成!\n");
}
// 插入一个书名不重复的图书信息
void insert_book() {
Book new_book;
printf("请输入要插入的图书信息:\n");
printf("书号:");
scanf("%s", new_book.book_id);
printf("书名:");
scanf("%s", new_book.book_name);
printf("作者:");
scanf("%s", new_book.author);
printf("价格:");
scanf("%f", &new_book.price);
printf("销量:");
scanf("%d", &new_book.sales);
printf("库存:");
scanf("%d", &new_book.stock);
for (int i = 0; i < book_count; i++) {
if (strcmp(book_list[i].book_name, new_book.book_name) == 0) {
printf("该书名已存在!\n");
return;
}
}
book_list[book_count] = new_book;
book_count++;
printf("插入完成!\n");
}
// 将图书按照价格排序
void sort_by_price() {
for (int i = 0; i < book_count - 1; i++) {
for (int j = 0; j < book_count - i - 1; j++) {
if (book_list[j].price > book_list[j + 1].price) {
Book temp = book_list[j];
book_list[j] = book_list[j + 1];
book_list[j + 1] = temp;
}
}
}
printf("按价格排序完成!\n");
}
// 按销量排序
void sort_by_sales() {
for (int i = 0; i < book_count - 1; i++) {
for (int j = 0; j < book_count - i - 1; j++) {
if (book_list[j].sales > book_list[j + 1].sales) {
Book temp = book_list[j];
book_list[j] = book_list[j + 1];
book_list[j + 1] = temp;
}
}
}
printf("按销量排序完成!\n");
}
// 按库存量排序
void sort_by_stock() {
for (int i = 0; i < book_count - 1; i++) {
for (int j = 0; j < book_count - i - 1; j++) {
if (book_list[j].stock > book_list[j + 1].stock) {
Book temp = book_list[j];
book_list[j] = book_list[j + 1];
book_list[j + 1] = temp;
}
}
}
printf("按库存量排序完成!\n");
}
// 存量设置报警
void set_stock_alarm() {
int alarm_count = 0;
for (int i = 0; i < book_count; i++) {
if (book_list[i].stock < 10) {
alarm_count++;
printf("警告:书号为%s的图书库存量低于10!\n", book_list[i].book_id);
}
}
if (alarm_count == 0) {
printf("所有图书库存量均正常!\n");
}
}
// 显示所有信息
void show_all_books() {
printf("所有图书信息如下:\n");
for (int i = 0; i < book_count; i++) {
printf("书号:%s,书名:%s,作者:%s,价格:%.2f,销量:%d,库存:%d\n",
book_list[i].book_id, book_list[i].book_name, book_list[i].author,
book_list[i].price, book_list[i].sales, book_list[i].stock);
}
printf("显示完成!\n");
}