基于QT,写一个车辆信息管理系统的代码。每台车辆至少需要包含以下属性,系统中保存多台车辆的信息:车辆型号,厂商,车型级别,座位数,排量,变速箱,车身颜色,价格。能够浏览所有车辆信息:统计共有多少台车辆,并在界面上显示所有车辆信息;按照厂商查询车所有属于该厂商的车辆信息。

时间: 2024-03-07 09:49:23 浏览: 21
以下是基于QT的车辆信息管理系统代码。 mainwindow.h文件 ```c++ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <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_btnAdd_clicked(); void on_btnDelete_clicked(); void on_btnSearch_clicked(); private: Ui::MainWindow *ui; QStandardItemModel *model; void loadData(); }; #endif // MAINWINDOW_H ``` mainwindow.cpp文件 ```c++ #include "mainwindow.h" #include "ui_mainwindow.h" #include <QStandardItemModel> #include <QMessageBox> struct Car { QString type; QString manufacturer; QString level; int seats; double displacement; QString transmission; QString color; double price; }; QList<Car> cars; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); // 设置表格头 model = new QStandardItemModel(this); model->setColumnCount(8); model->setHeaderData(0, Qt::Horizontal, "车辆型号"); model->setHeaderData(1, Qt::Horizontal, "厂商"); model->setHeaderData(2, Qt::Horizontal, "车型级别"); model->setHeaderData(3, Qt::Horizontal, "座位数"); model->setHeaderData(4, Qt::Horizontal, "排量"); model->setHeaderData(5, Qt::Horizontal, "变速箱"); model->setHeaderData(6, Qt::Horizontal, "车身颜色"); model->setHeaderData(7, Qt::Horizontal, "价格"); ui->tableView->setModel(model); // 加载数据 loadData(); } MainWindow::~MainWindow() { delete ui; } void MainWindow::loadData() { // 模拟数据 cars.clear(); cars.append({"ModelA", "ManufacturerA", "LevelA", 5, 2.0, "Auto", "Red", 100000.0}); cars.append({"ModelB", "ManufacturerB", "LevelB", 7, 3.0, "Manual", "Black", 150000.0}); cars.append({"ModelC", "ManufacturerA", "LevelB", 5, 2.5, "Auto", "White", 120000.0}); // 显示数据 model->removeRows(0, model->rowCount()); for (int i = 0; i < cars.size(); i++) { const Car &car = cars.at(i); QList<QStandardItem*> rowItems; rowItems.append(new QStandardItem(car.type)); rowItems.append(new QStandardItem(car.manufacturer)); rowItems.append(new QStandardItem(car.level)); rowItems.append(new QStandardItem(QString::number(car.seats))); rowItems.append(new QStandardItem(QString::number(car.displacement))); rowItems.append(new QStandardItem(car.transmission)); rowItems.append(new QStandardItem(car.color)); rowItems.append(new QStandardItem(QString::number(car.price))); model->appendRow(rowItems); } // 显示车辆数量 ui->lblCount->setText(QString("共 %1 辆车").arg(cars.size())); } void MainWindow::on_btnAdd_clicked() { // 打开添加对话框 QString type = QInputDialog::getText(this, "添加车辆", "请输入车辆型号"); if (type.isEmpty()) { return; } QString manufacturer = QInputDialog::getText(this, "添加车辆", "请输入厂商"); if (manufacturer.isEmpty()) { return; } QString level = QInputDialog::getText(this, "添加车辆", "请输入车型级别"); if (level.isEmpty()) { return; } bool ok; int seats = QInputDialog::getInt(this, "添加车辆", "请输入座位数", 0, 0, 100, 1, &ok); if (!ok) { return; } double displacement = QInputDialog::getDouble(this, "添加车辆", "请输入排量", 0.0, 0.0, 100.0, 1, &ok); if (!ok) { return; } QString transmission = QInputDialog::getText(this, "添加车辆", "请输入变速箱"); if (transmission.isEmpty()) { return; } QString color = QInputDialog::getText(this, "添加车辆", "请输入车身颜色"); if (color.isEmpty()) { return; } double price = QInputDialog::getDouble(this, "添加车辆", "请输入价格", 0.0, 0.0, 10000000.0, 1, &ok); if (!ok) { return; } // 添加到列表 cars.append({type, manufacturer, level, seats, displacement, transmission, color, price}); // 显示到界面 QList<QStandardItem*> rowItems; rowItems.append(new QStandardItem(type)); rowItems.append(new QStandardItem(manufacturer)); rowItems.append(new QStandardItem(level)); rowItems.append(new QStandardItem(QString::number(seats))); rowItems.append(new QStandardItem(QString::number(displacement))); rowItems.append(new QStandardItem(transmission)); rowItems.append(new QStandardItem(color)); rowItems.append(new QStandardItem(QString::number(price))); model->appendRow(rowItems); // 显示车辆数量 ui->lblCount->setText(QString("共 %1 辆车").arg(cars.size())); } void MainWindow::on_btnDelete_clicked() { // 获取选中的行 QModelIndexList indexes = ui->tableView->selectionModel()->selectedRows(); if (indexes.isEmpty()) { QMessageBox::warning(this, "删除车辆", "请先选中要删除的车辆"); return; } // 删除行 int row = indexes.first().row(); cars.removeAt(row); model->removeRow(row); // 显示车辆数量 ui->lblCount->setText(QString("共 %1 辆车").arg(cars.size())); } void MainWindow::on_btnSearch_clicked() { // 打开查询对话框 QString manufacturer = QInputDialog::getText(this, "查询车辆", "请输入厂商"); if (manufacturer.isEmpty()) { return; } // 查询车辆 QList<Car> filteredCars; for (int i = 0; i < cars.size(); i++) { const Car &car = cars.at(i); if (car.manufacturer == manufacturer) { filteredCars.append(car); } } // 显示查询结果 model->removeRows(0, model->rowCount()); for (int i = 0; i < filteredCars.size(); i++) { const Car &car = filteredCars.at(i); QList<QStandardItem*> rowItems; rowItems.append(new QStandardItem(car.type)); rowItems.append(new QStandardItem(car.manufacturer)); rowItems.append(new QStandardItem(car.level)); rowItems.append(new QStandardItem(QString::number(car.seats))); rowItems.append(new QStandardItem(QString::number(car.displacement))); rowItems.append(new QStandardItem(car.transmission)); rowItems.append(new QStandardItem(car.color)); rowItems.append(new QStandardItem(QString::number(car.price))); model->appendRow(rowItems); } // 显示车辆数量 ui->lblCount->setText(QString("共 %1 辆车").arg(filteredCars.size())); } ``` 使用QStandardItemModel作为数据模型,实现了添加、删除、查询等功能。其中,loadData()函数用于加载模拟数据,on_btnAdd_clicked()函数用于打开添加对话框并添加一条车辆信息,on_btnDelete_clicked()函数用于删除选中的车辆信息,on_btnSearch_clicked()函数用于打开查询对话框并查询属于指定厂商的车辆信息。

