[C语言课程项目设计] EGE图形化界面设计的使用举例

您所在的位置:网站首页 c语言图形化界面easy [C语言课程项目设计] EGE图形化界面设计的使用举例

[C语言课程项目设计] EGE图形化界面设计的使用举例

2024-07-15 18:19:02| 来源: 网络整理| 查看: 265

在本专栏里已经有EGE的简易版使用教程,可以说是有手就行【狗头】

所以这篇我主要贴一些代码来举例

---------------------------------------------------------------------------------------------------------------

注意:1.不同的功能应该放在不同的源文件中,课设项目要求的是多文件结构

           2.一个源文件对应一个头文件(头文件一般是声明函数和定义结构体的)

           3.所有的源文件和头文件都要添加在项目里面

如图所示:

1.进入系统时,我们可以先设置一个登录功能:

新建一个源文件叫做login.cpp,新建一个头文件叫login.h

头文件里写的是对应cpp文件里会用到的函数的声明,比如这里我们只用写“void login();”

这里的函数也可以是其他源文件的函数哟

#include #include "enterSystem.h" void login() { initgraph(1000, 625); //创建窗口 PIMAGE src1; src1 = newimage(); getimage(src1, "4.jpg"); putimage(0, 0, src1); setfont(26, 0, "宋体"); setbkmode(TRANSPARENT); setcolor(BLACK); char input[10]; for(; is_run(); delay_fps(60)) { //is_run()判断窗口是否存在,delay_fps(60) 作用是稳定帧率并刷新窗口 ,一秒钟循环60次 mouse_msg msg = {0}; //定义鼠标变量并且初始化 while(mousemsg()) { //利用mousemsg()判断有没有鼠标消息 msg = getmouse(); } //获得鼠标消息 if((msg.x > 142 && msg.x < 391) && (msg.y > 414 && msg.y < 499) && msg.is_left() && msg.is_down()) { //登录系统 int num = 0; inputbox_getline("输入", "请输入管理员账号", input, 20); while(strcmp("zhangsan", input) != 0) { if(num > 3) { xyprintf(100, 142, "警告!多次输入错误,即将退出系统..."); delay_ms(3000); delimage(src1); src1 = NULL; closegraph(); exit(1); } inputbox_getline("输入", "请重新输入管理员账号", input, 20); num++; } num = 0; inputbox_getline("输入", "请输入账号密码", input, 10); while(strcmp("123456", input) != 0) { if(num > 3) { xyprintf(100, 142, "警告!多次输入错误,即将退出系统..."); delay_ms(3000); delimage(src1); src1 = NULL; closegraph(); exit(1); } inputbox_getline("输入", "请重新输入账号密码", input, 10); num++; } enterSystem(); } else if((msg.x > 587 && msg.x < 823) && (msg.y > 417 && msg.y < 499) && msg.is_left() && msg.is_down()) { //退出整个系统 delimage(src1);//销毁图像,防止内存泄露 src1 = NULL; closegraph(); exit(1); } } delimage(src1);//销毁图像,防止内存泄露 src1 = NULL; }

2.进入系统

新建一个源文件叫做enterSystem.cpp,新建一个头文件叫enterSystem.h

#include #include "mainMenu.h" void enterSystem() { cleardevice(); PIMAGE src1; src1 = newimage(); getimage(src1, "1.jpg"); putimage(0, 0, src1); for(; is_run(); delay_fps(60)) { //is_run()判断窗口是否存在,delay_fps(60) 作用是稳定帧率并刷新窗口 ,一秒钟循环60次 mouse_msg msg = {0}; //定义鼠标变量并且初始化 while(mousemsg()) { //利用mousemsg()判断有没有鼠标消息 msg = getmouse(); } //获得鼠标消息 if((msg.x > 112 && msg.x < 366) && (msg.y > 442 && msg.y < 550) && msg.is_left()&&msg.is_down()) { //开始使用 delimage(src1);//销毁图像,防止内存泄露 src1 = NULL; mainMenu(); } else if((msg.x > 636 && msg.x < 873) && (msg.y > 451 && msg.y < 555) && msg.is_left()&&msg.is_down()) { //退出整个系统 delimage(src1);//销毁图像,防止内存泄露 src1 = NULL; closegraph(); exit(1); } } }

3.主界面的设计

