当前位置: 首页 > news >正文

使用DeepSeek实现自动化编程:类的自动生成

目录

简述

1. 通过注释生成C++类

1.1 模糊生成

1.2 把控细节,让结果更精准

1.3 让DeepSeek自动生成代码

2. 验证DeepSeek自动生成的代码

2.1 安装SQLite命令行工具

2.2 验证DeepSeek代码

3. 测试代码下载


简述

在现代软件开发中,自动化编程工具如 DeepSeek 为开发人员带来了极大的便利。本文将展示如何借助 DeepSeek 实现一个基于 Qt6 对数据库进行增删改查 的 C++ 类。通过为 C++ 类添加详细的注释,使用 DeepSeek 进行代码的自动化补全。


1. 通过注释生成C++类

1.1 模糊生成

自己也不明白需要实现什么细节的情况下,写一个大致的提示词即可。DeepSeek 会自动生成相应的代码。(可能给出的结果无法让你满意,就像领导布置的任务一样,你先做,做完我再看,大概率是要返工的)

提示词:

帮我写一个c++接口类,用Qt6实现对SQLite数据库的增删改查。

如果有进一步的要求,那么将先把接口定义出来,将注释写好,通过DeepSeek的推理功能去实现。


1.2 把控细节,让结果更精准

提示词:

//要求:帮我写一个c++接口类,用Qt6实现对sqlite数据库的增删改查。
//请按照注释补全接口代码,同时包含所需的头文件、成员变量。class SQLiteManager
{
public:/*** 构造函数,初始化SQLite数据库连接。* @param dbName 数据库文件名(包括路径)。*/SQLiteManager(const QString &dbName);/*** 析构函数,关闭数据库连接并清理资源。*/~SQLiteManager();/*** 创建表。* @param tableName 表名。* @param columns 表的列定义,格式为"column1 type1, column2 type2, ..."。* @return 是否成功创建表。*/bool createTable(const QString &tableName, const QString &columns);/*** 插入数据。* @param tableName 表名。* @param columns 列名列表,格式为{"column1", "column2", ...}。* @param values 对应列的值,格式为{value1, value2, ...}。* @return 是否成功插入数据。*/bool insert(const QString &tableName, const QStringList &columns, const QVariantList &values);/*** 更新数据。* @param tableName 表名。* @param setClause 设置子句,格式为"column1 = value1, column2 = value2"。* @param whereClause WHERE子句,格式为"column = value"。* @return 是否成功更新数据。*/bool update(const QString &tableName, const QString &setClause, const QString &whereClause);/*** 删除数据。* @param tableName 表名。* @param whereClause WHERE子句,格式为"column = value"。* @return 是否成功删除数据。*/bool remove(const QString &tableName, const QString &whereClause);/*** 查询数据。* @param tableName 表名。* @param columns 查询的列名,格式为"column1, column2"。默认为"*",表示查询所有列。* @param whereClause WHERE子句,格式为"column = value"。默认为空。* @return 查询结果模型(QSqlQueryModel)。*/QSqlQueryModel *select(const QString &tableName, const QString &columns = "*", const QString &whereClause = "");
};

要点:

说明接口需求,要实现一个什么样的功能,需要分为几个接口实现?

然后通过注释给出接口的规范,包括:

  • 接口的描述
  • 输入与输出
  • 返回值

1.3 让DeepSeek自动生成代码

将1.2中的详细提示词写完后,保存到文件 或者 直接复制给 DeepSeek: 

 推理中:

