Cursor实战:Web版背单词应用开发演示
Cursor实战:Web版背单词应用开发演示
- 需求分析
- 自行编写需求文档
- 借助Cursor生成需求文档
- 前端UI设计
- 后端开发
- 项目结构
- 环境参数
- 数据库设计
- 安装Python依赖
- 运行应用
- 前端代码修改
- 测试前端界面
- 测试数据生成
- 功能测试
- Bug修复
- 总结
在上一篇《Cursor AI编程助手不完全指南》中,我们详细介绍了Cursor这款强大的AI编程工具。为了让大家能更直观地了解 Cursor 的实战应用价值,本文将通过一个实际项目来展示其开发流程。我们将使用 Cursor 开发一个 Web 版单词学习程序,通过这个案例,您将看到 AI 辅助开发的完整过程,体验从需求分析到代码实现的全过程。让我们开始这次实战之旅。
需求分析
在开始开发之前,明确的需求文档是项目成功的关键。一个好的需求文档不仅能指导开发方向,还能作为与 Cursor 进行高效对话的重要基础。我们有两种方式来准备需求文档:自行编写需求文档和借助 Cursor 生成需求文档。
自行编写需求文档
- 明确列出功能模块和具体需求
- 按优先级排序各项功能
- 将文档保存为独立文件,方便随时参考
- 确保描述清晰,避免歧义
借助Cursor生成需求文档
- 提供项目的核心目标和主要功能点
- 让AI协助完善功能描述和技术细节
- 根据实际需求进行调整和补充

摘抄部分功能内容,填充到自己的开发需求文档如下:
# 开发一个学单词的web程序## 核心功能需求### 学习模式- 从未学单词中挑选10个单词进行学习
- 单词卡片展示(拼写、音标、释义、例句)
- 发音功能
- 可以将当前词加入到错题本,进行复习### 复习模式- 从错词本中随机抽取单词进行复习### 用户管理- 用户免登录,可以设置用户名## 技术需求### 前端- 响应式设计,支持多端适配
- 流畅的交互体验,界面简洁美观### 后端- 如果需要用到后端程序,请使用python语言
- 如果需要用到数据库,请使用MySQL## 数据结构### 单词库- 单词基本信息(拼写、音标、发音音频、释义、例句)### 用户学习记录- 记录用户学习记录和错题信息
前端UI设计
使用 Cursor 的 COMPOSER 模式+ AGENT,以需求文档作为上下文,和 Cursor 对话,让其帮忙生成 UI 界面。
请根据我的需求文档,设计一个学单词的web界面,要求简洁美观

觉得设计的还不错,就直接选择 Accept,如需修改可继续提问进行修改。

下面进行 web 界面的预览, 选中 html 文件,右键 Open In Default Browser。


后端开发
前端部分先这样,可以继续进行后端设计,包括API接口、功能实现和数据库设计。


项目结构
Cursor 给出的后端项目结构:
app/├── models/│ └── models.py├── routes/│ └── word_routes.py├── utils/└── app.pyrequirements.txt.env
环境参数
Cursor 创建一个保存环境变量文件,我们需要修改其中的内容,如连接数据库的URI。
DATABASE_URL=mysql+pymysql://root:root@localhost/word_memorize
FLASK_ENV=development
FLASK_APP=app/app.py
数据库设计
- Word 表:存储单词基本信息
- UserProgress 表:存储用户学习进度和错题本
创建数据库:
CREATE DATABASE word_memorize CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
表可以先不创建,后面让Cursor生成程序进行表的创建和测试数据生成。
安装Python依赖
Cursor 已为我们创建一个 requirements.txt 文件来管理项目依赖(如果没有,可让其帮忙生成)。
Flask==2.0.1
Flask-SQLAlchemy==2.5.1
Flask-CORS==3.0.10
PyMySQL==1.0.2
python-dotenv==0.19.0
requests==2.26.0
有了依赖我们可以直接执行以下安装命令,可以让 Cursor 帮忙执行,(注意:如果使用的是python虚拟环境,可能需要手动执行命令,cursor 默认使用默认的 python 环境):
pip install -r requirements.txt

