计算机系统课程设计(嵌入式实训项目)——教务管理系统(采用sqlite3数据库+gtk页面构建+虚拟机开发)

这是一个嵌入式设备GUI项目,使用gtk界面和sqlite3数据库,实现教师和学生的登录、注册及不同权限的功能。在虚拟机VMware上的Ubuntu环境中,通过Sublime Text进行代码编辑,利用共享文件夹同步代码和资源,通过gcc编译并运行。
摘要由CSDN通过智能技术生成

一、项目说明
此项目功能简单,为本人实训课所做项目,可在虚拟机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] = "";
	
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值