相关推荐

最新推荐

recommend-type

基于Linux/Qt的智能家居系统设计

针对智能家居的特点及应用背景,设计了一种家庭多功能控制系统。该系统采用飞思卡尔公司ARM Cortex A8系列的i.MX51处理器作为MCU,在其上移植嵌入式Linux作为软件开发平台,并利用Qt相关技术为基础设计友好的用户...
recommend-type

汽车租赁信息管理系统源代码 c++.docx

一、为了方便公司管理各种型号的车辆,并实现以下功能: (1)对车辆进行租赁:先输入车牌号,然后输入车辆类别、品牌型号,并在库存中查找该车辆的相关信息,并进行租车。 (2)添加新的车辆信息:主要完成车辆信息...
recommend-type

基于Qt的远程监控系统的设计方案

本文介绍了一种基于Qt的远程监控系统的设计方案,该方案中所设计的远程监控系统是借助跨平台的开发工具Qt和强大的ARM平台以其实用性和良好的稳定性及易操作性逐渐成为嵌入式设备中不可或缺的组成部分。开发基于...
recommend-type

Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例

主要介绍了Qt图形图像开发之曲线图表模块QChart库一个chart中显示两条曲线详细方法与实例,需要的朋友可以参考下
recommend-type

Qt实现保存、浏览、预览、打印功能的示例代码

下面小编就为大家分享一篇Qt实现保存、浏览、预览、打印功能的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。