Week01-项目1-菜单打印

2023-10-29 15:59
文章标签 项目 打印 菜单 week01

本文主要是介绍Week01-项目1-菜单打印,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 1.文本菜单打印
    • 1.1 需求分析
    • 1.2 项目实现
      • 1.2.1 实现代码and知识总结:
      • 1.2.2 命名空间的定义和使用
      • 1.2.3 知识锦囊:C/C++的编译过程
      • 1.2.4小贴士:注释
  • 2.菜单图形界面开发
    • 2.1 EasyX环境搭建
    • 2.2 Easy的基本使用
      • 2.2.1 画一个圆
      • 2.2.2 画一个简单的图
      • 2.2.3 小贴士:_T
    • 2.3黑客攻击系统菜单的图形界面开发
      • 2.3.1 准备工作
      • 2.3.2 需求分析
      • 2.3.3项目实现
    • 2.4 项目拓展:极乐净土
      • 2.4.1 项目准备
      • 2.4.2 需求分析
      • 2.4.3 项目实现
    • 2.5 练习:
      • 2.5.1 在文本菜单中添加退出选项
      • 2.5.2 在图形化菜单中添加一个选项
      • 2.5.3 程序员约会五步骤
      • 2.5.4 小知识:头文件大小写问题


前言

本篇文章简单介绍了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,高为480initgraph(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. 打开系统文件。
    均可以不区分大小写。

这篇关于Week01-项目1-菜单打印的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/301727

相关文章

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke