ASP.NET Core+Element+SQL Server开发校园图书管理系统(一)
创始人
2024-05-13 00:05:39
0

随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NET Core也应运而生。本文主要基于ASP.NET Core+Element+Sql Server开发一个校园图书管理系统为例,简述基于MVC三层架构开发的常见知识点,仅供学习分享使用,如有不足之处,还请指正。

涉及知识点

在本示例中,涉及到B/S全栈开发的常见知识点,包括后端与前端,主要如下:

  • 开发工具:Visual Studio 2022
  • 目标框架:.Net 6.0
  • 架构:MVC三层架构【Model-View-Controller】
  • 前端框架:前端采用Element框架,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。可以大大提高开发效率,减少工作量。
  • 数据库:SQL Server 2012。需要掌握基础的增删改查语句使用。

Element框架简介

Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。具体组件使用方法,可参考官网:https://element.eleme.io/#/zh-CN,

搭建开发框架

工欲善其事必先利其器,所以开发具体功能之前,首先要搭建开发环境,步骤如下所示:

1. 创建项目

本示例中的校园图书管理系统,基于ASP.NET Core MVC三层架构,在创建时选择对应模板即可,如下所示:

根据创建向导进行创建即可,在项目名称处输入CLMS,目标框架选择.Net6.0即可。为了项目可移植性,将DAL层和Entity层独立出来成单独的工程。项目结构如下所示:

2. 创建数据库

在本示例中,采用Data First方式,先创建数据库和对应的表结构,根据业务需求分析,

主要包括三部分:

  1. 书室管理:书室信息(Librarys),书架信息(BookRacks)
  2. 图书管理:书籍信息(Book),借还记录(Circulates)
  3. 系统管理:用户信息(Users),角色信息(Roles),菜单信息(Menus)以及角色权限分配(RoleMenus),用户角色分配(RoleMenus)

如下所示:

3. 在项目中配置数据库

连接数据库,需要在配置文件appsettings.json中,添加数据库连接字符串,如下所示:

{"Logging": {"LogLevel": {"Default": "Information","Microsoft.AspNetCore": "Warning"}},"ConnectionStrings": {"Default": "Server=localhost;Database=CLMS;Trusted_Connection=True;User Id=sa;Password=abc123;Encrypt=True;TrustServerCertificate=True;"},"AllowedHosts": "*"
}

4. 创建数据库操作对象上下文

EntityFrameWork框架需要进行安装,目前版本为7.0.1,可通过NuGet包管理器进行安装,如下所示:

 数据库操作采用EntityFrameCore框架,继承自DbContext,如下所示:

using CLMS.Entity;
using Microsoft.EntityFrameworkCore;namespace CLMS.DAL
{/// /// 创建数据库上下文类/// public class DataContext : DbContext{public DbSet Users { get; set; }public DbSet Menus { get; set; }public DbSet Roles { get; set; }public DbSet UserRoles { get; set; }public DbSet RoleMenus { get; set; }/// /// 图书室/// public DbSet Librarys { get; set; }/// /// 阅览架/// public DbSet BookRacks { get; set; }/// /// 借还记录/// public DbSet Circulates { get; set; }/// /// 图书/// public DbSet Books { get; set; }public DataContext(DbContextOptions options) : base(options){}protected override void OnModelCreating(ModelBuilder modelBuilder){base.OnModelCreating(modelBuilder);modelBuilder.Entity().ToTable("Users");modelBuilder.Entity().ToTable("Menus");modelBuilder.Entity().ToTable("Roles");modelBuilder.Entity().ToTable("UserRoles");modelBuilder.Entity().ToTable("RoleMenus");//modelBuilder.Entity().ToTable("Librarys");modelBuilder.Entity().ToTable("BookRacks");modelBuilder.Entity().ToTable("Circulates");modelBuilder.Entity().ToTable("Books");}}
}

5. EntityFramework配置

在Startup.cs中,添加EntittyFramework的注入,如下所示:

using Autofac.Extensions.DependencyInjection;
using CLMS.DAL;
using Microsoft.EntityFrameworkCore;var builder = WebApplication.CreateBuilder(args);// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Default")));
builder.Services.AddHttpContextAccessor();
builder.Services.AddSession();//配置session访问服务
// 以下是autofac依赖注入
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
var app = builder.Build();// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{app.UseExceptionHandler("/Home/Error");// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.app.UseHsts();
}app.UseHttpsRedirection();app.UseStaticFiles();app.UseRouting();
app.UseSession();
app.UseAuthorization();app.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");app.Run();

6. 安装客户端框架

在本示例中,主要用到Element UI框架,以及axios框,Vue2.0,可通过Visual Studio进行安装,如下所示:

选择Web项目,右键-->添加-->客户端库。打开添加窗口,然后选择对应库进行安装即可,如下所示:

 安装成功后,如下所示:

 登录页面

当基础开发环境搭建好后,就可以进行具体功能开发,以登录功能为例,步骤如下:

1. 创建控制器LoginController

控制器主要负责页面导航和逻辑处理,如下所示:

namespace CLMS.Host.Controllers
{public class LoginController : Controller{private DataContext dataContext;public LoginController(DataContext context){dataContext = context;}[HttpGet]public IActionResult Index(){return View();}[Consumes("application/json")][HttpPost]public Msg Login([FromBody]User user){Msg msg = new Msg();if (string.IsNullOrEmpty(user.UserName) || string.IsNullOrEmpty(user.Password)){msg.message = "用户名或密码为空";msg.code = 1;return msg;}else{var item = dataContext.Users.FirstOrDefault(i => i.UserName == user.UserName && i.Password == user.Password);if (item != null){HttpContext.Session.SetInt32("UserId", item.Id);msg.message = "success";msg.code = 0;return msg;}else{msg.message = "用户名或密码验证错误";msg.code = 1;return msg;}}}}
}

2. 创建登录视图

视图主要用于数据的呈现和交互,登录视图对应Login/Index.cshtml页面。主要功能如下:

  1. 引入需要的客户端组件库。
  2. 页面布局,主要使用Element组件。
  3. 登录按钮功能,主要用axios组件库,提交数据到控制器。

登录视图代码如下:

 
@{Layout = null;
}


校园图书管理系统

校园图书管理系统

取消登录
注册


© 2022-2023 校园图书管理系统. All Rights Reserved | Design by 小六公子

运行测试

经过以上步骤,登录功能已经做好,运行程序。然后数据账号密码,点击登录进行跳转,如下所示:

 登录成功后,如下所示:

以上就是校园图书管理系统的基础环境搭建以及登录功能实现,后续功能再继续介绍。旨在抛砖引玉,一起学习,共同进步。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...