如何用C的easyX图形库制做图形化界面菜单(财务管理系统)

这是财务管理系统的一个图形化界面主菜单 ;

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

下面这个是查询功能的一个子菜单;

在这里插入图片描述


一:

菜单的实现靠的是easyX,它是针对C++的一个图形库,编译器用的是Visual C。其实VC和easyX图形库就很容易上手制做一个鼠标点击的类图形化界面。

二:

下面是代码:

// 仅仅是展现 菜单的代码 一些功能性函数就清空了
#include <stdio.h>
#include <graphics.h>
// 由于防止报错
void addOut(){};
void changeOut(){};
void delOut(){};


void addIn(){};
void changeIn(){};
void delIn(){};
void showIn(){};

void showRest(){}; 
void cleanOut(){};
void cleanIn(){}; 
// 下面是主菜单的第三个查询功能后的子菜单代码
void showOut(){
		abcd :;  //这里使用了 goto : 是为了每次执行了功能后返回到第一步从新打印子菜单 也能够用更好的逻辑实现循环 而不用goto函数
	MOUSEMSG m;//定义鼠标变量 m
	//菜单
	initgraph(800,600); //定义画布大小也就是黑框大小
	setbkcolor(WHITE);//设置背景颜色
	cleardevice();//刷新一次 略等于那个system(cls)
	setfillcolor(LIGHTBLUE); //设置后面用函数画出方框的背景颜色 这里设置成了浅蓝色
	// (左上角)x1 y1 (右下角)x2 y2
	fillrectangle(200,140,600,160);
	fillrectangle(200,200,600,220);
	fillrectangle(200,260,600,280);
	fillrectangle(200,320,600,340);
	fillrectangle(200,380,600,400);
	fillrectangle(200,440,600,460);
	settextstyle(15,0,"楷体");//设置文字大小 格式 
	setbkmode(TRANSPARENT);// 去掉文字背景
	//下面是输出字体 参数:(起始位置x 起始位置y “带输出的字符串”)
	outtextxy(250,142,"查询某一年的总支出");
	outtextxy(250,202,"查询某年某月的总支出");
	outtextxy(250,262,"查询某年某月某日的支出");
	outtextxy(250,322,"根据关键字查询支出状况");
	outtextxy(250,382,"列出全部支出状况");
	outtextxy(250,442,"返回主菜单");
//进入触发条件的循环
	while(1){
	//
		
	//
		m = GetMouseMsg();
		if(m.x>=200 && m.x<= 600 && m.y >=140&& m.y<=160){//检测鼠标的位置 是否知足条件
			setlinecolor(RED);//知足后 设置新的边框为红色
			rectangle(190,135,610,165);//画新的边框
			//若是点击了 年份
			if(m.uMsg==WM_LBUTTONDOWN){
				//yearOut();//响应功能
				goto abcd;//功能实现后 跳转到 最开头
			}
		}else if(m.x>=200 && m.x<= 600 && m.y >=200&& m.y<=220){
			setlinecolor(RED);
			rectangle(190,195,610,225);
			//若是点击了月
			if(m.uMsg==WM_LBUTTONDOWN){
			// monthOut();
				goto abcd;
			}
		}else if(m.x>=200 && m.x<= 600 && m.y >=260&& m.y<=280){
			setlinecolor(RED);
			rectangle(190,255,610,285);
			//点击了日
			if(m.uMsg==WM_LBUTTONDOWN){
			// dayOut();
				goto abcd;
			}
		}else if(m.x>=200 && m.x<= 600 && m.y >=320&& m.y<=340){
			setlinecolor(RED);
			rectangle(190,315,610,345);
			//点击了关键字
			if(m.uMsg==WM_LBUTTONDOWN){
			// memOut();
				goto abcd;
			}
		}
		//
		else if(m.x>=200 && m.x<= 600 && m.y >=380&& m.y<=400){//
			setlinecolor(RED);
			rectangle(190,375,610,405);
			//点击了列出全部
			if(m.uMsg==WM_LBUTTONDOWN){
			// show();
				goto abcd;
			}
		}else if(m.x>=200 && m.x<= 600 && m.y >=440&& m.y<=460){//
			setlinecolor(RED);
			rectangle(190,435,610,465);
			//点击了返回
			if(m.uMsg==WM_LBUTTONDOWN){
				goto abcde;
			}
		}
		//一旦鼠标不在相应位置 将画出白色边框 覆盖以前的红色边框
		else {
			setlinecolor(WHITE);
			rectangle(190,135,610,165);
			rectangle(190,195,610,225);
			rectangle(190,255,610,285);
			rectangle(190,315,610,345);
			rectangle(190,375,610,405);
			rectangle(190,435,610,465);
		}
	}
	abcde:;//点击退出按钮 就跳转到这里退出子菜单 返回主菜单
}