以下是DeepSeek实现的SQLiteManager类:

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlQueryModel>
#include <QVariant>
#include <QStringList>class SQLiteManager
{
private:QSqlDatabase m_db;public:SQLiteManager(const QString &dbName){m_db = QSqlDatabase::addDatabase("QSQLITE");m_db.setDatabaseName(dbName);if (!m_db.open()) {qWarning() << "Failed to open database:" << m_db.lastError().text();}}~SQLiteManager(){if (m_db.isOpen()) {m_db.close();}QSqlDatabase::removeDatabase(m_db.connectionName());}bool createTable(const QString &tableName, const QString &columns){QSqlQuery query(m_db);QString sql = QString("CREATE TABLE IF NOT EXISTS %1 (%2)").arg(tableName, columns);if (!query.exec(sql)) {qWarning() << "Create table failed:" << query.lastError().text();return false;}return true;}bool insert(const QString &tableName, const QStringList &columns, const QVariantList &values){if (columns.size() != values.size()) return false;QSqlQuery query(m_db);QString cols = columns.join(", ");QString placeholders = QStringList(columns.size(), "?").join(", ");query.prepare(QString("INSERT INTO %1 (%2) VALUES (%3)").arg(tableName, cols, placeholders));for (const auto &value : values) {query.addBindValue(value);}if (!query.exec()) {qWarning() << "Insert failed:" << query.lastError().text();return false;}return true;}bool update(const QString &tableName, const QString &setClause, const QString &whereClause){QSqlQuery query(m_db);QString sql = QString("UPDATE %1 SET %2 WHERE %3").arg(tableName, setClause, whereClause);if (!query.exec(sql)) {qWarning() << "Update failed:" << query.lastError().text();return false;}return true;}bool remove(const QString &tableName, const QString &whereClause){QSqlQuery query(m_db);QString sql = QString("DELETE FROM %1 WHERE %2").arg(tableName, whereClause);if (!query.exec(sql)) {qWarning() << "Delete failed:" << query.lastError().text();return false;}return true;}QSqlQueryModel* select(const QString &tableName, const QString &columns, const QString &whereClause){QSqlQueryModel *model = new QSqlQueryModel();QString sql = QString("SELECT %1 FROM %2").arg(columns, tableName);if (!whereClause.isEmpty()) {sql += QString(" WHERE %1").arg(whereClause);}model->setQuery(sql, m_db);if (model->lastError().isValid()) {qWarning() << "Query failed:" << model->lastError().text();delete model;return nullptr;}return model;}
};

头文件依赖:需要包含Qt SQL模块,在.pro文件中添加:

QT += sql

或者在CMakeLists.txt中追加Sql,修改以下部分:

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Sql)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Sql)target_link_libraries(deepseek_sqlite1 PRIVATEQt${QT_VERSION_MAJOR}::WidgetsQt${QT_VERSION_MAJOR}::Sql
)

功能特性:

  • 自动处理数据库连接的生命周期
  • 使用预编译语句防止SQL注入(INSERT操作)
  • 返回可直接用于Qt视图组件的QSqlQueryModel
  • 详细的错误日志输出

扩展建议

// 可添加事务支持
bool beginTransaction() { return m_db.transaction(); }
bool commit() { return m_db.commit(); }
bool rollback() { return m_db.rollback(); }

2. 验证DeepSeek自动生成的代码

2.1 安装SQLite命令行工具

相关阅读:SQLite 安装教程以及可视化工具介绍

2.2 验证DeepSeek代码

#include <QApplication>
#include <QTableView>
#include "sqlite_manager.h"int main(int argc, char **argv) {QApplication app(argc, argv);SQLiteManager db("D:/test.db");db.createTable("users", "id INTEGER PRIMARY KEY, name TEXT, age INTEGER");// 插入数据db.insert("users", {"name", "age"}, {"Alice", 25});// 更新数据//db.update("users", "age = 26", "name = 'Alice'");// 删除数据//db.remove("users", "age > 30");// 查询数据 - 查询所有users数据QSqlQueryModel *model = db.select("users", "*", "");QTableView tableView;tableView.setModel(model);tableView.show();return app.exec();
}

运行:

3. 测试代码下载

通过网盘分享的文件:deepseek_sqlite1.zip
链接: https://pan.baidu.com/s/1IkH--pFYf4TzU7bmtaBdZA?pwd=2wyg 提取码: 2wyg

相关文章:

使用DeepSeek实现自动化编程:类的自动生成