#include "informationManagement.h" #include "titleManagement.h" #include "research.h" #include void mainMenu() { //主界面 cleardevice(); PIMAGE src2; src2 = newimage(); getimage(src2,"2.jpg"); // getimage(pimg, "图片文件名(带扩展名)"); putimage(0,0,src2); for(; is_run(); delay_fps(60)) { //is_run()判断窗口是否存在,delay_fps(60) 作用是稳定帧率并刷新窗口 ,一秒钟循环60次 mouse_msg msg;//定义鼠标变量并且初始化 while(mousemsg()) { //利用mousemsg()判断有没有鼠标消息 msg = getmouse(); } //获得鼠标消息 if((msg.x>326&&msg.x55&&msg.y327&&msg.x181&&msg.y328&&msg.x229&&msg.y327&&msg.x414&&msg.y 365 && msg.x < 637) && (msg.y > 68 && msg.y < 140) && msg.is_left()&&msg.is_down()) { //添加题目 cleardevice(); putimage(0,0,src2);//设置背景 setfont(30, 0, "宋体"); setbkmode(TRANSPARENT); setcolor(WHITE); addCourse(); mainMenu(); } else if((msg.x > 365 && msg.x < 637) && (msg.y > 357 && msg.y < 438) && msg.is_left()&&msg.is_down()) { //删除题目 cleardevice(); putimage(0,0,src2);//设置背景 setfont(30, 0, "宋体"); setbkmode(TRANSPARENT); setcolor(BLACK); deleteCourse(); mainMenu(); } else if((msg.x > 365 && msg.x < 637) && (msg.y > 208 && msg.y < 281) && msg.is_left()&&msg.is_down()) { //修改题目 cleardevice(); putimage(0,0,src2);//设置背景 setfont(30, 0, "宋体"); setbkmode(TRANSPARENT); setcolor(WHITE); reviseInformation(); mainMenu(); } else if((msg.x > 422 && msg.x < 553) && (msg.y > 474 && msg.y < 530) && msg.is_left()&&msg.is_down()) { mainMenu(); } } delimage(src1); delimage(src2); src1 = src2 = NULL; } void addendNode(struct Node** root, struct Course* pData) { //添加一个节点到指针末尾 if(root == NULL) return; if(*root == NULL) { //传进来一个空列表 *root = createNode(pData); return; } struct Node* pTemp = *root; //让pTemp指向链表的最后一个节点 while(pTemp -> pNext) pTemp = pTemp -> pNext; pTemp -> pNext = createNode(pData);//把新节点添加到pTemp后面 } struct Node* createNode(struct Course* pData) { struct Node* pNew = (struct Node*) malloc(sizeof(struct Node)); //申请内存 if(NULL == pNew) { return NULL; } pNew -> pNext = NULL; strcpy(pNew -> data.title, pData -> title); strcpy(pNew -> data.tName, pData -> tName); strcpy(pNew -> data.sName, pData -> sName); strcpy(pNew -> data.need, pData -> need); return pNew; } void addCourse() { char input1[30], input2[10], input3[400]; //1 打开文件 FILE* fp = fopen("list2.txt", "rb"); //2 读取问文件内容并存到容器中 struct Node* pList = NULL; int r; struct Course temp; while(1) { r = fread(&temp, 1, sizeof(struct Course), fp); //temp表示存放输入数据的首地址 if(r data), 1, sizeof(struct Course), fp); pTemp = pTemp -> pNext; } fclose(fp); pTemp = NULL; struct Node* pDel = pList; while(pList -> pNext) { pList = pDel -> pNext; free(pDel);//释放内存 pDel = NULL; pDel = pList; } free(pList); pList = pDel = NULL; xyprintf(0, 0, "添加成功, 正在返回..."); delay_ms(3000); return; } void deleteCourse() { FILE* fp = fopen("list2.txt", "rb"); struct Node* pList = NULL; int r; struct Course temp; while(1) { r = fread(&temp, 1, sizeof(struct Course), fp); //temp表示存放输入数据的首地址 if(r data.title, input) == 0) { pList = pList -> pNext; flag = 1; break; } if(strcmp(pDel -> data.title, input) == 0) { if(pDel -> pNext != NULL) { pDelPret -> pNext = pDel -> pNext; } else { pDelPret -> pNext = NULL; } flag = 1; break; } pDelPret = pDel; pDel = pDel -> pNext; } pDel = NULL; if(flag != 1) { pDel = pList; while(pList -> pNext) { pList = pDel -> pNext; free(pDel);//释放内存 pDel = NULL; pDel = pList; } free(pList); pList = pDel = NULL; xyprintf(0, 0, "该题目不存在!即将返回..."); delay_ms(3000); return; } //1 打开文件 fp = fopen("list2.txt", "wb"); struct Node* pTemp = pList; //写入数据 while(pTemp) { fwrite(&(pTemp -> data), 1, sizeof(struct Course), fp); pTemp = pTemp -> pNext; } fclose(fp); pTemp = NULL; pDel = pList; while(pList -> pNext) { pList = pDel -> pNext; free(pDel);//释放内存 pDel = NULL; pDel = pList; } free(pList); pList = pDel = NULL; outtextxy(229, 513, "删除成功, 正在返回..."); delay_ms(3000); return; } void reviseInformation() { char input[30]; FILE* fp = fopen("list2.txt", "rb"); struct Node* pList = NULL; int r; struct Course temp; while(1) { r = fread(&temp, 1, sizeof(struct Course), fp); //temp表示存放输入数据的首地址 if(r data.title, input) == 0) { flag = 1; break; } pRevise = pRevise -> pNext; } if(flag != 1) { struct Node* pDel = pList; while(pList -> pNext) { pList = pDel -> pNext; free(pDel);//释放内存 pDel = NULL; pDel = pList; } free(pList); pList = pDel = pRevise = NULL; xyprintf(0, 0, "未找到相关题目!即将返回..."); delay_ms(3000); return; } inputbox_getline("输入", "请输入修改后题目",input, 30); strcpy(pRevise -> data.title, input); pRevise = NULL; //1 打开文件 fp = fopen("list2.txt", "wb"); struct Node* pTemp = pList; //写入数据 while(pTemp) { fwrite(&(pTemp -> data), 1, sizeof(struct Course), fp); pTemp = pTemp -> pNext; } fclose(fp); //删除链表 struct Node* pDel = pList; while(pList -> pNext) { pList = pDel -> pNext; free(pDel);//释放内存 pDel = NULL; pDel = pList; } free(pList); pList = pDel = NULL; outtextxy(0, 0, "修改成功, 正在返回..."); delay_ms(3000); return; }

----------------------------------------------------------------------------------------------------------

本篇博客介绍到这里,886

ps:想要源码的小伙伴们还请一键三连哟~



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