供货信息管理系统,要有应用程序主窗口,麻烦大家了,有偿,谢谢
以下是使用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();
}
我可以试试