简单的.NET三层框架的实现(学生作业管理系统)

三层架构,也有人叫做三层结构,是一种软件架构。


三层架构主要包括了表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这样的方式将软件开发进行分层,每层之间的分工是相对的比较明确的,而且很容易去理解。一般客户端不是直接与数据库进行交互的,而是与中间层(业务逻辑层)建立的连接。三层架构不只适用于在web当中的开发,在别的一些地方也是很有多用途的。

我这里将会以我自己写的一个ASP.NET三层架构为例子来学习理解它。刚开始学习.NET的时候,老师教的就是三层架构,但是三层架构不是万能的,也不是你写所有的.NET程序都用三层架构。我觉得最重要的是通过自己去学习别人的项目,自己亲自动手去写它来理解其中的架构思想。每一种架构思想,基本上都可以在不同的语言环境下面实现,而且当你通过自己的理解去实现它的时候你会有不一样的认识。

我这里所有写的都是以我自己的认识理解写的,我是一个菜鸟,也是一个程序猿,但我深爱着IT。如果有哪里不正确或者不当的地方,可以随便提出来或者联系我,交流中共同进步!


我所写的是一个学生作业管理系统,利用ASP.net编写,整个软件架构使用了三层架构,前端框架使用了Bootstrap。源码直接点击此处下载。如果想对.NET三层架构有深入了解的,我推荐动力启航(http://www.dtcms.net/)大家可以去学习一下。


第一步,在我们建立.NET三层架构之前,我们得首先知道这三层分别的用处。
表现层:可以和用户直接接触的一层,如果你写B/S模式下的三层架构,那么表现层通俗的理解为就是我们所看到的web页面。表现层可以显示数据和接收用户输入的数据,为用户提供一种交互界面。
业务逻辑层:这一层也算是你的业务处理中最重要的,如果你的业务比较的繁琐,这一层是核心。一般我们进行开发,这一层主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计。
数据访问层:其实从字面我们就知道这一层用来进行数据库的访问,这里要注意的是,这里除了数据库之外,我们的文本文件、XML文档也算是数据,对其的访问也可以是叫做数据访问。比如在我的项目里面我会将一些系统的配置保存到xml文件里面。


第二步,新建asp.net项目,在新建项目之前,首先要对我们的项目的命名有个统一的规范,包括自己项目当中的参数命名、数据库命名等都要有一个统一的命名规范,写一个规范的项目,我个人觉得命名是第一步。对于C#的命名规范这里不过多的讲解。

我的解决方案的项目整个如下图所示:



其中XGhms.BLL表示业务逻辑层、XGhms.DAL表示数据访问层、XGhms.Web表示UI表现层。虽然这几层就可以简单的组成一个项目,但是往往在实际开发当中,我们还要考虑别的方面,比如如何的节省开发,如果该系统要与别的系统多对接该如何实现等等,所以XGhms.Helper是一个公共的层,里面包括了公共的一些方法,比如字符串的加密、XML文档的操作等。XGhms.Model层是一个模型(实体类),在三层之间传递数据的,我这里Model层里面的每一个类对应数据库里面的每一张表,这样方面操作。XGhms.Web.Services是为了后面网站如果进行与别的系统做对接或者提供提供相应的接口服务,都可以在里面实现。



第三步,每个项目开始之前,最重要的还是做需求分析,比如我的学生作业管理系统,你要花大量的时间去了解和实际的去调查,需求做好才能进行下面的工作。这里就不做大量的解说,如果后面有时间了专门写博探讨需求分析上面的事宜。

这是数据库的设计,这张关系图画的将就一下吧,o(╯□╰)o 数据库的源码都可以直接下载的。




第四步,关于Model层还有BLL层和DAL层前面讲了,现在有好多的软件可以直接生成这些层,不用我们去敲代码,比如动软代码生成器,但是我认为第一次去学习三层架构,代码还是自己动手去敲的比较好。
下面这是Model层的代码示例:
using System;

namespace XGhms.Model
{
    public partial class course
    {
        private int _id;
        /// 
        /// 自增ID
        /// 
        public int id
        {
            get { return _id; }
            set { _id = value; }
        }
        private string _course_number;
        /// 
        /// 课程号码(专业课程编码)
        /// 
        public string course_number
        {
            get { return _course_number; }
            set { _course_number = value; }
        }
        private string _course_name;
        /// 
        /// 课程名称
        /// 
        public string course_name
        {
            get { return _course_name; }
            set { _course_name = value; }
        }
        private int _term_id;
        /// 
        /// 学期ID
        /// 
        public int term_id
        {
            get { return _term_id; }
            set { _term_id = value; }
        }
        private string _teacher;
        /// 
        /// 课程老师(主教)
        /// 
        public string teacher
        {
            get { return _teacher; }
            set { _teacher = value; }
        }
        private string _other_teacher;
        /// 
        /// 助教
        /// 
        public string other_teacher
        {
            get { return _other_teacher; }
            set { _other_teacher = value; }
        }
        private string _student_leader;
        /// 
        /// 该课程学生负责人
        /// 
        public string student_leader
        {
            get { return _student_leader; }
            set { _student_leader = value; }
        }
        private string _course_info;
        /// 
        /// 该课程的信息
        /// 
        public string course_info
        {
            get { return _course_info; }
            set { _course_info = value; }
        }
        private int _college_id;
        /// 
        /// 学院ID
        /// 
        public int college_id
        {
            get { return _college_id; }
            set { _college_id = value; }
        }
    }
}
  • 12
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
优索教务管理系统适用于高校、中学教务管理,采用VS2019开发,数据库访问组件和Access2003/SQL2000/2005/2008/2012/2016无缝结合,采用AJAX无刷新更新。系统包括了学校教务必须使用的大部分功能,包括: 教务管理系统, 教师评价系统, 成绩管理系统,证书查询系统,在线报名系统,自定表单系统,门户管理子系统,考试安排系统,在线考试系统,自动排课系统,公寓管理系统,课件管理系统作业管理系统,就业信息系统,毕业设计系统。 所开发的系统均使用大型关系数据库SQLServer、采用流行的三层体系构架、采用最大扩展性的B/S结构、采用先进的C#语言编写、功能集成度高、框架灵活、模块化设计、界面操作简单、具有丰富的自定义功能、定制查询、先进的加密技术等特点。  【系统运行】 点击网站根目录下的【系统运行.bat】文件即可显示系统的功能;测试版本采用的是 虚拟IIS服务器,因此可能不稳定;正式版本采用Windows的IIS服务器,安全稳定; 正式版本需要的运行环境如下: 1、 Windows Server 2000/2003/2008/2012/2016 2、 Microsoft .NET Framework V4.0 3、 Internet信息服务 4、 Access2003/2007/SQLServer2000/2005/2008/2012/2016 测试版本需要的运行环境如下: 1、 Windows Server 2000/2003/2008/2012/2016 2、 Microsoft .NET Framework V4.0 3、 Access2003/2007 【账户密码】 演示版本需要选择正确的角色后,使用正确用户名密码才能登陆系统,演示版本的用户资料如下: 角色:系统管理员 用户名:admin 密码:admin 另外,教师角色,学生角色等角色的用户可以到后台的教师管理,学生管理里面查看他们的登陆账户和登陆密码; 郑重声明:本下载版本仅是使用Access数据库进行演示的程序,有功能限制;如果需要购买的用户请联系我们测试我方SQLSERVER版本的正式系统; 【升级日志】2021-03-21 版本号:9.3.2.0321 1、增加软件在线升级更新功能;update center;英文简称:uds; 2、调整导入模板里面的Excel读取格式问题,兼容时间格式; 3、调整数据字典的处理方式为直接删除; 4、增加OAuth2.0统一身份认证功能; 5、调整安装包里面的升级文件,方便直接升级数据库; 6、增加安全登录次数超过配置次数自动显示图形验证码的功能; 7、系部类型为教学单位的,在学生异动的时候,不能选择这个系部; 8、更换Echart版本为最新的5.0.2版本; 9、重新调整部分图表的显示方式,增加图表显示方式的代码; 10、增加自动排课失败的时候,显示相关的提示; 11、增加按照班级汇总开课信息,这样当开课数量太多无法排课的时候,可以直接显示出来; 12、增加排课一次失败的化,系统休息时间20秒,这样可以进行基本的查看; 13、调节课表导出打印的格式,方便按照顺序进行查看课表;调节课表底部增加相关的说明信息; 14、公寓安排系统增加导入公寓安排功能,并增加侧部导航功能; 15、成绩管理系统录入成绩功能侧部增加按照班级导航的功能,方便选择班级数据; 16、学生管理系统和招生入学系统增加综合统计功能,方便按照相关的关键字进行统计分析; 17、成绩录入列表页面增加成绩条数显示UI,方便看是否正常录入了成绩; 18、调整报名系统的功能,支持扫码报名;支持导出新格式的报名表; 19、调整招生收费系统,支持补缴和退费功能,支持统计分析; 20、支持在线打印功能,使用第三方控件可以在浏览器直接打印; 21、调整导出功能,支持导出的Excel文件进行格式验证,支持下拉选择excel数据源; 22、重新调整系统风格,搜索功能默认展开,不用再单独点击打开; 23、调整考务系统功能,支持批量导入考试安排,支持选择班级后进行考试安排增加; 24、系统角色功能调整,直接按照角色进行授权功能,按照角色批量授权H5页面权限;
优索成绩管理系统是优索教务系统中的一个重要的功能模块,方便学校的老师进行学生成绩的维护发布,学生可以在线查询自己历年的考试成绩,打印学生毕业成绩单等功能。 优索教务管理系统适用于高校、中学教务管理,采用VS.NET2008开发,数据库访问组件和Access2003/SQL2000/2005/2008无缝结合,采用AJAX无刷新更新。系统包括了学校教务必须使用的大部分功能,包括: 教务管理系统, 教师评价系统, 成绩管理系统,证书查询系统,在线报名系统,自定表单系统,门户管理子系统,考试安排系统,在线考试系统,自动排课系统,公寓管理系统,课件管理系统作业管理系统,就业信息系统,毕业设计系统。 所开发的系统均使用大型关系数据库SQLServer、采用流行的三层体系构架、采用最大扩展性的B/S结构、采用先进的C#语言编写、功能集成度高、框架灵活、模块化设计、界面操作简单、具有丰富的自定义功能、定制查询、先进的加密技术等特点。  演示版本需要选择正确的角色后,使用正确用户名密码才能登陆系统,演示版本的用户资料如下: 角色:系统管理员 用户名:admin 密码:admin 另外,教师角色,学生角色等角色的用户可以到后台的教师管理,学生管理里面查看他们的登陆账户和登陆密码; 郑重声明:本下载版本仅是使用Access数据库进行演示的程序,有功能限制;如果需要购买的用户请联系我们测试我方SQLSERVER版本的正式系统; 管理员身份用户:本地测试默认的用户名为admin,密码为admin 我方服务器的测试用户名密码需要联系我方QQ后提供。 学生账户和教师账户可以登录后重置 【升级日志】2020-05-11  版本号:9.2.4 1、用户管理功能增加密码安全验证功能,密码安全级别低的不可以修改密码; 2、调整用户上传头像和显示头像的布局,显示更美观 3、重新调整学生管理和教师管理的布局UI; 4、Session和Cookies全部迁移到新的类库中进行处理,方便进行转换到Linux; 5、Mappath和ULR编码方式全部迁移;HttpUtility.UrlEncode 6、NPOI升级到2.5.1; 7、引入新的操作图片的库;ZKWeb.System.Drawing 8、系统更新比较大,如果用户升级,需要更新相关的类库。IOP在使用的时候,也需要更新相关的类库; 9、修复批量导出学籍表的时候,虚拟路径转换为物理路径错误的问题; 10、系统类库直接引用二维码生成功能,其他页面直接调取即可,方便统一更换; 11、修复底层对用户信息保存的地方,先是用Session,然后判断Cookies,操作速度更快; 12、修复获取UserID的地方,根据Cookies调整位置; 13、发布的类库支持Description描述,可以查看说明; 14、Aspose.Words升级到18.7版本,计划迁移到.NET core里面;需要调整;Save方法,直接输出到浏览器; 15、Aspose.Cells升级到18.1; 16、增加Web.config动态更新比对的功能,这样版本升级的时候,无需再进行调整web.config; 17、增加登录的时候检测是否是弱密码,如果是弱密码则自动跳转到修改密码页面;
### 回答1: ASP.NET MVC是一种面向Web应用程序的框架,它可以用于构建图书管理系统。 要实现一个图书管理系统,首先需要创建一个MVC的项目。在项目中,可以使用Model来表示图书的属性,如书名、作者、出版社等。可以使用View来展示图书的信息,如图书列表、图书详情等界面。还可以使用Controller来处理用户的请求,如添加图书、编辑图书、删除图书等操作。 在图书管理系统中,可以创建一个图书控制器来处理图书的相关操作。比如,可以创建一个方法来展示图书列表的视图,一个方法来接收用户添加图书的请求并保存到数据库,一个方法来处理用户删除图书的请求等等。这些方法可以使用MVC框架提供的特性如模型绑定、动作过滤器、路由等来增强系统的功能和灵活性。 在实现图书管理系统时,还需要使用数据库来存储图书的信息。可以使用Entity Framework等ORM工具来简化与数据库的操作。通过Entity Framework,可以很方便地创建图书实体并将其映射到数据库中的表中。 此外,还可以利用MVC框架提供的身份验证和授权功能来实现图书管理系统的用户认证和授权的功能。比如,可以使用ASP.NET Identity来管理用户和角色,限制只有管理员角色才能进行图书添加、编辑和删除等操作。 总结来说,使用ASP.NET MVC框架可以很方便地实现一个图书管理系统。通过合理的设计和利用MVC框架提供的特性,可以让系统更加健壮、灵活和易于维护。 ### 回答2: ASP.NET MVC框架是一种用于构建Web应用程序的开发模式,它基于ASP.NET平台。图书管理系统是一种常见的应用程序,用于管理图书馆的图书借阅、归还、查询等功能。 在ASP.NET MVC框架中,可以通过以下步骤实现图书管理系统: 1. 模型层:定义图书、图书馆、图书管理员等实体类,用于表示系统中的数据。可以使用Entity Framework或其他ORM框架来管理数据库操作。 2. 控制器层:编写控制器类来处理请求和响应。例如,可以有一个图书控制器,包含借阅、归还、查询图书等操作的方法。 3. 视图层:创建图书管理系统的界面,使用HTML、CSS和JavaScript等前端技术来构建用户界面。可以使用Razor视图引擎来生成服务器端的动态网页内容。 4. 路由配置:配置路由规则,将URL与相应的控制器和操作方法关联起来。例如,可以设置"/books/{id}"对应于图书控制器中的查询图书操作。 5. 身份验证和授权:为图书管理员和读者提供不同的权限,限制其对系统功能的访问。可以使用ASP.NET身份验证和授权机制来实现。 6. 数据库设计:设计图书管理系统的数据库结构,包括图书、读者、借阅记录等表。使用数据库迁移工具来管理数据库版本和脚本。 7. 日志记录和异常处理:在系统实现日志记录和异常处理,帮助开发人员快速定位和修复问题。 通过以上步骤,使用ASP.NET MVC框架可以轻松地实现一个图书管理系统。开发人员可以借助框架提供的功能,高效地开发和维护系统,同时提供良好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值