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

相关文章

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排