diff --git "a/\346\236\227\344\275\231\345\200\251/20241125\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202-Action.md" "b/\346\236\227\344\275\231\345\200\251/20241125\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202-Action.md" new file mode 100644 index 0000000000000000000000000000000000000000..6bf34b528b7b96c3dba2cd32a104f687da9fcfc4 --- /dev/null +++ "b/\346\236\227\344\275\231\345\200\251/20241125\346\216\247\345\210\266\345\231\250\344\274\240\345\217\202-Action.md" @@ -0,0 +1,88 @@ +## 一.笔记 +### 1. MVC模式中常见返回值类型 +```js + - 返回值常见数据类型 ,如 int,string,List<> + - ICtionRresult,返回响应状态码,如:200.301,401,404,500等 + - 视图 + - 重定向 + - ActionResult<> , 可以同时返回状态码或者常规数据类型 + - JsonResult ,ContentResult ,返回响应就是存粹的数据 + - POCO 可以返回一个对象,而这个对象就在被返回的时候,会被序列化(相对的是,反系列化) +``` +## 二.练习 +1. 在控制器中 +```js +using Microsoft.AspNetCore.Mvc; //引用微软 +namespace Blog.Controllers; //命名空间 + +public class BabyController : Controller{ + + //传递id 复杂数据类型 + public BlogCreateDto Index(int id){ + // 将属性引用到方法中 + var blogCreateDto = new BlogCreateDto{ + Author="天啊", + Title="siye", + Content="做梦做了一夜" + // 要将IActionResult转换为BlogCreateDto类型 + + }; + return blogCreateDto; + } + + // public IActionResult Create([fromVBody] BlogCreateDto blogCreateDto){ + // return View(blogCreateDto); + // } + + // 使用集合存储数据 + public dynamic Edit(){ + var list = new List(); //集合 + list.Add("鸡蛋"); + list.Add("鸭蛋"); + list.Add("东东蛋"); + list.Add("蒋蛋蛋"); + return list; + // 返回[ + // "鸡蛋", + // "鸭蛋", + // "东东蛋", + // "蒋蛋蛋" + // ] + + // return new{Id=18}; + // 结果返回为:18 + } + + public IActionResult List(int id){ + var list = new List; + + new BlogCreateDto + { + Author="余华", + Title="活着", + Content="老大爷" + }; + new BlogCreateDto + { + Author="余华", + Title="活着", + Content="老大爷" + }; + new BlogCreateDto + { + Author="余华", + Title="活着", + Content="老大爷" + } + + return View(list); + } +} + +public class BlogCreateDto{ + public string Author{get;set;}=null!; + public string Title{get;set;}=null!; + public string Content{get;set;}=null!; +} + +``` diff --git "a/\346\236\227\344\275\231\345\200\251/20241127Razor-\351\232\217\346\234\272\346\225\260.md" "b/\346\236\227\344\275\231\345\200\251/20241127Razor-\351\232\217\346\234\272\346\225\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..a280b3e85e5c54671e1affb7bbcbc59eb23d3991 --- /dev/null +++ "b/\346\236\227\344\275\231\345\200\251/20241127Razor-\351\232\217\346\234\272\346\225\260.md" @@ -0,0 +1,238 @@ +## 一.笔记 +1. Razor +```js +Razor 支持 C#,并使用@符号从 HTML 转换为 C#。 Razor 计算 C# 表达式,并将它们呈现在 HTML 输出中。 + +当 @ 符号后跟 Razor 保留关键字时,它会转换为 Razor 特定标记. + +隐式 Razor 表达式 +以 @ 开头,后跟 C# 代码。隐式表达式不能包含空格,但 C# await 关键字除外。不能包含 C# 泛型,因为括号 (<>) 内的字符会被解释为 HTML 标记。 + +显式 Razor 表达式 +由 @ 符号和平衡圆括号组成。 +``` + + +## 二.作业-随机数 +```js +using Microsoft.AspNetCore.Mvc; +namespace Blog.Controllers; + +public class BodyController : Controller +{ + public IActionResult Random1() + { + // 1. 生成一个随机整数,范围[0,100],注意是否包含 + + // new一个随机数 + Random random = new Random(); + // 生成一个0-100之间的数 + // (随机数生成的下限(包含),随机数生成的上限(不包含)) + int randomNumber = random.Next(0,101); + // 将随机数传递给视图 + // ViewBag(允许你在控制器和视图之间传递数据).RandomNumber(ViewBag上的一个动态属性名,自己命名) + ViewBag.RandomNumber = randomNumber; //将randomNumber的值保存到ViewBag.RandomNumber中传递 + + return View(); + } + + + public IActionResult Random2() + { + // 2.生成一个随机整数,范围(0,100],注意是否包含 + + // new一个随机数 + Random random = new Random(); + // 生成随机数 不包括0,包括100 + int randomNumber = random.Next(1,101); + // 使用ViewBag传递到视图 + ViewBag.RandomNumber = randomNumber; + + return View(); + } + + public List Random3() + { + // 3.生成10个随机整数,范围[5,80],注意是否包含 + + // 随机数 + var random = new Random(); + // runNUm存储10个数 + int runNUm; + // 创建一个集合保存随机数 + var list = new List(); + + // 使用循环 10个随机数 + for(int i=0;i<10;i++){ + // 将10个随机数存储到runNUm中 + runNUm = random.Next(5,81); + // 再将runNUm添加到集合中 + list.Add(runNUm); + + } + + + return list; + } + + public IActionResult Random4() + { + // 4. 定义一个字符串,字符串中有100个中文字符,需要从中随机取1个字符串 + + // 定义一个字符串存储100个字符串 + string str = "阳光普照万物生机盎然人间烟火为理想哈奔波心怀激情燃烧血脉中流淌时间如梭不等人紧握双手勇往直前冲不畏艰难险阻勇攀高峰誓创未来新篇章书写人生真辉煌展现自我力量铸就传奇啊"; + // 随机数 + Random random = new Random(); + // 随机索引 + int ronNum = random.Next(1,str.Length-1); + // 随机字符 + char ronnumber = str[ronNum]; + // 使用Content返回中文字符 + return Content(ronnumber.ToString()); + } + + public IActionResult Random5() + { + // 5.定义一个字符串,字符串中有100个中文字符,需要从中随机取5-50个字符,组成新的字符 + + // 定义一个字符串存储100个字符串 + string str = "阳光普照万物生机盎然人间烟火为理想哈奔波心怀激情燃烧血脉中流淌时间如梭不等人紧握双手勇往直前冲不畏艰难险阻勇攀高峰誓创未来新篇章书写人生真辉煌展现自我力量铸就传奇啊"; + // 定义随机 + Random random = new Random(); + // 随机5-50个字符索引 + int suiji = random.Next(5,51); + // 创建一个空字符串存储拼接文字 + string text=""; + + // 循环只能在5-50字之间 + for (int i = 0; i < suiji; i++) + { + // index 存储 str的随机生成字符串 + int index = random.Next(str.Length); + // str随机生成的字符串拼接 + text += str[index]; + } + return Content(text); + + } + + public IActionResult Random6() + { + // 6.定义2个字符串,第一个字符串中放百家姓,第二个字符串中放中文字符, + // 要求从第一个字符串随机取得一个姓, + // 再从第二个字符串中随机获得1到2个字符组成新字符串, + // 和第一个字符串取得的姓组成一个姓名 + + // 姓 + string xing = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹孟高林何马陶冯程严唐"; + // 名 + string ming = "阳光普照万物生机盎然人间烟火为理想哈奔波心怀激情燃烧血脉中流淌时间如梭不等人紧握双手勇往直前冲不畏艰难险阻勇攀高峰誓创未来新篇章书写人生真辉煌展现自我力量铸就传奇啊"; + + // 定义随机数 + Random random = new Random(); + + // 姓 + // 从姓中随机抽一个姓 + int x = random.Next(1,xing.Length-1); //从第一个字都最后一个字中选择 + char xs = xing[x]; + + // 名 + // 从名中随机选1-2个字 + int m = random.Next(1,3); + // 定义一个空字符串拼接 + string text = ""; + for (int i = 0; i < m; i++) + { + // 从哪里选择 + int index = random.Next(ming.Length); + // 拼接 ming的随机数值 + text+=ming[index]; + } + + // 姓和名都准备好 开始拼接 + string xingming = xs+text; + + + return Content(xingming.ToString()); + + } + + // 7. + public IActionResult Random7() + { + // 姓 + string xing = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华金魏陶姜戚谢邹孟高林何马陶冯程严唐"; + // 名 + string ming = "阳光普照万物生机盎然人间烟火为理想哈奔波心怀激情燃烧血脉中流淌时间如梭不等人紧握双手勇往直前冲不畏艰难险阻勇攀高峰誓创未来新篇章书写人生真辉煌展现自我力量铸就传奇啊在这个快节奏的时代 时间仿佛成了一种奢侈 每个人都在忙碌中度过 追逐着心中的梦想和生活的琐碎 然而 在这无尽的奔波中 我们是否曾停下脚步 去感受那些被忽视的美好 一缕温暖的阳光 一声亲切的问候 一杯香浓的咖啡 都是生活赋予我们的礼物 让我们在忙碌之余 不忘珍惜这些微小而真实的瞬间 让心灵得到片刻的宁静与满足 因为 正是这些点点滴滴 汇聚成了我们丰富多彩的人生"; + + // 随机数 + Random random = new Random(); + + // 定义一个列表存储100个随机生成的BlogCreateDto + var list = new List(); + + // 生成100个BlogCreateDto对象 + for (int i = 0; i < 100; i++) + { + // 随机标题 + // 标题一般是6-15个字 随机生成这么多字 + int Ti = random.Next(6,16); + string Titext=""; + for (int j = 0; j < Ti; j++) + { + // 从哪里随机选择 + int index1 = random.Next(ming.Length); + Titext+=ming[index1]; + } + + + // 随机的作者 + // 作者的姓名一般是2-3个字 + // 姓 + int x = random.Next(1,xing.Length-1); + char xs = xing[x]; + // 名 + int m = random.Next(1,3); + string Mitext = ""; + for (int k = 0; k < m; k++) + { + int index2 = random.Next(ming.Length); + Mitext+=ming[index2]; + } + string xm = xs + Mitext; + + // 随机的内容 + // 内容从ming中找 一般是100-200个字 + int conNum = random.Next(100,201); + string text3 = ""; + for (int l = 0; l < conNum; l++) + { + int index3 = random.Next(ming.Length); + text3 += ming[index3]; + } + + + BlogCreateDto blog = new BlogCreateDto(); + + + list.Add(blog); + + + } + return View(list); + + } + + +} + + +// 7.随机生成100个BlogCreateDto类型 +public class BlogCreateDto() +{ + public string Title{get;set;}=null!; + public string Author{get;set;}=null!; + public string Content{get;set;}=null!; +} + +``` \ No newline at end of file diff --git "a/\346\236\227\344\275\231\345\200\251/20241129\345\242\236\345\212\240\346\225\260\346\215\256\346\223\215\344\275\234.md" "b/\346\236\227\344\275\231\345\200\251/20241129\345\242\236\345\212\240\346\225\260\346\215\256\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..277cc756e838c5b422891baabd567435cbf2f7dd --- /dev/null +++ "b/\346\236\227\344\275\231\345\200\251/20241129\345\242\236\345\212\240\346\225\260\346\215\256\346\223\215\344\275\234.md" @@ -0,0 +1,470 @@ +## 一.笔记--表格+增加操作 + +### Controller 控制器 +1. 创建一个Contrller控制器 +```js + 自定义创建控制器名 BlogsController.cs + 以下的页面(方法)是为了操作时跳转到不同的页面去执行相应的操作 + +using Microsoft.AspNetCore.Mvc; +using Blog.Models; //要引用models才能返回Db +using System.Text.Json; //引用这个保存新添加的内容 + +namespace Blog.Controllers; + +public class BlogsController : Controller +{ + // 首页 + public IActionResult Index() + { + return View(Db.Blogs); + } + // 添加 + [HttpPost] + public IActionResult Create(Blogs input) + { + Db.Blogs.Add(input); + return Content(JsonSerializer.Serialize(input)); + } + // 编辑 + public IActionResult Edit() + { + return View(); + } + // 删除 + public IActionResult Delete() + { + return View(); + } +} + +``` +### Models 模型 +2. 定义一个Models模型,用来模拟数据存放数据 +```js +1. ① 定义模型一定要引入命名空间 + ② 创建的是两个文件,一个用于存放属性值,一个引用于引用属性值给属性值添加数据 +(1)db中创建的是静态构造函数(只执行一次,需改内容要重跑) + ①方法1: 直接执行的话:public static List Blog = new List{"value1","value2"...} + ②方法2: 使用构造函数:public static List Blogs{get;set;} + static Db() + { + // 初始化静态属性 + Blogs = new List(); + // 给这个集合属性添加一些原始数据 + for (int i = 0; i < 15; i++) + { + // new Blogs 是为拿到里面的属性 + var tmp = new Blogs + { + Id = i+1, //+1是让id从1开始排序 + Title = "", + Author = "", + Content = "" + }; + Blogs.Add(tmp); + } + } + + +2. 代码: + Blogs.cs中: + namespace Blog.Models; + // 2.充当一个属性 用于存放属性值 + public class Blogs + { + public int Id{get;set;} + public string Title{get;set;}=null!; + public string Author{get;set;}=null!; + public string Content{get;set;}=null!; + } + Db.cs中: + // 3.创建一个Models 充当数据库获取数据 + namespace Blog.Models; + + public static class Db + { + public static List Blogs{get;set;} + + // 使用静态构造函数,只执行一次 + static Db() + { + // 初始化静态属性 + Blogs = new List(); + + // 给这个集合属性添加一些原始数据 + for (int i = 0; i < 15; i++) + { + // new Blogs 是为拿到里面的属性 + var tmp = new Blogs + { + Id = i+1, //+1是让id从1开始排序 + Title = "希望下雨", + Author = "晴天", + Content = "下雨天可以吃火锅" + }; + + Blogs.Add(tmp); + } + } + } + +``` +### View 视图 +3. 为相应的页面创建视图,在网页中展示内容 +```js +* 需要跳转的页面使用a标签 + eg: 添加 + 编辑 + + 1.asp-controller:指定表单提交的目标控制器 + 2.asp-action:指定表单提交时应该调用的控制器中的动作(方法) + 3.asp-route-*:通常与以上两个属性配合使用,便在创建表单或链接时能够自动将模型的状态或路由参数传递给控制器的特定动作。-id就是传递相应行的id号 + + + + + 1. 首页的页面 + @* 3. 创建首页内容 *@ + @* 引入模型中属性文件 *@ + @model List + +
+ 添加 + + + + + + + + + + + + @foreach (var blog in @Model) + { + + + + + + + + } + +
id标题作者内容操作
@blog.Id@blog.Title@blog.Author@blog.Content + 编辑 + 删除 + @* + *@ +
+
+ + 2. 新增页面 + {/* 使用form表单存放页面 */} + {/* 一定要声明,否则不能添加 */} + @model Blog.Models.Blogs; + +
+
+
+
+ + @* 使用Json进行保存 *@ +
+ +``` + +### 使用post请求,将用户输入的内容添加至表单 +1. 表单id的排列序号,获取表单id的最大值,将最大值+1 :使用Max()方法 +2. 测试添加内容是否有被获取到:return Content(JsonSerializer.Serialize(input)) +```js + // 添加 + [HttpPost] + public IActionResult Create(Blogs input) + { + // 获取表单中最大的ID数 + var maxId = Db.Blog.Select(t => t.Id).Max(); + // 添加后ID也增加 + input.Id = maxId + 1; + // 将添加的内容加入表单 + Db.Blogs.Add(input); + return Content(JsonSerializer.Serialize(input)); + } +``` + +## 二.渲染 简单,复杂,集合 数据到页面 +### 1. 渲染简单数据到页面 +![渲染简单数据到页面x1](./images/新增操作1/X1.png) +```js +// 渲染简单数据到页面 + public int Index() + { + return 123456; + } + +``` +### 2. 渲染复杂数据到页面 +![渲染复杂数据到页面x2](./images/新增操作1/X2.png) +```js +// 渲染复杂数据到页面 + public dynamic two() + { + return new {Name="你好"}; + } + +``` +### 3. 渲染集合数据到页面 +![渲染集合数据到页面x3](./images/新增操作1/X3.png) +```js +// 渲染集合数据到页面 + public List three() + { + var list = new List + { + "你好", + "你好", + "你好", + "你好" + }; + return list; + } +``` +## 三.渲染(展示)数据类型到视图 +### 1.渲染(展示)简单数据类型到视图 +![渲染(展示)简单数据类型到视](./images/新增操作1/Ones.png) +```js + public string Ones() + { + return "今年一起看初雪吧"; + } +``` + +### 2.渲染(展示)对象数据到视图 +![渲染(展示)简单数据类型到视](./images/新增操作1/Twos.png) +```js + public IActionResult Twos() + { + var list = new TwosCreateDto + { + Name="小米", + Age = 5, + Sex = "女" + }; + return View(list); + } + + @model Yabi.Controllers.TwosCreateDto; + public class TwosCreateDto{ + public string Name{get;set;}=null!; + public int Age{get;set;} + public string Sex{get;set;}=null!; + } +``` + +### 3. 渲染(展示)集合数据到视图 +![渲染(展示)简单数据类型到视](./images/新增操作1/three.png) +```js +控制器 + + public IActionResult Threes() + { + var list = new List + { + new ThreesCreateDto + { + Name="哇哇哇", + Title="快下雪", + Content="为什么福建不下雪" + }, + new ThreesCreateDto + { + Name="嘿嘿", + Title="快下雪X2", + Content="为什么福建不下雪X2" + }, + }; + return View(list); + + } + + public class ThreesCreateDto{ + public string Name{get;set;}=null!; + public string Title{get;set;}=null!; + public string Content{get;set;}=null!; + } +``` +```js +视图 + +@model List + + @foreach (var item in Model) + { +

