
回复
该系统主要利用 Room 数据库进行数据存储,并通过鸿蒙 SDK 提供的 UI 组件实现用户交互。以下是系统流程:
graph TD;
A[启动应用] -->B[显示主界面]
B --> C[用户选择操作]
C --> D[查询图书]
C --> E[借阅图书]
C --> F[归还图书]
C --> G[管理员操作]
D --> H[显示查询结果]
E --> I[更新数据库记录]
F --> J[更新数据库记录]
G --> K[添加/删除/更新图书信息]
@Entity(tableName = "books")
public class Book {
@PrimaryKey(autoGenerate = true)
private int id;
@ColumnInfo(name = "title")
private String title;
@ColumnInfo(name = "author")
private String author;
@ColumnInfo(name = "available")
private boolean available;
// Getter and Setter methods
}
@Dao
public interface BookDao {
@Insert
void insert(Book book);
@Update
void update(Book book);
@Delete
void delete(Book book);
@Query("SELECT * FROM books WHERE title LIKE :search")
List<Book> searchBooks(String search);
}
@Database(entities = {Book.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
public abstract BookDao bookDao();
}
public void borrowBook(int bookId) {
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "library").build();
Book book = db.bookDao().findById(bookId);
if (book.isAvailable()) {
book.setAvailable(false);
db.bookDao().update(book);
showToast("Book borrowed successfully!");
} else {
showToast("Book is not available.");
}
}
public List<Book> searchBooks(String keyword) {
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "library").build();
return db.bookDao().searchBooks("%" + keyword + "%");
}
@Test
public void testBorrowBook() {
LibrarySystem system = new LibrarySystem();
system.addBook(new Book("Test Book", "Author", true));
List<Book> books = system.searchBooks("Test Book");
assertTrue(books.get(0).isAvailable());
system.borrowBook(books.get(0).getId());
assertFalse(books.get(0).isAvailable());
}
这个图书管理系统利用鸿蒙平台和 Room 数据库提供了一套完整的解决方案,覆盖了图书的常见管理功能。它不仅适用于小型图书馆,还可以扩展用于大型图书馆系统,通过不断优化与完善,可以提升用户体验及管理效率。