Linux项目实战——业务系统(后附百问网课程视频链接)

news2024/9/23 23:28:00

 处理配置文件

一、main函数流程

初始化显示系统——>初始化输入系统——>初始化文字系统——>初始化页面系统——>业务系统

二、业务系统框架

        1. 读取配置文件

        2. 根据配置文件生成按钮、界面

        3. 读取输入事件

        4. 根据输入事件找到按钮

        5. 调用按键的OnPressed函数

三、处理配置文件

1. 什么是配置文件

在配置文件中有很多行,每一行都有三个参数:
         * name: 按钮的名字

        * can_be_touch:按钮能否被触摸

        * commmand:当模块被测试时,无论是否通过,都会执行这条命令

2.如何处理配置文件

        对于配置文件的每一行,都创建一个ItemCfg结构体

typedef struct ItemCfg {
	int index;
	char name[100];
	int bCanBeTouched;
	char command[100];
}ItemCfg, *PItemCfg;

        对外提供函数

int GetItemCfgCount(void);
PItemCfg GetItemCfgByIndex(int index);
PItemCfg GetItemCfgByName(char *name);

        实现int ParseConfig(char *strFileName)的步骤及关键函数。

1.打开配置文件

FILE *fopen(const char *pathname, const char *mode);

fopen函数功能: 打开一个文件,并返回一个指向FILE类型的指针,用于后续的读写操作

        🔺fopen()参数说明

① const char *pathname:文件名/路径,这是char型指针,须在”文件名/路径“上加上双引号;

② const char *mode:文件的操作权限,这里也是字符型指针,须在“操作权限”上加双引号。

返回值:

  1. 打开文件成功,则创建一个FILE类型结构的实例,并返回指向该结构实例的指针,程序使用该指针来操作文件;
  2. 打开文件失败,则返回NULL
char *fgets( char *str, int num, FILE *stream );

 fgets函数功能:为从指定的流中读取数据,每次读取一行。其原型为:char *fgets(char *str, int n, FILE *stream);从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内

        🔺fgets()参数说明

① 参数str是一个指向字符数组的指针,类型为char*;str指向的字符数组用于存储从指定流stream读取的字符串;

② 参数num是读取的最大字符数(包括最后的空字符’\0’),类型为int型;把num设置为str指向的字符数组的大小,可防止内存访问越界;

③ 参数stream是fgets()函数要读取的流,类型为FILE*;stream可以是文件流或标准输入流;当是文件流时,stream就是fopen()函数的返回值;当是标准输入流时,stream就是stdin。

返回值:

  1. 读取成功,返回str;
  2. 读取失败,返回NULL。

2.读取每一行

3.忽略注释

4.处理

int sscanf(const char *str, const char *format,......);

sscanf的函数功能:从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。

        🔺sscanf()参数说明

① 参数str为要读取数据的字符串;

② format为用户指定的格式;

③ argument为变量,用来保存读取到的数据。

返回值:

        1.成功则返回参数数目;

        2.失败则返回-1,错误原因存于errno 中.。

 生成界面

计算出单个按钮的width/height

居中显示,计算每个按钮的Region

sqrt函数:求给定值的平方根

double sqrt(double x);

处理输入事件 

1.处理流程:

        读取输入事件

        * 根据输入事件找到按钮

        调用按钮的OnPressed函数

2.编写GetButtonByInputEvent

        对于触摸屏事件,需要通过判断触点所在的按钮区域;

        对于网络类事件,需要根据传入的字符串跟按键名字比较。

3.编写MainPage自己的OnPressed函数

对于触摸屏事件:
       ① 分辨是否能被点击

       ② 修改颜色

对于网络类事件

        ①根据传入的字符串修改按钮颜色

课程链接: 

        6-1_页面系统_数据结构抽象_哔哩哔哩_bilibili6-1_页面系统_数据结构抽象是【第6篇】项目实战之七步从零编写带GUI的应用(项目开发|论文参考|C|GUI)的第23集视频,该合集共计33集,视频收藏或关注UP主,及时了解更多相关视频内容。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1it4y1Q75z?p=23

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1982035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序开发怎么申请HTTPS证书?

小程序开发中申请SSL证书的流程包括选择信任可靠的SSL证书服务商、申请SSL证书、配置服务器、测试验证以等。以下将具体分析这个过程: 1、选择信任可靠的SSL证书服务商: 选择信任可靠的证书服务商,致命的证书服务商可以提供可靠的产品和完善…

【已解决】页面操作系统功能,诡异报错500nginx错误

【已解决】页面操作系统功能,诡异报错500nginx错误,后台没有任何报错信息 不知道啥原因 清理了浏览器缓存 也没有效果 还有一个表现情况,同样的操作,有时可以又是不行 因为报错ng的代理问题,检查了ng配置 后续经过同…

