chore: 更新学生档案数据
This commit is contained in:
@@ -11,51 +11,45 @@ type: skill
|
||||
|
||||
✅ 支持四大课程:C++/AICODE/Kitten/体验课
|
||||
✅ 自动匹配班级专属风格:AICODE03温暖鼓励型/K4温和鼓励型/CSP03要求型/体验课转化型
|
||||
✅ **CSP班级必须查询OJ做题数据**(自动调用API获取A包答题情况)
|
||||
✅ **CSP班级必须查询OJ做题数据**(用户提供token后自动获取A包答题情况)
|
||||
|
||||
## 💡 使用方式
|
||||
|
||||
### 方式一:交互式问答(推荐)
|
||||
### 交互式问答(推荐)
|
||||
|
||||
输入 `/课评生成`,我会使用**选择题**的方式问你所有问题:
|
||||
输入 `/课评生成`,我会按顺序问你以下信息:
|
||||
|
||||
```
|
||||
📝 问题1:课堂录音文件路径是什么?(.docx格式)
|
||||
- [ ] 稍后提供
|
||||
- [ ] 还没有录音
|
||||
📝 问题1:这次是什么类型的班?
|
||||
- [ ] AICODE(AI创意编程)
|
||||
- [ ] CSP(C++信息奥赛)
|
||||
- [ ] K4(编程猫Kitten)
|
||||
- [ ] 体验课
|
||||
|
||||
📝 问题2:这是哪个班级的课?
|
||||
- [ ] AICODE03橙子周六1900(需要作品文件夹)
|
||||
- [ ] AICODE03橙子周日0845
|
||||
- [ ] AICODE03橙子周日1400
|
||||
- [ ] CSP03橙子周六0830(需要OJ数据)
|
||||
- [ ] CSP03橙子周六1400
|
||||
- [ ] CSP03橙子周日1030
|
||||
- [ ] K4橙子周五1900
|
||||
- [ ] K4橙子周日1900
|
||||
📝 问题2:课堂录音文件路径是什么?(.docx格式)
|
||||
|
||||
📝 问题3:这是第几课?题目是什么?
|
||||
- [ ] 稍后提供
|
||||
- [ ] 还不确定
|
||||
📝 问题3:这是第几周的课?课程名称是什么?
|
||||
|
||||
📝 问题4:作品文件夹路径?(仅AICODE班需要)
|
||||
- [ ] 稍后提供
|
||||
- [ ] 不需要(CSP/K4班)
|
||||
📝 问题4:具体是哪个班次?(根据你选的班型显示对应选项)
|
||||
AICODE班选项:
|
||||
- [ ] AICODE03橙子周六1900
|
||||
- [ ] AICODE03橙子周日0845
|
||||
- [ ] AICODE03橙子周日1400
|
||||
CSP班选项:
|
||||
- [ ] CSP03橙子周六0830
|
||||
- [ ] CSP03橙子周六1400
|
||||
- [ ] CSP03橙子周日1030
|
||||
K4班选项:
|
||||
- [ ] K4橙子周五1900
|
||||
- [ ] K4橙子周日1900
|
||||
|
||||
📝 问题5(AICODE班):作品文件夹路径是什么?
|
||||
📝 问题5(CSP班):OJ题目的token是什么?
|
||||
|
||||
📝 问题6:本节课出勤情况如何?(来了哪些学生,谁请假)
|
||||
```
|
||||
|
||||
你选择或填写完所有问题,我就会自动完成整个课评生成流程!
|
||||
|
||||
### 方式二:直接提供信息
|
||||
|
||||
如果你已经知道所有信息,可以直接告诉我:
|
||||
```
|
||||
课堂录音文件:第11课录音转写.docx
|
||||
班级:AICODE03橙子周六1900
|
||||
课次:第11课
|
||||
题目:《AI训练师》
|
||||
出勤:来了陈嘉博、王子墨,请假谭俊研
|
||||
作品文件夹:D:\作品\第11课
|
||||
```
|
||||
你回答完所有问题,我就会自动完成整个课评生成流程!
|
||||
|
||||
---
|
||||
|
||||
@@ -64,13 +58,12 @@ type: skill
|
||||
你提供信息后,我会自动完成:
|
||||
|
||||
### 第1阶段:课评准备
|
||||
1. 获取API出勤数据
|
||||
2. 使用python-docx读取录音转写文件
|
||||
3. AI分析录音文本,识别"发言人1,2,3"对应的学生
|
||||
4. **AICODE班**:查看作品文件夹,分析每个学生作品的创意和亮点
|
||||
5. 读取课程计划,获取5个知识点
|
||||
6. 读取每个学生的画像
|
||||
7. **CSP班**:调用OJ API查询A包做题数据
|
||||
1. 使用python-docx读取录音转写文件
|
||||
2. AI分析录音文本,识别"发言人1,2,3"对应的学生
|
||||
3. **AICODE班**:查看作品文件夹,分析每个学生作品的创意和亮点
|
||||
4. 读取课程计划,获取5个知识点
|
||||
5. 读取每个学生的画像
|
||||
6. **CSP班**:使用token查询OJ做题数据
|
||||
|
||||
### 第2阶段:课评生成
|
||||
1. 读取班级风格指南
|
||||
@@ -96,18 +89,20 @@ type: skill
|
||||
|
||||
### 🤖 交互式问答流程
|
||||
|
||||
当橙子输入 `/课评生成` 时,使用 **AskUserQuestion** 工具一次性问完所有问题:
|
||||
当橙子输入 `/课评生成` 时,使用 **AskUserQuestion** 工具按顺序询问:
|
||||
|
||||
**第1轮:收集基本信息**
|
||||
- 问题1:录音文件路径(文本输入)
|
||||
- 问题2:班级(单选:AICODE03/CSP03/K4的各个时间段)
|
||||
- 问题3:课次和题目(文本输入)
|
||||
- 问题4:出勤情况(单选:全部到齐/有人请假)
|
||||
**第1轮:基本信息**
|
||||
- 问题1:班型(单选:AICODE/CSP/K4/体验课)
|
||||
- 问题2:录音文件路径(文本输入)
|
||||
- 问题3:第几周 + 课程名称(文本输入)
|
||||
|
||||
**第2轮:根据班级类型追问**
|
||||
- 如果是AICODE班:追问作品文件夹路径
|
||||
- 如果是CSP班:无需追问(OJ数据自动获取)
|
||||
- 如果是K4班:无需追问
|
||||
**第2轮:确认班次**
|
||||
- 问题4:具体班次(根据班型显示对应选项)
|
||||
|
||||
**第3轮:补充材料**
|
||||
- 问题5(AICODE班):作品文件夹路径
|
||||
- 问题5(CSP班):OJ题目的token
|
||||
- 问题6:出勤情况(文本输入,说明谁来了、谁请假)
|
||||
|
||||
**收集完成后**,自动调用三个阶段的agent完成课评生成。
|
||||
|
||||
@@ -123,7 +118,7 @@ type: skill
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
收集所有数据 生成课评内容 质检+保存+归档
|
||||
• API授课数据 • 读取风格指南 • 课评质检
|
||||
• 确认班型班次 • 读取风格指南 • 课评质检
|
||||
• 录音解析(AI分析) • 读取课评模板 • 保存课评
|
||||
• 课程计划匹配 • 生成个人课评 • 保存班级总结
|
||||
• 学生画像读取 • 生成班级总结 • 更新学生画像
|
||||
@@ -165,119 +160,56 @@ type: skill
|
||||
|
||||
### 工作流程
|
||||
```
|
||||
获取API授课数据 → 读取录音转写(docx) → AI分析识别发言人 → 获取课程知识点 → 读取学生画像 → 润色生成 → 确认修改 → 课评质检 → 保存
|
||||
确认班型班次 → 读取录音转写(docx) → AI分析识别发言人 → 获取课程知识点 → 读取学生画像 → 润色生成 → 确认修改 → 课评质检 → 保存
|
||||
```
|
||||
|
||||
### 0. 获取API授课数据(必须第一步执行)
|
||||
|
||||
**⚠️ 这是强制步骤,必须在读取笔记之前执行!**
|
||||
|
||||
在开始处理任何课评之前,**必须先调用公司API获取橙子老师近期的授课数据**,用于:
|
||||
1. 确认橙子老师实际带了哪些班级
|
||||
2. 获取每个班级的**真实授课日期**(`teaching_date`),用于课评文件名
|
||||
|
||||
**执行命令**(Python):
|
||||
```python
|
||||
import urllib.request
|
||||
import json
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
API_BASE_URL = "https://api.qonnwolf.com/api/v1"
|
||||
AUTHORIZATION = "Bearer <从.env文件读取>"
|
||||
|
||||
# 计算最近7天的日期范围
|
||||
end_date = datetime.now()
|
||||
start_date = end_date - timedelta(days=7)
|
||||
|
||||
# 查询橙子老师的出勤数据
|
||||
dates_to_query = []
|
||||
current = start_date
|
||||
while current <= end_date:
|
||||
dates_to_query.append(current.strftime('%Y-%m-%d'))
|
||||
current += timedelta(days=1)
|
||||
|
||||
results = []
|
||||
for date in dates_to_query:
|
||||
url = f"{API_BASE_URL}/reports/teaching-schedule?teaching_date={date}"
|
||||
req = urllib.request.Request(url)
|
||||
req.add_header('Authorization', AUTHORIZATION)
|
||||
try:
|
||||
with urllib.request.urlopen(req) as response:
|
||||
data = json.loads(response.read().decode('utf-8'))
|
||||
for item in data['data']['items']:
|
||||
teacher = item.get('teacher_name', '')
|
||||
if '橙子' in teacher or '程城' in teacher:
|
||||
results.append({
|
||||
'teaching_date': item['teaching_date'], # API返回的真实授课日期
|
||||
'class_name': item['class_name'],
|
||||
'time': item['teaching_time_period'],
|
||||
'lesson': item['lesson_name'],
|
||||
'student_count': item['student_count'],
|
||||
'attendance': item['attendance'],
|
||||
'students': item.get('student_names', [])
|
||||
})
|
||||
except Exception as e:
|
||||
print(f"查询 {date} 失败: {e}")
|
||||
|
||||
# 输出结果
|
||||
for r in results:
|
||||
print(f"日期:{r['teaching_date']} 班级:{r['class_name']} 时间:{r['time']} 课程:{r['lesson']}")
|
||||
```
|
||||
|
||||
**返回数据说明**:
|
||||
| 字段 | 说明 | 用途 |
|
||||
|------|------|------|
|
||||
| `teaching_date` | API返回的真实授课日期 | **必须用此日期作为课评文件名中的YYYYMMDD** |
|
||||
| `class_name` | 班级名称 | 用于确认班级目录名 |
|
||||
| `time` | 上课时间段 | 用于确认班级(如19:00-20:30对应晚上班) |
|
||||
| `lesson_name` | 课程名称 | 用于匹配课程计划 |
|
||||
| `student_count` | 学生数 | 用于确认班级人数 |
|
||||
| `attendance` | 出勤统计 | 到课/请假/缺课人数 |
|
||||
| `students` | 学生名单 | 用于确认学生 |
|
||||
|
||||
**日期规则(重要)**:
|
||||
- ✅ **必须使用API返回的 `teaching_date`** 作为课评文件名中的日期
|
||||
- ✅ 如果笔记中的日期与API返回的 `teaching_date` 不一致,**以API为准**
|
||||
- ✅ 文件名格式:`{API返回的teaching_date}_课程编号-课次.md`
|
||||
|
||||
**班级匹配规则**:
|
||||
根据API返回的 `class_name` 和 `time` 匹配笔记中的班级:
|
||||
| API返回的class_name | 对应班级目录 | 识别依据 |
|
||||
|---------------------|-------------|----------|
|
||||
| AICODE03... | AICODE03橙子周六1900 / AICODE03橙子周日0845 / AICODE03橙子周日1400 | class_name含"AICODE03" + time判断 |
|
||||
| CSP03... | CSP03橙子周六0830 / CSP03橙子周六1400 / CSP03橙子周日1030 | class_name含"CSP03" + time判断 |
|
||||
| KITTEN04... | K4橙子周五1900 / K4橙子周日1900 | class_name含"KITTEN04" + time判断 |
|
||||
|
||||
### 1. 读取课堂录音转写文件
|
||||
解析用户提供的课堂录音转写文件(`.docx` 格式):
|
||||
|
||||
**使用python-docx库读取**:
|
||||
**⚠️ 关键:docx 中文在终端显示会乱码,必须分两步读取!**
|
||||
|
||||
**第一步:用 python-docx 提取文本并保存为 UTF-8 txt 文件**
|
||||
```python
|
||||
from docx import Document
|
||||
|
||||
def read_recording_docx(file_path):
|
||||
"""读取课堂录音转写的docx文件"""
|
||||
doc = Document(file_path)
|
||||
content = []
|
||||
for para in doc.paragraphs:
|
||||
text = para.text.strip()
|
||||
if text:
|
||||
content.append(text)
|
||||
return '\n'.join(content)
|
||||
def extract_docx_to_txt(docx_path):
|
||||
"""从docx提取文本,保存为UTF-8 txt文件(避免终端乱码)"""
|
||||
doc = Document(docx_path)
|
||||
# 提取所有段落文本
|
||||
text = '\n'.join([p.text for p in doc.paragraphs if p.text.strip()])
|
||||
# 保存为UTF-8 txt
|
||||
txt_path = docx_path.replace('.docx', '_提取.txt')
|
||||
with open(txt_path, 'w', encoding='utf-8') as f:
|
||||
f.write(text)
|
||||
return txt_path
|
||||
|
||||
# 使用示例
|
||||
file_path = r"课堂录音转写文件路径" # 例如:第15课录音转写.docx
|
||||
recording_text = read_recording_docx(file_path)
|
||||
# 对每个录音文件执行
|
||||
for fpath in [r'input/录音1.docx', r'input/录音2.docx']:
|
||||
txt_path = extract_docx_to_txt(fpath)
|
||||
print(f'已提取: {txt_path}')
|
||||
```
|
||||
|
||||
**第二步:用 Read 工具读取 txt 文件**
|
||||
```
|
||||
Read 工具直接读取 _提取.txt 文件,中文显示完全正常
|
||||
```
|
||||
|
||||
> **为什么这样做?** python-docx 底层 XML 是 UTF-8 编码,能正确读取中文。但 bash 终端渲染 UTF-8 中文时会产生乱码。保存为 txt 后,用 Read 工具读取即可正常显示。
|
||||
>
|
||||
> **清理**:课评保存完成后,删除 `_提取.txt` 临时文件。
|
||||
|
||||
**录音文本特点**:
|
||||
- 整节课的完整录音转写,包含老师和学生的对话
|
||||
- 可能包含时间戳(如"[00:05:30]")
|
||||
- 可能包含说话人标识(如"老师:"、"学生:")
|
||||
- 内容为自由文本,不是结构化的表格
|
||||
- 语音转文字质量参差不齐,常见同音字、模糊识别
|
||||
- 整节课的完整转写,包含老师和学生的对话
|
||||
- 带时间戳(如"发言人 00:04")
|
||||
- 可能有"发言人1"、"发言人2"等编号(老师通常是发言人1)
|
||||
- 学生姓名可能被转写为同音字(如"圆振"→"原证"、"艺嘉"→"YGX")
|
||||
|
||||
**AI分析提取学生表现**:
|
||||
由于录音是自由文本格式,需要使用AI分析提取每个学生的表现信息:
|
||||
直接读取 `_提取.txt` 文件内容,分析时注意:
|
||||
- 结合学生姓名和可能的同音字变体来定位个体表现
|
||||
- 语音识别误差大的段落需结合上下文推断
|
||||
- 关注:被点名回答、主动提问、完成进度、老师评语等关键事件
|
||||
|
||||
```python
|
||||
# 分析提示词
|
||||
@@ -285,6 +217,7 @@ analysis_prompt = f"""
|
||||
分析以下课堂录音转写文本,提取每个学生的表现信息。
|
||||
|
||||
班级学生名单:{student_list}
|
||||
注意:语音转文字可能存在同音字,请结合上下文推断学生身份(如"原证"可能是"圆振")。
|
||||
|
||||
请为每个学生提供:
|
||||
1. 出勤状况:正常上课 / 请假 / 未到
|
||||
@@ -301,7 +234,7 @@ analysis_prompt = f"""
|
||||
"""
|
||||
```
|
||||
|
||||
> **日期规则**:批量流程中,所有日期(文件名 `YYYYMMDD`、授课日期)**统一以API返回的teaching_date为准**,不使用录音文件中的日期。
|
||||
> **日期规则**:根据用户提供的周次信息推算具体日期,或在交互式问答时直接询问用户确认授课日期。
|
||||
|
||||
### 2. 匹配课程计划
|
||||
根据班级标题中的关键词匹配对应课程计划:
|
||||
@@ -350,7 +283,7 @@ python scripts/get_student_oj.py \
|
||||
|
||||
**输出示例**:
|
||||
```markdown
|
||||
家长好,本周学习的内容是《魔幻俄罗斯方块(下)》:
|
||||
嘉博家长好,本周学习的内容是《魔幻俄罗斯方块(下)》:
|
||||
1. 理解"自动化测试"的概念
|
||||
2. 理解"测试覆盖":每条规则都应有对应测试
|
||||
3. 功能扩展的增量思维
|
||||
@@ -556,7 +489,7 @@ CSP课评必须使用 `.claude/agents/` 目录下的质检Agent系统进行质
|
||||
|
||||
## ⚙️ 核心生成逻辑(自动完成,你不需要操作)
|
||||
```
|
||||
1. 读取参考资料 → 2. AICODE班分析作品/CSP班拉取OJ数据 → 3. 生成个性化课评 → 4. 橙子确认修改 → 5. 自动质检 → 6. 自动保存
|
||||
1. 确认班型和班次 → 2. 读取参考资料 → 3. AICODE班分析作品/CSP班拉取OJ数据 → 4. 生成个性化课评 → 5. 橙子确认修改 → 6. 自动质检 → 7. 自动保存
|
||||
```
|
||||
|
||||
### 1. 自动读取参考资料
|
||||
@@ -698,7 +631,7 @@ python scripts/get_student_oj.py \
|
||||
|
||||
## 🎨 各班级风格规范(自动匹配)
|
||||
### AICODE03班 - 家长信格式·温暖鼓励型
|
||||
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点(与 CSP03 一致)
|
||||
- 固定开头:"【学生名】家长好,本周学习的内容是《...》" + 5个知识点(开头加学生称呼,如"梓宁家长好",与 CSP03 一致)
|
||||
- 课程目标后空一行,再写"课评反馈:"正文
|
||||
- 多用"很棒"、"特别棒"、"超棒"和波浪号"~"
|
||||
- 描述具体行为:"一字一字打字"、"和AI聊了一节课"
|
||||
@@ -730,7 +663,7 @@ python scripts/get_student_oj.py \
|
||||
```
|
||||
|
||||
### K4班 - 家长信格式·温和鼓励型
|
||||
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点
|
||||
- 固定开头:"【学生名】家长好,本周学习的内容是《...》" + 5个知识点(开头加学生称呼,如"圆振家长好")
|
||||
- 肯定创意:"能够有自己的创意"
|
||||
- 温和指出:"不过老师发现...专注力有些下降"
|
||||
- **表情包使用**:K4班学生年龄小,多用可爱活泼的表情增加亲和力
|
||||
@@ -740,7 +673,7 @@ python scripts/get_student_oj.py \
|
||||
- 结尾可用:"继续加油哦!🌟"、"相信你会把程序做得更完整!🚀"
|
||||
|
||||
### CSP03班 - 家长信格式·要求型
|
||||
- 固定开头:"家长好,本周学习的内容是《...》" + 5个知识点
|
||||
- 固定开头:"【学生名】家长好,本周学习的内容是《...》" + 5个知识点(开头加学生称呼,如"圆振家长好")
|
||||
- 表扬积极:"状态在线"、"早早到校等候超积极"
|
||||
- 期望要求:"希望多思考"、"理解为什么这么写,不只是抄完就好~"
|
||||
- **表情包使用**:CSP班学生偏大,表情偏励志和认可风格
|
||||
@@ -790,7 +723,7 @@ python scripts/get_student_oj.py \
|
||||
- ✅ 对A包中未完成的题目,给出具体的知识点建议,帮助孩子针对性提高
|
||||
|
||||
### 体验课 - 家长信格式·转化导向型
|
||||
- 固定开头:"家长好,今天体验的是《...》课程" + 课程价值介绍
|
||||
- 固定开头:"【学生名】家长好,今天体验的是《...》课程" + 课程价值介绍(开头加学生称呼,如"小明家长好")
|
||||
- 突出"第一次":强调新体验,降低焦虑,突出潜力
|
||||
- 建立愿景:描述继续学习后孩子能达到的水平
|
||||
- 自然引导报课:用期待和相信引导,不硬推销
|
||||
@@ -808,7 +741,7 @@ python scripts/get_student_oj.py \
|
||||
### 📌 命名规范(必须严格遵守)
|
||||
- **课程编号规则**:C++竞赛班统一用`CSP`,AI编程班统一用`AICODE`,不得使用`AI`、`C++`等缩写
|
||||
- **文件名规则**:`YYYYMMDD_课程编号-课次.md`(如`20260418_CSP05-07.md`、`20260330_AICODE03-02.md`)
|
||||
- **日期要求**:文件名中的`YYYYMMDD`必须与校宝`teaching_date`完全一致,不得使用编写/提交日期
|
||||
- **日期要求**:根据用户提供的周次信息推算具体日期,或询问用户确认
|
||||
- **特殊状态文件**:
|
||||
- 请假:`YYYYMMDD_课程编号-课次(请假).md`
|
||||
- 未上课:`YYYYMMDD_课程编号-课次(未到).md`
|
||||
@@ -873,7 +806,7 @@ python scripts/get_student_oj.py \
|
||||
**判断逻辑**:
|
||||
1. 计算本节课所属的教学周次(第X周)
|
||||
2. 构造文件名:`第{X}周{星期时间}{课程编号}课评.html`
|
||||
- 星期时间从API数据中提取(如"周日下午"、"周六早上")
|
||||
- 星期时间从用户提供的班次信息中提取(如"周日下午"、"周六早上")
|
||||
- 课程编号如 `AICODE03`、`CSP03`、`K4`
|
||||
- 示例:`第14周周日下午AICODE03课评.html`
|
||||
3. 检查 `output/课评汇总/` 目录下是否已存在该文件
|
||||
@@ -887,10 +820,10 @@ python scripts/get_student_oj.py \
|
||||
| 模板位置 | 替换内容 | 数据来源 |
|
||||
|---------|---------|---------|
|
||||
| `<title>`、顶部标题 | 第X周 · [课程编号]班课评 | 周次 + 课程编号 |
|
||||
| 顶部副标题、封面日期 | YYYY年M月D日 · 《课程名称》 · 橙子老师 | API的teaching_date + 课程计划 |
|
||||
| 顶部副标题、封面日期 | YYYY年M月D日 · 《课程名称》 · 橙子老师 | 用户提供的日期 + 课程计划 |
|
||||
| 封面大标题 | 《课程名称》 | 课程计划 |
|
||||
| 封面副标题 | 课程领域 · 第X课 | 课程计划 |
|
||||
| 封面信息区 | 📅日期、⏰时间、👩🏫老师 | API数据 |
|
||||
| 封面信息区 | 📅日期、⏰时间、👩🏫老师 | 用户提供的数据 |
|
||||
| 知识点列表 | 5条知识点 | 课程计划中的教学目标 |
|
||||
| 学生卡片 | 每张卡片一个学生 | 本节课所有学生的课评 |
|
||||
| 状态标签 | 正常上课/补课/请假/未到 | 出勤记录 |
|
||||
@@ -950,7 +883,7 @@ output/课评汇总/第{X}周{星期时间}{课程编号}课评.html
|
||||
> 李明今天虽然是第一次接触AI绘画,但我看到了你眼里的好奇,这就是最好的开始。你的描述很有画面感,"想要一个会眨眼的可爱猫咪",这就是好的Prompt。虽然操作还有点生疏,但老师注意到你一直在尝试,这份坚持比做对题目更珍贵。下次可以把想法先写在便签纸上,分点列出,跟AI沟通会更顺畅。记住,编程最大的门槛不是英文或数学,是敢于尝试的勇气,你已经有了。继续和你的"AI搭档"对话吧,它会越来越懂你的。
|
||||
|
||||
**CSP03班 - 家长信格式·要求型(含OJ数据)**
|
||||
> 家长好,本周学习的内容是《字符串处理》:
|
||||
> 子煜家长好,本周学习的内容是《字符串处理》:
|
||||
> 1. string 类型的声明与使用
|
||||
> 2. 字符串的输入输出(cin / getline)
|
||||
> 3. 字符串的拼接与比较操作
|
||||
|
||||
Reference in New Issue
Block a user