# 图书馆管理系统(C/S架构软件)开发
> 主要步骤
> 遇见问题
## 1 主要步骤
### 1.1 学习主干知识
- 大概懂得数据库相关sql语法
- 大概懂得C#语法([C#菜鸟教程](https://www.runoob.com/csharp/csharp-tutorial.html))把基础篇看看
- 大概掌握.Net开发窗口界面([.Net教程](https://learn.microsoft.com/zh-cn/dotnet/desktop/winforms/get-started/create-app-visual-studio?view=netdesktop-6.0))然后可以实战一下项目([VS2022创建窗口界面教程](https://learn.microsoft.com/zh-cn/visualstudio/ide/create-csharp-winform-visual-studio?toc=%2Fvisualstudio%2Fget-started%2Fcsharp%2Ftoc.json&bc=%2Fvisualstudio%2Fget-started%2Fcsharp%2Fbreadcrumb%2Ftoc.json&view=vs-2022))
- 大概理解三层架构
- 进入实战进一步理解所学知识
### 1.2 实战
#### 1.2.1 建立三层架构
在资源管理器里的解决方案添加几个C#类库项目分别对应Model层、DAL层、BLL层。
然后建立项目间的依赖关系。DAL层、UI层、BLL层都引用Model层。BLL层再引用DAL层,UI层再引用BLL层。
#### 1.2.2 创建数据库
根据需求建立对应的数据库、表、视图等。具体数据库设计可以看设计文档。
#### 1.2.3 Model(实体层搭建)
主要就是加入几个属性,例如用户的ID,Name,Password,Type。
``` c#
namespace Model
{
public class Mod_UserInfo
{
public Mod_UserInfo()
{
UserID = "";
UserName = "";
UserPWD = "";
UserType = "reader";
}
public string UserID { get; set; }
public string UserName { get; set; }
public string UserPWD { get; set; }
public string UserType { get; set; }
}
}
```
#### 1.2.4 DAL层搭建
> 创建增、删、改、查等简单方法,这个分为两步
- 建立与数据库的底层连接(这些方法一般直接用现成的例如sqlhelp类等)
其中比较常调用的是ExecuteNonQuery、ExecuteDataset这两个函数他们的底层也不用深究传几个参数就行。使用方法主要看函数上面的注释。ExecuteNonQuery这个函数主要执行一些不用返回什么值的操作,而ExecuteDataset主要执行一些查询操作可以返回信息列表等。
- 建立自己相应的执行函数。
```c#
public class UserInfo
{
//新建用户
public void UserAdd(Model.Mod_UserInfo mod_userInfo)
{
//sql执行语句
string sqlStr = "insert into tUser(userID, userName, userPWD, userType)" +
"values(@id, @name, @pwd, @type)";
//语句中的参数设置
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@id", mod_userInfo.UserID),
new SqlParameter("@name", mod_userInfo.UserName),
new SqlParameter("@pwd", mod_userInfo.UserPWD),
new SqlParameter("@type", mod_userInfo.UserType)
};
//执行sql语句
SqlHelper.ExecuteNonQuery(SqlHelper.connectionString, System.Data.CommandType.Text, sqlStr, param);
}
//列出所有用户
public List<Model.Mod_UserInfo> UserList()
{
string sqlStr = "select * from tUser";
//获取数据集
DataSet dataset = new DataSet();
dataset = SqlHelper.ExecuteDataset(SqlHelper.connectionString, System.Data.CommandType.Text, sqlStr);
//定义实体类列队
List<Model.Mod_UserInfo> userInfos = new List<Model.Mod_UserInfo>();
//将数据集中的数据按行读取输入到实体类列队中
foreach (DataRow row in dataset.Tables[0].Rows)
{
Model.Mod_UserInfo mod_userInfo = new Model.Mod_UserInfo();
mod_userInfo.UserID = row["userID"].ToString();
mod_userInfo.UserName = row["userName"].ToString();
mod_userInfo.UserPWD = row["userPWD"].ToString();
mod_userInfo.UserType = row["userType"].ToString();
userInfos.Add(mod_userInfo);
}
return userInfos;
}
//查询用户
public Model.Mod_UserInfo UserSearch(string userID)
{
string sqlStr = "select * from tUser where userID = @id";
//设置参数并执行
DataSet dataset = new DataSet();
dataset = SqlHelper.ExecuteDataset(SqlHelper.connectionString,
System.Data.CommandType.Text, sqlStr, new SqlParameter("@id", userID));
//将获取数据赋给单个实体
Model.Mod_UserInfo mod_userInfo = new Model.Mod_UserInfo();
DataRow row = dataset.Tables[0].Rows[0];
mod_userInfo.UserID = row["userID"].ToString();
mod_userInfo.UserName = row["userName"].ToString();
mod_userInfo.UserPWD = row["userPWD"].ToString();
mod_userInfo.UserType = row["userType"].ToString();
return mod_userInfo;
}
//更新用户
public void UserUpdate(Model.Mod_UserInfo mod_userInfo)
{
string sqlStrSetName = "update tUser set userName = @name where userID = @id";
string sqlStrSetPWD = "update tUser set userPWD = @pwd where userID = @id";
string sqlStrSetType = "update tUser set userType = @type where userID = @id";
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@id", mod_userInfo.UserID),
new SqlParameter("@name", mod_userInfo.UserName),
new SqlParameter("@pwd", mod_userInfo.UserPWD),
new SqlParameter("@type", mod_userInfo.UserType)
};
SqlHelper.ExecuteNonQuery(SqlHelper.connectionString, System.Data.CommandType.Text, sqlStrSetName, param);
SqlHelper.ExecuteNonQuery(SqlHelper.connectionString, System.Data.CommandType.Text, sqlStrSetPWD, param);
SqlHelper.ExecuteNonQuery(SqlHelper.connectionString, System.Data.CommandType.Text, sqlStrSetType, param);
}
//删除用户
public void UserDelete(string id)
{
string sqlStr = "delete from tUser where userID = @id";
SqlHelper.ExecuteNonQuery(SqlHelper.connectionString, System.Data.CommandType.Text,
sqlStr, new SqlParameter("@id", id));
}
}
```
#### 1.2.5 BLL层搭建
这一层主要对传进来的数据进行逻辑判断的操作
```c#
public class BLL_UserInfo
{
private DAL.UserInfo dal_userInfo = new DAL.UserInfo();
//增加用户
public bool UserAdd(Model.Mod_UserInfo mod_userInfo)
{
//判断信息是否为空
if(mod_userInfo != new Model.Mod_UserInfo())
{
if(mod_userInfo.UserID.Length == 12)
{
dal_userInfo.UserAdd(mod_userInfo);
return true;
}
}
return false;
}
//列举用户
public List<Model.Mod_UserInfo> UserList()
{
List<Model.Mod_UserInfo> userInfos = dal_userInfo.UserList();
return userInfos;
}
//查找用户
public Model.Mod_UserInfo UserSearch(string id)
{
Model.Mod_UserInfo userInfo = dal_userInfo.UserSearch(id);
return userInfo;
}
//修改用户
public bool UserUpdate(Model.Mod_UserInfo mod_userInfo)
{
if (mod_userInfo != new Model.Mod_UserInfo())
{
if (mod_userInfo.UserID.Length == 12)
{
dal_userInfo.UserUpdate(mod_userInfo);
return true;
}
}
return false;
}
//删除用户
public void UserDelete(Model.Mod_UserInfo mod_userInfo)
{
dal_userInfo.UserDelete(mod_userInfo.UserID);
}
//登录用户
public bool UserSignIn(Model.Mod_UserInfo mod_userInfo)
{
//获取数据库中用户信息列表
List<Model.Mod_UserInfo> userInfos = UserList();
//判断是否符合登录标准(需要root用户)
foreach (Model.Mod_UserInfo userInfo in userInfos)
{
if (mod_userInfo.UserID.Equals(userInfo.UserID) &&
mod_userInfo.UserPWD.Equals(userInfo.UserPWD) &&
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
资源推荐
资源详情
资源评论
收起资源包目录
数据库课程设计图书管理系统.zip (264个子文件)
librarymanagementsystem.projects.v5.2 1.76MB
librarymanagementsystem.metadata.v5.2 220KB
UI.csproj.BuildWithSkipAnalyzers 0B
UI.csproj.BuildWithSkipAnalyzers 0B
LibraryManagementSystem.csproj.BuildWithSkipAnalyzers 0B
Model.csproj.BuildWithSkipAnalyzers 0B
Model.csproj.BuildWithSkipAnalyzers 0B
BLL.csproj.BuildWithSkipAnalyzers 0B
BLL.csproj.BuildWithSkipAnalyzers 0B
DAL.csproj.BuildWithSkipAnalyzers 0B
DAL.csproj.BuildWithSkipAnalyzers 0B
UI.csproj.AssemblyReference.cache 109KB
LibraryManagementSystem.csproj.AssemblyReference.cache 106KB
UI.csproj.AssemblyReference.cache 105KB
BLL.csproj.AssemblyReference.cache 93KB
BLL.csproj.AssemblyReference.cache 92KB
DAL.csproj.AssemblyReference.cache 91KB
DAL.csproj.AssemblyReference.cache 90KB
Model.csproj.AssemblyReference.cache 89KB
Model.csproj.AssemblyReference.cache 89KB
UI.assets.cache 6KB
UI.assets.cache 6KB
LibraryManagementSystem.assets.cache 6KB
BLL.assets.cache 6KB
BLL.assets.cache 6KB
DAL.assets.cache 6KB
DAL.assets.cache 6KB
project.nuget.cache 2KB
project.nuget.cache 2KB
project.nuget.cache 2KB
UI.csproj.GenerateResource.cache 296B
LibraryManagementSystem.csproj.GenerateResource.cache 296B
UI.csproj.GenerateResource.cache 296B
project.nuget.cache 266B
Model.assets.cache 209B
Model.assets.cache 209B
UI.genruntimeconfig.cache 41B
UI.csproj.CoreCompileInputs.cache 41B
UI.csproj.CoreCompileInputs.cache 41B
UI.AssemblyInfoInputs.cache 41B
LibraryManagementSystem.AssemblyInfoInputs.cache 41B
LibraryManagementSystem.csproj.CoreCompileInputs.cache 41B
LibraryManagementSystem.genruntimeconfig.cache 41B
UI.genruntimeconfig.cache 41B
UI.AssemblyInfoInputs.cache 41B
Model.csproj.CoreCompileInputs.cache 41B
Model.AssemblyInfoInputs.cache 41B
Model.csproj.CoreCompileInputs.cache 41B
Model.AssemblyInfoInputs.cache 41B
BLL.csproj.CoreCompileInputs.cache 41B
BLL.AssemblyInfoInputs.cache 41B
BLL.csproj.CoreCompileInputs.cache 41B
BLL.AssemblyInfoInputs.cache 41B
DAL.AssemblyInfoInputs.cache 41B
DAL.AssemblyInfoInputs.cache 41B
DAL.csproj.CoreCompileInputs.cache 41B
DAL.csproj.CoreCompileInputs.cache 41B
UI.csproj.CopyComplete 0B
LibraryManagementSystem.csproj.CopyComplete 0B
UI.csproj.CopyComplete 0B
BLL.csproj.CopyComplete 0B
BLL.csproj.CopyComplete 0B
DAL.csproj.CopyComplete 0B
DAL.csproj.CopyComplete 0B
SQLHelper.cs 142KB
FormIncrease.Designer.cs 7KB
FormUpdat.Designer.cs 7KB
FormSignIn.Designer.cs 7KB
FormMain.Designer.cs 6KB
FormMain.cs 4KB
DAL_UserInfo.cs 4KB
ControlWin_ListUserInfo.Designer.cs 3KB
FormUpdat.cs 3KB
BLL_UserInfo.cs 2KB
FormIncrease.cs 2KB
FormSignIn.cs 2KB
LibraryManagementSystem.AssemblyInfo.cs 1KB
UI.AssemblyInfo.cs 1KB
UI.AssemblyInfo.cs 1KB
Model.AssemblyInfo.cs 977B
Model.AssemblyInfo.cs 975B
BLL.AssemblyInfo.cs 971B
DAL.AssemblyInfo.cs 971B
BLL.AssemblyInfo.cs 969B
DAL.AssemblyInfo.cs 969B
Program.cs 874B
ControlWin_ListUserInfo.cs 427B
Mod_UserInfo.cs 402B
UI.GlobalUsings.g.cs 367B
UI.GlobalUsings.g.cs 367B
LibraryManagementSystem.GlobalUsings.g.cs 367B
Model.GlobalUsings.g.cs 287B
Model.GlobalUsings.g.cs 287B
BLL.GlobalUsings.g.cs 287B
BLL.GlobalUsings.g.cs 287B
DAL.GlobalUsings.g.cs 287B
DAL.GlobalUsings.g.cs 287B
.NETCoreApp,Version=v6.0.AssemblyAttributes.cs 194B
.NETCoreApp,Version=v6.0.AssemblyAttributes.cs 194B
.NETCoreApp,Version=v6.0.AssemblyAttributes.cs 194B
共 264 条
- 1
- 2
- 3
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功