WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(二)(上)

简介: WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(二)(上)

最近通过WPF开发项目,为了对WPF知识点进行总结,所以利用业余时间,开发一个学生信息管理系统【Student Information Management System】。上一篇文章进行了框架搭建和模块划分,本文在前一篇基础之上,继续深入开发学生信息管理系统的数据库和WebApi接口搭建相关内容,仅供学习分享使用,如有不足之处,还请指正。

涉及知识点

本篇内容主要是数据库的操作和WebApi的创建,涉及到知识点如下所示:

  • 数据库知识,基于SQL Server 2012的数据表创建,以及CRUD【(Create)、检索(Retrieve)、更新(Update)和删除(Delete)】等基础操作。
  • WebApi接口创建基础操作,本文会涉及到通过WebApi提供数据接口给客户端,用于封装数据持久化的操作。

数据库相关

在学生信息管理系统中,学生,班级,课程,成绩等内容和管理模块的相关内容,都离不开数据库的支持,所以数据是支撑,页面是对数据的展示。数据库结构,如下所示:

主要涉及的表如下所示:

1. 学生表Student

学生表主要存储学生的基础信息,如下所示:

学生表创建语句,如下所示:

1. USE [SIMS]
2. GO
3. 
4. /****** Object:  Table [dbo].[Students]    Script Date: 2022/5/25 0:11:41 ******/
5. SET ANSI_NULLS ON
6. GO
7. 
8. SET QUOTED_IDENTIFIER ON
9. GO
10. 
11. SET ANSI_PADDING ON
12. GO
13. 
14. CREATE TABLE [dbo].[Students](
15.     [Id] [int] IDENTITY(1,1) NOT NULL,
16.     [No] [varchar](50) NULL,
17.     [Name] [varchar](50) NULL,
18.     [Age] [int] NULL,
19.     [Sex] [bit] NULL,
20.     [ClassesId] [int] NULL,
21.     [CreateUser] [int] NULL,
22.     [CreateTime] [datetime] NULL,
23.     [LastEditUser] [int] NULL,
24.     [LastEditTime] [datetime] NULL
25. ) ON [PRIMARY]
26. 
27. GO
28. 
29. SET ANSI_PADDING OFF
30. GO

2. 班级表Classes

班级表主要用于保存班级相关信息,如下所示:

班级表创建语句,如下所示:

1. USE [SIMS]
2. GO
3. 
4. /****** Object:  Table [dbo].[Classes]    Script Date: 2022/5/25 0:16:31 ******/
5. SET ANSI_NULLS ON
6. GO
7. 
8. SET QUOTED_IDENTIFIER ON
9. GO
10. 
11. SET ANSI_PADDING ON
12. GO
13. 
14. CREATE TABLE [dbo].[Classes](
15.     [Id] [int] IDENTITY(1,1) NOT NULL,
16.     [Name] [varchar](50) NULL,
17.     [Dept] [varchar](50) NULL,
18.     [Grade] [varchar](50) NULL,
19.     [HeadTeacher] [varchar](50) NULL,
20.     [Monitor] [int] NULL,
21.     [CreateUser] [int] NULL,
22.     [CreateTime] [datetime] NULL,
23.     [LastEditUser] [int] NULL,
24.     [LastEditTime] [datetime] NULL
25. ) ON [PRIMARY]
26. 
27. GO
28. 
29. SET ANSI_PADDING OFF
30. GO

3. 课程表Courses

课程表主要保存课程信息,如下所示:

课程表创建语句,如下所示:

1. USE [SIMS]
2. GO
3. 
4. /****** Object:  Table [dbo].[Courses]    Script Date: 2022/5/25 0:20:11 ******/
5. SET ANSI_NULLS ON
6. GO
7. 
8. SET QUOTED_IDENTIFIER ON
9. GO
10. 
11. SET ANSI_PADDING ON
12. GO
13. 
14. CREATE TABLE [dbo].[Courses](
15.     [Id] [int] IDENTITY(1,1) NOT NULL,
16.     [Name] [varchar](50) NULL,
17.     [Teacher] [varchar](50) NULL,
18.     [CreateUser] [int] NULL,
19.     [CreateTime] [datetime] NULL,
20.     [LastEditUser] [int] NULL,
21.     [LastEditTime] [datetime] NULL
22. ) ON [PRIMARY]
23. 
24. GO
25. 
26. SET ANSI_PADDING OFF
27. GO

4. 成绩表Scores

成绩表用于保存学生各科的成绩,如下所示:

成绩表创建语句,如下所示:

