项目二、黑客攻击系统-输入账号
第 1 节 项目需求
项目 1 中, 没有输入账号登录, 就直接显示功能菜单. 应该先让用户输入账号并登录.
第 2 节 项目实现
#include <iostream> #include <Windows.h>
int main(void) { char name; int pwd;
std::cout << "请输入账号:"; std::cin >> name;
std::cout << "请输入密码:"; std::cin >> pwd;
/*
std::cout << "1.网站 404 攻击" << std::endl; std::cout << "2.网站篡改攻击" << std::endl; std::cout << "3.网站攻击记录" << std::endl; std::cout << "4.DNS 攻 击 " << std::endl; std::cout << "5.服务器重启攻击" << std::endl;
*/
system("pause"); return 0;
}
注意:该实现存在以下问题,
1. 账号名称太简单,只能输入单个字符
2. 密码只能是整数,太简单,不安全。
3. 密码输入时,不能隐藏
以上问题在项目 3 中解决.
第 3 节 项目精讲
3.1 C++的数据类型
已使用的数据类型: 字符串类型, 整数类型什么是数据类型?
现实社会中的人, 分成很多"类型" "物以类聚, 人以群分"
不同类型的人, 思考问题,处理问题的方式都不一样。

计算机中的数据, 也分成很多类型:
C++ 完全支持 C 语言的各种数据类型。不同数据类型的区别:
1. 表示意义不同
2. 占用内存不同
3. 表示的范围不同
4. 使用方法不同
数据类型使用不当,将导致严重的后果。
1. 对于程序员:隐藏 BUG
2. 对于系统:隐藏灾难

因数据类型使用不当,产生数据溢出,导致阿丽亚娜 5 型运载火箭自爆
1996 年 6 月 4 日,阿丽亚娜 5 型运载火箭的首次发射点火后,火箭开始偏离路线,最终被逼引爆自毁,整
个过程只有短短 30 秒。阿丽亚娜 5 型运载火箭基于前一代 4 型火箭开发。在 4 型火箭系统中,对一个水平
速率的测量值使用了 16 位的变量及内存,因为在 4 型火箭系统中反复验证过,这一值不会超过 16 位的变
量,而 5 型火箭的开发人员简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的
数值溢出。发射后这个 64 位带小数点的变量被转换成 16 位不带小数点的变量,引发了一系列的错误,从而影响了火箭上所有的计算机和硬件,瘫痪了整个系统,因而不得不选择自毁,4 亿美金变成一个巨大的烟花。
3.2 构建 IT 大厦的砖块:变量
变量,不是数学中的变量。为什么要使用变量
程序在运行时,需要保存很多内容常常变化的数据。 比如,射击类游戏中不断变化的"分数"。
世界中的芸芸众生:


程序中的数据:
一个程序运行时,大量数据存储在"变量"中。 数据在大量变量之间"计算"、"交换"。
变量是处理数据的基本实体。
变量是什么
变量,是内存中的一块存储空间,即一小块内存。

变量和数据类型有什么关系?
变量,是一个盒子,盒子里保存了"数据" 数据又分成很多"类型"(数据类型)
=> 变量的类型,就是变量中数据的类型。
=> 变量在定义(创建)时,必须先指定它的类型。
【相当于:制作一个盒子时,必须先确认这个盒子是用来装什么的】

=> 1 个变量只有 1 个类型,而且不能改成其他类型变量的定义
定义形式 1: int x;
int y;
定义形式 2:(不推荐) int x, y;
定义形式 3:(定义的时候,设置一个初始值) int x = 100;
代码解读:
int a; //定义了一个变量a = 100;

内存的存储单位-"字节" 内存的存储单位,是字节。
一个字节,包含 8 位二进制位。
变量名的命名规范
1)只能包含 3 种字符(数字、大/小写字母,下划线)
2)不能以数字开头(即,只能以字母或下划线开头)
int 2name; //非法
3)不能和"关键字"同名(c 语言内部已经使用的"名称"),比如类型名 int
变量名的最大长度,C 语言没有规定。
最大长度限制,取决于编译器,一般都在 32 以上。
变量名,最好"顾名思义",不用使用汉语拼英的简写!
比如:用 name 表示姓名,用 power 表示功率。
命名风格:
1)下划线风格
int student_age; (一般用于变量名、函数名)
2)小驼峰风格
int studentAge; (一般用于变量名、函数名)
1)大驼峰风格
2)全部大写 (一般用于宏)
#define MAX_AGE 30
请忘记"匈牙利命名法"
(属性+类型+对象描述)
3.3 用于计数的整数类型
原始人,使用结绳计数,这个"数"就是整数
int 类型
使用最多的整数类型
在内存中占 4 个字节
表示范围:-(2 的 31 次方)~2 的 31 次方-1 【正负 21 亿左右】
长整形 long
long 也就是 long int
可用来存储更大的整数。
在 32 位系统上,占 4 个字节,和 int 相同
在 64 位系统上,占 8 个字节【正负 9 百亿亿左右】
长长整形 long long
用来存储整数。
在内存中占 8 字节。
很少使用,仅用于特殊的计算。
短整形 short
用来存储整数。
在内存中占 2 字节。
用于存储小范围的整数
表示范围:-(2 的 15 次方)~2 的 15 次方-
1 【正负 3 万多】
------------------------分割线---------------------------
无符号类型, 铁公鸡-概不赊欠-没有负数
unsigned int
unsigned long
unsigned long long
unsigned short
最小值都是 0, 最大值是对应的有符号数的 2 倍。

unsigned int num; //表示编号(0 到四十多亿)
3.4 用于单个字符的数据类型
char
某学员的字母故事
.
单个字符:
"0" "1" "2" "3"... "9"
"a" "b" "c" "d"... "z"
"A" "B" "C" "D"... "Z"
单个字符常量, 要求用
''
括起来
字符类型 char
一
个字节。
char name = ' a ' ;
内存示意图:

字符的实际表示:
所有的字符,使用对应的 ASCII 值来存储。
为什么?(因为计算机中只能存储 0 和 1 的组合)
ASCII 码,使用 1 个字节(包含 8 个二进制位,即 8 个 0 和 1 的组合)
比如: 'A' , 用 0100 0001 来表示, 就是 65
'B' , 用 0100 0010 来表示, 就是 66

char name = ' a ' ;

char name = ' a ' ;
等效于:
char name = 97;
char 类型的另一种用法
用来表示小范围的整数(-128 ~ 127)
不过现在开发时,小范围的整数,也常常直接用 int 类型。
实例:
int x = 0;
x = 'a' + 1; // 97 + 1
注意:
1 和 '1'的区别.
int x = 1;
char y = '1'; //49
【黑客攻击系统】正在陆续更新中……
喜欢的朋友点赞加关注私信“黑客”获取相关资料笔记和视频