软件设计与规范——学籍管理系统
点击链接查看文档代码
一、引言
1.1编写目的
本详细设计说明书编写的目的是说明程序模块的设计考虑,包括程序描述、输入/输出、算法和流程逻辑等,为软件编程和系统维护提供基础。本说明书的预期读者为系统设计人员、软件开发人员、软件测试人员和项目评审人员。
1.2编写背景
在互联网越来越融入我们的生活。不可避免,我们要实现一个互联网和学籍管理的软件来极大的简化我们的工作。让我们的生活享受到科技变革带来的改变。
1.3系统概览
系统大致分为领域模型,仓储,服务,ui四层。在业务逻辑上实现接口分离设计原则。
二、业务描述和逻辑设计
在软件中我们需要对业务的学生,班级,学院实体实现业务逻辑的架构。
在系统中我们需要实现获取数据库中学院,并根据学院获取相关的年级属性,通过年级属性来对与班级实体进行筛选。在学生信息显示框中显示出班级中所有的学生,可以在选项框中选择编辑对学生信息进行编辑。用户可以对班级进行学生的添加和学生的删除。在人数框中显示出班级的总学生人数。
在系统中我们能设计了领域模型,仓储,服务,建筑,ui层。领域模型中编写所需实体,仓储实现对于数据与实体的映射,服务实现实体的业务逻辑,建筑实现对服务和仓储的隐藏,UI实现对于用户的图形化交互。
三、软件体系机构
四、数据库实现
ER图设计:
表结构:
School表
班级表
学生表
五、详细设计
各层类图:
领域模型
仓储定义
仓储实现
服务接口
服务实现
建筑
UI界面
四、技术体系
IOC依赖控制反转:控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。在这里我们使用Autofac包来实现对于类型的自动解析
单例模式:单例模式(Singleton Pattern)最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例,避免对资源的多重占用。
接口分离原则:接口分离原则指在设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。即,一个类要给多个客户使用,那么可以为每个客户创建一个接口,然后这个类实现所有的接口;而不要只创建一个接口,其中包含所有客户类需要的方法,然后这个类实现这个接口。使用接口分离可以实现高内聚,低耦合,同时是使代码可读性高,易于维护。
Ado.Net:ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库。
EF框架:Entity Framework是一种微软官方提供的ORM工具,ORM让开发人员节省数据库访问的代码时间,将更多的时间放到业务逻辑层代码上。EF提供变更跟踪、唯一性约束、惰性加载、查询事物等。开发人员使用Linq语言,对数据库操作如同操作Object对象一样省事。
五、接口设计
对于用户我们提供SchoolService,StudentService,ProfessionalClassService服务。
SchoolService可以提供,查找全部学院和根据Id标识查找特定学院功能。
StudentService可以提供添加学生、班级修改学生人数,更具班级Id获取该班全部学生、根据学生Id查找特定学生、修改学生、移除学生功能。
ProfessionalClassService可以提供提供根据学院Id获取附属班级,根据学院Id和年级查找班级,获取班级中总学生人数,根据Id获取特定班级
六、单元测试
在测试中我们对于EF仓储层和服务层实现了测试,仓储层18个测试,服务层12个测试共计30个测试全部通过,测试覆盖到了框架的每一个方法。
七、运行环境
本软件是使用C#编程语言在Framework框架上实现,需要客户拥有.Net Framework运行时。运行电脑使用windows操作系统。
八、使用说明
点击学院下拉框选择学院
点击班级选择年级
点击班级列表选择班级
点击编辑按钮弹出子窗体编辑学生属性
点击保存或重置完成对属性的修改或撤销
保存修改成功后弹出成功窗体
点击新增按钮添加学生到该班级
在子窗体中填写新增学生信息
点击保存或重置完成添加或撤销
添加成功弹出子窗体显示
点击删除按钮进行学生的删除
弹出确认框
选择“是”删除,选择“否”撤销
选择“是”,删除成功时弹出删除成功提示
点击刷新按钮进行学生的刷新