从头做图书馆管理系统课设,开发思想+Asp.NET 三层架构~(后端篇1)
在课程设计过程中,前端设计完成后需要进行后台功能的实现,在这个阶段,我们需要准备Visual studio,我使用的2017,因为2017提供免费的社区版不需要付费,功能完全能够满足现阶段的所有任务。
vs2017:https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&rel=15
也可以在此下载历代版本:https://msdn.itellyou.cn/
(严重安利这个网站,你进去会爱上他的)
这篇文章有点长,主要是代码量大,文字内容很少所以不用害怕这么长啊看不完之类的
1.我是谁
我是一个经典的设计架构,在很多很多年以前,我就被提出并且得到了长期的广泛的使用,我比很多看这篇博客的人年龄都大。我将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。
这是我的自拍(图片引自百度百科)
2.我在哪
我是一个最基础的概念,在任何一个编程课程中都可能提及,就好像你问“加减法是大学哪门课程”,大部分的软件都能看到我的身影或者我的亲戚们的身影,比如我的兄弟MVC和我的很多很多儿子孙子。我的小伙伴之一微软公司推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或称为领域层)、表示层(表示层就是界面层)。
3.我的人生价值
我的人生价值和终极理想是区分层次的目的即为了“高内聚低耦合”的思想。
(以上纯属搞笑如有需求请参阅百度百科三层架构)
1.首先创建主项目(表示层)
文件 - 新建 - 项目
选择 web 先前版本 -ASP.NET空网站
2.首先创建类库
在解决方案处单机右键 添加-类库-.NET Framwork 名称为Model
再同理创建两个分别为BLL DAL(千万不要选错了点成 Standard类库会缺少很多引用)效果如下
3.对模型层操作
很多人可能会问了,三层架构这个模型层也没有啊为什么要有这么一个东西的存在,其实很简单,模型层就是将数据库中的每一张表中的对象抽象出来,你可以把模型层理解为是沟通三层的桥梁,主要就是信息交互作用
我是栗子:
2.我是模型层:
在Model中创建一个Book.cs
我就是和数据库中每一个对象的属性一一对应的,如果数据库中的数据结构发生改变只要我和数据访问层改变,就可以了。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Model
{
public class Book
{
//图书编号
public int ID { get; set; }
//图书名称
public string Name { get; set; }
//图书作者
public string Writer { get; set; }
//图书简介
public string Introduce { get; set; }
//图书类别
public string Type { get; set; }
//图书价格
public string Money { get; set; }
//图书数量
public string Count { get; set; }
//图书销量
public string Sales { get; set; }
//图书时间
public string Time { get; set; }
//图书图片
public string PictureUrl { get; set; }
}
}
4.创建数据访问层
数据访问层的主要作用就是访问数据库并以数据模型或者其他需要的形式返回
完整代码:
using System.Data.SqlClient;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Model;
using System.Data;
public class BookDAL
{
#region 添加图书
//添加图书
public static bool BookAdd(Book book)
{
string sql = "insert into book (name,type,writer,introduce,money,count,sales,time,pictureUrl) values ('" + book.Name + "',"+book.Type+",'"+book.Writer+"','" + book.Introduce + "','" + book.Money + "'," + book.Count + "," + "0" + ",'" + DateTime.Now + "','"+book.PictureUrl+"')";
int result = SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
if (result == 0)
{
return false;
}
else
{
return true;
}
}
#endregion
#region 修改图书信息
public static bool BookUpdate(Book book)
{
string sql = "update book set name='" + book.Name + "',writer='"+book.Writer+ "',introduce='" + book.Introduce + "',type=" + book.Type + ",money='" + book.Money + "',count=" + book.Count +" where ID="+book.ID;
int result = SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
if (result == 0)
{
return false;
}
else
{
return true;
}
}
#endregion
#region 下架图书
public static bool BookDelete(Book book)
{
string sql = "delete from book where ID="+book.ID;
int result = SqlHelper.ExecuteNonQuery(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
if (result == 0)
{
return false;
}
else
{
return true;
}
}
#endregion
#region 查询图书
/// 通过编号查询图书
public static Book GetBookByID(string ID)
{
Book book = new Book();
string sql = "select * from [book] where ID='" + ID + "'";
SqlDataReader dr = SqlHelper.ExecuteReader(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
while (dr.Read())
{
book.ID = Convert.ToInt16(dr[0]);
book.Name = Convert.ToString(dr[1]);
book.Writer = Convert.ToString(dr[2]);
book.Introduce = Convert.ToString(dr[3]);
book.Type = Convert.ToString(dr[4]);
book.Money = Convert.ToString(dr[5]);
book.Count = Convert.ToString(dr[6]);
book.Sales = Convert.ToString(dr[7]);
book.Time = Convert.ToString(dr[8]);
book.PictureUrl = Convert.ToString(dr[9]);
}
if (book == null)
{
return null;
}
else
{
return book;
}
}
//通过图书名称查询图书
public static DataSet GetBookByName(string name)
{
Book book = new Book();
DataSet ds = new DataSet();
string sql = "select from [book] where name like'%" + name + "%'";
ds = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
return ds;
}
///
/// 获取所有图书并返回dataset
///
/// 获取图书的种类
/// 按什么排序
/// 正序倒叙
/// 获取的数量
///
public static DataSet GetAllBookByDs(string name,string type,string orderby,string order,string num)
{
Book book = new Book();
DataSet ds = new DataSet();
string sql;
if (num == null)
{
sql = "select * from [book] where 1=1 ";
}
else
{
sql = "select top "+num+" * from [book] where 1=1 ";
}
if (type != null)
{
sql += "and type="+type;
}
if (name != null)
{
sql += " and name like '%" + name + "%'";
}
if (orderby != null)
{
sql += " order by " + orderby;
}
if (order != null)
{
sql += " " + order;
}
ds = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
return ds;
}
//获取所有特殊分类的图书并返回dataset
public static DataSet GetAllBookByType(string type,string order)
{
Book book = new Book();
DataSet ds = new DataSet();
string sql = "select * from [book] where type ="+type;
ds = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
return ds;
}
//获取首页的畅销图书
public static DataSet Get4SalesBookByDs()
{
Book book = new Book();
DataSet ds = new DataSet();
string sql = "select top 4 * from [book] order by sales desc";
ds = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
return ds;
}
//获取首页的新书
public static DataSet Get4TimeBookByDs()
{
Book book = new Book();
DataSet ds = new DataSet();
string sql = "select top 4 * from [book] order by time desc";
ds = SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(), CommandType.Text, sql, null);
return ds;
}
#endregion
}
5.创建BLL业务逻辑层
业务逻辑层主要负责页面的逻辑处理和DAL返回的数据处理加工作为中间层使用,如果无特殊需求可简写为如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Model;
using System.Data;
namespace BLL
{
public class BookBLL
{
//添加图书
public bool BookAdd(Book book)
{
return BookDAL.BookAdd(book);
}
//更新图书信息
public bool BookUpdate(Book book)
{
return BookDAL.BookUpdate(book);
}
//删除图书
public bool BookDelete(Book book)
{
return BookDAL.BookDelete(book);
}
//获取所有图书并返回dataset
public DataSet GetAllBookByDs(string name,string type, string orderby, string order, string num)
{
return BookDAL.GetAllBookByDs(name,type,orderby,order,num);
}
//获取首页的畅销图书
public DataSet Get4SalesBookByDs()
{
return BookDAL.Get4SalesBookByDs();
}
//获取首页的新书上架
public DataSet Get4TimeBookByDs()
{
return BookDAL.Get4TimeBookByDs();
}
//通过ID获取图书详细信息
public Book GetBookByID(string id)
{
return BookDAL.GetBookByID(id);
}
//通过种类获取所有图书
public DataSet GetAllBookByType(string type,string order)
{
return BookDAL.GetAllBookByType(type,order);
}
public DataSet GetBookByName(string name)
{
return BookDAL.GetBookByName(name);
}
}
}