Unity强化工程 之 SpriteEditer SingleMode

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 因为unity不只是3d需要,还有2d游戏需要大量编辑处理图片素材,所以需要了解Sprite(精灵…

Cesium初探-实体

在 Cesium 中,"实体"(Entity)是一个核心概念,它代表了可以在场景中渲染的任何东西,从简单的点、线、多边形到复杂的模型和图像。实体可以用来表示地理空间数据,如地标、轨迹、卫星轨道等。 以下…

【数据结构】栈的概念、结构和实现详解

本文来介绍一下数据结构中的栈,以及如何用C语言去实现。 1. 栈的概念及结构 栈:一种特殊的线性表,它只允许在固定的一端进行插入和删除元素的操作。 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。 栈中元素遵循后进先出…

PXE实现linux系统批量自动安装

实验环境: 1、RHEL7主机 2、主机图形化 3、配置网络可用 4、关闭vmware dhcp功能 一、实验环境准备 1、主机图形化 在安装安装RHEL7系统时,选择图形化安装,如果没有选择,可以在后面通过命令安装,如下&#xff1…

Pinia状态管理库

为了跨组件传递JWT令牌,我们就会利用Pinia状态管理库,它允许跨组件或页面共享状态。 使用Pinia步骤: 安装pinia:cnpm install pinia 在vue应用实例中使用pinia 在src/stores/token.js中定义store 在组件中使用store 1.在main.js文…

sql注入靶场sqli-labs常见sql注入漏洞详解

目录 sqli-labs-less1 1.less1普通解法 1.在url里面填写不同的值,返回的内容也不同,证明,数值是进入数据库进行比对了的(可以被注入) 2.判断最终执行的sql语句的后面还有内容吗,并且能够判断是字符型的拼接…

MySQL增删改查(基础)

1、. 新增(Create) 语法: INSERT [INTO] table_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ... 例子: -- 创建一张学生表 DROP TABLE IF EXISTS student; CREATE TABLE student (id INT,sn INT com…

电子琴——Arduino

音调有7个音调,分别是哆来咪发索莱西;如果用蜂鸣器来发出这七个音调就要分别设置这七个音调对应频率。 电子琴实现需要物品有,arduino开发板一个,按键7个,蜂鸣器1个,杜邦线若干 重点讲一下按键原理 按键开…

linux运维一天一个shell命令之vim详解

前言: 在日常运维工作中,掌握好 Vim 的使用可以极大地提高工作的效率。Vim 作为一个强大的文本编辑器,广泛应用于各种运维场景 一、定义 Vim 是一个非常强大的文本编辑器,在 Unix/Linux 环境中非常流行。它具有许多高级功能和快…

【神软大数据治理平台-高级动态SQL(接口开发)】

1、背景 业务部门需大数据平台按照所提需求提供企业数据接口,基于神软大数据治理平台-高级动态SQL功能,满足业务需求,如下: (1)业务系统需求: 输入: enterpriseName:…

【抖音卡片】在抖音私信的时候给对方发送抖音卡片链接

效果展示 效果说明 在默认情况下,给对方发送连接的时候是以文本的形式展示的可点击的超链接,但是经过处理之后可以将你发送的连接一样卡片的形式展示。 实现步骤 第一步:打开微信云托管 微信云托管 (qq.com)https://cloud.weixin.qq.com/c…

原装二手MSO5204B泰克DPO5204B混合信号示波器

泰克 MSO5204B混合信号示波器,2 GHz,4 16 通道,10 GS/s Tektronix MSO5204B 具有出色的信号保真度和高级分析和数学功能。 当今数据速率更快、时间裕度更严格,因此设计时需要具有出色信号采集性能和分析功能的示波器。Tektronix…

电源芯片负载调整率测试方法、原理以及自动化测试的优势-纳米软件

在芯片设计研发领域,负载调整率作为稳压电源芯片的关键性能指标,直接关系到芯片的稳定性和可靠性,因此其测试和优化显得尤为重要。以下是对负载调整率测试原理、方法以及使用ATECLOUD-IC芯片测试系统优势的进一步阐述: 负载调整率…

阿里云oss存储之定期删除

存储到OSS中文件基于存储费用的考虑需要将存储指定时间的文件进行删除,如果想实现定期删除,有以下方法可以处理,简单记录一下: 1、oss控制台 配置生命周期策略删除,如附件1截图 2、通过sdk,调用DeleteObject请求删除文件 如client.delete(ossdemo/some-not-exists-object); …

matlab的strel()函数的使用方法(OK)

这个函数 是形态学的结构元素 使用方法如下 SE strel(nhood) SE strel("diamond",r) SE strel("disk",r) SE strel("disk",r,n) SE strel("octagon",r) SE strel("line",len,deg) SE strel("rectangle",…

电脑运行库问题怎么修复?电脑运行库修复工具分享与实操

在我们日常使用电脑的过程中,经常会遇到一些因为运行库缺失或损坏而导致软件无法正常运行的问题。这些问题不仅影响工作效率,还可能导致数据丢失或程序崩溃。那么,电脑运行库怎么修复呢?本文将为您详细介绍如何使用运行库修复工具…

ETL数据集成丨将GreenPlum数据同步至Doris数仓

在当今数据驱动的时代,高效、可靠的数据集成成为企业数字化转型的关键一环。ETLCloud作为一款创新的数据集成平台,通过其强大的零代码配置能力,为企业提供了从数据抽取、转换到加载(ETL)的全链条解决方案,尤…

简单数学题——492、29、507 快速幂——50、372

简单数学题 492. 构造矩形(简单) 作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 所以,现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求&#…