1. USE [SIMS]
2. GO
3. 
4. /****** Object:  Table [dbo].[Scores]    Script Date: 2022/5/25 0:23:19 ******/
5. SET ANSI_NULLS ON
6. GO
7. 
8. SET QUOTED_IDENTIFIER ON
9. GO
10. 
11. CREATE TABLE [dbo].[Scores](
12.     [Id] [int] IDENTITY(1,1) NOT NULL,
13.     [StudentId] [int] NULL,
14.     [CourseId] [int] NULL,
15.     [Score] [float] NULL,
16.     [CreateUser] [int] NULL,
17.     [CreateTime] [datetime] NULL,
18.     [LastEditUser] [int] NULL,
19.     [LastEditTime] [datetime] NULL
20. ) ON [PRIMARY]
21. 
22. GO

5. 其他数据表

其他数据表包括用户表【Users】,角色表【Roles】,用户角色对应关系表【UserRoles】,角色菜单对应关系表【RoleMenus】菜单表【Menus】 创建语句,如下所示:

1. USE [SIMS]
2. GO
3. 
4. /****** Object:  Table [dbo].[Users]    Script Date: 2022/5/25 0:29:55 ******/
5. SET ANSI_NULLS ON
6. GO
7. 
8. SET QUOTED_IDENTIFIER ON
9. GO
10. 
11. SET ANSI_PADDING ON
12. GO
13. 
14. CREATE TABLE [dbo].[Users](
15.     [Id] [int] IDENTITY(1,1) NOT NULL,
16.     [UserName] [varchar](50) NULL,
17.     [Password] [varchar](50) NULL,
18.     [NickName] [varchar](50) NULL
19. ) ON [PRIMARY]
20. 
21. GO
22. 
23. SET ANSI_PADDING OFF
24. GO
25. ------------------------------------------
26. USE [SIMS]
27. GO
28. 
29. /****** Object:  Table [dbo].[Roles]    Script Date: 2022/5/25 0:30:21 ******/
30. SET ANSI_NULLS ON
31. GO
32. 
33. SET QUOTED_IDENTIFIER ON
34. GO
35. 
36. SET ANSI_PADDING ON
37. GO
38. 
39. CREATE TABLE [dbo].[Roles](
40.     [id] [int] IDENTITY(1,1) NOT NULL,
41.     [Name] [varchar](50) NULL,
42.     [Description] [varchar](50) NULL
43. ) ON [PRIMARY]
44. 
45. GO
46. 
47. SET ANSI_PADDING OFF
48. GO
49. ------------------------------------------
50. USE [SIMS]
51. GO
52. 
53. /****** Object:  Table [dbo].[Menus]    Script Date: 2022/5/25 0:31:04 ******/
54. SET ANSI_NULLS ON
55. GO
56. 
57. SET QUOTED_IDENTIFIER ON
58. GO
59. 
60. SET ANSI_PADDING ON
61. GO
62. 
63. CREATE TABLE [dbo].[Menus](
64.     [id] [int] IDENTITY(1,1) NOT NULL,
65.     [Name] [varchar](50) NULL,
66.     [Description] [varchar](50) NULL,
67.     [Url] [varchar](250) NULL,
68.     [ParentId] [int] NULL,
69.     [SortId] [int] NULL
70. ) ON [PRIMARY]
71. 
72. GO
73. 
74. SET ANSI_PADDING OFF
75. GO
76. 
77. ------------------------------------------
78. USE [SIMS]
79. GO
80. 
81. /****** Object:  Table [dbo].[UserRoles]    Script Date: 2022/5/25 0:31:20 ******/
82. SET ANSI_NULLS ON
83. GO
84. 
85. SET QUOTED_IDENTIFIER ON
86. GO
87. 
88. CREATE TABLE [dbo].[UserRoles](
89.     [id] [int] IDENTITY(1,1) NOT NULL,
90.     [UserId] [int] NULL,
91.     [RoleId] [int] NULL
92. ) ON [PRIMARY]
93. 
94. GO
95. ------------------------------------------
96. USE [SIMS]
97. GO
98. 
99. /****** Object:  Table [dbo].[RoleMenus]    Script Date: 2022/5/25 0:31:35 ******/
100. SET ANSI_NULLS ON
101. GO
102. 
103. SET QUOTED_IDENTIFIER ON
104. GO
105. 
106. CREATE TABLE [dbo].[RoleMenus](
107.     [id] [int] IDENTITY(1,1) NOT NULL,
108.     [RoleId] [int] NULL,
109.     [MenuId] [int] NULL
110. ) ON [PRIMARY]
111. 
112. GO

数据库实体类

数据库实体类是数据库表与类的映射,通过操作实体类来达到操作数据库的目的,实体类需要与EntityFramework结合起来使用。如下所示:

1. 学生类StudentEntity

学生类与学生表对应,如下所示:

