Week01-项目1-菜单打印


前言

本篇文章简单介绍了C/C++基本的输出和EasyX图形化界面的简单使用


提示:以下是本篇文章正文内容

1.文本菜单打印

1.1 需求分析

实现一个文本功能菜单
基本需求:

  1. 网站404攻击
  2. 网站篡改攻击
  3. 网站攻击记录
  4. DNS攻击
  5. 服务器重启攻击

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)
需求:

  1. 初始化一个宽为640,高为480的窗口
  2. 在窗口中心画一个半径为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)或者直接在上一个练习中在制作。

需求:
在这里插入图片描述

  1. 窗口大小为(640,480)、背景色为rgb(64, 128, 128)
  2. 圆:圆心为(320,240)、半径为200、颜色为rgb(255,0,0)、大小为10像素、线条为实线
  3. 字体:字体样式为微软雅黑、颜色为rgb(255,255,0)
  4. 斜线:开始位置为(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 需求分析

需求分析:

  1. 窗口大小为(640,360)
  2. 按钮大小为(宽150,高30),文本大小自行调整,按钮之间的间距自行调整
  3. 可以根据图片布局,作出适当调整

2.3.3项目实现

步骤:

  1. 初始化窗口
  2. 加载图片
  3. 按钮制作(空心矩形+文本设置)
  4. 关闭

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 需求分析

需求分析:

  1. 加载一个适当的窗口
  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操作系统的文件系统,对文件名和路径不区分大小写,这时在编程时使用操作系统相关的操作时,包括

  1. 引用头文件;
  2. 执行系统命令;
  3. 打开系统文件。
    均可以不区分大小写。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值