图书:序号,编号,书名,单价,是否借出 要求可以添加,输出,按单价排序,删除 通过cfree编程
时间: 2024-03-12 17:47:23 浏览: 20
好的,以下是一个基本的图书管理系统的实现,支持添加、输出、按单价排序和删除操作,采用C语言编写:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 100 // 最大图书数量
// 图书结构体
typedef struct book {
int id; // 序号
char num[20]; // 编号
char name[50]; // 书名
float price; // 单价
int borrowed; // 是否借出,0表示未借出,1表示已借出
} Book;
Book books[MAX_BOOKS]; // 图书数组
int bookCount = 0; // 当前图书数量
// 添加图书
void addBook() {
if (bookCount >= MAX_BOOKS) {
printf("图书数量已达上限,无法添加!\n");
return;
}
printf("请输入图书信息:\n");
Book newBook;
printf("序号:");
scanf("%d", &newBook.id);
printf("编号:");
scanf("%s", newBook.num);
printf("书名:");
scanf("%s", newBook.name);
printf("单价:");
scanf("%f", &newBook.price);
newBook.borrowed = 0; // 新添加的图书默认未借出
books[bookCount++] = newBook;
printf("添加图书成功!\n");
}
// 输出所有图书信息
void showBooks() {
if (bookCount == 0) {
printf("目前没有任何图书!\n");
return;
}
printf("序号\t编号\t书名\t\t单价\t是否借出\n");
for (int i = 0; i < bookCount; i++) {
printf("%d\t%s\t%-15s\t%.2f\t%s\n",
books[i].id, books[i].num, books[i].name,
books[i].price, books[i].borrowed ? "是" : "否");
}
}
// 按单价排序
void sortBooks() {
if (bookCount == 0) {
printf("目前没有任何图书!\n");
return;
}
// 冒泡排序
for (int i = 0; i < bookCount - 1; i++) {
for (int j = 0; j < bookCount - i - 1; j++) {
if (books[j].price > books[j + 1].price) {
Book temp = books[j];
books[j] = books[j + 1];
books[j + 1] = temp;
}
}
}
printf("按单价排序成功!\n");
}
// 删除图书
void deleteBook() {
if (bookCount == 0) {
printf("目前没有任何图书!\n");
return;
}
printf("请输入要删除的图书编号:");
char num[20];
scanf("%s", num);
int index = -1;
for (int i = 0; i < bookCount; i++) {
if (strcmp(books[i].num, num) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到编号为%s的图书!\n", num);
} else {
for (int i = index; i < bookCount - 1; i++) {
books[i] = books[i + 1];
}
bookCount--;
printf("删除成功!\n");
}
}
// 主函数
int main() {
int choice;
while (1) {
printf("\n请选择操作:\n");
printf("1. 添加图书\n");
printf("2. 输出所有图书信息\n");
printf("3. 按单价排序\n");
printf("4. 删除图书\n");
printf("5. 退出\n");
printf("请选择操作(1-5):");
scanf("%d", &choice);
switch (choice) {
case 1:
addBook();
break;
case 2:
showBooks();
break;
case 3:
sortBooks();
break;
case 4:
deleteBook();
break;
case 5:
printf("再见!\n");
return 0;
default:
printf("输入无效,请重新选择!\n");
break;
}
}
}
```
使用说明:
1. 运行程序后,按照提示选择所需操作。
2. 添加图书:输入图书信息,按回车键进行确认,程序会自动将图书添加到数组中。
3. 输出所有图书信息:程序会按照表格形式输出所有图书的信息。
4. 按单价排序:程序会按照图书单价从低到高排序输出。
5. 删除图书:程序会询问要删除的图书编号,如果找到该图书,则将其从数组中删除。
注意:此程序只是一个基本的示例,仅作为参考。实际应用中需要根据具体需求进行修改和完善。