目录 简述 1. 通过注释生成C类 1.1 模糊生成 1.2 把控细节&#xff0c;让结果更精准 1.3 让DeepSeek自动生成代码 2. 验证DeepSeek自动生成的代码 2.1 安装SQLite命令行工具 2.2 验证DeepSeek代码 3. 测试代码下载 简述 在现代软件开发中&#xff0c;自动化编程工具如…...

算法题:快速排序

一、快速排序 1、快速排序总结 快速排序是一种高效的排序算法&#xff0c;基于分治法的思想。 分区操作是快速排序的核心&#xff0c;将数组分为两部分。 原地分区可以减少空间复杂度&#xff0c;提高效率。 快速排序的平均时间复杂度为 O(n log n)&#xff0c;但在最坏情况…...

Python的那些事第三十六篇:基于 Vega 和 Vega-Lite 的数据可视化解决方案,Altair 声明式可视化库

Altair 声明式可视化库:基于 Vega 和 Vega-Lite 的数据可视化解决方案 摘要 在数据科学和分析领域,有效的数据可视化是理解数据、发现模式和传达见解的关键。Python 作为数据科学的主要编程语言之一,提供了多种数据可视化库。其中,Altair 是一个基于 Vega 和 Vega-Lite 的…...

aws(学习笔记第三十课) 练习使用transit gateway

aws(学习笔记第三十课) 使用transit gateway 学习内容&#xff1a; 什么是transit gateway构造两个vpc&#xff0c;并且使用session manager访问private subnet的ec2练习使用transit gateway 1. 什么是transit gateway Transit Gateway的概念 Transit Gateway就是VPC和OnPro…...

Phpstudy中的MySQL无法正常启动或启动后自动暂停,以及sqlilab环境搭建出现的问题解决方法

【解决方法】 无法启动的原因是Phpstudy中的MySQL与本地的mysql重名&#xff0c;导致无法正常启动&#xff1b;所以这时我们就需要将本地的MySQL进行修改名称&#xff1b; 或者修改phpstudy中数据库的端口号&#xff0c;但是我觉得还是不是很好解决这种问题 最后一个方法&#…...

【Android】安卓付款密码输入框、支付密码输入框

如图 代码部分&#xff1a; public class PayPasswordDialog extends AppCompatDialogFragment {private String mPayPass "";private String mTitle, mMoney;private final TextView[] mPayPassTextViewArray new TextView[6];private List<Integer> mPayP…...

Python异常处理:从入门到精通的实用指南

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

【AVL树】—— 我与C++的不解之缘(二十三)

什么是AVL树&#xff1f; AVL树发明者是G. M. Adelson-Velsky和E. M. Landis两个前苏联科学家&#xff0c;他们在1962年论文《An algorithm for the organization of information》中发表了AVL树。AVL树是最先发明的自平衡二叉搜索树&#xff0c;说白了就是能够自己控制平衡结构…...

用大白话解释日志处理Log4j 是什么 有什么用 怎么用

Log4j是什么&#xff1f; Log4j就像程序的“黑匣子”&#xff0c;专门用来记录软件运行时的各种信息&#xff0c;比如哪里报错、性能如何、用户操作轨迹等。它是Java领域最常用的日志框架之一&#xff0c;可以灵活控制日志内容、输出位置&#xff08;控制台、文件、数据库等&a…...

无人机遥控器的亮度 和 两个工作频率

工作频率 2.4000-2.4835 GHz &#xff0c; 5.725-5.850 GHz 1.这是一个无人机的遥控器的两个工作频率&#xff0c;为什么会有两个工作频率&#xff1f; 无人机的遥控器采用双频段设计&#xff08;2.4GHz 和 5.8GHz&#xff09;&#xff0c;主要是为了解决以下问题并优化性…...

【Linux】命令行参数 | 环境变量(四)

目录 前言&#xff1a; 一、命令行参数&#xff1a; 1.main函数参数 2.为什么有它&#xff1f; 二、环境变量&#xff1a; 1.main函数第三个参数 2.查看shell本身环境变量 3.PATH环境变量 4.修改PATH环境变量配置文件 5.HOME环境变量 6.SHELL环境变量 7.PWD环境变…...

