c++代码,答辩用。(栈)

供货信息管理系统,要有应用程序主窗口,麻烦大家了,有偿,谢谢

img

以下是使用QT创建应用程序主窗口的供货信息管理系统,仅供参考,望采纳,谢谢。

#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QMessageBox>

#include <stack>
#include <string>
#include <iostream>

struct Goods
{
    std::string name;
    std::string production_date;
    int quantity;
};

class Shelf
{
public:
    void Push(const Goods &goods)
    {
        stack_.push(goods);
    }

    Goods Pop()
    {
        Goods goods = stack_.top();
        stack_.pop();
        return goods;
    }

    void Reverse()
    {
        std::stack<Goods> reversed_stack;
        while (!stack_.empty())
        {
            reversed_stack.push(stack_.top());
            stack_.pop();
        }
        stack_ = reversed_stack;
    }

    bool Empty() const
    {
        return stack_.empty();
    }

    int Size() const
    {
        return stack_.size();
    }

private:
    std::stack<Goods> stack_;
};

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
    {
        // 创建界面元素
        name_edit_ = new QLineEdit;
        QLineEdit *name_edit_;
        QLineEdit *date_edit_;
        QLineEdit *quantity_edit_;
        QPushButton *push_button_;
        QPushButton *pop_button_;
        QPushButton *reverse_button_;
        QLabel *label_;
        Shelf shelf_;

    public:
        MainWindow(QWidget *parent = nullptr) : QMainWindow(parent)
        {
            // 创建界面元素
            name_edit_ = new QLineEdit;
            date_edit_ = new QLineEdit;
            quantity_edit_ = new QLineEdit;
            push_button_ = new QPushButton("上货");
            pop_button_ = new QPushButton("取货");
            reverse_button_ = new QPushButton("倒货架");
            label_ = new QLabel;
            // 创建布局
            QVBoxLayout *left_layout = new QVBoxLayout;
            left_layout->addWidget(new QLabel("商品名称:"));
            left_layout->addWidget(name_edit_);
            left_layout->addWidget(new QLabel("生产日期:"));
            left_layout->addWidget(date_edit_);
            left_layout->addWidget(new QLabel("数量:"));
            left_layout->addWidget(quantity_edit_);

            QVBoxLayout *right_layout = new QVBoxLayout;
            right_layout->addWidget(push_button_);
            right_layout->addWidget(pop_button_);
            right_layout->addWidget(reverse_button_);

            QHBoxLayout *main_layout = new QHBoxLayout;
            main_layout->addLayout(left_layout);
            main_layout->addLayout(right_layout);
            main_layout->addWidget(label_);

            // 创建中心部件并设置布局
            QWidget *central_widget = new QWidget;
            central_widget->setLayout(main_layout);
            setCentralWidget(central_widget);

            // 连接信号和槽
            connect(push_button_, &QPushButton::clicked, this, &MainWindow::OnPush);
            connect(pop_button_, &QPushButton::clicked, this, &MainWindow::OnPop);
            connect(reverse_button_, &QPushButton::clicked, this, &MainWindow::OnReverse);

            // 设置窗口属性
            setWindowTitle("货架管理系统");
            resize(640, 480);
        }
    private slots:
        void OnPush()
        {
            // 获取输入的信息
            QString name = name_edit_->text();
            QString date = date_edit_->text();
            int quantity = quantity_edit_->text().toInt();
            // 上货
            shelf_.Push({name.toStdString(), date.toStdString(), quantity});

            // 清空输入框
            name_edit_->clear();
            date_edit_->clear();
            quantity_edit_->clear();
        }

        void OnPop()
        {
            if (shelf_.Empty())
            {
                QMessageBox::warning(this, "错误", "货架已经没有商品了!");
                return;
            }

            // 取货
            Goods goods = shelf_.Pop();
            label_->setText(QString("取货:%1 %2 %3").arg(goods.name.c_str()).arg(goods.production_date.c_str()).arg(goods.quantity));
        }

        void OnReverse()
        {
            // 倒货架
            shelf_.Reverse();
        }
    };

    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        MainWindow window;
        window.show();

        return app.exec();
    }

我可以试试