C#WPF 项目开发(一)(火车订票系统)

C#WPF 项目开发(一)(火车订票系统)

一、架构模式
I.了解架构模式
1.如何设计大型企业级的系统,在开始主要的代码开发之前,我们必须选择一种
合适的体系架构。
(1)、架构模式是对给定上下文的软件架构中常见问题的一种通用的可复用的解决方案。一种模式就是特定上下文的问题的一种解决方案。
2.10种常见的体系架构模式
(1)、分层模式:有3层Presentation layer 表示层(也就是UI层)、Application layer 应用层(也就是服务层)、Business logic layer 业务逻辑层(也就是领域层)、Data access layer 数据访问层(也就是数据持久层)(应用:一般桌面应用程序)。
(2)、客户端-服务器模式:该模式由两部分组成:一个服务端和多个客户端,服务器向多个客户端提供服务。客户端向服务器发起请求,服务器向这些客户端提供相关服务,之后,服务器继续侦听客户端的请求(应用:在线应用程序)。
(3)、主从设备模式:该模式也分为两块:主模块和从模块。主模块在相同的从模块之间分配工作,并根据从 模块返回的结构来计算最终的结果(应用:在数据库复制中,主数据库被视作权威数据源,而从数据库与其保持同步 、连接到计算机系统总线上的外围设备(主驱动器和从驱动器))。
(4)、管道-过滤器模式:用于构建产生和处理数据流的系统。每个处理步骤都包含在一个过滤器组件中,要处理的数据通过管道传递。这些管道可用于缓冲或者同步(应用:编译器。依次使用不同的过滤器执行词法分析、解析、语法分析和代码生成)。
(5)、代理模式:服务器将它们的功能(服务和特征等)发布到代理,客户端向代理请求服务,然后代理根据其注册表将客户端请求转发给合适的服务。
(6)、点对点模式:用途文件共享网络,如Gnutella 和 G2 、多媒体协议,如P2PTV 和 PDTP 基于加密货币的产品,如比特币和区块链。
(7)、事件总线模式:4个重要的组件:事件源、事件侦听器、通道和事件总线。事件
源将消息发送到事件总线上的特定通道,侦听器会订阅特定的频道。当消息发送到频道
中后,订阅该频道的侦听器会收到该消息的通知(应用:安卓开发、通知服务)。
(8)、模型-视图-控制器模式:该模式将交互式应用分为三个部分:模型——包含核心功能和数据 、视图——向用户显示信息(可以定义多个视图)、控制器——处理用户的输入,
这样做是为了将数据的内部表示与用户输入和向用户展示的形式分离开来,这样可以解
耦组件,同时也可以进行高效的代码重用(应用:主流编程语言的互联网应用架构、网络框架,如Django 和 Rails)。
(9)、黑板模式:黑板—— 一个结构化的全局内存,包含解决方案领域的对象、知识源——具有自身含义的专业模块、控制组件——选择、配置和执行模块,所有组件都可以访问黑板,组件可能会产生要添加到黑板中的新数据对象,组件在黑板上寻找特定类型的数据,并且可以通过与现有知识源进行模式匹配来找到这些数据(应用:语音识别)。
(10)、解释器模式:用于设计组件来解释使用专用语言写出的程序,它主要指定如何估算程序行,即以特定语言编写的语句或表达式。基本思想是为每种语言符号都设计一个类(应用:数据库查询语言,如SQL、用于描述通信协议的语言)。
注:以上解释来源网络
3.本次开发应用“分层模式”或“客户端-服务器模式”,使用SQL Server作为数据库。
(1)、分层模式:三层架构主要是指将业务应用规划中的表示层 UI、数据访问层 DAL 以及业务逻辑层 BLL,其分层的核心任务是“高内聚低耦合”的实现。
(2)、优点:高内聚、低耦合,可以降低层与层之间的依赖、各层互相独立,完成自己该完成的任务,项目可以多人同时开发,开发人员可以只关注整个结构中的其中某一层、容易移植、维护,如 B / S 转 C / S、SQLServer 转 Oracle、添加、修改、删除等
有利于标准化、有利于各层逻辑的复用、安全性高、用户端只能通过业务逻辑层来调用数据访问层,减少了入口点,把很多危险的系统功能都屏蔽了。
(3)、数据访问层(DAL):数据访问层 DAL 是数据库的主要操控系统,实现数据的增加、删除、修改、查询等操作,并将操作结果反馈到业务逻辑层 BLL。在实际运行的过程中,数据访问层没有逻辑判断能力,为了实现代码编写的严谨性,提高代码阅读程度,一般软件开发人员会在该层中编写 Data AccessCommon,保证数据访问层 DAL 数据处理功能。
(4)、业务逻辑层 (BLL):业务逻辑层 BLL 的功能是对具体问题进行逻辑判断与执行操作,接收到表现层 UI 的用户指令后,会连接数据访问层 DAL,访问层在三层构架中位于表示层与数据层中间位置,同时也是表示层与数据层的桥梁,实现三层之间的数据连接和指令传达,可以对接收数据进行逻辑处理,实现数据的修改、获取、删除等功能,并将处理结果反馈到表示层 UI 中,实现软件功能。
(5)、表示层 (UI):表示层又称表现层 UI,位于三层构架的最上层,与用户直接接触,主要是 B/S 信息系统中的 Web浏览页面。作为 Web浏览页面,表示层的主要功能是实现系统数据的传入与输出,在此过程中不需要借助逻辑判断操作就可以将数据传送到 BLL 系统中进行数据处理,处理后会将处理结果反馈到表示层中。
C#WPF 项目开发(一)(火车订票系统)_第1张图片
4.B/S架构与C/S架构的区别
(1)、CS即Client/Server(客户机/服务器)结构(即需要进行安装包安装),C/S结构在技能上非常成熟,它的重要特征就是交互性强、拥有安全的存取形式、网络通信数量低、响应速度快、利于处置大量数据。
(2)、BS即Browser/Server(浏览器/服务器)结构(即通过网页形式展现),就是只安装维护一个服务器 (Server),而客户端选用浏览器(Browse)运行软件。
(3)、CS响应速度快,安全性强,通常应用在局域网当中,可是开发维护费用高;BS能够完成跨平台,客户端零维护,可是个性化才能低,响应速度较慢。于是有一些单位平日办公 应用BS,在实际生产当中使用CS结构。
二、使用分层模式以及C/S架构进行开发
I、进行开发分层
1.(1)、Service(服务层):数据访问层(DAL)、业务逻辑层(BLL),使用WCF 服务应用程序。
(2)、新建一个项目用于存放服务层采用“类库”,项目名称为“DAL”选择路径、解决方案为“Service”。
C#WPF 项目开发(一)(火车订票系统)_第2张图片
(3)、在刚刚创建的DAL项目上的“解决方案”鼠标右键选择添加新建项目,仍然采用“类库”,项目名称为“BLL”。
C#WPF 项目开发(一)(火车订票系统)_第3张图片
(4)、在刚刚创建的BLL项目上的“解决方案”鼠标右键选择添加新建项目,搜索“WCF服务应用程序”,项目名称为“WcfService”。
C#WPF 项目开发(一)(火车订票系统)_第4张图片
2.(1)、Client(客户层):表示层(UI),使用WPF应用程序。
(2)、新建项目,搜索WPF,使用WPF应用(.NET Framewok),项目名称为“WpfApp”,解决方案名称为“Client”。
C#WPF 项目开发(一)(火车订票系统)_第5张图片
II、项目布局
注:以火车售票系统为例
1.(1)、首先布局系统的登录页面,登录页面类似于弹窗不需要嵌套所以使用“窗口(WPF)”,如果页面需要嵌套到选项卡中的就使用“用户控件(WPF)”。
(2)、创建一个登录前台页面“xaml”,进行页面的布局,接着创建一个文件夹用于存放页面布局使用的图片。
C#WPF 项目开发(一)(火车订票系统)_第6张图片
(3)、Client(客户层)
前台
1.Images(图片)
2.Tools (封装的方法)
(1)、Controls(封装的用户控件)
①前台–UCTabItemWithClose.xaml(关闭按钮)
后台–Tools\Controls\UCTabltemWithClose.xaml (关闭按钮)
②前台–AutoComplete.xaml (下拉框)
后台–AutoComplete.xaml.cs (下拉框)
(2)、Dictionary(封装的资源字典)
① 前台–PublicBasic.xaml (封装的控件如文本框、输入框)
② 前台–ButtonsBasic.xaml (封装的按钮如增删查改)
(3)、Utils(封装的类)
① 前台–CheckIDCardGetDiQu.cs (类–根据身份证号码判断地区)
3.View (存放页面)
单独页面(登录页面、主页面)
4.LoginWindow.xaml (登录页面)
C#WPF 项目开发(一)(火车订票系统)_第7张图片
(4)、在App.xaml里默认运行启动页面为“MainWindow.xaml”,需要把创建好的登录页面名称进行替换,这样运行时启动的页面为创建好的登录页面。
C#WPF 项目开发(一)(火车订票系统)_第8张图片
(5)、登录页面的页面尺寸如果在头部这里进行设置会出现页面问题,如页面会把整个电脑屏幕占满甚至把电脑页面的任务栏也覆盖掉,所以不要在头部进行尺寸设置,所以这里使用后台进行设置,把页面进行绑定。
C#WPF 项目开发(一)(火车订票系统)_第9张图片
(6)、给退出按钮绑定退出事件,如果使用this.Close();方法来关闭窗口会无法关闭,但是如果App.xaml那边设置的是当前窗口的话可以关闭,如果是Window.xaml则无法关闭。
C#WPF 项目开发(一)(火车订票系统)_第10张图片
(7)、在MainWindow.xaml布局主页面,在登录页面的后台“登录按钮”绑定主页面,点击登录跳转到主页面并且关闭登录页面(此过程未进行登录验证)。
C#WPF 项目开发(一)(火车订票系统)_第11张图片
三、VS连接SQL数据库
I.连接数据库
1.(1)、打开“Microsoft SQL Server Management Studio 18(SQL Server 2019)”展开提前引进来的数据库“TTS”–>可编程性–>存储过程–>新建“存储过程”。
(2)、存储过程是存储语句的集合,存储语句常见的是:查询、新增、修改、删除。
C#WPF 项目开发(一)(火车订票系统)_第12张图片
2.存储语句:
(1)、SELECT FROM --从数据库表中检索数据行和列(查询)。
(2)、INSERT INTO VALUES --向数据库表添加新数据行(新增)。
(3)、DELETE WHERE --从数据库表中删除数据行(删除)。
(4)、UPDATE SET --更新数据库表中的数据(修改)。
C#WPF 项目开发(一)(火车订票系统)_第13张图片
3.(1)、例如需要进行登录验证,使用参数进行存储语句的区分,实例化参数“@type”数据类型为“varchar”范围是200,字符串类都等于空,前面声明后面赋值为初始化。
在这里插入图片描述
(2)、字典表:把一些不会变的下拉框或能枚举出来的数据,如性别、证件类型等等放在字典表里进行快速调用,比如这个“火车订票系统数据库”里有两个字典表“属性表”、“属性明细表”,类型表对应详细类型。
C#WPF 项目开发(一)(火车订票系统)_第14张图片
(3)、根据账号密码获取登录人员信息,在数据库里获取主页面的个人信息:部门、账号、密码等等,通过查询语句进行数据查询,“BEGIN”下面的“IF(@type=‘btnLogin_Click_CheckLogin’)”判断当前语句名字,把登录按钮的事件名称作为语句名称后面加登录意思,不需要连表查询的数据直接进行“SELECT”查询,需要连表查询的数据通过“FROM”进行连表查询后再通过“SELECT”查询,“WHERE”查询具体数据条件可以是表头也可以是具体账号或密码,然后执行检查数据是否已经出来,因为添加了权限查询所以查询出来的数据后面显示了账号能够操作什么页面的权限。
(4)、因为账号、密码为字符串,复制的时候后面会带空格,所以要使用“RTRIM”和“AS”进行右去空格。
C#WPF 项目开发(一)(火车订票系统)_第15张图片
(5)、成功获取到数据后,执行全部存储语句,显示“命令已成功完成”,这时候在“存储过程”里就生成一个新的存储过程。
在这里插入图片描述
(6)、如果执行过存储语句后,选定“SELECT”再执行一次就出现错误,原因为存储过程已经创建了无法再创建新的,只要把“SELECT”换成“ALTER”(修改)就可以执行。
4.存储语句简易方式:
(1)、如果存储语句不熟悉不会写可以使用简易方式进行存储语句创建,在“BEGIN”下面鼠标右键,选择“在编辑器中设计查询”,把需要的表都添加进去,然后勾选出需要的数据名称,把表进行主外键连接,然后确定,这样自动创建的“存储语句”通过执行,查询出的数据和手写的存储语句查询结果一样的,这样可以用于项目的快速开发,但是需要学会存储语句的编写,所以尽量手动多写。
C#WPF 项目开发(一)(火车订票系统)_第16张图片

你可能感兴趣的:(WPF,C#,c#,wpf,开发语言)