算法002——复写零

力扣——复写零点击即可跳转 这道题还是运用 双指针&#xff0c;我们从左往右开始&#xff0c;让 cur 0&#xff0c;dest 0,当我们循环时&#xff0c;会覆盖后面的值&#xff0c;所以从左到右无法实现&#xff0c;我们运用 从右到左的方式。 以示例一数组为例&#xff0c;从…...

例子 DQN + CartPole: 深入思考一下,强化学习确实是一场智能冒险之旅!

强化学习的概念 在技术人员眼里&#xff0c;深度学习、强化学习&#xff0c;或者是大模型&#xff0c;都只是一些算法。无论是简单&#xff0c;还是复杂&#xff0c;我们都是平静的看待。当商业元素日益渗透进技术领域&#xff0c;人人言必称大模型的时候。技术人该反思一下&a…...

java 实现xxl-job定时任务自动注册到调度中心

xxl-job 自动注册(执行器和任务) 前言 xxl-job是一个功能强大、简单易用、高可用且可扩展性强的分布式定时任务框架/分布式任务调度平台。它适用于各种需要定时任务调度的场景,并可根据业务需求进行灵活配置和扩展。 xxl-job简介 xxl-job是一个开源的分布式定时任务框架,…...

esp32串口通信

1、线路图 2、打开电脑的串口终端 3、eps32通过串口往电脑的串口终端输出信息&#xff1a; from machine import UART, Pin import time# 初始化UART0&#xff0c;波特率设置为115200 uart UART(0, baudrate115200, tx1, rx3)# 主循环 while True:# 要发送的消息#某些串口终…...

蓝桥杯备赛-前缀和-可获得的最小取值

问题描述 妮妮学姐手头有一个长度为 nn 的数组 aa&#xff0c;她想进行 kk 次操作来取出数组中的元素。每次操作必须选择以下两种操作之一&#xff1a; 取出数组中的最大元素。取出数组中的最小元素和次小元素。 妮妮学姐希望在进行完 kk 次操作后&#xff0c;取出的数的和最…...

UniApp 中封装 HTTP 请求与 Token 管理(附Demo)

目录 1. 基本知识2. Demo3. 拓展 1. 基本知识 从实战代码中学习&#xff0c;上述实战代码来源&#xff1a;芋道源码/yudao-mall-uniapp 该代码中&#xff0c;通过自定义 request 函数对 HTTP 请求进行了统一管理&#xff0c;并且结合了 Token 认证机制 请求封装原理&#xff…...

边缘计算+多模态感知:户外监控核心技术解析与工程部署实践!户外摄像头监控哪种好?户外摄像头监控十大品牌!格行视精灵VS海康威视VS大华横评!

一、核心参数解析与选型逻辑 1.环境适应性设计 极端天气防护&#xff1a;优先选择IP66/67防护等级的设备&#xff0c;例如格行视精灵通过IP67防水防尘设计可应对暴雨、沙尘暴等复杂环境&#xff0c;其密封轴承结构可有效防止水汽侵蚀内部电路。 温度耐受范围&#xff1a;北方…...

Spring项目-抽奖系统(实操项目)(ONE)

^__^ (oo)\______ (__)\ )\/\ ||----w | || || 一&#xff1a;前言&#xff1a; 随着互联网技术的快速发展&#xff0c;线上营销活动已成为企业吸引用户、…...

STM32-智能小车项目

项目框图 ST-link接线 实物图&#xff1a; 正面&#xff1a; 反面&#xff1a; 相关内容 使用L9110S电机模块 电机驱动模块L9110S详解 | 良许嵌入式 测速模块 语音模块SU-03T 网站&#xff1a;智能公元/AI产品零代码平台 一、让小车动起来 新建文件夹智能小车项目 在里面…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发&#xff0c;采用现代化的Web技术&#xff0c;为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## &#x1f4cb; 系统概述 ### &#x1f3af; 系统定…...