1. namespace SIMS.Entity
2. {
3. /// <summary>
4. /// 学生实体
5. /// </summary>
6. public class StudentEntity
7.     {
8. /// <summary>
9. /// 唯一标识
10. /// </summary>
11. public int Id { get; set; }
12. 
13. /// <summary>
14. /// 学号
15. /// </summary>
16. public string No { get; set; }
17. 
18. /// <summary>
19. /// 学生名称
20. /// </summary>
21. public string Name { get; set; }
22. 
23. /// <summary>
24. /// 年纪
25. /// </summary>
26. public int Age { get; set; }
27. 
28. /// <summary>
29. /// 性别
30. /// </summary>
31. public Boolean Sex { get; set; }
32. 
33. /// <summary>
34. /// 班级标识
35. /// </summary>
36. public int? ClassesId { get; set; }
37. 
38. /// <summary>
39. /// 创建时间
40. /// </summary>
41. public DateTime? CreateTime { get; set; }
42. 
43. /// <summary>
44. /// 当前登录的账号的ID
45. /// </summary>
46. public int? CreateUser { get; set; }
47. 
48. /// <summary>
49. /// 最后编辑时间
50. /// </summary>
51. public DateTime? LastEditTime { get; set; }
52. 
53. /// <summary>
54. /// 最后修改人
55. /// </summary>
56. public int? LastEditUser { get; set; }
57.     }
58. }

2. 班级类ClassesEntity

班级类与班级表对应,如下所示:

1. namespace SIMS.Entity
2. {
3. /// <summary>
4. /// 班级实体
5. /// </summary>
6. public class ClassesEntity
7.     {
8. /// <summary>
9. /// 唯一标识
10. /// </summary>
11. public int Id { get; set; }
12. 
13. /// <summary>
14. /// 专业
15. /// </summary>
16. public string Dept { get; set; }
17. 
18. /// <summary>
19. /// 年级
20. /// </summary>
21. public string Grade { get; set; }
22. 
23. /// <summary>
24. /// 班级名称
25. /// </summary>
26. public string Name { get; set; }
27. 
28. /// <summary>
29. /// 班主任老师名称
30. /// </summary>
31. public string HeadTeacher { get; set; }
32. 
33. /// <summary>
34. /// 班长id,对应学生表的学生
35. /// </summary>
36. public int? Monitor { get; set; }
37. 
38. /// <summary>
39. /// 创建时间
40. /// </summary>
41. public DateTime CreateTime { get; set; }
42. 
43. /// <summary>
44. /// 当前登录的账号的ID
45. /// </summary>
46. public int CreateUser { get; set; }
47. 
48. /// <summary>
49. /// 最后编辑时间
50. /// </summary>
51. public DateTime LastEditTime { get; set; }
52. 
53. /// <summary>
54. /// 最后修改人
55. /// </summary>
56. public int LastEditUser { get; set; }
57.     }
58. }


相关文章
|
7月前
|
C# 开发者
一款WPF开发的网易云音乐客户端 - DMSkin-CloudMusic
一款WPF开发的网易云音乐客户端 - DMSkin-CloudMusic
155 36
|
7月前
|
程序员 C# 异构计算
一个为程序员定制的、WPF开发的小巧、美观桌面快捷工具
一个为程序员定制的、WPF开发的小巧、美观桌面快捷工具
70 0
|
11月前
|
设计模式 前端开发 测试技术
WPF开发之Prism详解【内附源码】
WPF开发之Prism详解【内附源码】
272 0
|
11月前
|
C#
WPF工控组态软件之冷却塔和空气压缩机开发
WPF工控组态软件之冷却塔和空气压缩机开发
200 0
|
11月前
|
C#
WPF工控组态软件之管道和冷却风扇开发
WPF工控组态软件之管道和冷却风扇开发
195 0
|
11月前
|
C# 数据库 C++
WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(完)(下)
WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(完)(下)
352 0
|
11月前
|
前端开发 C# UED
WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(完)(上)
WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(完)(上)
223 0
|
11月前
|
C# 数据库
WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(四)(下)
WPF开发学生信息管理系统【WPF+Prism+MAH+WebApi】(四)(下)
120 0
|
1月前
|
C# 开发者 Windows
基于Material Design风格开源、易用、强大的WPF UI控件库
基于Material Design风格开源、易用、强大的WPF UI控件库
149 0
|
1月前
|
C#
浅谈WPF之装饰器实现控件锚点
使用过visio的都知道,在绘制流程图时,当选择或鼠标移动到控件时,都会在控件的四周出现锚点,以便于修改大小,移动位置,或连接线等,那此功能是如何实现的呢?在WPF开发中,想要在控件四周实现锚点,可以通过装饰器来实现,今天通过一个简单的小例子,简述如何在WPF开发中,应用装饰器,仅供学习分享使用,如有不足之处,还请指正。
84 1