姓名: @item.Name

+

标题: @item.Title

+

内容: @item.Content

+ } + + + +``` +### 4. 尝试构建如下图所示的经典CRUD列表 +![渲染(展示)简单数据类型到视](./images/新增操作1/biao.png) +控制器 +```js + using Microsoft.AspNetCore.Mvc; + using New.Models; + using System.Text.Json; + + namespace New.Controllers; + + public class NewsController : Controller + { + // 首页 + public IActionResult Index() + { + // 要引用命名空间才能取到Db中返回的值 + // 模型-控制器-视图 + return View(Db.Shuju); + } + + // 第一个Adds 处理GET请求 + public IActionResult Adds() + { + // 功能:这个方法处理对/Adds路径的GET请求。当用户请求访问添加数据的页面时,这个方法会被调用。 + // 返回值:它返回一个视图(View),通常是一个HTML表单,用户可以在其中输入数据。这个视图不包含任何用户提交的数据,因为它仅仅是一个用于输入的表单。 + return View(); + } + // 新增 //用于标记一个控制器方法,表明该方法应该仅处理 HTTP POST 请求 + [HttpPost] + public IActionResult Adds(Shuju input) + { + // New取asp-controller + // 将新增页面用户输入的input取到,将他添加到集合中,并且返回检验是否添加成功 + // 视图(获取用户输入的内容)- 传入控制器中(添加到集合中)- 检验并序列化(将一个对象 input 序列化为 JSON 格式的字符串)- return Content(...) 方法(将这个JSON字符串作为 HTTP 响应的内容返回给客户端,徐亚using) + + var maxId = Db.Shuju.Select(t => t.Id).Max(); + input.Id = maxId+1; + Db.Shuju.Add(input); + return RedirectToAction("index"); + // return Content(JsonSerializer.Serialize(input)); + } + // 两个Adds方法的存在是为了区分处理GET请求(显示表单)和POST请求(处理表单提交)的逻辑。这是MVC架构中处理HTTP请求的一种标准方式,有助于保持代码的清晰和组织结构。 + + // 编辑 + public IActionResult Edit(){ + return View(); + } + // 详情 + public IActionResult Qin(){ + return View(); + } + // 删除 + public IActionResult Delect(){ + return View(); + } + } + +``` +模型 +```js +Shuju: + namespace New.Models; + + // 用来存放属性对象 + public class Shuju{ + public int Id{get;set;} + public string Title{get;set;}=null!; + public string Content{get;set;}=null!; + public string Author{get;set;}=null!; + + } + +Db: + namespace New.Models; + // 数据获取库 充当数据库 + public static class Db + { + // 定义一个静态属性,返回Shuju类型的列表 + public static List Shuju{get;set;} + + // 可以在静态构造函数中初始化这个属性 + static Db() + { + // 初始化静态属性 + Shuju = new List(); + + // 给集合属性添加一些数据 + for (int i = 0; i < 4; i++) + { + var tmp = new Shuju{ + Id=i+1, + Title = "33333", + Content = "9999", + Author = "亚比" + }; + // 将循环好的数据添加到集合中 + Shuju.Add(tmp); + + } + } + } + +``` +视图 +```js +首页: + @* 引入模型数据 *@ + @model List + + + +
+ 新增 + + + + + + + + + + + + + @foreach(var item in @Model) + { + + + + + + + + } + +
ID标题内容作者操作
@item.Id@item.Title@item.Content@item.Author + 编辑| + 详情| + 删除 +
+ +
+``` +```js +Adds页面: + @model New.Models.Shuju; + @* 将model中的对象取到 *@ + +
+
+
+ + +
+ +```js + diff --git "a/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/Ones.png" "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/Ones.png" new file mode 100644 index 0000000000000000000000000000000000000000..6bb91f56b467d75a80b381ee2d84216a39c36019 Binary files /dev/null and "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/Ones.png" differ diff --git "a/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/Twos.png" "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/Twos.png" new file mode 100644 index 0000000000000000000000000000000000000000..7a92f1fddf89d668686ec154397ad90bb770534e Binary files /dev/null and "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/Twos.png" differ diff --git "a/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X1.png" "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X1.png" new file mode 100644 index 0000000000000000000000000000000000000000..44d2b94ff7b5e23cdabdeb0d6de6cb4e0bae0eb1 Binary files /dev/null and "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X1.png" differ diff --git "a/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X2.png" "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X2.png" new file mode 100644 index 0000000000000000000000000000000000000000..3b6386692a1863e573c42afd28ecc935ff308bdb Binary files /dev/null and "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X2.png" differ diff --git "a/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X3.png" "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X3.png" new file mode 100644 index 0000000000000000000000000000000000000000..d16048e455183b0f21a44ceb1ec34c8f5516a399 Binary files /dev/null and "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/X3.png" differ diff --git "a/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/biao.png" "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/biao.png" new file mode 100644 index 0000000000000000000000000000000000000000..cb527baf2d44253f246d9187caa791f5d2609938 Binary files /dev/null and "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/biao.png" differ diff --git "a/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/three.png" "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/three.png" new file mode 100644 index 0000000000000000000000000000000000000000..4027b66f7f3ef2b806e1a5e0af4853a24d0da8ae Binary files /dev/null and "b/\346\236\227\344\275\231\345\200\251/images/\346\226\260\345\242\236\346\223\215\344\275\2341/three.png" differ