IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言-超市管理系统(一) -> 正文阅读

[C++知识库]C语言-超市管理系统(一)

演示

在这里插入图片描述在这里插入图片描述

代码:

manageSystem.h头文件:

#pragma once
#include<stdio.h>
#include<string>
#include<stdlib.h>
#include<Windows.h>
#include<time.h>
#include<process.h>
#include<graphics.h>

class manageSystem//管理系统类
{
public:
	void startInterface();//程序开始的界面
	int button_judge(int x,int y);//按钮判断,当鼠标移动到按钮上时,发生颜色变化
	int layer = 1;//图层(刚开始是为第一层)
};


manageSystem.cpp部分:

#include "manageSystem.h"
#include "superMarket.h"

#define WIDTH 1000        //画布宽度
#define HEIGHT 600       //画布高度

//贴图
IMAGE bk1,bk2;

//圆角矩形
int drawroundrect[2][6] =
{ {WIDTH / 6 - 80, 3 * HEIGHT / 4 - 100, WIDTH / 6 + 70, 3 * HEIGHT / 4 - 20, 40, 40},
	{WIDTH / 6 - 80, 3 * HEIGHT / 4 + 20, WIDTH / 6 + 70, 3 * HEIGHT / 4 + 100, 40, 40}
};

//程序开始看到的界面
void manageSystem::startInterface()
{
	int event = 0;//用来记录按钮(第一层的按钮)
	RECT rect1,rect2,rect3,rect4,rect5;//定义矩形
	ExMessage m;//定义消息
	manageSystem layer;
	setbkcolor(RGB(200,200,255));//设置背景颜色为浅蓝色(R和G值相近,B值越大颜色越浅)
	cleardevice();//刷屏,将蓝色刷到画布之上
	setfillcolor(WHITE);//设置“开始”字样的矩形框背景颜色
	//画无边框的填充圆角矩形
	solidroundrect(WIDTH / 6 - 80, 3 * HEIGHT / 4 - 100, WIDTH / 6 + 70, 3 * HEIGHT / 4 - 20, 40, 40);
	solidroundrect(WIDTH / 6 - 80, 3 * HEIGHT / 4 + 20, WIDTH / 6 + 70, 3 * HEIGHT / 4 + 100, 40, 40);
	//输出文字"开始"
	settextstyle(40, 25, "微软雅黑");//设置字体样式
	settextcolor(RGB(128,0,128));//设置字体颜色,紫色
	setbkmode(TRANSPARENT);//以透明的方式贴上文字
	rect1 = { WIDTH / 6 - 80, 3 * HEIGHT / 4 - 100, WIDTH / 6 + 70, 3 * HEIGHT / 4 - 20 };//设置文字输出的位置
	drawtext("进入", &rect1, DT_SINGLELINE | DT_VCENTER | DT_CENTER);//输出文字
	//输出文字"退出"
	settextstyle(40, 25, "微软雅黑");//设置字体样式
	settextcolor(RGB(128, 0, 128));//设置字体颜色,紫色
	setbkmode(TRANSPARENT);//以透明的方式贴上文字
	rect2 = { WIDTH / 6 - 80, 3 * HEIGHT / 4 + 20, WIDTH / 6 + 70, 3 * HEIGHT / 4 + 100 };//设置文字输出的位置
	drawtext("退出", &rect2, DT_SINGLELINE | DT_VCENTER | DT_CENTER);//输出文字
	//输出文字"超市管理系统"
	settextstyle(70, 50, "微软雅黑");//设置字体样式
	settextcolor(RGB(255, 255, 0));//设置字体颜色,紫色
	setbkmode(TRANSPARENT);//以透明的方式贴上文字
	rect3 = { 50 ,  50, WIDTH - 100,  150 };//设置文字输出的位置
	drawtext("超市管理系统", &rect3, DT_SINGLELINE | DT_VCENTER | DT_CENTER);//输出文字
	//将超市图片贴在按钮的旁边
	loadimage(&bk1, "超市1.png", 600, 400);
	loadimage(&bk2, "超市2.png", 600, 400);
	putimage(WIDTH / 6 + 150, 3 * HEIGHT / 4 - 250, &bk2, SRCAND);//贴上掩码图
	putimage(WIDTH / 6 + 150, 3 * HEIGHT / 4 - 250, &bk1, SRCPAINT);//贴上原图
	//鼠标操作
	while (true)
	{
		if (layer.layer == 1)//表示程序的第一层
		{
			m = getmessage(EM_MOUSE);//获取一条鼠标信息
			switch (m.message)//判断是哪种鼠标信息,再执行相应的语句
			{
			case WM_MOUSEMOVE://鼠标移动时,执行的语句
				setrop2(R2_XORPEN);//	绘制出的像素颜色 = 屏幕颜色 XOR 当前颜色
				setlinecolor(RED);//设置线条颜色为红色
				setfillcolor(WHITE);//设置填充颜色为白色
				if (button_judge(m.x, m.y) != 0)//将鼠标坐标传过去,返回的是非0数,执行下面代码
				{
					if (event != button_judge(m.x, m.y))
					{
						event = button_judge(m.x, m.y);//记录这一次触发的按钮
						solidroundrect(drawroundrect[event - 1][0], drawroundrect[event - 1][1], drawroundrect[event - 1][2], drawroundrect[event - 1][3], 40, 40);
					}
				}
				else
				{
					if (event != 0)//上次触发的按钮未还原颜色
					{
						solidroundrect(drawroundrect[event - 1][0], drawroundrect[event - 1][1], drawroundrect[event - 1][2], drawroundrect[event - 1][3], 40, 40);
						event = 0;
					}
				}
				break;
			case WM_LBUTTONDOWN://当鼠标左键点击时,发出响应
				setrop2(R2_NOTXORPEN);//绘制出的像素颜色 = NOT (屏幕颜色 XOR 当前颜色)
				for (int i = 0; i <= 10; i++)
				{
					setlinecolor(RGB(25 * i, 25 * i, 25 * i));//设置圆圈的颜色
					circle(m.x, m.y, 2 * i);//画出圆圈
					Sleep(25);
					circle(m.x, m.y, 2 * i);//抹去刚刚的圆
				}
				flushmessage(EM_MOUSE);//清空鼠标消息缓冲区
				if (button_judge(m.x, m.y) == 2)//如果鼠标点击“退出”按钮时,执行下面语句
				{
					setbkcolor(RGB(200, 200, 255));//设置背景颜色为浅蓝色(R和G值相近,B值越大颜色越浅)
					cleardevice();//刷屏,将蓝色刷到画布之上
					//输出文字"欢迎下次使用超市管理系统!"
					settextstyle(60, 30, "微软雅黑");//设置字体样式
					settextcolor(RGB(255, 0, 0));//设置字体颜色,红色
					setbkmode(TRANSPARENT);//以透明的方式贴上文字
					rect4 = { 100 ,  HEIGHT / 2 - 50, WIDTH - 70,  HEIGHT / 2 + 50 };//设置文字输出的位置
					drawtext("欢迎下次使用超市管理系统!", &rect4, DT_SINGLELINE | DT_VCENTER | DT_CENTER);//输出文字
					//输出文字"系统将于5秒钟后关闭"
					settextstyle(30, 10, "微软雅黑");//设置字体样式
					settextcolor(RGB(255, 0, 0));//设置字体颜色,红色
					setbkmode(TRANSPARENT);//以透明的方式贴上文字
					rect5 = { 100 ,  HEIGHT / 2 + 50, WIDTH - 70,  HEIGHT / 2 + 80 };//设置文字输出的位置
					drawtext("(系统将于5秒钟后关闭)", &rect5, DT_SINGLELINE | DT_VCENTER | DT_CENTER);//输出文字
					Sleep(5000);//在五秒后退出系统
					exit(0);//退出系统
				}
				if (button_judge(m.x, m.y) == 1)//如果鼠标点击“进入”按钮时,执行下面语句
				{
					superMarket market;//定义一个类
					layer.layer = 2;//即将跳转新的页面,将图层(layer)赋值于2(表示程序的第二层)
					market.mainInterface();//跳转到超市管理系统主界面
				}
				break;
			default:
				break;
			}
		}
	}
}

