前言
最近在做关于嵌入式软件的实训项目,主要是设计界面GUI以及代码函数的编写,这个为小组的实训作业,可以在虚拟机上运行,其中gtk来设计图形界面来进行人机交互,sqlite3为数据库的管理系统实现在注册界面的时候将数据输入其中,登录时输入能在数据库中查询到,其中登录和注册功能实现了和sqlite3的交互,进入操作界面后可以对商品进行添加,可以添加商品的id,名称,以及售价进价,利润等等,我这里只构建了3个,还可以添加,能对添加的商品进行删除,修改,能返回登录界面,对于添加的商品我们能完成对他的图片添加,然后点击商品能看到商品的图片。
编译环境
- 电脑:win11 +64位
- 代码编译器:sublime
- 运行环境:本地虚拟机VMware+ubuntu+MobaXterm_Personal_22.1
- 运行说明:在虚拟机VMware上配置相应的环境之后,使用本地文件通过ip地址共享虚拟文件夹。在sublime中打开文件,进行代码的编写,以及保存(必须要保存才能在虚拟机里面编译),然后再sublime中导入sqlite3.c\sqlite3.h的文件和背景图片的再共享文件夹中的同一个路径中,最后在虚拟机上运行或者MobaXterm里面运行都可以。
- 一些编译指令:
gcc xxx.c sqlite3.c -lpthred -ldl pkg-config --cflags --libs gtk±2.0
xxx.c为需要编译的文件
一些sqlite3的编译语言
- sudo sqlite3 *.db //打开指定的数据库
:你需要打开的数据库名称 sqlite3 1000phone.db
注意事项:
1.如果.db的数据库不存在,他会自动帮我们创建一个对应的数据库
2.*任意字符,切记不能出现特殊符号和中文
3.如果数据库存在,则默认打开你需要打开的数据库
4.如果你打开数据后不进行任何操作,默认是临时数据库,不会永久保存- 退出数据库
.q 或者 .exit
注意事项:
1.如果你的sql指令不是以.开头,必须追加;结束标识符,才代表数据库命令输入完成,否则默认是换
行;
2.sql语句不区分大小写,但是指令区分。- 查看数据库
.databases 查看当前数据库的物理地址
没有权限。 在打开数据库的指令前追加 sudo- 查看当前数据库的所有表
.tables
查看当前数据库指定表的表结构
.schema 表的名称
运行的图片
这是登录界面
点击注册时会有另一个界面出来
在这里可以注册用户名和密码,注册之后会显示注册成功
当用户名和密码为空时会报错
接着点击取消回到登录界面进行账户的登录
之后会进入操作界面
在这个界面可以进行商品id的添加、商品名称的添加,商品售价的添加,还可以添加其他的东西,可以在sublime中自己添加。
每添加完一行数据可以点击行进行拍照,将照片以一个界面的形式显示出来,拍照的命名以商品的id为准,这样在点击某一行时才知道点击的哪一行然后弹出一个窗口显示图片。
点击拍照,命名以商品Id,然后点击拍照就行了,拍的照片在当你点击那一行的时候出现
这就是这个项目所能完成的功能。
代码
下面的是一些界面的函数,调用:
这是登录界面的一个函数
//函数名:windows_SMMS_Sign_in_init
//函数功能:登录界面初始化
//函数参数:无
//返回值:无
void windows_SMMS_Sign_in_init(void)
{
windows_sign_in = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request(windows_sign_in, 600, 400);
table_title = gtk_table_new(3, 3, TRUE);
GtkWidget* table_username = gtk_table_new(3, 6, TRUE);
gtk_table_attach_defaults(GTK_TABLE(table_title), table_username, 1, 3, 1, 2);
GtkWidget* table_sign_in = gtk_table_new(2, 6, TRUE);
gtk_table_attach_defaults(GTK_TABLE(table_username), table_sign_in, 1, 5, 2, 3);
GtkWidget* labe_sign_in_id = gtk_label_new("用户名:");
set_label_font_size_and_color(labe_sign_in_id, 12, "black");
gtk_table_attach_defaults(GTK_TABLE(table_username), labe_sign_in_id, 1, 2, 0, 1);
GtkWidget* labe_sign_in_password = gtk_label_new("密码:");
set_label_font_size_and_color(labe_sign_in_password, 12, "black");
gtk_table_att