- 博客(332)
- 资源 (1)
- 收藏
- 关注
原创 VS2019 C#代码提示改中文
语言包下载地址:https://dotnet.microsoft.com/en-us/download/intellisense 下载完成 打开压缩包:第一个文件夹进去,找到zh-hans 打开对应目录:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\3.1.0\ref\netcoreapp3.1(VS2019安装时默认地址)粘贴进去 重启VS ...
2022-02-05 16:37:19
1734
1
原创 飞行棋游戏代码(C#)
220224飞行器v1.0 using System; namespace AeroplaneChess { class Program { //地图 static int[] Maps = new int[100]; //玩家A B坐标 static int[] playerPos = new int[2]; //玩家姓名 static string[] playerNames = new s
2022-02-04 17:54:30
3393
原创 设计模式07 之Bridge
设计模式07 之Bridge 1. “单一职责” 模式: .在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。 典型模式 Decorator(装饰模式) Bridge(桥模式) 2. Bridge 桥模式 1. 动机(Motivation) 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个纬度的变化。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方
2021-05-04 10:27:21
583
原创 设计模式06 之Decorator
设计模式06 之Decorator 1. “单一职责” 模式: .在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码,这时候的关键是划清责任。 典型模式 Decorator(装饰模式) Bridge(桥模式) 2. Decorator 装饰模式 1. 动机(Motivation) 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩 展功能的增多)
2021-05-03 19:32:06
285
1
原创 设计模式05 之Observer Event
设计模式04 之Strategy 1. “组件协作” 模式: 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 典型模式 Template Method(模板方法) Observer(观察者模式) / Event(事件模式) Strategy(策略模式) 2. Observer 观察者模式 1. 动机(Motivation) 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”——一个
2021-05-03 17:45:46
190
1
原创 设计模式04 之Strategy
设计模式04 之Strategy 1. “组件协作” 模式: 现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 典型模式 Template Method(模板方法) Observer / Event(事件模式) Strategy(策略模式) 2. Strategy 策略模式 1. 动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对
2021-05-03 16:53:19
128
原创 设计模式03 之Template Method
设计模式03 之Template Method 1.前言 1. GOF-23模式分类 从目的来看∶ 创建型(Creational )模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实 现引来的冲击。. 结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。 行为型( Behavioral )模式︰通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。 从范围来看︰
2021-05-03 14:06:51
140
1
原创 设计模式02 之面向对象的设计原则
设计模式02 之面向对象的设计原则 1. 为什么要面向对象设计? 变化是复用的最大天敌!面向对象设计最大的优势在于:抵御变化! 2. 重新认识面向对象 理解隔离变化: 从宏观层面来看,面向对象的构建方式更能适应软件的变化,能将变化带来的影响减为最小 各司其职: 从微观层面来看,面向对象的方式更强调各个类的“责任” 由于需求变化导致的新增类型不应该影响原来类型的实现 对象是什么? 从语言层面来看,对象是封装了代码和数据 从规格层面来看,对象是一系列可被使用的公共接口 从概念层面来看,对象是某种拥有责
2021-05-03 10:49:34
132
原创 设计模式01 之初认设计模式
设计模式day01 之初认设计模式 1. 学习目标 理解松耦合设计思想 掌握面向对象设计原则 掌握重构技法改善设计 掌握GOF核心设计模式、 2. 什么是设计模式 每一个模式描述了一个我们周围不断重复发生的问题,以及该问题的解决方案的核心。 这样,你就能一次又一次地使用该方案而不必重复劳动。 3. GOF 设计模式 历史性著作《设计模式:可复用面向对象软件的基础》 --书中描述了23种经典面向对象设计模式,创立了模式在软件设计中的地位 由于《设计模式》一书确定了设计模式的地位,通常说的设计模式隐
2021-05-03 10:34:45
148
原创 C++中 ‘\n‘ 与 endl的区别
C++中显示引号包含的字符串时,通常使用\n换行,而在其他情况下则使用控制符 endl。 对于大多数人来说输入endl更加方便 cout << "xiao xiao xiao \n"; int a = 10; cout << a << endl; 区别: endl确保程序继续运行前,刷新并输出(将其立即显示在屏幕上) ’\n‘ 不能提供这样的保证,这意味着在某些系统中,有时候在输入信息后才会显示。 总结: 且在C++中使用 endl 代替 ‘\n’ 一般是个好
2021-04-07 21:45:24
325
原创 using 与名字空间的意义
命名空间的意义: 避免变量或函数重命名的问题 ,例如:大型项目开发过程中 全局变量或函数重名,但如果每个人都有自己的名字空间便可以解决问题。 C++中std空间 using namespace std; 意义: 这个using编译指令使得std命名空间中的所有名称都可以使用。但是一次性导入全部,破坏了原本存在的意义 如此书写方便小学习过程使用 但是,如此在大型项目中会存在潜在的问题,更好的做法是,只使用名称可用,这可以通过using声明来实现。 using std::cout; using std::
2021-04-07 21:44:15
139
原创 基于TCP/IP的回声服务器 (Linux环境)
注意: 需要联网 需要修改IP地址为自己的IP地址。 ifconfig查看自己的IP地址 服务器端 #include <stdio.h> #include <string.h> #include <unistd.h> #include <pthread.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include &l
2021-03-10 08:56:50
178
原创 NC112 进制转换
class Solution { public: /** * 进制转换 * @param M int整型 给定整数 * @param N int整型 转换到的进制 * @return string字符串 */ string solve(int M, int N) { // write code here string ret; // 建立一个表,最后进行字符访问直接输出 string s
2021-03-07 17:15:52
179
原创 NC65 斐波那契数列
class Solution { public: int Fibonacci(int n) { int a=1; int b=1; int sum =0; if(n == 1 || n == 2) { return 1; } for(int i = 0; i < n-2; i++) { su
2021-03-07 16:54:00
177
原创 NC4 判断链表中是否有环(map容器解法)
class Solution { public: bool hasCycle(ListNode *head) { map<ListNode*, int> mp; while(head != NULL) { if(0 == mp[head]) { mp[head] = 1; } else
2021-03-07 16:52:21
151
原创 Qt中文乱码问题解决方案
注意:Qt的4.8版默认的不是utf-8,所以可能会出现中文乱码。 1. 导入字符编码头文件 QTextCodec 2. 在main函数中 // 创建一个字符编码对象 QTextCodec* codec = QTextCodec::codecForName("utf-8"); // 告诉Qt当前系统所使用的字符编码 QTextCodec::setCodecForCStrings(codec); // 告诉Qt
2021-03-04 10:50:44
383
1
原创 C++机房预约管理系统.cpp
C++实战项目机房预约管理系统 文章目录C++实战项目机房预约管理系统.h文件computerRoom.hglobalFile.hIdentity.hmanager.horderFile.hstudent.hteacher.h.cpp文件manager.cpporderFile.cppstudent.cppteacher.cppmain.cpp 系统简介: 学校现有几个规格不同的机房,由于使用时经常出现“撞车”现象,现在开发一套机房预约系统,解决这一问题 身份简介: 学生代表:申请使用机房 教师:审核
2021-03-02 21:59:43
558
原创 基于STL泛化编程的演讲比赛.cpp
基于STL泛化编程的演讲比赛.cpp 比赛规则: 学校举办一场演讲比赛,共12个人参加,比赛共两轮,第一轮为淘汰赛,第二轮为决赛 每名选手都有对应得编号,如 10001 ~ 10012 比赛方式:分组比赛,每组6个人 第一轮分为两个小组,整体按照选手编号进行抽签后顺序演讲 十个评委分别给每名选手打分,去除最高和最低分,求平均分为本轮选手的成绩 当小组演讲完后,淘汰组内排名最后三个选手,前三名晋级,进入下一轮比赛 第二轮为决赛,前三名胜出 每轮比赛后需要显示晋级选手的信息 程序功能: 开始演讲比赛:完
2021-02-25 22:54:13
150
原创 STL - 常用算法
STL - 常用算法 概述: 算法主要头文件algorihtm functional numeric 组成 algorithm是所有STL头文件中最大的一个,范围涉及比较,交换,查找,遍历操作,复制,修改等等 numeric 体积很小,只包含几个在序列上面进行简单数学运算的模板函数 functional 定义了一些模板类,以声明函数对象 文章目录STL - 常用算法1. 常用遍历算法1. for_each2. transform2. 常用查找算法1. find2. find_if3. adjacent_
2021-02-23 23:35:41
210
原创 STL - 函数对象(仿函数)
STL - 函数对象(仿函数) 文章目录STL - 函数对象(仿函数)1. 函数对象1. 函数对象概念2. 函数对象使用2. 谓词1. 谓词概念2. 一元谓词3. 二元谓词3. 内建函数对象1. 内建函数对象意义2. 算术仿函数3. 关系仿函数4. 逻辑仿函数 1. 函数对象 1. 函数对象概念 概念: 重载函数调用重载符的类,其对象常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数 本质:函数对象(仿函数)是一个类,不是一个函数 2. 函数对象使用 特点: 函数对象在使用时,可以
2021-02-23 19:48:45
98
原创 容器(vector与multimap)案例 - 员工分组
容器(vector与multimap)案例 - 员工分组 案例描述: 公司招聘了10个员工(ABCEDEFGJHIJ),员工进入公司后,需要指派员工在哪个部门工作 员工信息有:姓名 工资;部门分为: 策划,美术,研发 随机给10名员工分配部门和工资 通过multimap进行信息插入 key(部门编号)value(员工) 分部门显示员工信息 实现步骤: 创建10名员工,放到vector中 遍历vector容器,取出每个员工,进行随机分组 分组后,将员工部门号作为key,具体工作为value,放到mult
2021-02-23 17:27:27
268
原创 STL常用容器之 map multimap
STL常用容器之 map multimap 文章目录STL常用容器之 map multimap1. map multimap容器1. map 基本概念2. map 构造和赋值3. map 大小和交换4. map 插入和删除5. map 查找和统计6. map 容器排序 1. map multimap容器 1. map 基本概念 简介: map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序 本质: map/m
2021-02-23 15:49:02
96
原创 STL常用容器之 set multiset
STL常用容器之 set multiset 1. set multiset容器 1. set基本概念 所有元素插入时,自动排序 本质:set/multiset属于关联式容器,底层结构是二叉树实现。 set和multiset区别: set中不允许有重复的元素 multiset允许容器中有重复的元素 2. set构造和赋值 函数原型: 构造: set<T> st;//默认构造 set(const set& st);//拷贝构造 赋值:str& operator=(cons
2021-02-23 15:10:03
319
1
原创 STL常用容器之 list
STL常用容器之 list 文章目录STL常用容器之 list1. list容器1. list容器的基本概念2. list 构造函数3. list 赋值和交换4. list 大小操作5. list 插入和删除6. list 数据存取7. list 反转和排序8. 排序案例 1. list容器 1. list容器的基本概念 功能:将数据进行链式存储 链表(list)是一种物理存储单元上非连续存储结构,数据元素的逻辑顺序是通过链表中的指针连接进行实现的 链表的组成:链表由一堆结点组成 节点的组成:数据域与指针域
2021-02-23 12:34:33
327
原创 List容器练习 排序案例
要求:将Person自定义数据类型进行排序,Person中有姓名,年龄,身高 排序规则:年龄升序,如果年龄相同在按照身高进行降序。 源码: #include <iostream> #include <list> #include <algorithm> using namespace std; class Person { public: Person(string name,int age,int height):m_Name(name),m_Age(age),m
2021-02-23 12:32:56
247
原创 STL常用容器之 stack,queue
STL常用容器之 stack,queue 文章目录STL常用容器之 stack,queue1. stack容器1. stack基本概念2. stack常用接口2. queue容器1. queue基本概念2. queue常用接口 1. stack容器 1. stack基本概念 概念:stack是一种先进后出(First In Last Out ,FILO)的数据结构,只有一个出口。 栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为 栈中进入数据被称为: 入栈push 栈中弹出数据被称为:出栈pop
2021-02-23 11:43:15
217
原创 容器(vector与deque)案例 - 评委打分
容器(vector与deque)案例 - 评委打分 案例描述: 有五名选手:选手ABCDE,10个评委分别对每一位选手打分,去除最高分,去除最低分。 实现步骤: 创建5名选手,放到vector中 遍历vector容器,取出每一个选手,执行for循环,可以把10个评分打分存到deque容器中 sort算法对deque容器中分数排序,去除最高最低分 deque容器遍历一遍,累加总分 获取平均分 源码示例: #include <iostream> #include <vector> #
2021-02-22 21:12:16
371
原创 STL常用容器 之deque
文章目录STL常用容器 之deque1. deque容器1. deque容器基本概念2. deque构造函数3. deque赋值函数4. deque大小操作5. deque插入和删除6. deque数据存取7. deque 排序 STL常用容器 之deque 1. deque容器 1. deque容器基本概念 功能:双端数组,可以对头端进行插入删除操作 deque与vector区别: vector对于头插入与删除效率低,数据量越大,效率越低 deque相对而言,头插入与删除会比vector块 vector
2021-02-22 20:07:06
101
原创 STL常用容器 之vector
STL常用容器 之vector 文章目录STL常用容器 之vector1. vector容器1. vector基本概念2. vector构造函数3. vector赋值函数4. vector容量与大小5. vector插入和删除6. vector数据存取7. vector互换容器8. vector预留空间 1. vector容器 1. vector基本概念 功能:vector数据结构和数组非常相似,也称为单端数组 区别:数组是静态空间,而vector是动态扩展 动态扩展:并不是原空间之后接续新空间,而是找更大
2021-02-22 17:49:36
78
原创 STL常用容器之 string
STL常用容器之 string 文章目录STL常用容器之 string1. string容器1. string的基本概念2. string构造函数3. string赋值操作4. string字符串拼接5. string查找和替换6. string字符串比较7. string字符存取8. string插入和删除9. string子串 1. string容器 1. string的基本概念 本质:string是C++风格的字符串,而string本质上是一个类 string 和char 区别*: char* 是一
2021-02-22 16:24:49
443
原创 C++ STL简单介绍
文章目录STL简单介绍1. STL的诞生2. STL基本概念3. STL六大组件4. STL中容器 算法 迭代器容器算法迭代器5. 容器算法迭代器初识1. vector存放内置数据类型2. Vector存放自定义数据类型3. Vector容器嵌套容器 STL简单介绍 1. STL的诞生 长久以来,软件界一直希望建立一种可重复利用的东西 C++的面向对象和泛型编程思想,目的就是复用性的提升 大多数情况下,数据结构和算法都未能有一套标志,导致被迫大量重复工作 为了建立数据结构和算法的一套标准,诞生了STL
2021-02-22 12:01:58
246
1
原创 C++ 模板(函数模板与类模板)
C++ 模板 文章目录C++ 模板1. 模板的概念2. 函数模板1. 函数模板语法2. 函数模板的注意事项3. 函数模板案例4. 普通函数与函数模板的区别5. 普通函数与模板函数的调用规则6. 模板的局限性3. 类模板1. 类模板语法2. 类模板与函数模板区别3. 类模板中成员函数创建时机4. 类模板对象做函数参数5. 类模板与继承6. 类模板成员函数类外实现7. 类模板分文件编写8. 类模板与友元9. 类模板案例 1. 模板的概念 模板就是建立通用模具,大大提高复用性。例如:PPT模板 C++中模板:
2021-02-21 19:26:41
564
原创 C++ 类模板案例 (实现一个通用的数组类)
案例描述:实现一个通用的数组类,要求如下: 可以对内置数据类型以及自定义数据类型的数据进行存储 将数组中的数据存储到堆区 构造函数中可以传入数组容量 提供对应的拷贝构造函数以及operator=防止浅拷贝问题 提供尾插法和尾删法堆数组中数据进行添加和删除 可以通过下标方式访问数组中元素 可以获取数组中当前元素个数和数组的容量 .hpp文件 #include <iostream> #include <string> using namespace std; template<
2021-02-21 19:21:47
504
原创 C++ 模板案例:数组排序
案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 源码: #include <iostream> using namespace std; //交换模板 template<class T> void mySwap(T &a, T &b) { T temp = a; a = b; b = temp; } //打印数组的模板 template<c
2021-02-20 23:42:41
340
原创 职工管理系统.cpp(700行+)
职工管理系统.cpp 需求: 职工管理系统可以用来管理公司内所有员工的信息 本次主要利用C++来实现一个基于多态的职工管理系统 公司中职工分为三类:普通员工,经理,老板,需要显示职工编号,职工姓名,职工岗位,以及职责。 普通员工职责:完成经理交给的任务 经理职责:完成老板交给的任务,并下发任务给员工 老板职责:管理公司所有事务 管理系统中需要实现的功能如下: 退出管理程序:退出当前管理系统 增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号,姓名,部门编号 显示职工信息:显示全部
2021-02-20 21:14:34
213
1
原创 C++ 文件读写 相关知识点
文章目录文件操作1. 文本文件1. 写文件打开方式2. 读文件4种读取方式2. 二进制文件1. 写文件2. 读文件3. 二进制读写案例 文件操作 程序运行时产生得数据都属于临时数据,程序一旦运行结束都会被释放 而通过文件可以将数据持久化 C++中对文件操作需要包含头文件<fstream> 文件类型分为两种: 文本文件 :文件以文本得ASII码形式存储在计算机中 二进制文件:文件以二进制形式存储在计算机中,用户一般不能直接读懂它们 操作文件得三大类: ofstream:写操作 ifstrea
2021-02-20 10:43:31
165
原创 C++(重点) 类与对象(15320字附带源码图片)
文章目录C++ 类和对象1. 封装1. 封装的意义封装的意义一:封装的意义二: (三种权限)2. struct 和 class区别3. 成员属性设置为私有2. 对象的初始化和清理1. 构造函数和析构函数2. 构造函数的分类及调用3. 拷贝构造调用规则4. 构造函数调用规则5. 深拷贝与浅拷贝6. 初始化列表7. 类对象作为类成员8. 静态成员3. C++对象模型和this指针1. 成员变量和成员函数分开储存2. this指针概念3. 空指针访问成员函数4. const修饰成员函数4. 友元1. 全局函数做友
2021-02-20 00:03:14
982
2
原创 C++多态案例三.电脑组装
案例描述: 电脑主要组成部件为CPU(用于计算),显卡(用于显示),内存条(用于存储) 将每个零件封装出抽象基类,并且提供不同的厂商生成不同的零件,例如intel厂商和Lenovo厂商 创建电脑类提供让电脑工作的函数,并且调用每个零件的工作接口 测试时组装三台不同电脑进行工作 例: #include <iostream> #include <string> using namespace std; //CPU class CPU { public: virtual void
2021-02-19 23:53:05
320
1
原创 C++多态案例二.制作饮品(感受多态的魅力)
案例描述: 制作饮品大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入佐料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶 #include <iostream> #include <string> using namespace std; class AbstractDrinking { public: //煮水 virtual void Boil() = 0; //冲泡 virtual void Brew() = 0; //导入杯中
2021-02-19 22:40:50
677
原创 C++多态案例一.计算机器类(普通写法和多态技术两种写法的对比)
案例描述: 分别利用普通写法和多态技术,实现两个操作数进行运算的计数器类 多态优点: 代码组织结构清晰 可读性强 利于前期和后期的扩展以及维护 总结:C++开发提倡利用多态设计程序架构,因为多态优点很多 例: #include <iostream> #include <string> using namespace std; //普通实现 class Calculator { public: int getResult(string oper) { if(oper =
2021-02-19 20:16:55
177
1
PuTTY 软件 比xshell小使用方便
2021-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人