运行应用
flask run
首次运行,出错了,没关系,交给 Cursor 去解决(这是一个持续过程,需要有点耐心):

根据提示,升级Flask版本:

继续运行,又报错了,继续丢给 Cursor 帮忙解决:

修改了依赖的版本和代码中依赖的导入方式:

又回到了第一个问题,版本不兼容,Cursor 建议让我们用第二种方式解决:

这次启动成功:

前端代码修改
接下来,我们需要修改前端JavaScript代码,对接后端 API。

测试前端界面
修改之后,打开页面,报错了页面中的CSS和JS文件找不到,可能是路径问题,需要修复下:


接收所有建议,需要运行一个服务用于加载前端文件:

测试数据生成
我们让Cursor帮忙生成测试单词数据:

添加单词报错:

一通修复之后,终于添加了单词

功能测试
单词展示和下一个功能正常:

加入错题本正常:

单词学完:

Bug修复
页面虽然展示添加到错题本成功,其实并没有真正添加到数据库:


需要Cursor帮忙修复这个问题:

修复之后,重启程序,仍然有问题,不过我观察到错题记录是被答题记录更新掉了,需要让 Cursor 注意到这个问题:


错题本终于也正常了:

总结
虽然这是一个相对简单的示例项目,但它展示了 AI 辅助开发的基本流程和方法。通过这次实践,我们可以总结以下几点经验:
1、交互策略
- 与Cursor进行清晰、具体的对话
- 将复杂需求拆分成小步骤
- 及时反馈和纠正AI的输出
2、效率提升
- 善用上下文管理,保持对话连贯性
- 复用已验证的代码片段
- 建立个人的提示词模板
相关文章:
Cursor实战:Web版背单词应用开发演示
Cursor实战:Web版背单词应用开发演示 需求分析自行编写需求文档借助Cursor生成需求文档 前端UI设计后端开发项目结构环境参数数据库设计安装Python依赖运行应用 前端代码修改测试前端界面 测试数据生成功能测试Bug修复 总结 在上一篇《Cursor AI编程助手不完全指南》…...
Kotlin Lambda
Kotlin Lambda 在探索Kotlin Lambda之前,我们先回顾下Java中的Lambda表达式,Java 的 Lambda 表达式是 Java 8 引入的一项强大的功能,它使得函数式编程风格的代码更加简洁和易于理解。Lambda 表达式允许你以一种更简洁的方式表示实现接口&…...
V4L2驱动之UVC
以下是关于V4L2摄像头驱动框架与UVC协议的关联分析,从内核驱动到用户空间的完整视角: 1. V4L2驱动框架核心架构 关键组件: 核心层 (V4L2 Core) v4l2_device:设备的总入口,管理所有子组件video_device:对应…...
numpy(01 入门)
前面内容:pandas(01 入门) 目录 一、numpy 简介 1.1 Numpy 应用场景 1.2 Numpy 优点 1.3 Numpy 缺点 1.4 相关链接 二、Numpy环境安装配置 2.1 Python自带包 2.2 Numpy 安装 三、NumPy.Ndarray 3.1 ndarray特点: 3.2 ndarray()参数&…...
Chatgpt论文润色指令整理
1. 内容润色 这个来自文章《three ways ChatGPT helps me in my academic writing》。 在输入你要润色的内容前,先输入以下内容来驯化chatgpt的身份: I’m writing a paper on [话题] for a leading [学科/杂志] academic journal. What I tried to s…...
vscode复制到下一行
linux中默认快捷键是ctrl shift alt down/up 但是在vscode中无法使用,应该是被其他的东西绑定了,经测试,可以使用windows下的快捷键shift alt down/up { “key”: “shiftaltdown”, “command”: “editor.action.copyLinesDownAction”…...
Python天梯赛刷题-五分题(上)
蓝桥杯题刷的好累,感觉零帧起手、以题带学真的会很吃力,打算重新刷一点天梯的题目巩固一下,我本人在算法非常不精通的情况下,自认为天梯的L1的题是会相对容易一些的,可能有一些没有脑子光靠力气的“硬推”hhhh。 从头…...
【优先级队列】任务分配
任务分配问题,有n个任务,每个任务有个达到时间。将这些任务分配给m个处理器,进行处理。每个处理器的处理时间不一样。处理器的任务列表有最大任务数限制。 分配任务的策略是:当前待分配的任务的处理时刻最小。如果处理时刻相同&am…...
设计模式之适配模式是什么?以及在Spring AOP中的拦截器链的使用源码解析。
前言 本文涉及到适配模式的基本用法,以及在Spring AOP中如何使用,首先需要了解适配模式的工作原理,然后结合Spring AOP的具体实现来详细详细解析源码。 首先,适配模式,也就是Adapter Pattern,属于结构型设计…...
Python 库自制 Cross-correlation 算法
Python 库自制 Cross-correlation 算法 引言正文引言 虽然 Scipy 库中包含了成熟的 Cross-correlation 算法,但是有些时候我们无法使用现成的库进行数据处理。这里介绍如何使用 Python 基础函数自制 Cross-correlation 算法。后续读者可以将该算法转换为其他各类语言。 正文…...
C++(23):为类成员函数增加this参数
C23允许指定类成员函数的第一个参数的this类型,从而更加便于函数重载: #include <iostream> using namespace std;class A{ public:void func(this A&){cout<<"in func1"<<endl;}void func(this const A&){cout<…...
javaSE学习笔记23-线程(thread)-总结
创建线程的三种方式 练习代码 package com.kuang.thread;import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask;//回顾总结线程的创建 public class ThreadNew {public static void main(String[…...
【DeepSeek服务器部署全攻略】Linux服务器部署DeepSeek R1模型、实现API调用、搭建Web页面以及专属知识库
DeepSeek R1模型的Linux服务器搭建、API访问及Web页面搭建 1,引言2,安装Ollama工具3,下载DeepSeek R1 模型4,DeepSeek命令行对话5,DeepSeek API接口调用6,DeepSeek结合Web-ui实现图形化界面远程访问6.1&…...
【JAVA工程师从0开始学AI】,第四步:闭包与高阶函数——用Python的“魔法函数“重构Java思维
副标题:当严谨的Java遇上"七十二变"的Python函数式编程 历经变量战争、语法迷雾、函数对决,此刻我们将踏入Python最迷人的领域——函数式编程。当Java工程师还在用接口和匿名类实现回调时,Python的闭包已化身"智能机器人"…...
算法日记20:SC72最小生成树(prim朴素算法)
一、题目: 二、题解 2.1:朴素prim的步骤解析 O ( n 2 ) O(n^2) O(n2)(n<1e3) 0、假设,我们现在有这样一个有权图 1、我们随便找一个点,作为起点开始构建最小生成树(一般是1号),并且存入intree[]状态数组中…...
玩转SpringCloud Stream
背景及痛点 现如今消息中间件(MQ)在互联网项目中被广泛的应用,特别是大数据行业应用的特别的多,现在市面上也流行这多个消息中间件框架,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka等,这些消息中间件各有各的优劣,但是想…...
嵌入式经常用到串口,如何判断串口数据接收完成?
说起通信,首先想到的肯定是串口,日常中232和485的使用比比皆是,数据的发送、接收是串口通信最基础的内容。这篇文章主要讨论串口接收数据的断帧操作。 空闲中断断帧 一些mcu(如:stm32f103)在出厂时就已经在…...
iOS App的启动与优化
App的启动流程 App启动分为冷启动和热启动 冷启动:从0开始启动App热启动:App已经在内存中,但是后台还挂着,再次点击图标启动App。 一般对App启动的优化都是针对冷启动。 App冷启动可分为三个阶段: dyld:…...
导出指定文件夹下的文件结构 工具模块-Python
python模块代码 import os import json import xml.etree.ElementTree as ET from typing import List, Optional, Dict, Union from pathlib import Path class DirectoryTreeExporter:def __init__(self,root_path: str,output_file: str,fmt: str txt,show_root: boo…...
Leetcode - 周赛436
目录 一、3446. 按对角线进行矩阵排序二、3447. 将元素分配给有约束条件的组三、3448. 统计可以被最后一个数位整除的子字符串数目四、3449. 最大化游戏分数的最小值 一、3446. 按对角线进行矩阵排序 题目链接 本题可以暴力枚举,在确定了每一个对角线的第一个元素…...
GPT-5越狱攻击PROMISQROUTE深度解析:从提示词工程到AI安全防御
1. 项目概述:一次针对GPT-5的“越狱”概念验证最近在安全研究社区里,一个名为“PROMISQROUTE”的GPT-5越狱概念验证(PoC)引起了我的注意。这本质上是一个精心设计的提示词工程攻击,它通过角色扮演和规则重构࿰…...
Python学习笔记二(函数、类与对象)
Python学习笔记二函数类与对象函数 定义与调用 def 函数名(参数列表):# 函数体:执行的具体代码# ...return 返回值def greet(name): # 定义一个打招呼的函数"""向指定的人打招呼"""print(f"Hello, {name}!")# 调用函数&a…...
到底什么资格,才算真正的资深 UE 开发专家
目录 前言 一、破除认知误区:绝大多数 UE 开发者,达不到资深专家门槛 1.1 初级 / 中级 / 高级 / 资深 UE 专家 核心能力差异 1.2 伪「资深 UE」典型特征 二、核心资质一:吃透 UE 底层架构,精通 UObject 与引擎核心运行机制 …...
NVIDIA Profile Inspector:解锁显卡隐藏性能的终极免费工具
NVIDIA Profile Inspector:解锁显卡隐藏性能的终极免费工具 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾经觉得自己的NVIDIA显卡性能没有完全发挥?明明配置不错&…...
如何快速解密网易云音乐NCM格式:ncmdump终极免费指南
如何快速解密网易云音乐NCM格式:ncmdump终极免费指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经遇到过这样的困扰?在网易云音乐精心收藏的歌曲,下载到本地后却无法在其他播放器或设…...
车载Java微服务架构崩塌前夜:当Android Automotive与QNX Hypervisor共存时,你必须立即重构的4个IPC通信层
更多请点击: https://intelliparadigm.com 第一章:车载Java微服务架构崩塌前夜:当Android Automotive与QNX Hypervisor共存时,你必须立即重构的4个IPC通信层 在混合车载操作系统环境中,Android Automotive࿰…...
论文投稿前让AI预审太好用啦!!!
作为一个拿过2项国自然青年基金、带过3届硕博生的高校青椒,今天给大家聊点掏心窝子的稿件打磨经验,都是我踩了无数坑、熬了无数夜攒出来的干货,不管你是要申基金、写毕业论文还是报专利,都能用得上。首先先给大家列3个科研人最容易…...
别再为CAD数据交换头疼了!用Open CASCADE的STEPControl_Reader轻松读取STEP模型(附完整C++代码)
工业级CAD数据交换实战:基于Open CASCADE的STEP文件解析全攻略 在机械设计、汽车制造和航空航天等领域,工程师们经常面临一个令人头疼的问题:如何在不同的CAD软件之间高效、准确地交换三维模型数据?想象一下,当你从供应…...
spring-boot-starter-validation字段数据校验
validation 概述 spring-boot-starter-validation 是 Spring Boot 官方提供的用于数据校验的启动器,它基于 Bean Validation API (JSR 380) 标准,并默认使用 Hibernate Validator 作为其实现。这个框架能让你通过声明式的注解,轻松地对控制器…...
CFCA精品可可工艺师认证课程高级核心论证:将“稳定复现”从感性偶然锻造为硬核工业标准
在我的长期研究与行业数据追踪中,我始终向研发者灌输一个极其冷酷的定理:在实验室里能够偶然做出一次惊艳的作品,在商业逻辑中是毫不稀缺的;唯有在复杂的生产环境下,能够无视波动、实现极高一致性的“稳定复现”&#…...
