文章目录
前言
本篇文章简单介绍了C/C++基本的输出和EasyX图形化界面的简单使用
提示:以下是本篇文章正文内容
1.文本菜单打印
1.1 需求分析
实现一个文本功能菜单
基本需求:
- 网站404攻击
- 网站篡改攻击
- 网站攻击记录
- DNS攻击
- 服务器重启攻击
1.2 项目实现
准备工作:在visual studio 2019中创建一个空项目CP1,添加文件menu.c
1.2.1 实现代码and知识总结:
menu.c文件
/*
c/c++语法规则和代码风格:
1.各语法单位之间有分隔符
2.中英文敏感、大小写敏感
3.‘;’作为每句话的结束符
4.预处理指令占一行 ***
*/
/*
头文件的使用:
1.头文件中包含了我们所使用的元素的名称和用法
2.头文件的查找路径
2.1 #include<>表示从编译器默认的路径中找文件,C/C++标准库使用该方式
2.2 #include""表示从当前路径中找文件(如果找不到再去编译器默认路径中查找),自定义的头文件使用该方式
3.头文件的位置要求放在最前面
*/
//#include<stdio.h>
#include<iostream>
using namespace std;
/*
函数:返回类型 函数名(参数){函数体}
1.main函数:
1.1 mian函数是程序的入口(程序从mian函数开始执行)
1.2 格式 ?
1.2.1 int main(void){}
1.2.2 int main(int argc,char* argv){}
1.3main函数有且只能有一个
2.其他函数:
2.1 种类:c标准库,c++标准库,第三方开源框架,自定义函数,公司函数库
*/
int main() {
/*
* 字符串常量:1.内容不变;2."注意中引文引号"
* 常量与变量的区别:在程序运行过程中值会不会变
*/
/*
* 输出函数cout和printf
* cout:(c++的风格)
* 1.std::cout << "hello" << "world" << std::endl; //endl表示换行 //std表示命名空间
* 2.在头文件#inlcude<iostream>中定义
* printf:(c的风格)
* 1.printf("1+1=%d\n",1+1); // %d占位符(%f,%s,%c ...)
* 2.在头文件#include<stdio.h>中定义
*
*/
cout << "1.网站404攻击" << endl;
cout << "2.网站篡改攻击" << endl;
cout << "3.网站攻击记录" << endl;
cout << "4.DNS攻击" << endl;
cout << "5.服务器重启攻击" << endl;
system("pause");
return 0;
}
1.2.2 命名空间的定义和使用
ns.cpp
#include<iostream>
#include<string>
using namespace std;
/*
* 命名空间的使用
*/
//定义:
namespace China {
float population = 14.7;
std::string capital = "北京";
string captital = "beijing";
}
namespace Japan {
float population = 1.22;
std::string captital = "东京";
}
//简化
using namespace China;
/*//单个使用
using China::capital;
using China::population;
*/
int main() {
//使用
//1.简化后的使用
cout << "首都:" << capital << endl;
cout << "人口:" << population << endl;
//2.正常使用
cout << "首都:" << Japan::captital << endl;
cout << "人口:" << Japan::population << endl;
system("pause");
return 0;
}
1.2.3 知识锦囊:C/C++的编译过程
1)预处理:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法
2)编译:检查语法,将预处理后文件编译生成汇编文件
3)汇编:将汇编文件生成目标文件(二进制文件)
4)链接:C语言写的程序是需要依赖各种库的,所以编译之后还需要把库链接到最终的可执行程序中去
1.2.4小贴士:注释
1)单行注释://
//这是个单行注释
2)多行注释(不能嵌套):/**/
/*
这是多行注释
*/
2.菜单图形界面开发
2.1 EasyX环境搭建
EasyX的下载地址
下载完EasyX后直接打开,就会安装程序会自动检测vs的版本,点击安装即可。
同时可以安装一个使用手册,可以参考手册画图。
2.2 Easy的基本使用
2.2.1 画一个圆
准备工作:新建一个项目(或者在原来的解决方案中添加一个新项目G1并设为启动项目),在源文件中添加一个新的cpp文件(circle.cpp)
需求:
- 初始化一个宽为640,高为480的窗口
- 在窗口中心画一个半径为200的圆
circle.cpp
//引入图形界面的头文件
#include<graphics.h>
#include<windows.h>
int main() {
//1.初始化图形界面宽为640,高为480
initgraph(640, 480);
//2.在中心画一个半径为200的圆,即圆心为(320,240)
circle(320, 240, 200);
system("pause");
//3.关闭图形界面
closegraph();
return 0;
}
运行结果:
2.2.2 画一个简单的图
准备工作:在项目G1的源文件中添加一个文件easyPic.cpp(需将circle.cpp中的main函数修改为其他的名字如main001)或者直接在上一个练习中在制作。
需求:
- 窗口大小为(640,480)、背景色为rgb(64, 128, 128)
- 圆:圆心为(320,240)、半径为200、颜色为rgb(255,0,0)、大小为10像素、线条为实线
- 字体:字体样式为微软雅黑、颜色为rgb(255,255,0)
- 斜线:开始位置为(180,380)、终止位置为(460,100) 、颜色和大小等与圆一样
easyPic.cpp
#include<graphics.h>
#include<windows.h>
int main() {
//1.初始化窗口,并设置背景色
initgraph(640, 480);
setbkcolor(RGB(64, 128, 128));
clearcliprgn();//清除裁剪区的屏幕内容(这里用背景色清除画布)。
//2.设置画笔颜色和大小,然后画圆
setlinecolor(RGB(255, 0, 0));//这个函数用于设置当前设备画线颜色。
setlinestyle(PS_SOLID, 10);//这个函数用于设置当前设备画线样式。PS_SOLID表示实线
circle(320, 240, 200);
//3.打印汉字
settextcolor(RGB(255, 255, 0)); //设置当前字体颜色。
settextstyle(100, 0, _T("微软雅黑"));//设置当前字体样式
TCHAR s[] = _T("无码高清");
outtextxy(170,190,s);//这个函数用于在指定位置输出字符串。
//4.画一条线
line(180,380,460,100);
system("pause");
//关闭窗口
closegraph();
return 0;
}
运行结果:
2.2.3 小贴士:_T
_T是一个宏,作用是让你的程序支持Unicode编码。因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理像中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。
2.3黑客攻击系统菜单的图形界面开发
2.3.1 准备工作
在项目G1中添加main.cpp文件(修改其他文件中main函数为其他名字)将需要的资源(图片)拷贝进项目中。
2.3.2 需求分析
需求分析:
- 窗口大小为(640,360)
- 按钮大小为(宽150,高30),文本大小自行调整,按钮之间的间距自行调整
- 可以根据图片布局,作出适当调整
2.3.3项目实现
步骤:
- 初始化窗口
- 加载图片
- 按钮制作(空心矩形+文本设置)
- 关闭
main.cpp
#include<graphics.h>
#include<windows.h>
int main() {
//1.初始化图形界面(根据图片)
initgraph(640,360);
//2.加载图片
loadimage(NULL,_T("bg.jpeg"));//这个函数用于从文件中读取图像。可以设置图片拉伸
//3.制作按钮
//(1)画一个矩形的方框(宽为150,高为30,边框颜色为RGB(255,255,255),实线,1像素)
setlinecolor(RGB(255, 255, 255));
setlinestyle(PS_SOLID,1);
//(2)设置字体
settextcolor(RGB(255,255,0));
settextstyle(24, 0, _T("微软雅黑"));
setbkmode(TRANSPARENT);// 去掉文字背景
//(3)每个按钮之间的间距为20像素
//第一个边框加文字
rectangle(20,40,170,70);
outtextxy(25,43,_T("1-网站404攻击"));
//第二个
rectangle(20, 90, 170, 120);
outtextxy(25,93,_T("2-网站篡改攻击"));
rectangle(20, 140, 170, 170);
outtextxy(25,143,_T("3-网站攻击修复"));
rectangle(20, 190, 170, 220);
outtextxy(25,193,_T("4-查看攻击记录"));
//第五个按钮的宽度作出适量调整
rectangle(20, 240, 150, 270);
outtextxy(25,243,_T("5-退出"));
system("pause");
return 0;
}
运行结果:
2.4 项目拓展:极乐净土
项目介绍:音频的播放
2.4.1 项目准备
首先创建一个新的项目“极乐净土”,拷贝资源(图片和音频)到项目目录下。
2.4.2 需求分析
需求分析:
- 加载一个适当的窗口
- 循环播放音频
2.4.3 项目实现
main.cpp
#include<graphics.h>
#include<Windows.h>
#include<mmsystem.h>//mci库头文件,播放音乐需要的头文件
#pragma comment(lib,"winmm.lib")//编译器加载winmm.lib的库文件
int main() {
//1.加载窗口
initgraph(800,450);
//2.加载图片
loadimage(NULL, _T("_0147_图层-1.jpg"));
//3.重复播放音乐
LPCWSTR s = _T("play 极乐净土.mp3 repeat");
mciSendString(s, 0, 0, 0);
system("pause");
closegraph();
return 0;
}
运行结果:
2.5 练习:
2.5.1 在文本菜单中添加退出选项
在项目CP1的menu.cpp文件中添加如下代码
cout << "6.退出" << endl;
2.5.2 在图形化菜单中添加一个选项
在项目G1的main.cpp文件中添加如下代码
//添加选型(在适当的位置)
rectangle(470, 40, 620, 70);
outtextxy(475,43,_T("5-DNS攻击"));
运行结果:
2.5.3 程序员约会五步骤
需求分析:
自由打印
项目准备:
在解决方案CP1中添加新的项目exercise,并在源文件中添加main文件
main.cpp
#include<stdio.h>
#include<iostream>
#include<windows.h>
using namespace std;
int main() {
printf("程序员约会五步骤:\n");
//\t制表符
cout << "\t1-" << endl;
cout << "\t2-" << endl;
cout << "\t3-" << endl;
cout << "\t4-" << endl;
cout << "\t5-" << endl;
system("pause");
return 0;
}
2.5.4 小知识:头文件大小写问题
如果在window下编程,由于windows操作系统的文件系统,对文件名和路径不区分大小写,这时在编程时使用操作系统相关的操作时,包括
- 引用头文件;
- 执行系统命令;
- 打开系统文件。
均可以不区分大小写。