一、项目说明
此项目功能简单,为本人实训课所做项目,可在虚拟机vmware上运行。本项目为嵌入式设备的GUI开发,其采用gtk构建交互页面,采用sqlite3数据库管理系统实现与各页面数据的交互,包含教师、学生两大模块。其中登录和注册功能实现了和sqlite3数据库的交互。登录成功后学生模块包括本人信息修改、本人成绩查询、奖、助学金申请、本人挂科查询四大模块。教师登录成功后有本人信息修改、本月出勤率查询、学生成绩管理、发布教务公告四大功能。
二、 编译环境说明
1、电脑版本:win 10 +64位
2、代码编辑器:sublime
3、运行环境:本地虚拟机Vmware+ubuntu
4、运行说明:在虚拟机上配置好相应的物联网环境后,使本地window系统可和虚拟机共享一个文件夹。在sublime中打开共享文件夹,编辑代码(可自行更改背景图片及系统名称),保存,然后再把sqlite3.c和sqlite3.h导入共享文件夹,把所用背景图片也导入共享文件夹,使项目、sqlite.c、sqlite3.h、背景图片在共享文件夹的同一个路径。最后在虚拟机Vmware上编译运行。
5、编译语句:gcc xxx.c sqlite3.c -lpthred -ldl pkg-config --cflags --libs gtk+-2.0
运行语句:./a.out
其中xxx.c为项目名
三、运行截图
下面以教师端运行截图为例: 系统主页面
教师端登录页面
教师端注册页面
教师端登录成功页面
教师端出勤率查询页面
四、项目部分代码(代码过多,无法全部展示)
#include <stdio.h>
#include "sqlite3.h"
#include <gtk/gtk.h>
//------------函数声明区
void window_teacher_dl_init(void);
void window_teacher_dl_cz_cql_init(void);
void window_student_dl_cz_init(void);
//-=------------全局变量区
GtkWidget* window_main;
GtkWidget* window_teacher_dl;
GtkWidget* window_teacher_zc;
GtkWidget* window_student_dl;
GtkWidget* window_student_zc;
GtkWidget* window_teacher_dl_cz;
GtkWidget* window_student_dl_cz;
GtkWidget* window_teacher_dl_cz_xscjgl;
GtkWidget* window_teacher_dl_cz_cql;
GtkWidget* window_student_dl_cz_gkcx;
GtkWidget* e_teacher_dl_id;
GtkWidget* e_student_dl_id;
GtkWidget* e_teacher_dl_passwd;
GtkWidget* e_student_dl_passwd;
GtkWidget* e_teacher_zc_name;
GtkWidget* e_student_zc_name;
GtkWidget* e_teacher_zc_id;
GtkWidget* e_student_zc_id;
GtkWidget* e_teacher_zc_passwd;
GtkWidget* e_student_zc_passwd;
//------------------数据库操作区
void my_sqlite_init(void)
{
sqlite3* db;
sqlite3_open("school.db",&db);
char *errmsg = NULL;
sqlite3_exec(db,"create table teacher (name text, id text, passwd text);",NULL,NULL,&errmsg);
sqlite3_close(db);
}
void my_sqlite1_init(void)
{
sqlite3* db;
sqlite3_open("school.db",&db);
char *errmsg = NULL;
sqlite3_exec(db,"create table student (name text, id text, passwd text);",NULL,NULL,&errmsg);
sqlite3_close(db);
}
void my_sqlite2_init(void)
{
sqlite3* db;
sqlite3_open("school.db",&db);
char *errmsg = NULL;
sqlite3_exec(db,"create table grade (name text, id text, fenshu);",NULL,NULL,&errmsg);
sqlite3_close(db);
}
void do_teacher_zc(GtkButton *button ,gpointer student_data)
{
//查询注册没有
const char * name = gtk_entry_get_text(GTK_ENTRY(e_teacher_zc_name));
const char * id = gtk_entry_get_text(GTK_ENTRY(e_teacher_zc_id));
const char * passwd = gtk_entry_get_text(GTK_ENTRY(e_teacher_zc_passwd));
char haha1[100] = "";
sprintf(haha1,"select *from teacher where id = \'%s\' or name = \'%s\';",id,name);
sqlite3* db;
sqlite3_open("school.db",&db);
char *errmsg = NULL;
char **table = NULL;
int r=0,c=0;
sqlite3_get_table(db,haha1,&table,&r,&c,&errmsg);
if (r!=0)
{
gtk_entry_set_text(GTK_ENTRY(e_teacher_zc_id),"您已经注册过了");
gtk_entry_set_text(GTK_ENTRY(e_teacher_zc_name),"您已经注册过了");
gtk_entry_set_text(GTK_ENTRY(e_teacher_zc_passwd),"您已经注册过了");
sqlite3_close(db);
return;
}
char haha2[100] = "";
sprintf(haha2,"insert into teacher values (\'%s\',\'%s\',\'%s\');",name,id,passwd);
errmsg =NULL;
sqlite3_exec(db,haha2,NULL,NULL,&errmsg);
if (errmsg == NULL)
{
gtk_entry_set_text(GTK_ENTRY(e_teacher_zc_name),"您已经注册成功");
}
sqlite3_close(db);
}
void do_student_zc(GtkButton *button ,gpointer student_data)
{
//查询注册没有
const char * name = gtk_entry_get_text(GTK_ENTRY(e_student_zc_name));
const char * id = gtk_entry_get_text(GTK_ENTRY(e_student_zc_id));
const char * passwd = gtk_entry_get_text(GTK_ENTRY(e_student_zc_passwd));
char haha1[100] = "";
sprintf(haha1,"select *from student where id = \'%s\' or name = \'%s\';",id,name);
sqlite3* db;
sqlite3_open("school.db",&db);
char *errmsg = NULL;
char **table = NULL;
int r=0,c=0;
sqlite3_get_table(db,haha1,&table,&r,&c,&errmsg);
if (r!=0)
{
gtk_entry_set_text(GTK_ENTRY(e_student_zc_id),"您已经注册过了");
gtk_entry_set_text(GTK_ENTRY(e_student_zc_name),"您已经注册过了");
gtk_entry_set_text(GTK_ENTRY(e_student_zc_passwd),"您已经注册过了");
sqlite3_close(db);
return;
}
char haha2[100] = "";
sprintf(haha2,"insert into student values (\'%s\',\'%s\',\'%s\');",name,id,passwd);
errmsg =NULL;
sqlite3_exec(db,haha2,NULL,NULL,&errmsg);
if (errmsg == NULL)
{
gtk_entry_set_text(GTK_ENTRY(e_teacher_zc_name),"您已经注册成功");
}
sqlite3_close(db);
}
void do_teacher_dl(GtkButton *button ,gpointer student_data)
{
//查询注册没有
const char * id = gtk_entry_get_text(GTK_ENTRY(e_teacher_dl_id));
const char * passwd = gtk_entry_get_text(GTK_ENTRY(e_teacher_dl_passwd));
char haha1[100] = "";
sprintf(haha1,"select *from teacher where id = \'%s\' and passwd = \'%s\';",id,passwd);
sqlite3* db;
sqlite3_open("school.db",&db);
char *errmsg = NULL;
char **table = NULL;
int r=0,c=0;
sqlite3_get_table(db,haha1,&table,&r,&c,&errmsg);
if (r!=0)
{
gtk_entry_set_text(GTK_ENTRY(e_teacher_dl_id),"成功登录");
sqlite3_close(db);
//跳转就行
return;
}
gtk_entry_set_text(GTK_ENTRY(e_teacher_dl_id),"输入不正确");
sqlite3_close(db);
}
void do_student_dl(GtkButton *button ,gpointer student_data)
{
//查询注册没有
const char * id = gtk_entry_get_text(GTK_ENTRY(e_student_dl_id));
const char * passwd = gtk_entry_get_text(GTK_ENTRY(e_student_dl_passwd));
char haha1[100] = "";
sprintf(haha1,"select *from student where id = \'%s\' and passwd = \'%s\';",id,passwd