第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数据的筛选
任务描述系统概述
实现酒店房间入住登记和退房
实现酒店房间基础信息维护
房间类型
房间维护
实现房间状态查看
系统角色
管理员
整体开发思路
业务需求基础信息管理功能
房间类型管理(类型名称、类型价格)
房间基本信息管理(房间号、床位数、房间状态等)
房间入住登记功能
提供顾客信息:姓名和身份证号
客人要选择合适的房间
入住要登记时间,交付押金
系统记录信息
退房功能
入住信息查询
记录房款
将订房状态改为结账状态
房间状态查看功能
查看酒店所有房间的入住状态
数据库设计数据库表
房间类型
名称、价格/天
房间
房号、房间类型、房间状态(入住/空置)、描述、床位个数、入住客人数量
入住登记
客人姓名、身份证号、房号、入住日期、退房日期、押金、房款
房间状态
入住状态
技术框架设计
业务分析
从登记房间到退房是一个什么样的流程?
入住时需要记录哪些数据?
退房时需要支付的房款如何 ...
第5章:实体类在程序中的高级应用
第5章:实体类在程序中的高级应用
本章任务
实现年级/科目 ComboBox的联动
实现成绩表和学生表的多表查询
本章目标
会使用实体类实现ComboBox的联动
会使用实体类实现DataGridView的筛选
会使用实体类实现多表查询
本章内容ComboBox 的数据绑定使用ComboBox 绑定实体集合
ComboBox的数据联动使用ComboBox 的SelectedIndexChanged 事件
使用DataGridView显示数据
设置 DataGridView 控件和各列(Columns)的属性
设置 DataSource 属性,绑定数据源
DataGridView 各列的主要属性
属性名称
说明
HeaderText
列标题文本
Visible
指定列是否可见
ReadOnly
指定单元格是否为只读
DataPropertyName
绑定的数据列的名称
显示关联表数据问题:
如何显示多个表关联的数据
分析:
1.每一行数据对应多个实体
2.DataGridView 先绑定Result,然后获取Student ...
第6章:课程总复习
第6章:课程总复习
课程内容回顾第一章~第四章
二层架构
三层架构
实体类
数据访问层编码
业务逻辑层编码
第五章
ComboBox 数据联动
DataGridView 显示关联表数据
学员总结分组总结内容要求
正确、全面、重点突出
表达要求
清晰流畅、有条理
知识梳理:.NET高级
WinForms 高级应用
App.config 的使用
使用 ComboBox 实现联动功能
DataGridView 中辅助列的用法
DataGridViewComBoxColumn 的用法
ADO.NET 深入
使用 using 释放数据库访问对象
使用SqlParameter 实现参数化查询
在ADO.NET 中调用存储过程
在ADO.NET 中使用事务
.NET 基础知识
readonly 和 const 的区别
异常处理
.NET安全编程
使用MD5加密
知识梳理:.NET分层开发两层架构
单层结构的搭建方法
两层架构的搭建方法
创建数据访问层和表示层的依赖关系
两层结构的编码
三层架构
三层架构的搭建方法
三层架构中各层的编码
实体类的用法
实体类的写法
在 ...
第3章:数据访问层
第3章:数据访问层
本章任务
实现查询学生信息功能
实现添加学生成绩功能
实现修改学生信息功能
本章目标
掌握使用 using 释放对象
会使用 SqlParameter 给SQL传递参数
会使用 ADO.NET 调用存储过程
本章内容使用using使用Connection,如何保证连接关闭?
使用using 释放Connection对象
using的用法:
用法一:导入命名空间
用法二:释放对象占用的资源
如Connection、DataReader 、 FileStream……
使用using 释放SqlConnection
使用using 释放SqlDataReader
using 的本质
使用 SqlParameter拼接SQL的方法
方式1:
方式2:
SQL注入:
拼接SQL语句的弊端:
弊端一:不美观,而且容易出现错误
弊端二:安全性差,容易被SQL注入攻击
提示:
参数化查询是能有效避免上述弊端的执行SQL 语句的方式
使用 @ 构造参数化SQL 命令:
SqlParameter 对象
和“@”修饰的参数一一对应,用 ...
第2章:OOP应用之实体类
第2章:OOP应用之实体类
本章任务
使用实体类创建学生用户
使用实体类绑定年级数据
使用实体类绑定学生数据
本章目标
实体类的概念
会使用实体类传递数据
会使用配置文件配置数据库连接字符串
本章内容为什么需要实体类从OOP思想分析:
完全受控制的对象
具有面向对象的基本特征
可以自定义行为
消除了关系数据和对象之间的差异
什么是实体类
两层架构中的实体
C# 与数据库数据类型对应关系:
C#
数据库
string
char, ncharvarchar, nvarchar
int
int, smallint
DateTime
datetime
float
float
bool
bit
decimal
decimal, money
使用实体类两层架构中的实体层:
提示:
分层与实体类无必然联系,不分层的系统依然可以使用实体类。
使用实体类的步骤:
创建实体类项目
创建实体类
添加各层对实体类项目的依赖
实现数据访问层
实现表示层
123456789101112131415161718192021222324252627 ...