在实验内容的基础上,将其改造成销售记录添加和统计的GUI应用程序,界面如右图所示。 选择售货员和设置销售金额后单击“添加记录”按钮,会生成一条销售记录类对象,并将销售信息添加显示到记录明细中,同时更新显示的销售总金额。请合理修改销售记录类以满足GUI 应用程序的需求。
时间: 2024-10-09 11:07:20 浏览: 31
要将现有的销售记录类转化为一个GUI应用程序,我们需要对类进行一些调整,并添加一些窗口管理功能。首先,引入GUI库,例如Qt,Windows上的MFC,或者跨平台的wxWidgets。以下是一个基于Qt的简单示例:
```cpp
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
// 修改SalesRecord类以接受整数类型的售货员ID和金额,并添加成员变量和指针
class SalesRecord {
private:
int salesman_id;
double sales_amount;
static QLabel* total_revenue_label; // 更新总金额的全局label
public:
SalesRecord(int id, double amount) : salesman_id(id), sales_amount(amount) {}
// 添加设置总金额标签的方法,用于GUI应用程序
static void updateTotalRevenueLabel(double new_total) {
if (total_revenue_label) {
total_revenue_label->setText("Total Revenue: $" + QString::number(new_total));
}
}
// 输出销售记录信息的方法保持不变
void display() const {
// ...显示销售记录的代码...
}
};
// 设置全局总金额标签
SalesRecord::total_revenue_label = nullptr;
class SalesRecordWindow : public QWidget {
private Q_OBJECT
private slots:
void addSale() {
// 获取用户输入的售货员ID和金额
int id = ui->salesman_id_lineedit->text().toInt();
double amount = ui->amount_lineedit->text().toDouble();
// 创建新的销售记录
SalesRecord* record = new SalesRecord(id, amount);
record->display(); // 显示记录
// 更新总金额
SalesRecord::updateTotalRevenueLabel(SalesRecord::getTotalRevenue() + amount);
}
private:
QLineEdit* salesman_id_lineedit;
QLineEdit* amount_lineedit;
QPushButton* add_record_button;
QVBoxLayout* layout;
public:
SalesRecordWindow(QWidget *parent = nullptr) : QWidget(parent) {
// UI布局设置
layout = new QVBoxLayout(this);
salesman_id_lineedit = new QLineEdit(this);
amount_lineedit = new QLineEdit(this);
add_record_button = new QPushButton("Add Record", this);
// 连接信号槽
connect(add_record_button, &QPushButton::clicked, this, &SalesRecordWindow::addSale);
layout->addWidget(salesman_id_lineedit);
layout->addWidget(amount_lineedit);
layout->addWidget(add_record_button);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建窗口对象
SalesRecordWindow window;
window.show();
return app.exec();
}
//
阅读全文