C++编写小型图书管理系统,界面优美,代码500行以上,不使用控制台界面
时间: 2024-05-06 19:18:46 浏览: 67
用c++编写的图书管理系统
这里提供一种用Qt编写的小型图书管理系统,界面优美,代码量较少。
首先,需要先安装Qt开发环境。创建一个Qt Widgets Application项目,然后在mainwindow.cpp中编写以下代码:
```c++
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QStandardItemModel>
#include <QFileDialog>
#include <QTextStream>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 初始化表格
model = new QStandardItemModel(this);
model->setColumnCount(3);
model->setHeaderData(0, Qt::Horizontal, tr("书名"));
model->setHeaderData(1, Qt::Horizontal, tr("作者"));
model->setHeaderData(2, Qt::Horizontal, tr("出版社"));
ui->tableView->setModel(model);
}
MainWindow::~MainWindow()
{
delete ui;
}
// 添加书籍
void MainWindow::on_addButton_clicked()
{
QString name = ui->nameEdit->text();
QString author = ui->authorEdit->text();
QString press = ui->pressEdit->text();
if (name.isEmpty() || author.isEmpty() || press.isEmpty()) {
QMessageBox::warning(this, tr("警告"), tr("请输入完整信息!"));
return;
}
QList<QStandardItem *> rowItems;
rowItems << new QStandardItem(name);
rowItems << new QStandardItem(author);
rowItems << new QStandardItem(press);
model->appendRow(rowItems);
ui->nameEdit->clear();
ui->authorEdit->clear();
ui->pressEdit->clear();
}
// 删除书籍
void MainWindow::on_deleteButton_clicked()
{
QModelIndexList indexes = ui->tableView->selectionModel()->selectedIndexes();
if (indexes.isEmpty()) {
QMessageBox::warning(this, tr("警告"), tr("请选择要删除的书籍!"));
return;
}
foreach (QModelIndex index, indexes) {
model->removeRow(index.row());
}
}
// 保存书籍
void MainWindow::on_saveButton_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this, tr("保存文件"), ".", tr("Text Files (*.txt)"));
if (fileName.isEmpty()) {
return;
}
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QMessageBox::warning(this, tr("警告"), tr("无法打开文件!"));
return;
}
QTextStream out(&file);
out << "书名\t作者\t出版社\n";
for (int i = 0; i < model->rowCount(); i++) {
out << model->item(i, 0)->text() << "\t"
<< model->item(i, 1)->text() << "\t"
<< model->item(i, 2)->text() << "\n";
}
file.close();
}
// 加载书籍
void MainWindow::on_loadButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("打开文件"), ".", tr("Text Files (*.txt)"));
if (fileName.isEmpty()) {
return;
}
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QMessageBox::warning(this, tr("警告"), tr("无法打开文件!"));
return;
}
QTextStream in(&file);
QString line = in.readLine();
if (line != "书名\t作者\t出版社") {
QMessageBox::warning(this, tr("警告"), tr("文件格式错误!"));
return;
}
model->removeRows(0, model->rowCount());
while (!in.atEnd()) {
line = in.readLine();
QStringList fields = line.split("\t");
QList<QStandardItem *> rowItems;
foreach (QString field, fields) {
rowItems << new QStandardItem(field);
}
model->appendRow(rowItems);
}
file.close();
}
```
在mainwindow.h中声明以下私有成员变量和槽函数:
```c++
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class QStandardItemModel;
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_addButton_clicked();
void on_deleteButton_clicked();
void on_saveButton_clicked();
void on_loadButton_clicked();
private:
Ui::MainWindow *ui;
QStandardItemModel *model;
};
#endif // MAINWINDOW_H
```
最后,在mainwindow.ui中设计界面,添加四个按钮和三个文本框,并将tableView与QTableView绑定。
编译运行即可看到小型图书管理系统的界面。
阅读全文