m0_72263077 2023-01-02 19:41 采纳率: 100%
浏览 111
已结题

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

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

img

  • 写回答

2条回答 默认 最新

  • |__WhoAmI__| 2023-01-02 20:14
    关注

    以下是使用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();
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月10日
  • 已采纳回答 1月2日
  • 创建了问题 1月2日

悬赏问题

  • ¥15 对于这个复杂问题的解释说明
  • ¥50 三种调度算法报错 采用的你的方案
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败