//下面是主菜单的实现 实现的细节和子菜单的相似 
void drawMenu(){
	abcd :;
	MOUSEMSG m;
	//菜单
		initgraph(800,600);
		setbkcolor(WHITE);
		cleardevice();//刷新一次 略等于那个system(cls)
		setfillcolor(LIGHTBLUE);
		// 左边1 高1 左边2 高2
		fillrectangle(300,10,500,30);
		fillrectangle(300,50,500,70);
		fillrectangle(300,90,500,110);
		fillrectangle(300,130,500,150);
		
		fillrectangle(300,200,500,220);
		fillrectangle(300,240,500,260);
		fillrectangle(300,280,500,300);
		fillrectangle(300,320,500,340);
	
		fillrectangle(300,390,500,410);
		fillrectangle(300,430,500,450);
		fillrectangle(300,470,500,490);	
	
		settextstyle(15,0,"楷体");//设置文字格式
		setbkmode(TRANSPARENT);// 去掉文字背景
	
		outtextxy(370,15,"添加支出");
		outtextxy(370,55,"删除支出");
		outtextxy(370,95,"查询支出");
		outtextxy(370,135,"修改支出");


		outtextxy(370,205,"添加收入");
		outtextxy(370,245,"删除收入");
		outtextxy(370,280,"查询收入");
		outtextxy(370,320,"修改收入");

		outtextxy(380,395,"结算");
		outtextxy(355,433,"清空支出信息");
		outtextxy(355,472,"清空收入信息");

		settextcolor(BLACK);
			settextstyle(45,0,"楷体");
		outtextxy(120,530,"家庭财务管理系统V1.0(三组)");

	while(1){
		//
		
		//
		m = GetMouseMsg();
		if(m.x>=300 && m.x<= 500 && m.y >=10&& m.y<=30){
			setlinecolor(RED);
			rectangle(295,5,505,35);
			//若是点击了添加
			if(m.uMsg==WM_LBUTTONDOWN){
				addOut();
				goto abcd;
			}
		}
		 else if(m.x>=300 && m.x<= 500 && m.y >=50&& m.y<=70){
			setlinecolor(RED);
			rectangle(295,45,505,75);
			//若是点击了删除
			if(m.uMsg==WM_LBUTTONDOWN){
				delOut();
				goto abcd;
			}
		}else if(m.x>=300 && m.x<= 500 && m.y >=90&& m.y<=110){
			setlinecolor(RED);
			rectangle(295,85,505,115);
			//点击了查询
			if(m.uMsg==WM_LBUTTONDOWN){
				showOut();
				goto abcd;
			}
		}else if(m.x>=300 && m.x<= 500 && m.y >=130&& m.y<=150){
			setlinecolor(RED);
			rectangle(295,125,505,155);
			//点击了修改
			if(m.uMsg==WM_LBUTTONDOWN){
				changeOut();
				goto abcd;
			}
		}
		//
		else if(m.x>=300 && m.x<= 500 && m.y >=200&& m.y<=220){//
			setlinecolor(RED);
			rectangle(295,195,505,225);
			//点击了添加In
			if(m.uMsg==WM_LBUTTONDOWN){
				addIn();
				goto abcd;
			}
		}else if(m.x>=300 && m.x<= 500 && m.y >=240&& m.y<=260){//
			setlinecolor(RED);
			rectangle(295,235,505,265);
			//点击了删除In
			if(m.uMsg==WM_LBUTTONDOWN){
				delIn();
				goto abcd;
			}
		}else if(m.x>=300 && m.x<= 500 && m.y >=280&& m.y<=300){
			setlinecolor(RED);
			rectangle(295,275,505,305);
				//点击了查询In
			if(m.uMsg==WM_LBUTTONDOWN){
				showIn();
				goto abcd;
			}
		}else if(m.x>=300 && m.x<= 500 && m.y >=320&& m.y<=340){
			setlinecolor(RED);
			rectangle(295,315,505,345);
				//点击了修改In
			if(m.uMsg==WM_LBUTTONDOWN){
				changeIn();
				goto abcd;
			}

		}else if(m.x>=300 && m.x<= 500 && m.y >=390&& m.y<=410){
			setlinecolor(RED);
			rectangle(295,385,505,415);
				//点击告终算
			if(m.uMsg==WM_LBUTTONDOWN){
				showRest();
				goto abcd;
			}
		}else if(m.x>=300 && m.x<= 500 && m.y >=430&& m.y<=450){
			setlinecolor(RED);
			rectangle(295,425,505,455);
				//点击了清空Out
			if(m.uMsg==WM_LBUTTONDOWN){
				cleanOut();
				goto abcd;
			}
		}else if(m.x>=300 && m.x<= 500 && m.y >=470&& m.y<=490){
			setlinecolor(RED);
			rectangle(295,465,505,495);
				//点击了清空In
			if(m.uMsg==WM_LBUTTONDOWN){
				cleanIn();
				goto abcd;
			}
		}
		

		else {
			setlinecolor(WHITE);
			rectangle(295,5,505,35);
			rectangle(295,45,505,75);
			rectangle(295,85,505,115);
			rectangle(295,125,505,155);

			rectangle(295,235,505,265);
			rectangle(295,275,505,305);
			rectangle(295,315,505,345);
			rectangle(295,195,505,225);
	
			rectangle(295,385,505,415);
			rectangle(295,425,505,455);
			rectangle(295,465,505,495);
		}
	}
	getchar();
	closegraph();
}
这里是主函数! 仅仅调用了主菜单的函数。
int main(){
	drawMenu();
}