From 96972555a3a27b4e5bc250a578eeb5c8645e4c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E5=AE=87=E5=A7=97?= <14091760+tangyushan123@user.noreply.gitee.com> Date: Sun, 29 Dec 2024 19:31:59 +0800 Subject: [PATCH] 20241229 --- ...36\345\210\240\346\224\271\346\237\245.md" | 0 ...vc\345\255\246\347\224\237\350\241\250.md" | 251 ++++++++++++++++++ ...1\347\256\241\347\220\206\350\241\2501.md" | 173 ++++++++++++ ...1\347\256\241\347\220\206\350\241\2502.md" | 174 ++++++++++++ 4 files changed, 598 insertions(+) rename "\345\224\220\345\256\207\345\247\227/20241219-\344\270\211\345\274\240\350\241\250\347\232\204\345\242\236\345\210\240\346\224\271\346\237\245.md" => "\345\224\220\345\256\207\345\247\227/20241220-\344\270\211\345\274\240\350\241\250\347\232\204\345\242\236\345\210\240\346\224\271\346\237\245.md" (100%) create mode 100644 "\345\224\220\345\256\207\345\247\227/20241223-mvc\345\255\246\347\224\237\350\241\250.md" create mode 100644 "\345\224\220\345\256\207\345\247\227/20241225-\346\210\220\347\273\251\347\256\241\347\220\206\350\241\2501.md" create mode 100644 "\345\224\220\345\256\207\345\247\227/20241226-\346\210\220\347\273\251\347\256\241\347\220\206\350\241\2502.md" diff --git "a/\345\224\220\345\256\207\345\247\227/20241219-\344\270\211\345\274\240\350\241\250\347\232\204\345\242\236\345\210\240\346\224\271\346\237\245.md" "b/\345\224\220\345\256\207\345\247\227/20241220-\344\270\211\345\274\240\350\241\250\347\232\204\345\242\236\345\210\240\346\224\271\346\237\245.md" similarity index 100% rename from "\345\224\220\345\256\207\345\247\227/20241219-\344\270\211\345\274\240\350\241\250\347\232\204\345\242\236\345\210\240\346\224\271\346\237\245.md" rename to "\345\224\220\345\256\207\345\247\227/20241220-\344\270\211\345\274\240\350\241\250\347\232\204\345\242\236\345\210\240\346\224\271\346\237\245.md" diff --git "a/\345\224\220\345\256\207\345\247\227/20241223-mvc\345\255\246\347\224\237\350\241\250.md" "b/\345\224\220\345\256\207\345\247\227/20241223-mvc\345\255\246\347\224\237\350\241\250.md" new file mode 100644 index 0000000..0fef54a --- /dev/null +++ "b/\345\224\220\345\256\207\345\247\227/20241223-mvc\345\255\246\347\224\237\350\241\250.md" @@ -0,0 +1,251 @@ +## 成绩管理表 +1. 创建模型--`Student.cs` + ```c# + namespace StudentManager.Models; +public class Student +{ + public int Id{get;set;} + public string StudentCode{get;set;}=null!; + public string StudentName{get;set;}=null!; + +} + ``` +2. 创建数据库上下文--`StudentDbContext.cs` + ```c# + using Microsoft.EntityFrameworkCore; + namespace StudentManager.Models; + public class StudentDbContext:DbContext + { + public DbSetStudents{get;set;}=null!; + public DbSetCourses{get;set;}=null!; + public DbSetScores{get;set;}=null!; + + //连接数据库 + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + var str=$"server=SK-20240829XXWR\\SQLEXPRESS;database=StudentDB;uid=sa;pwd=123456;TrustServerCertificate=true;"; + optionsBuilder.UseSqlServer(str); + } + //DbContext:安装依赖包 命令 dotnet add package Microsoft.EntityFrameworkCore.SqlServer + //1. 生成迁移文件 命令 dotnet ef migrations add XXX + 1.1 需要一个工具 ef工具 安装命令 dotnet tool install --global dotnet-ef + 1.2 安装依赖包 命令 dotnet add package Microsoft.EntityFrameworkCore.Design + 1.3 需要程序不能有编译错误,使用 dotnet build 查看是否有编译错误 + 1.4 程序不能处于运行状态 + //2. 将生成的迁移文件更新到数据库中 命令 dotnet ef database update + } + ``` +3. 视图--`Index.cshtml` + ```c# +
+
+ +
+ 新增 +
+
+
+ + + + + + + + @foreach(var item in @Model) + { + + + + + + + } +
Id学号姓名操作
@item.Id@item.StudentCode@item.StudentName +
+ 编辑 +
+
+ 删除 +
+
+
+ + ``` +4. 增-- `Create.cshtml` + ```c# + @model Student; +
+
+
+ +
+ ``` + +5. 删--`Delete.cshtml` + ```c# + + + + + + + + + + + + + +
姓名:@Model.StudentName
学号:@Model.StudentCode
+ 删除 + + 回到主页 +
+ ``` +6. 改--`Edit.cshtml` + ```c# + @model Student; +
+
+
+ +
+ ``` +7. 查--在Index.cshtml页面中 + ```c# + //查询 + + ``` + + - 数据库 + ```c# + //构造函数 + private readonly StudentDbContext _db; + public ScoresController() + { + _db=new StudentDbContext(); + } + ``` + +1. 增 + ```c# + public IActionResult Create() + { + return View(); + } + /// + /// 新增页面 + /// + /// + /// + [HttpPost] + public IActionResult Create(Student input) + { + //将输入的内容添加的students表 + _db.Students.Add(input); + //保存到数据库 + _db.SaveChanges(); + return RedirectToAction("Index"); + } + /// + /// 获取修改内容 + /// + /// + /// + + ``` +2. 删 + ```c# + /// + /// 删除页面 + /// + /// + /// + public IActionResult Delete(int id) + { + //通过id获取删除的内容 + var list =_db.Students.FirstOrDefault(x=>x.Id==id); + return View(list); + } + /// + /// 确认删除页面 + /// + /// + /// + public IActionResult DeleteConfirm(int id) + { + //通过id获取删除的内容 + var list =_db.Students.FirstOrDefault(x=>x.Id==id); + //判断list是否为空 + //list不为空 + if(list!=null) + { + _db.Students.Remove(list); + //数据库的内容也需要删除 + _db.SaveChanges(); + //删除完重定向到index页面 + return RedirectToAction("Index"); + } + //不存在则提示错误 + return NotFound(); + } + ``` +3. 改 + ```c# + public IActionResult Edit(int id) + { + //通过点击传入的ID获取要修改此条数据的内容 + var list =_db.Students.FirstOrDefault(x=>x.Id==id); + return View(list); + } + /// + /// 修改页面 + /// + /// + /// + [HttpPost] + public IActionResult Edit(Student input) + { + var list =_db.Students.FirstOrDefault(x=>x.Id==input.Id); + //判断list是否存在 + if(list!=null) + { + //修改的内容要在list中重新赋值 + list.StudentCode=input.StudentCode; + list.StudentName=input.StudentName; + //重新传到数据库 + _db.SaveChanges(); + return RedirectToAction("Index"); + } + //不存在则提示错误 + return NotFound(); + } + ``` +4. 查 列表页 + ```c# + public IActionResult Index(string keyword) + { + //先判断keyword是否为空,如果不为空删除前后空格 + keyword=string.IsNullOrEmpty(keyword)?"":keyword.Trim(); + //keyword为空,返回在主页 + if(string.IsNullOrEmpty(keyword)) + { + var list=_db.Students.ToList(); + return View(list); + } + var res=_db.Students.Where(x=>x.StudentName.Contains(keyword)||x.StudentCode.Contains(keyword)).ToList(); + return View(res); + + } + ``` \ No newline at end of file diff --git "a/\345\224\220\345\256\207\345\247\227/20241225-\346\210\220\347\273\251\347\256\241\347\220\206\350\241\2501.md" "b/\345\224\220\345\256\207\345\247\227/20241225-\346\210\220\347\273\251\347\256\241\347\220\206\350\241\2501.md" new file mode 100644 index 0000000..87d082b --- /dev/null +++ "b/\345\224\220\345\256\207\345\247\227/20241225-\346\210\220\347\273\251\347\256\241\347\220\206\350\241\2501.md" @@ -0,0 +1,173 @@ +## 成绩管理表 +1. 创建模型--`Score.cs` + ```c# + namespace StudentManager.Models; + public class Score + { + public int Id{get;set;} + public int StudentId{get;set;} + public int CourseId{get;set;} + public decimal Scores{get;set;} + } + ``` +2. 创建数据库上下文--`StudentDbContext.cs` + ```c# + using Microsoft.EntityFrameworkCore; + namespace StudentManager.Models; + public class StudentDbContext:DbContext + { + public DbSetStudents{get;set;}=null!; + public DbSetCourses{get;set;}=null!; + public DbSetScores{get;set;}=null!; + + //连接数据库 + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + var str=$"server=SK-20240829XXWR\\SQLEXPRESS;database=StudentDB;uid=sa;pwd=123456;TrustServerCertificate=true;"; + optionsBuilder.UseSqlServer(str); + } + //DbContext:安装依赖包 命令 dotnet add package Microsoft.EntityFrameworkCore.SqlServer + //1. 生成迁移文件 命令 dotnet ef migrations add XXX + 1.1 需要一个工具 ef工具 安装命令 dotnet tool install --global dotnet-ef + 1.2 安装依赖包 命令 dotnet add package Microsoft.EntityFrameworkCore.Design + 1.3 需要程序不能有编译错误,使用 dotnet build 查看是否有编译错误 + 1.4 程序不能处于运行状态 + //2. 将生成的迁移文件更新到数据库中 命令 dotnet ef database update + } + ``` +3. 视图--`Index.cshtml` + ```c# +
+
+ //查询 + + //新增 +
+ 新增 +
+
+
+ + + + + + + + + @foreach(var item in @Model) + { + + + + + + + + } +
Id姓名课程成绩操作
@item.Id@item.StudentName@item.CourseName@item.Scores + //编辑 +
+ 编辑 +
+ //删除 +
+ 删除 +
+
+
+ +
+ + ``` +4. 增-- `Create.cshtml` + ```c# + @model Score; +
+ + + + + + + + + + + + + + + + + +
学生姓名:
课程名称:
成绩:
取消
+ +
+ ``` + +5. 删--`Delete.cshtml` + ```c# + + + + + + + + + + + + + + + + + +
姓名:@Model.StudentName
课程:@Model.CourseName
成绩:@Model.Scores
+ 删除 + + 回到主页 +
+ ``` +6. 改--`Edit.cshtml` + ```c# + @model Score; +
+ + + + + + + + + + + + + + + + + +
学生姓名:
课程名称:
成绩:
取消
+ +
+ ``` +7. 查--在Index.cshtml页面中 + ```c# + //查询 + + ``` \ No newline at end of file diff --git "a/\345\224\220\345\256\207\345\247\227/20241226-\346\210\220\347\273\251\347\256\241\347\220\206\350\241\2502.md" "b/\345\224\220\345\256\207\345\247\227/20241226-\346\210\220\347\273\251\347\256\241\347\220\206\350\241\2502.md" new file mode 100644 index 0000000..8289b06 --- /dev/null +++ "b/\345\224\220\345\256\207\345\247\227/20241226-\346\210\220\347\273\251\347\256\241\347\220\206\350\241\2502.md" @@ -0,0 +1,174 @@ +- 数据库 + ```c# + //构造函数 + private readonly StudentDbContext _db; + public ScoresController() + { + _db=new StudentDbContext(); + } + ``` + +1. 增 + ```c# + public IActionResult Create() + { + var stu=_db.Students.ToList(); + var cou=_db.Courses.ToList(); + //传递students表中的studentname和courses中coursename的数据到create页面 + //传递过去为select 下拉框 SelectList的using命令为`using Microsoft.AspNetCore.Mvc.Rendering;` + ViewBag.Students=new SelectList(stu,"Id","StudentName"); + ViewBag.Courses=new SelectList(cou,"Id","CourseName"); + return View(); + } + [HttpPost] + public IActionResult Create(Score input) + { + //将新增的数据添加到scores表 + _db.Scores.Add(input); + //保存到数据库中 + _db.SaveChanges(); + //重定向 + return RedirectToAction("Index"); + } + ``` +2. 删 + ```c# + /// + /// 获取删除数据 + /// + /// + /// + public IActionResult Delete(int id) + { + var list = _db.Scores.FirstOrDefault(x=>x.Id==id); + if(list==null) + { + return NotFound(); + } + //连接返回studentname和coursename + var tmpstu=_db.Students.FirstOrDefault(x=>x.Id==list.StudentId); + var tmpcour=_db.Courses.FirstOrDefault(x=>x.Id==list.CourseId); + var obj=new{ + list.Id, + StudentName=tmpstu==null?"":tmpstu.StudentName, + CourseName=tmpcour==null?"":tmpcour.CourseName, + list.Scores + }; + return View(obj); + } + /// + /// 确认删除页面 + /// + /// + /// + public IActionResult DeleteConfirm(int id) + { + var list = _db.Scores.FirstOrDefault(x=>x.Id==id); + //不为空 + if(list!=null) + { + //从scores中删除 + _db.Scores.Remove(list); + //保存到数据库 + _db.SaveChanges(); + //重定向 + return RedirectToAction("Index"); + } + //如果为空提示错误 + return NotFound(); + } + ``` +3. 改 + ```c# + /// + /// 获取编辑数据 + /// + /// + /// + public IActionResult Edit(int id) + { + //根据id查询在scores的数据 + var list=_db.Scores.FirstOrDefault(x=>x.Id==id); + //list存在为空的情况要判断 + //list不为空 + if(list!=null) + { + //联表查询 + var tmpstu=_db.Students.FirstOrDefault(x=>x.Id==list.StudentId); + var tmpcour=_db.Courses.FirstOrDefault(x=>x.Id==list.CourseId); + var obj=new{ + list.Id, + StudentName=tmpstu==null?"":tmpstu.StudentName, + CourseName=tmpcour==null?"":tmpcour.CourseName, + list.Scores + }; + } + + //连接返回studentname和coursename -- 更改数据的下拉框 + var stu=_db.Students.ToList(); + var cou=_db.Courses.ToList(); + ViewBag.Students=new SelectList(stu,"Id","StudentName"); + ViewBag.Courses=new SelectList(cou,"Id","CourseName"); + + return View(list); + } + /// + /// 编辑页面 + /// + /// + [HttpPost] + public IActionResult Edit(Score input) + { + //通过id查询出对应的数据 + var list =_db.Scores.FirstOrDefault(x=>x.Id==input.Id); + //数据不为空 + if(list!=null) + { + list.StudentId=input.StudentId; + list.CourseId=input.CourseId; + list.Scores=input.Scores; + //更新到scores表 + _db.Scores.Update(list); + //保存到数据库 + _db.SaveChanges(); + //重定向 + return RedirectToAction("Index"); + } + //数据为空返回提示 + return NotFound(); + } + ``` +4. 查 列表页 + ```c# + public IActionResult Index(string keyword) + { + var stu=_db.Students.ToList(); + var cour=_db.Courses.ToList(); + var scor=_db.Scores.ToList(); + //联表查询,将studentname和coursename传递在列表页 + var res=scor.Select(x=> + { + var stus=stu.FirstOrDefault(y=>y.Id == x.StudentId); + var cours=cour.FirstOrDefault(y=>y.Id == x.CourseId); + return new + { + x.Id, + //判断是否为空 + StudentName=stus==null?"":stus.StudentName, + CourseName=cours==null?"":cours.CourseName, + x.Scores + }; + }); + //判断keyword是否为空 + keyword=string.IsNullOrEmpty(keyword)?"":keyword.Trim(); + if(string.IsNullOrEmpty(keyword)) + { + //返回列表页 + return View(res); + } + //查询--判断是否存在keyword的内容数据 + var list=res.Where(x=>x.StudentName.Contains(keyword)||x.CourseName.Contains(keyword)).ToList(); + return View(list); + + } + ``` \ No newline at end of file -- Gitee