【电子量产工具】5.页面系统

前言

最近看了 电子量产工具 这个项目,本专栏是对该项目的一个总结。


一、页面系统分析

在这里插入图片描述
页面系统是指在软件应用或网站中,将功能和内容划分为不同的页面,并通过页面间的导航和交互来展示信息和实现用户操作的一种组织方式。

页面系统通常由多个页面组成,每个页面都有自己的功能和呈现内容。用户可以通过导航菜单、链接、按钮等方式在不同的页面之间进行切换和操作。

这里主要是编写 main page 主页面。

二、页面数据结构抽象

对于每一个页面,抽象出如下结构体,核心在于其中的 Run 函数
页面结构体中 ,描述了 页面的名字运行函数,以及指针 用于连接链表。

typedef struct PageAction {
	char *name;
	void (*Run)(void *pParams);
	struct PageAction *ptNext;
}PageAction, *PPageAction;

三、底层代码 main_page.c

  1. 实现 PageAction 结构体。
static PageAction g_tMainPage = {
	.name = "main",
	.Run  = MainPageRun,					//主页面的运行函数
};
  1. 运行函数
    我们先在运行函数里 打印行数,为 业务系统做准备。
static void MainPageRun(void *pParams)
{
	printf("%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);
}

四、页面管理器

  1. 中间的 页面管理层,起承上启下的作用:
  • 把下面的各个页面注册进来。
  • 上层可以选择并运行某个界面。
  1. 页面管理器用来管理页面,只需要实现 2 个函数:
  • PagesRegister: 把多个页面注册进链表。
  • Page(name):取出某个页面。
    在这里插入图片描述
  1. 将页面 注册进链表:
    这里由于页面肯定不止一个,可以注册多个页面。
    在这里插入图片描述
  2. 根据 名字 取出某个页面。
PPageAction Page(char *name)
{
	PPageAction ptTmp = g_ptPages;				//临时指针指向 头指针

	while (ptTmp)
	{
		if (strcmp(name, ptTmp->name) == 0)			//比较名字是否相同
			return ptTmp;
		ptTmp = ptTmp->ptNext;					//遍历链表
	}

	return NULL;
}

五、测试程序

int main(int argc, char **argv)
{
	PagesRegister();				//注册界面
	Page("main")->Run(NULL);		//运行 Run 函数
	return 0;	
}

测试效果

效果就是 打印出 Run 函数 的行号。
在这里插入图片描述


总结

总体来说,页面系统的代码并不复杂。 主要是为下面的 业务系统做铺垫。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糖果罐子♡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值