# 中北百事通
**Repository Path**: shenchuanchao99/zhongbei-baishi-tong
## Basic Information
- **Project Name**: 中北百事通
- **Description**: 中北百事通,一个实现了基本的人力资源WebApp。采用Blazor+Asp.Net+MsSql进行搭建和编写。主要实现功能有:员工人事档案、员工人事调动、员工加班管理、员工请假管理系统、员工考勤系统、员工工资管理系统。好吧,这其实是大三的一个数据库课程作业,这是我的作业结果~
- **Primary Language**: Unknown
- **License**: GPL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2026-01-28
- **Last Updated**: 2026-01-28
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 中北百事通
一个新型的人力资源管理WEB平台!PowerBy @大千小熊。
本项目开源声明:GPL-2.0和自定义版权许可NOTICE文件。
🎥Bilibili-中北百事通演示视频
点击视频链接来查看本项目的演示视频。
## 项目简介
本项目使用Blazor框架作为前端,后端使用Asp.Net Core作为服务器。本项目基本上实现了,员工信息管理,员工人事调动管理系统、员工加班管理系统、员工请假管理系统、员工考勤管理系统、员工工资管理系统等相关功能和系统。
本项目的大部分功能已经进行了闭环,实现了基本的增、删、改、查等数据库操作。使用Sql Server作为数据库的容器。
## 项目亮点
本项目基础功能已经全部闭环,可以有一个基础的交互。同时本项目也算一个C#全栈项目!分为两种用户使用功能,(1)普通用户:可以发起一些部门申请,资金考核申请等(2)管理员用户:可以来审核普通用户发起的申请,同时修改一些数据库的相关信息。
本项目在设计上拥有相关的亮点,下面将从“前端”和“后端”两大部分,进行相关的介绍。
### 前端
1. ✨C#+JavaScript语言编写!
2. ✨PWA渐进式 Web 应用!
3. ✨动态响应设计,匹配电脑端和手机端!
4. ✨优雅的界面设计(虽然不知道到底算不算)
本项目使用Blazor框架进行编写,并且配置了PWA等相关功能,所以现在它可以作为一个APP安装在了自己的计算机中。同时,前端大部分代码使用了C#编写,也使用了例如Inject注入等一些特性。是的,你没有听错,得益于WebAssembly的支持,现在可以使用C#来替代JavaScript来编写代码。并且性能还可以。同时也使用了一些CSS小技巧,例如`::Before`等伪类实现功能。(虽然听起来有点基础)。也在前端中,分装了一些,组件来使用,了解了Razor的生命周期。
### 后端
1. ✨Asp.Net Core后端服务器实现!(是的,这是一个C#全栈项目)
2. ✨MVC设计架构,WebApi实现。
3. ✨本来想封装一个自己的ActionResult,但是突然觉得校验很麻烦,所以只实现了一半qwq。
4. ✨数据库实现:实现了几张表格,并且可以很好的链接在一起,使用left join查询等。
5. ✨服务器程序启动了静态资源文件支持,可以用于做一台资源服务器,并且配置了Json的生成避免产生Cycles。
后端服务器同时也实现了一些和数据库打交道的方式,下文将详细给出使使用方法和配置数据库的教程。
## 实机截图
主界面设计
新增请假管理
查看我的请假历史和进度
批准回复我的请假要求
薪水计算器,可以根据部门所制定的规则计算当下的所应该领取的工资
审核自己的下属,工资发放的情况
# 软件设计和结构组成 ## 软件设计 内部设计了一套人员管理系统,有两类人员,一种是管理员,一种是普通用户。 普通用户可以发起申请,比如请假,考勤,调动等。 其中,不同的申请,可以选择不同的审核人。例如一些工资申请,只能有你的上司进行审核。其他的人不可以进行审核。 然后,管理员审核通过后,普通员工就可以进行调换部门,进行请假销假,而管理员也可以进行一些文件的查看,回复一些消息和通知。 管理员也可以制定一些新的部门考核规定,比如上班时间的规定之类的。 普通用户在打卡的时候,也可以看到自己是不是迟到等。 对于请假方面,我在上学的时候请假比较多,所以我知道,如果用户不能成果销假,那么就不可以进行新的请假,所以你要是想新增请假,就会收到下图的通知。
主界面设计
当然了,本系统的一些其他功能,例如:用户修改名字,修改头像,这些都是支持的。 ## 结构组成 本软件分为:Clinet、Server、Model组成,分别对应,前端、后端、中间模型层。 ### Client端: 本项目的前端使用了Ant-Design开源框架。对于组件通知而言,我使用了一些`[parameter]`来传递组件之间的参数。同时我也使用了一些委托`delegete`来跨组件进行通信。 总之,前端无外乎就是,美术设计,组件通信,还有前后端的交互。有了组件,很多页面也可以抽象为一个单独的部分,供其他部分来进行使用。 下图展示的是,当本项目第一次加载时候,控制台会显示加载很多DLL,Thanks To WebAssembly技术,曾经可以跑在本地的一些.Net代码,现在也可以跑在浏览器里面啦!看到这些dll加载还是很令人,身心愉悦的哎!  ### Server端: 在服务器端,主要是编写`Controller`控制器和`Action`方法等。 通过配置依赖注入和一些代码的生命周期,可以很方便使用`[Inject]`来进行使用,实在很方便啊! 后端通过编写一些`WebApi`来实现`Get`和`Post`请求。然后配置服务器为静态资源服务器,来保存服务器获得的文件信息。比如上传头像,就需要把文件保存在自己电脑的磁盘里面,然后数据库写入文件的相对位置,然后前端获得链接后,展示资源,或者来下载资源。 其实,还有一些功能没有实现完整,通过校验人员登录信息,可以很方便进行登录者管理和后端Api不受到攻击。 同时数据库也可以做一个加密,现在的数据库设计还有很多不足的地方,需要继续进行改进。 比如通过Cookie和JWT来进行持久化验证。但是我一想这是一个数据库作业,我还有图形学等着我去征服,所以,我先不这么做了,可能我以后也不会去互联网工作哎!(算法赛高!) ### Model: 这里就是链接Server和Client的地方了,在这两个层面上交互,需要一套统一的结构,要不然自己写解析岂不是要累死累活的。所以我并不打算这么做。 然后是,我使用JSON来传递数据,也就是不停的序列化,和反序列化一下,就OK了~ 比如以下的SQL关系配置,需要了解各个Object之间的约束关系,然后来设计数据库。可以参考附录,方老师发布的那份作业要求。 ```sql ALTER TABLE [dbo].[AddWOMs] CHECK CONSTRAINT [FK_AddWOMs_StaffInfos_StaffId] ``` 创建表格的时候也是差不多的 ```sql CREATE TABLE [dbo].[AddMoves]( [Id] [int] IDENTITY(1,1) NOT NULL, [StaffId] [int] NULL, [Created] [datetime2](7) NULL, [ToDepartmentId] [int] NULL, [Reason] [nvarchar](max) NOT NULL, [AcceptFlag] [int] NOT NULL, CONSTRAINT [PK_AddMoves] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] ``` (好吧,其实这是手动在SqlServer一步步配置的,然后最后用脚本Task导出的配置文件里面的内容,让小熊一口气写成这样我也写不出来啊哈哈哈) ## 总体 总体来说,本项目的难度层面其实并不高,完成方老师的一个选题(emm,好吧,或者两个选题),基本上后面的也就是信手拈来了,但是需要你真正理解了数据库的设计,然后啥FK啊,约束条件啊~这些稍微理解,掌握一下,就没什么问题了。 难度不高,但是练练手,和熟练度,还是挺不错的一种选题,强烈建议自己写一遍代码,查查资料,收获还是很多的啦!😘 # 使用指南 ## 软件安装 1. clone本项目到本地 2. 双击项目文件夹中的.sln文件来运行项目 3. 生成数据库并且配置数据库连接字符串 enjoy it! ## 数据库的配置 本项目使用MsSql数据库,2019版本。 1. 使用sql脚本生成数据库,位于本项目文件夹的“SqlServer_CreateDataBase.sql”文件。 2. 修改连接字符串,位于本项目的“Program.cs”(是那个服务器的Program.cs不要搞错了)文件。 点击下载:SqlServer_CreateDataBase.sql ``` C# builder.Services.AddDbContext