一、出版社有一些图书数据保存在一个文本文件Book.txt中,为简单起见,在此假设每一种图书只包括三部分信息:ISBN(书号)、书名、价格,文件中的部分数据如图1所示。现要求实现一个图书信息管理系统,包含以下6个具体功能。 1.查找:根据指定的ISBN或书名查找相应图书的有关信息,并返回该图书在表中的位置序号。 2.插入:插入一种新的图书信息。 3.删除:删除一种图书信息。 4.修改:根据指定的ISBN号,修改图书的价格。 5.排序:将图书按照价格由低到高进行排序。 计数:统计图书表中的图书数量。 C语言代码示例
时间: 2024-03-26 12:38:27 浏览: 79
以下是一个简单的C语言代码示例,实现了上述6个功能:
```c
#include <stdio.h>
#include <string.h>
#define MAX_BOOKS 100
struct Book {
char isbn[20];
char name[50];
float price;
};
struct Book books[MAX_BOOKS];
int num_books = 0;
// 查找函数,返回找到的位置序号
int find_book(char *isbn_or_name) {
for (int i = 0; i < num_books; i++) {
if (strcmp(isbn_or_name, books[i].isbn) == 0 || strcmp(isbn_or_name, books[i].name) == 0) {
return i;
}
}
return -1;
}
// 插入函数,成功返回0,失败返回-1
int insert_book(char *isbn, char *name, float price) {
if (num_books == MAX_BOOKS) {
return -1;
}
strcpy(books[num_books].isbn, isbn);
strcpy(books[num_books].name, name);
books[num_books].price = price;
num_books++;
return 0;
}
// 删除函数,成功返回0,失败返回-1
int delete_book(int index) {
if (index < 0 || index >= num_books) {
return -1;
}
for (int i = index; i < num_books - 1; i++) {
books[i] = books[i+1];
}
num_books--;
return 0;
}
// 修改函数,成功返回0,失败返回-1
int modify_book(char *isbn, float new_price) {
int index = find_book(isbn);
if (index == -1) {
return -1;
}
books[index].price = new_price;
return 0;
}
// 排序函数
void sort_books() {
for (int i = 0; i < num_books - 1; i++) {
for (int j = i + 1; j < num_books; j++) {
if (books[i].price > books[j].price) {
struct Book temp = books[i];
books[i] = books[j];
books[j] = temp;
}
}
}
}
// 统计函数
int count_books() {
return num_books;
}
int main() {
// 读入数据
FILE *fp = fopen("Book.txt", "r");
while (!feof(fp)) {
char isbn[20], name[50];
float price;
fscanf(fp, "%s %s %f", isbn, name, &price);
insert_book(isbn, name, price);
}
fclose(fp);
// 测试各个功能
int index = find_book("9787115485426");
if (index != -1) {
printf("书名:%s,价格:%f,位置:%d\n", books[index].name, books[index].price, index+1);
} else {
printf("未找到该图书!\n");
}
insert_book("9787115485433", "C语言程序设计(第四版)", 49.0);
index = find_book("9787115485433");
if (index != -1) {
printf("书名:%s,价格:%f,位置:%d\n", books[index].name, books[index].price, index+1);
} else {
printf("未找到该图书!\n");
}
delete_book(index);
index = find_book("9787115485433");
if (index != -1) {
printf("书名:%s,价格:%f,位置:%d\n", books[index].name, books[index].price, index+1);
} else {
printf("未找到该图书!\n");
}
modify_book("9787115485426", 59.0);
sort_books();
printf("图书总数:%d\n", count_books());
return 0;
}
```
注意,这只是一个简单的示例代码,实际应用中可能需要更多的错误处理和交互功能。
阅读全文