//按钮判断,当鼠标移动到按钮上时,发生颜色变化
int manageSystem::button_judge(int x, int y)//参数x和y,表示鼠标的横轴坐标与纵轴坐标
{
	//判断鼠标的位置,是否处于按钮的上方,是就执行以下语句
	if (x > WIDTH / 6 - 80 && x < WIDTH / 6 + 70 && y>3 * HEIGHT / 4 - 100 && y < 3 * HEIGHT / 4 - 20)
	{
		return 1;//返回值为1,说明鼠标已在“进入”按钮上
	}
	if (x > WIDTH / 6 - 80 && x < WIDTH / 6 + 70 && y>3 * HEIGHT / 4 + 20 && y < 3 * HEIGHT / 4 + 100)
	{
		return 2;//返回值为1,说明鼠标已在“退出”按钮上
	}
	return 0;//返回值为0,说明鼠标未在按钮的上面
}

superMarket.h头文件部分:

#pragma once
#include"manageSystem.h"
class superMarket
{
public:
	void mainInterface();//超市管理系统主页面
};

superMarket.cpp部分:

#include "superMarket.h"

#define WIDTH 1000        //画布宽度
#define HEIGHT 600       //画布高度

//超市管理系统主页面
void superMarket::mainInterface()
{
	setbkcolor(WHITE);//设置背景颜色为白色
	cleardevice();

}

主函数:

#include"manageSystem.h"

#define WIDTH 1000        //画布宽度
#define HEIGHT 600       //画布高度

int main()
{
	manageSystem supershop;//创建一个名为“supershop”的对象
	initgraph(WIDTH, HEIGHT,EW_NOMINIMIZE);//禁用关闭、最小化功能
	supershop.startInterface();//调用程序开始界面
	while (1);
	closegraph();
}

其余图片资源(与源文件在同一个文件夹里):
在这里插入图片描述
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:22:34  更:2021-08-24 15:24:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 6:54:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计