第2章:泛型
第2章:泛型
本章目标
理解泛型的概念
掌握泛型方法的定义与使用
掌握泛型类的定义与使用
掌握泛型接口的定义与使用
本章内容泛型的概念 泛型(generic)是C# 2.0推出的新语法,并不是语法糖,它是专门为处理多段代码在不同的数据类型上执行相同的指令的情况而设计的。 即泛型让不同的数据类型支持相同的业务逻辑。
泛型是一个复合类型,把多个类型混合一起作用, 在C#中应用比较广的泛型:泛型方法,泛型类,泛型接口
泛型方法泛型方法:调用时泛型参数类型可以省略
泛型定义时,是延迟声明的:即定义的时候没有指定具体的参数类型,把参数类型的声明推迟到了调用的时候才指定参数类型。
12345678910111213141516171819202122232425262728/// <summary> /// 泛型方法 /// 求和 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t1& ...
第1章:特性
第1章:特性
本章目标
理解特性的概念
熟悉常用预定义特性
掌握自定义特性的运用
本章内容特性是什么特性的定义 特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。
特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。
特性其实就是一个类,直接或间接继承自Attribute
1234567891011121314151617181920212223242526272829303132333435#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framewo ...
第3章:反射
第3章:反射
本章目标
掌握反射的原理
熟悉反射的基本运用
本章内容反射是什么C# 编译运行过程
首先我们在VS点击编译的时候,就会将C#源代码编译成程序集
程序集以可执行文件 (.exe) 或动态链接库文件 (.dll) 的形式实现
程序集中包含有Microsoft 中间语言 (MSIL) 和必需的元数据。
元数据存储以下信息:
程序集的说明:标识(名称、版本、区域性、公钥)、导出的类型、该程序集所依赖的其他程序集、运行所需的安全权限。
类型的说明:名称、可见性、基类和实现的接口、成员(方法、字段、属性、事件、嵌套的类型)。
特性:修饰类型和成员的其他说明性元素。
在执行时,实时 (JIT) 编译器将 MSIL 转换为本机代码
运行 Microsoft 中间语言 (MSIL) 前,必须根据公共语言运行时将其编译为目标计算机基础结构的本机代码。
运行代码
公共语言运行时提供启用要发生的托管执行的基础结构以及执行期间可使用的服务
反射的工作原理反射 来自 System.Reflection命名空间,它可以读取程序集中的元数据, ...
第6章:队列
第6章:队列
本章目标
理解队列的定义及其基本运算
掌握顺序队列各种操作实现
本章内容队列
一种特殊的线性表
允许在一端进行插入,另一端进行删除
插入的一端称为队尾,删除的一端称为队头
插入元素称为入队,删除元素称为出队
若队列中没有任何元素,则称为空队列
例如:
超市排队交费
打印任务调度
队列的存储结构
顺序存储结构
称为“顺序队列”
是运算受限的顺序表
用一组连续的存储空间依次存放从队头到队尾的元素
使用一维数组实现
链式存储结构
顺序队列在容量为5的顺序队列中将J1-J3依次入队,然后J1出队
顺序队列的基本操作
队列的初始化
判断队列的状态(空或满)
入队
出队
查询队头对象
查询队列的元素个数
初始化1234567891011121314151617/// <summary>/// 初始化/// </summary>/// <param name="capacity"></param>public MyQueue(int capacity){ items = new ...
第5章:栈
第5章:栈
本章目标
理解栈的定义及其基本运算
掌握顺序栈和链栈的各种操作实现
掌握利用栈解决问题
本章内容栈
是一种只允许在表的固定一端(表尾),进行插入或删除操作的线性表
插入操作称为入栈(压栈)
删除操作称为出栈(弹栈)
当栈中没有元素时为空栈
栈的存储结构
顺序存储结构
链式存储结构
栈的顺序存储结构:
又称“顺序栈
限定在表尾进行插入和删除操作的顺序表
用一组连续的空间存放自栈底到栈顶的数据元素
使用一维数组实现
顺序栈在容量为4的顺序栈中将1,2依次入栈,然后2出栈
顺序栈的基本操作:
栈的初始化
判断栈的状态(空或满)
查询栈的元素个数
入栈
出栈
查询栈顶对象
顺序栈的初始化12345678910111213141516171819202122232425262728293031323334using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threadin ...
第4章:双链表
第4章:双链表
本章目标
了解线性表的概念
掌握线性表顺序存储结构的特点
掌握双链表的基本操作
本章内容单链表分析特点:
用一组任意的存储单元,存储线性表的各个数据元素
每个元素,除了存储自身信息外,还需要保存直接后继元素的存储位置
优势:
插入,删除和修改效率高
劣势:
遍历数据要从头开始,所以性能差,查询速度慢
双链表
每个节点有两个连接:一个指向前一个节点,(当此“连接”为第一个“连接”时,指向空值或者空列表)
而另一个指向下一个节点,(当此“连接”为最后一个“连接”时,指向空值或者空列表)
双链表的初始化问题:
如何构造带表头结点的空单链表?
示例:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162using System;using System.Collections.Generic;using System.Linq;using System.Text;using S ...
第3章:单链表
第3章:单链表
本章目标
了解单链表的概念
掌握双链表存储结构的特点
掌握双链表的基本操作
对比单链表和双链表的区别
本章内容顺序存储结构分析
特点
以数据元素物理位置的相邻表示逻辑关系的相邻
优势
随机存取元素时比较简单
存储空间使用紧凑
劣势
插入、删除操作需移动较多数据元素,效率较低
表容量难以扩充
链式存储结构一种物理存储单元上非连续、非顺序的存储结构,简称为“链表”。
链表由一系列结点组成,每个结点包括两个部分:
数据域:保存数据元素
指针域:保存直接前驱元素或者直接后继元素的存储位置
单链表
用一组任意的存储单元,存储线性表的各个数据元素。
每个元素,除了存储自身信息外,还需要保存直接后继元素的存储位置。
也称为“线性链表”
单链表的一般形式:
带表头结点的非空单链表
带表头结点的空单链表
示例:
使用单链表保存数据a1, a2,a3, 将数据a4插入到a1,a2之间,然后删除a2.
单链表的基本操作
链表的初始化
判断链表是否为空
获取链表长度
插入元素
移除元素
修改指定位置的对象
查找数据元素的位置
查询指定索引的 ...
第1章:数据结构与算法
第1章:数据结构与算法
本章目标
了解数据结构
了解算法的设计原则
本章内容程序设计什么是程序设计:
程序设计=算法+数据结构
程序设计:为计算机处理问题编制一组指令集
算法:处理问题的策略
数据结构:问题的数学模型
程序设计的实质:
对实际问题选择一个好的数据结构,加之设计一个好的算法。
数据处理的种类数值数据:整数/实数。
非数值数据:图形/图像/声音。
数值计算通常可以用一组线性或非线性的代数方程组或微分方程组来描述。
问题:
已知:游泳池的长 len 和宽 wide,求面积 area
分析:
建模型
问题涉及的对象:长len,宽wide,面积area
对象之间的关系:area = len * wide
设计求解问题的方法
编程
1234567891011public void GetArea(){ Console.WriteLine("请输入长:"); int len=int.Parse( Console.ReadLine()); Console.WriteLin ...
第2章:顺序表
第2章:顺序表
本章目标
了解线性表的概念
掌握线性表顺序存储结构的特点
掌握顺序表的基本操作
本章内容了解线性结构线性结构的特点:
存储唯一的开始结点
存储唯一的终端结点
除第一个外,每个数据元素均有一个前驱
除最后一个外,每个数据元素均只有一个后继
提示:
线性结构是最常用、最简单的一种数据结构
线性表
一种线性结构
允许在任意位置进行插入和删除数据元素的操作
由n(n>=0)个相同类型数据元素a1,a2,….,an构成的有限序列
线性表的逻辑结构:
a1:首元素
an:尾元素
ai:第i个数据元素,i为数据在线性表中的顺序
n:线性表中的数据元素的个数,称为表长
线性表的热证:
均匀性:同一线性表的各数据元素数据类型相同
有序性:数据元素在线性表的位置只取决于序列
1<i<n 时:ai仅有一个直接前驱和一个直接后继
a1没有前驱
an没有后继
线性表的存储结构:
顺序存储结构
链式存储结构
顺序存储结构
用一组地址连续的存储单元,依次存储 线性表中的各个数据元素。
用顺序存储结构存储的线性表称为顺序表
特点 ...
第7章:项目案例:酒店管理 系统
第7章:项目案例:酒店管理 系统
训练的节能点
搭建三层架构系统
实体类的使用
在ADO.NET中使用存储过程
DataGridView数据的筛选
任务描述系统概述
实现酒店房间入住登记和退房
实现酒店房间基础信息维护
房间类型
房间维护
实现房间状态查看
系统角色
管理员
整体开发思路
业务需求基础信息管理功能
房间类型管理(类型名称、类型价格)
房间基本信息管理(房间号、床位数、房间状态等)
房间入住登记功能
提供顾客信息:姓名和身份证号
客人要选择合适的房间
入住要登记时间,交付押金
系统记录信息
退房功能
入住信息查询
记录房款
将订房状态改为结账状态
房间状态查看功能
查看酒店所有房间的入住状态
数据库设计数据库表
房间类型
名称、价格/天
房间
房号、房间类型、房间状态(入住/空置)、描述、床位个数、入住客人数量
入住登记
客人姓名、身份证号、房号、入住日期、退房日期、押金、房款
房间状态
入住状态
技术框架设计
业务分析
从登记房间到退房是一个什么样的流程?
入住时需要记录哪些数据?
退房时需要支付的房款如何 ...