课程设计涉及到的内容:
- 编程语言:C语言
- 图形界面:GTK3.0
- 数据库:sqlite3
参考的这篇文章:【linux下用C语言编写带图形界面的交通违章管理系统附带源代码】
某多多花了一块多买了里面的代码参考,分享出来:点击网盘获取
安装sqlite3数据库的可以参考这篇文章:Linux上源码安装sqlite3(图文并茂)
1- GTK3.0安装步骤
(1)安装GNU编译链接工具
sudo apt-get install build-essential
(2)安装gtk,可以使用如下指令同时安装两个版本gtk2和gtk3:
sudo apt-get install gnome-core-devel
如果安装失败,可以直接安装gtk3,命令如下:
sudo apt-get install libgtk-3-dev
(3)安装pkg-config用于自动查找gtk的头文件位置
sudo apt-get install pkg-config
(4)安装完成后,可以使用以下命令来校验安装是否成功,并查看GTK+3.0所包含的所有头文件以及库的路径:
pkg-config --cflags --libs gtk+-3.0
(5)GTK测试
编写测试代码:
#include<gtk/gtk.h>
int main(int argc,char *argv[])
{
GtkWidget *window;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);
gtk_window_set_title(GTK_WINDOW(window),"Hello World!");
gtk_widget_show(window);
gtk_main();
return 0;
}
编译:
gcc -o test test.c `pkg-config --cflags --libs gtk+-3.0`
运行:
./test
成功。
2- 表格信息
Client:
Office:
ClientOrder:
Trailer:
Unit:
TransportReqts:
3- 课程设计界面
登录界面:
菜单界面:
插入数据(四个表格分别插入):
查看数据(clientNo为主搜索):
更新数据(以主键为主更新):
删除数据:
终端显示:
sqlite3数据库(六个表格,主键外键看代码):
成功或者失败都是会有提示的。在整个设计中主要是单位格子的获取比较麻烦,这个搞懂了其他的就比较简单了。
4- 源代码
因为是GTK3.0,所以很多函数都更新了,有些函数是不能用的,在做的过程中也是遇到了,所以算是最新版本的吧。
#include <stdio.h>
#include <gtk/gtk.h>
#include <sqlite3.h>
#include <string.h>
void login();//登陆窗口函数
int create_database_tables();//创建数据库以及创建表格函数
void window_init(GtkWidget *window);//gtk初始化函数(创建表前提)
static int callback(void *data, int argc, char **argv, char **azColName);//数据库回调函数
void success_tips();//操作成功小窗口
void failed_tips();//操作失败小窗口
void deal_pressed_view(GtkButton *button, gpointer user_data);//查找数据按键操作函数
void window_view(GtkWidget *button, GtkWidget * shuzu[20]);//查找操作函数
void deal_pressed_back_view(GtkButton *button, gpointer user_data);//返回菜单函数
void deal_pressed_insert(GtkButton *button, gpointer user_data);//插入数据按键操作函数
void deal_pressed_back_insert(GtkButton *button, gpointer user_data);//返回菜单函数
void insert_Client(GtkButton *button, gpointer user_data);//Client插入按键回调函数
void insert_Office(GtkButton *button, gpointer user_data);//Office插入按键回调函数
void insert_ClientOrder(GtkButton *button, gpointer user_data);//ClientOrder插入按键回调函数
void insert_Trailer(GtkButton *button, gpointer user_data);//Trailer插入按键回调函数
void insert_Unit(GtkButton *button, gpointer user_data);//Unit插入按键回调函数
void insert_TransportReqts(GtkButton *button, gpointer user_data);//TransportReqts插入按键回调函数
void deal_pressed_update(GtkButton *button, gpointer user_data);//更新数据按键操作函数
void deal_pressed_back_update(GtkButton *button, gpointer user_data);//更新数据隐藏函数
void update_date(GtkButton *button, gpointer user_data);//更新按键回调函数
void deal_pressed_delete(GtkButton *button, gpointer user_data);//删除数据按键操作函数
void deal_pressed_back_delete(GtkButton *button, gpointer user_data);//删除数据隐藏函数
void delete_date(GtkButton *button, gpointer user_data);//删除按键回调函数
sqlite3 *db;
char * client;
char * office;
char * clientorder;
char * trailer;
char * transportreqts;
char * unit;
char * table[40] = {""};//查看数据用到的数组
const gchar * client_data[15] ={""};//回调函数保存数据指针数组
GtkWidget * window;//菜单初始化窗口
GtkWidget * login_window;//登录界面
GtkWidget * view_window;//查找数据
GtkWidget * insert_window;//插入数据
GtkWidget * delete_window;//删除数据
GtkWidget * update_window;//更新数据
GtkWidget * delete_label;//删除数据(空白获取)
//假设的用户名和密码
const gchar * name1 = "12345";
const gchar * passwd1 = "12345";
//点击登录按钮后处理事件
void login_button_click(GtkWidget*button, gpointer userdata);
void quxiao_button_click(GtkWidget*button, gpointer userdata);
//文本输入框,用户名及密码
GtkWidget * name;
GtkWidget * passwd;
//登录界面大小
const int LOGIN_WIDTH = 500;
const int LOGIN_HEIGHT = 300;
//普通界面窗口大小;
const int WIDTH = 1500;
const int HEIGHT = 1000;
/*插入数据键盘输入内容保存*/
/*Client*/ /*ClientOrder*/ /*Office*/ /*Trailer*/ /*Unit*/
GtkWidget *n1; GtkWidget *m1; GtkWidget *o1; GtkWidget *p1; GtkWidget *q1; GtkWidget *r1;
GtkWidget *n2; GtkWidget *m2; GtkWidget *o2; GtkWidget *p2; GtkWidget *q2; GtkWidget *r2;
GtkWidget *n3; GtkWidget *m3; GtkWidget *o3; GtkWidget *p3; GtkWidget *q3; GtkWidget *r3;
GtkWidget *n4; GtkWidget *m4; GtkWidget *o4; GtkWidget *p4; GtkWidget *q4;
GtkWidget *n5; GtkWidget *m5; GtkWidget *p5;
GtkWidget *n6; GtkWidget *m6;
GtkWidget *n7; GtkWidget *m7;
GtkWidget *n8; GtkWidget *m8;
GtkWidget *n9; GtkWidget *m9;
GtkWidget *n10;
GtkWidget *n11;
GtkWidget *n12;
GtkWidget *n13;
GtkWidget *n14;
/*更新数据键盘输入内容保存*/
/*Client*/ /*ClientOrder*/ /*Office*/ /*Trailer*/ /*Unit*/
GtkWidget *a1; GtkWidget *b1; GtkWidget *c1; GtkWidget *d1; GtkWidget *e1; GtkWidget *f1;
GtkWidget *a2; GtkWidget *b2; GtkWidget *c2; GtkWidget *d2; GtkWidget *e2; GtkWidget *f2;
GtkWidget *a3; GtkWidget *b3; GtkWidget *c3; GtkWidget *d3; GtkWidget *e3; GtkWidget *f3;
GtkWidget *a4; GtkWidget *b4; GtkWidget *c4; GtkWidget *d4; GtkWidget *e4;
GtkWidget *a5; GtkWidget *b5; GtkWidget *d5;
GtkWidget *a6; GtkWidget *b6;
GtkWidget *a7; GtkWidget *b7;
GtkWidget *a8; GtkWidget *b8;
GtkWidget *a9; GtkWidget *b9;
GtkWidget *a10;
GtkWidget *a11;
GtkWidget *a12;
GtkWidget *a13;
GtkWidget *a14;
//主函数开始
int main(int argc, char *argv[])
{
create_database_tables();
gtk_init(&argc, &argv);//初始化
login();
// window_main();//window主菜单初始化函数
sqlite3_close(db);//关闭数据库
return 0;
}
void delete_date(GtkButton *button, gpointer user_data)
{
char *zErrMsg=0;
const gchar *data = gtk_entry_get_text(GTK_ENTRY(delete_label));
char sql_delete[50] = "DELETE from Client where clientNo = ";
/* Create SQL statement */
if(strlen(data) != 0)
{
strcat(sql_delete, data);
g_print("%s\n",sql_delete);
/* Execute SQL statement */
int rc = sqlite3_exec(db, sql_delete, callback, (void*)data, &zErrMsg);
if( rc != SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
else
{
success_tips();
}
}
}
/*删除函数回调函数*/
void deal_pressed_delete(GtkButton *button, gpointer user_data)
{
GtkWidget * fixed;
GtkWidget * label;
const gchar *text = gtk_button_get_label( button );//获得按钮的文本信息
g_print("进入%s\n", text);//g_print() 相当于C语言的 printf(), gchar相当于char
gtk_widget_hide(window);//隐藏菜单函数
delete_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口
window_init(delete_window);//界面初始化
fixed = gtk_fixed_new();//创建一个固定布局容器fixed
//将fixed添加到login_window中
gtk_container_add(GTK_CONTAINER(delete_window), fixed);
GtkWidget *back = gtk_button_new_with_label("返回");
gtk_fixed_put(GTK_FIXED(fixed), back, 50, 20);
g_signal_connect(back, "pressed", G_CALLBACK(deal_pressed_back_delete), NULL);
GtkWidget *tips = gtk_label_new("Please enter the clientNo you want to delete ");
gtk_fixed_put(GTK_FIXED(fixed), tips, 100, 108);
delete_label = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), delete_label, 430, 100);
GtkWidget *delete = gtk_button_new_with_label("DELETE");
gtk_fixed_put(GTK_FIXED(fixed), delete, 620, 100);
g_signal_connect(delete, "pressed", G_CALLBACK(delete_date), NULL);
gtk_widget_show_all(delete_window);//显示所有控件
gtk_main();
}
/*更新获取内容函数*/
void update_date(GtkButton *button, gpointer user_data)
{
char *zErrMsg=0;
char sql_clientNo[40] = "where clientNo = ";
char sql_client[100]= "update Client set clientName ='";
char sql_client_order[80] = "where orderNo = ";
char sql_client_office[80] = "where officeNo = ";
char sql_client_trailer[80] = "where trailerVehLicenseNo = ";
char sql_client_unit[80] = "where unitVehLicenseNo = ";
const gchar *data = gtk_entry_get_text(GTK_ENTRY(a1));
/* Create SQL statement */
if(strlen(data) != 0)
{
strcat(sql_clientNo, data);
}
g_print("%s\n",sql_clientNo);
data = gtk_entry_get_text(GTK_ENTRY(a2));
/*获取第一个数据修改2*/
if(strlen(data) != 0)
{
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第二个数据修改3*/
data = gtk_entry_get_text(GTK_ENTRY(a3));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set clientStreet ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第三个数据修改4*/
data = gtk_entry_get_text(GTK_ENTRY(a4));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set clientCity ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第4个数据修改5*/
data = gtk_entry_get_text(GTK_ENTRY(a5));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set clientState ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第5个数据修改6*/
data = gtk_entry_get_text(GTK_ENTRY(a6));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set clientZipCode ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第6个数据修改7*/
data = gtk_entry_get_text(GTK_ENTRY(a7));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Client set clientTelNo ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第7个数据修改8*/
data = gtk_entry_get_text(GTK_ENTRY(a8));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set clientFaxNo ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第8个数据修改9*/
data = gtk_entry_get_text(GTK_ENTRY(a9));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set clientWebAddress ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第9个数据修改10*/
data = gtk_entry_get_text(GTK_ENTRY(a10));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set contactName ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第10个数据修改11*/
data = gtk_entry_get_text(GTK_ENTRY(a11));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set contactTelNo ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第11个数据修改12*/
data = gtk_entry_get_text(GTK_ENTRY(a12));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set contactFaxNo ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第12个数据修改13*/
data = gtk_entry_get_text(GTK_ENTRY(a13));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set contactEmailAddress ='");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第13个数据修改14*/
data = gtk_entry_get_text(GTK_ENTRY(a14));
if(strlen(data) != 0)
{
memset(sql_client,0,sizeof(sql_client));
strcat(sql_client, "update Client set officeNo =");
strcat(sql_client, data);
strcat(sql_client, sql_clientNo);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*以上都是修改client表格数据的*/
/*获取第1个数据修改*/
data = gtk_entry_get_text(GTK_ENTRY(b1));
if(strlen(data) != 0)
{
strcat(sql_client_order, data);
}
/*获取第2个数据*/
data = gtk_entry_get_text(GTK_ENTRY(b2));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update ClientOrder set dateOrder = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_order);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第3个数据*/
data = gtk_entry_get_text(GTK_ENTRY(b3));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update ClientOrder set collectionDate = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_order);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第4个数据*/
data = gtk_entry_get_text(GTK_ENTRY(b4));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update ClientOrder set collectionAddress = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_order);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第5个数据*/
data = gtk_entry_get_text(GTK_ENTRY(b5));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update ClientOrder set delivertDate = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_order);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第6个数据*/
data = gtk_entry_get_text(GTK_ENTRY(b6));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update ClientOrder set delivertAddress = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_order);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第7个数据*/
data = gtk_entry_get_text(GTK_ENTRY(b7));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update ClientOrder set loadWeight = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_order);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第8个数据*/
data = gtk_entry_get_text(GTK_ENTRY(b8));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update ClientOrder set loadDescription = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_order);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第9个数据*/
data = gtk_entry_get_text(GTK_ENTRY(b9));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update ClientOrder set clientNo = ");
strcat(sql_client, data);
strcat(sql_client, " ");
strcat(sql_client, sql_client_order);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*以上都是更新ClientOrder部分*/
/*获取第1个数据*/
data = gtk_entry_get_text(GTK_ENTRY(c1));
if(strlen(data) != 0)
{
strcat(sql_client_office,data);
}
/*获取第2个数据*/
data = gtk_entry_get_text(GTK_ENTRY(c2));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Office set officeAddress = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_office);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第3个数据*/
data = gtk_entry_get_text(GTK_ENTRY(c3));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Office set officeTelNo = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_office);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第4个数据*/
data = gtk_entry_get_text(GTK_ENTRY(c4));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Office set officeFaxNo = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_office);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*以上都是修改Office的内容*/
/*获取第1个数据*/
data = gtk_entry_get_text(GTK_ENTRY(d1));
if(strlen(data) != 0)
{
strcat(sql_client_office,data);
}
/*获取第2个数据*/
data = gtk_entry_get_text(GTK_ENTRY(d2));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Trailer set trailerDescription = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_trailer);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第3个数据*/
data = gtk_entry_get_text(GTK_ENTRY(d3));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Trailer set trailerLength = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_trailer);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第4个数据*/
data = gtk_entry_get_text(GTK_ENTRY(d4));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Trailer set maxCarryingWeight = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_trailer);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第5个数据*/
data = gtk_entry_get_text(GTK_ENTRY(d5));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Trailer set officeNo = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_trailer);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*以上是Trailer的内容修改*/
/*获取第1个数据*/
data = gtk_entry_get_text(GTK_ENTRY(e1));
if(strlen(data) != 0)
{
strcat(sql_client_unit,data);
}
/*获取第2个数据*/
data = gtk_entry_get_text(GTK_ENTRY(e2));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Unit set unitDescription = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_unit);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第3个数据*/
data = gtk_entry_get_text(GTK_ENTRY(e3));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Unit set maxPayLoad = '");
strcat(sql_client, data);
strcat(sql_client, "' ");
strcat(sql_client, sql_client_unit);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
/*获取第4个数据*/
data = gtk_entry_get_text(GTK_ENTRY(e4));
if(strlen(data) != 0)
{
memset(sql_client, 0, sizeof(sql_client));
strcat(sql_client, "update Unit set officeNo = ");
strcat(sql_client, data);
strcat(sql_client, " ");
strcat(sql_client, sql_client_unit);
g_print("%s\n",sql_client);
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
}
}
/*更新按键回调函数*/
void deal_pressed_update(GtkButton *button, gpointer user_data)
{
GtkWidget * fixed;
GtkWidget * label;
const gchar *text = gtk_button_get_label( button );//获得按钮的文本信息
g_print("进入%s\n", text);//g_print() 相当于C语言的 printf(), gchar相当于char
gtk_widget_hide(window);//隐藏菜单函数
update_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口
window_init(update_window);//界面初始化
fixed = gtk_fixed_new();//创建一个固定布局容器fixed
//将fixed添加到login_window中
gtk_container_add(GTK_CONTAINER(update_window), fixed);
GtkWidget *back = gtk_button_new_with_label("返回");
gtk_fixed_put(GTK_FIXED(fixed), back, 50, 20);
g_signal_connect(back, "pressed", G_CALLBACK(deal_pressed_back_update), NULL);
/*Client*/
a1 = gtk_entry_new();
a2 = gtk_entry_new();
a3 = gtk_entry_new();
a4 = gtk_entry_new();
a5 = gtk_entry_new();
a6 = gtk_entry_new();
a7 = gtk_entry_new();
a8 = gtk_entry_new();
a9 = gtk_entry_new();
a10 = gtk_entry_new();
a11 = gtk_entry_new();
a12 = gtk_entry_new();
a13 = gtk_entry_new();
a14 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), a1, 200, 100);
gtk_fixed_put(GTK_FIXED(fixed), a2, 200, 150);
gtk_fixed_put(GTK_FIXED(fixed), a3, 200, 200);
gtk_fixed_put(GTK_FIXED(fixed), a4, 200, 250);
gtk_fixed_put(GTK_FIXED(fixed), a5, 200, 300);
gtk_fixed_put(GTK_FIXED(fixed), a6, 200, 350);
gtk_fixed_put(GTK_FIXED(fixed), a7, 200, 400);
gtk_fixed_put(GTK_FIXED(fixed), a8, 200, 450);
gtk_fixed_put(GTK_FIXED(fixed), a9, 200, 500);
gtk_fixed_put(GTK_FIXED(fixed), a10, 200, 550);
gtk_fixed_put(GTK_FIXED(fixed), a11, 200, 600);
gtk_fixed_put(GTK_FIXED(fixed), a12, 200, 650);
gtk_fixed_put(GTK_FIXED(fixed), a13, 200, 700);
gtk_fixed_put(GTK_FIXED(fixed), a14, 200, 750);
GtkWidget *label1 = gtk_label_new("clientNo:");
GtkWidget *label2 = gtk_label_new("clientName:");
GtkWidget *label3 = gtk_label_new("clientStreet:");
GtkWidget *label4 = gtk_label_new("clientCity:");
GtkWidget *label5 = gtk_label_new("clientState:");
GtkWidget *label6 = gtk_label_new("clientZipCode:");
GtkWidget *label7 = gtk_label_new("clientTelNo:");
GtkWidget *label8 = gtk_label_new("clientFaxNo:");
GtkWidget *label9 = gtk_label_new("clientWebAddress:");
GtkWidget *label10 = gtk_label_new("contactName:");
GtkWidget *label11 = gtk_label_new("contactTelNo:");
GtkWidget *label12 = gtk_label_new("contactFaxNo:");
GtkWidget *label13 = gtk_label_new("contactEmailAddress:");
GtkWidget *label14 = gtk_label_new("officeNo:");
gtk_fixed_put(GTK_FIXED(fixed), label1, 50, 108);
gtk_fixed_put(GTK_FIXED(fixed), label2, 50, 158);
gtk_fixed_put(GTK_FIXED(fixed), label3, 50, 208);
gtk_fixed_put(GTK_FIXED(fixed), label4, 50, 258);
gtk_fixed_put(GTK_FIXED(fixed), label5, 50, 308);
gtk_fixed_put(GTK_FIXED(fixed), label6, 50, 358);
gtk_fixed_put(GTK_FIXED(fixed), label7, 50, 408);
gtk_fixed_put(GTK_FIXED(fixed), label8, 50, 458);
gtk_fixed_put(GTK_FIXED(fixed), label9, 50, 508);
gtk_fixed_put(GTK_FIXED(fixed), label10, 50, 558);
gtk_fixed_put(GTK_FIXED(fixed), label11, 50, 608);
gtk_fixed_put(GTK_FIXED(fixed), label12, 50, 658);
gtk_fixed_put(GTK_FIXED(fixed), label13, 50, 708);
gtk_fixed_put(GTK_FIXED(fixed), label14, 50, 758);
/*ClientOrder*/
b1 = gtk_entry_new();
b2 = gtk_entry_new();
b3 = gtk_entry_new();
b4 = gtk_entry_new();
b5 = gtk_entry_new();
b6 = gtk_entry_new();
b7 = gtk_entry_new();
b8 = gtk_entry_new();
b9 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), b1, 550, 100);
gtk_fixed_put(GTK_FIXED(fixed), b2, 550, 150);
gtk_fixed_put(GTK_FIXED(fixed), b3, 550, 200);
gtk_fixed_put(GTK_FIXED(fixed), b4, 550, 250);
gtk_fixed_put(GTK_FIXED(fixed), b5, 550, 300);
gtk_fixed_put(GTK_FIXED(fixed), b6, 550, 350);
gtk_fixed_put(GTK_FIXED(fixed), b7, 550, 400);
gtk_fixed_put(GTK_FIXED(fixed), b8, 550, 450);
gtk_fixed_put(GTK_FIXED(fixed), b9, 550, 500);
GtkWidget *label19 = gtk_label_new("orderNo:");
GtkWidget *label20 = gtk_label_new("dateOrder:");
GtkWidget *label21 = gtk_label_new("collectionDate:");
GtkWidget *label22 = gtk_label_new("collectionAddress:");
GtkWidget *label23 = gtk_label_new("delivertDate:");
GtkWidget *label24 = gtk_label_new("delivertAddress:");
GtkWidget *label25 = gtk_label_new("loadWeight:");
GtkWidget *label26 = gtk_label_new("loadDescription:");
GtkWidget *label27 = gtk_label_new("clientNo:");
gtk_fixed_put(GTK_FIXED(fixed), label19, 410, 108);
gtk_fixed_put(GTK_FIXED(fixed), label20, 410, 158);
gtk_fixed_put(GTK_FIXED(fixed), label21, 410, 208);
gtk_fixed_put(GTK_FIXED(fixed), label22, 410, 258);
gtk_fixed_put(GTK_FIXED(fixed), label23, 410, 308);
gtk_fixed_put(GTK_FIXED(fixed), label24, 410, 358);
gtk_fixed_put(GTK_FIXED(fixed), label25, 410, 408);
gtk_fixed_put(GTK_FIXED(fixed), label26, 410, 458);
gtk_fixed_put(GTK_FIXED(fixed), label27, 410, 508);
/*Office*/
c1 = gtk_entry_new();
c2 = gtk_entry_new();
c3 = gtk_entry_new();
c4 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), c1, 880, 100);
gtk_fixed_put(GTK_FIXED(fixed), c2, 880, 150);
gtk_fixed_put(GTK_FIXED(fixed), c3, 880, 200);
gtk_fixed_put(GTK_FIXED(fixed), c4, 880, 250);
GtkWidget *label15 = gtk_label_new("officeNo:");
GtkWidget *label16 = gtk_label_new("officeAddress:");
GtkWidget *label17 = gtk_label_new("officeTelNo:");
GtkWidget *label18 = gtk_label_new("officeFaxNo:");
gtk_fixed_put(GTK_FIXED(fixed), label15, 765, 108);
gtk_fixed_put(GTK_FIXED(fixed), label16, 765, 158);
gtk_fixed_put(GTK_FIXED(fixed), label17, 765, 208);
gtk_fixed_put(GTK_FIXED(fixed), label18, 765, 258);
/*Trailer*/
d1 = gtk_entry_new();
d2 = gtk_entry_new();
d3 = gtk_entry_new();
d4 = gtk_entry_new();
d5 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), d1, 1240, 100);
gtk_fixed_put(GTK_FIXED(fixed), d2, 1240, 150);
gtk_fixed_put(GTK_FIXED(fixed), d3, 1240, 200);
gtk_fixed_put(GTK_FIXED(fixed), d4, 1240, 250);
gtk_fixed_put(GTK_FIXED(fixed), d5, 1240, 300);
GtkWidget *label28 = gtk_label_new("trailerVehLicenseNo:");
GtkWidget *label29 = gtk_label_new("trailerDescription:");
GtkWidget *label30 = gtk_label_new("trailerLength:");
GtkWidget *label31 = gtk_label_new("maxCarryingWeight:");
GtkWidget *label32 = gtk_label_new("officeNo:");
gtk_fixed_put(GTK_FIXED(fixed), label28, 1090, 108);
gtk_fixed_put(GTK_FIXED(fixed), label29, 1090, 158);
gtk_fixed_put(GTK_FIXED(fixed), label30, 1090, 208);
gtk_fixed_put(GTK_FIXED(fixed), label31, 1090, 258);
gtk_fixed_put(GTK_FIXED(fixed), label32, 1090, 308);
/*Unit*/
e1 = gtk_entry_new();
e2 = gtk_entry_new();
e3 = gtk_entry_new();
e4 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), e1, 1240, 400);
gtk_fixed_put(GTK_FIXED(fixed), e2, 1240, 450);
gtk_fixed_put(GTK_FIXED(fixed), e3, 1240, 500);
gtk_fixed_put(GTK_FIXED(fixed), e4, 1240, 550);
GtkWidget *label33 = gtk_label_new("unitVehLicenseNo:");
GtkWidget *label34 = gtk_label_new("unitDescription:");
GtkWidget *label35 = gtk_label_new("maxPayLoad:");
GtkWidget *label36 = gtk_label_new("officeNo:");
gtk_fixed_put(GTK_FIXED(fixed), label33, 1090, 408);
gtk_fixed_put(GTK_FIXED(fixed), label34, 1090, 458);
gtk_fixed_put(GTK_FIXED(fixed), label35, 1090, 508);
gtk_fixed_put(GTK_FIXED(fixed), label36, 1090, 558);
/*TransportReqts*/
f1 = gtk_entry_new();
f2 = gtk_entry_new();
f3 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), f1, 880, 400);
gtk_fixed_put(GTK_FIXED(fixed), f2, 880, 450);
gtk_fixed_put(GTK_FIXED(fixed), f3, 880, 500);
GtkWidget *label37 = gtk_label_new("unitDescription:");
GtkWidget *label38 = gtk_label_new("maxPayLoad:");
GtkWidget *label39 = gtk_label_new("officeNo:");
gtk_fixed_put(GTK_FIXED(fixed), label37, 765, 408);
gtk_fixed_put(GTK_FIXED(fixed), label38, 765, 458);
gtk_fixed_put(GTK_FIXED(fixed), label39, 765, 508);
GtkWidget *update = gtk_label_new("Click Update data");
gtk_fixed_put(GTK_FIXED(fixed), update, 400, 45);
GtkWidget *back_update = gtk_button_new_with_label("UPDATE(Any data)");
gtk_fixed_put(GTK_FIXED(fixed), back_update, 550, 40);
g_signal_connect(back_update, "pressed", G_CALLBACK(update_date), NULL);
gtk_widget_show_all(update_window);//显示所有控件
gtk_main();
}
/*插入Trailer函数*/
void insert_Trailer(GtkButton *button, gpointer user_data)
{
char *zErrMsg=0;
int sign= 1;
const gchar *data = gtk_entry_get_text(GTK_ENTRY(p1));
/* Create SQL statement */
char sql_client[200] = "INSERT or ignore INTO Trailer VALUES (";
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ",'");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(p2));//获取第二个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(p3));//获取第三个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(p4));//获取第四个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "',");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(p5));//获取第五个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ")");
}
g_print("%s\n", sql_client);
if(sign == 0)
{
g_print("The information is incomplete, please re-enter it\n");
failed_tips();//失败函数提示窗口
}
else{
/* Execute SQL statement */
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Client insert successfully\n");
success_tips();
}
}
}
/*插入Unit函数*/
void insert_Unit(GtkButton *button, gpointer user_data)
{
char *zErrMsg=0;
int sign= 1;
const gchar *data = gtk_entry_get_text(GTK_ENTRY(q1));
/* Create SQL statement */
char sql_client[200] = "INSERT or ignore INTO Unit VALUES (";
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ",'");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(q2));//获取第二个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(q3));//获取第三个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "',");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(q4));//获取第四个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ")");
}
g_print("%s\n", sql_client);
if(sign == 0)
{
g_print("The information is incomplete, please re-enter it\n");
failed_tips();//失败函数提示窗口
}
else{
/* Execute SQL statement */
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Client insert successfully\n");
success_tips();
}
}
}
/*插入数据TransportReqt函数*/
void insert_TransportReqts(GtkButton *button, gpointer user_data)
{
char *zErrMsg=0;
int sign= 1;
const gchar *data = gtk_entry_get_text(GTK_ENTRY(r1));
/* Create SQL statement */
char sql_client[200] = "INSERT or ignore INTO TransportReqts VALUES (";
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ",");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(r2));//获取第二个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ",");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(r3));//获取第三个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ")");
}
g_print("%s\n", sql_client);
if(sign == 0)
{
g_print("The information is incomplete, please re-enter it\n");
failed_tips();//失败函数提示窗口
}
else{
/* Execute SQL statement */
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Client insert successfully\n");
success_tips();
}
}
}
/*插入数据Clientrder*/
void insert_ClientOrder(GtkButton *button, gpointer user_data)
{
char *zErrMsg=0;
int sign= 1;
const gchar *data = gtk_entry_get_text(GTK_ENTRY(m1));
/* Create SQL statement */
char sql_client[200] = "INSERT or ignore INTO ClientOrder VALUES (";
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ",'");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(m2));//获取第二个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(m3));//获取第三个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(m4));//获取第四个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(m5));//获取第五个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(m6));//获取第六个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(m7));//获取第七个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(m8));//获取第八个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "',");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(m9));//获取第九个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ")");
}
g_print("%s\n", sql_client);
if(sign == 0)
{
g_print("The information is incomplete, please re-enter it\n");
failed_tips();//失败函数提示窗口
}
else{
/* Execute SQL statement */
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Client insert successfully\n");
success_tips();
}
}
}
/*插入Office回调函数*/
void insert_Office(GtkButton *button, gpointer user_data)
{
char *zErrMsg=0;
int sign= 1;
const gchar *data = gtk_entry_get_text(GTK_ENTRY(o1));
/* Create SQL statement */
char sql_client[200] = "INSERT or ignore INTO Office VALUES (";
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ",'");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(o2));//获取第二个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(o3));//获取第三个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(o4));//获取第四个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "');");
}
g_print("%s\n", sql_client);
if(sign == 0)
{
g_print("The information is incomplete, please re-enter it\n");
failed_tips();//失败函数提示窗口
}
else{
/* Execute SQL statement */
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Client insert successfully\n");
success_tips();
}
}
}
/*插入Client回调函数*/
void insert_Client(GtkButton *button, gpointer user_data)
{
char *zErrMsg=0;
int sign= 1;
const gchar *data = gtk_entry_get_text(GTK_ENTRY(n1));
/* Create SQL statement */
char sql_client[200] = "INSERT or ignore INTO Client VALUES (";
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ",'");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n2));//获取第二个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n3));//获取第三个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n4));//获取第四个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n5));//获取第五个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n6));//获取第六个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n7));//获取第七个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n8));//获取第八个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n9));//获取第九个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n10));//获取第十个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n11));//获取第十一个数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n12));//获取第十二数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "','");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n13));//获取第十三数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, "',");
}
//g_print("%s\n", sql_client);
data = gtk_entry_get_text(GTK_ENTRY(n14));//获取第十四数据
if(strlen(data) == 0)
sign = 0;
else
{
strcat(sql_client, data);
strcat(sql_client, ");");
}
g_print("%s\n", sql_client);
if(sign == 0)
{
g_print("The information is incomplete, please re-enter it\n");
failed_tips();//失败函数提示窗口
}
else{
/* Execute SQL statement */
int rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Client insert successfully\n");
success_tips();
}
}
}
/*操作成功窗口提示*/
void success_tips()
{
GtkWidget *tips;
GtkWidget *fixed;
tips = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(tips), 200, 150); //设置窗口大小
gtk_window_set_resizable(GTK_WINDOW(tips), FALSE);//设置窗口固定
fixed = gtk_fixed_new();//创建一个固定布局容器fixed
//将fixed添加到login_window中
gtk_container_add(GTK_CONTAINER(tips), fixed);
GtkWidget *title = gtk_label_new("SUCCESSFUL OPERATION");//标题
gtk_fixed_put(GTK_FIXED(fixed), title, 22, 50);
gtk_window_set_title(GTK_WINDOW(tips),"tips");
gtk_widget_show_all(tips);
gtk_main();
}
/*失败窗口提示*/
void failed_tips()
{
GtkWidget *tips;
GtkWidget *fixed;
tips = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(tips), 200, 150); //设置窗口大小
gtk_window_set_resizable(GTK_WINDOW(tips), FALSE);//设置窗口固定
fixed = gtk_fixed_new();//创建一个固定布局容器fixed
//将fixed添加到login_window中
gtk_container_add(GTK_CONTAINER(tips), fixed);
GtkWidget *title = gtk_label_new("OPERATION FAILURE");//标题
gtk_fixed_put(GTK_FIXED(fixed), title, 25, 50);
gtk_window_set_title(GTK_WINDOW(tips),"tips");
gtk_widget_show_all(tips);
gtk_main();
}
/*跳转隐藏*/
void deal_pressed_back_update(GtkButton *button, gpointer user_data)
{
gtk_widget_show_all(window);//显示菜单窗口
gtk_widget_hide(update_window);//隐藏插入数据窗口
}
/*跳转隐藏*/
void deal_pressed_back_delete(GtkButton *button, gpointer user_data)
{
gtk_widget_show_all(window);//显示菜单窗口
gtk_widget_hide(delete_window);//隐藏插入数据窗口
}
/*跳转隐藏*/
void deal_pressed_back_insert(GtkButton *button, gpointer user_data)
{
gtk_widget_show_all(window);//显示菜单窗口
gtk_widget_hide(insert_window);//隐藏插入数据窗口
}
/*跳转隐藏*/
void deal_pressed_back_view(GtkButton *button, gpointer user_data)
{
gtk_widget_show_all(window);//显示菜单窗口
gtk_widget_hide(view_window);//隐藏查找数据窗口
}
//插入数据回调函数
void deal_pressed_insert(GtkButton *button, gpointer user_data)
{
GtkWidget * fixed;
GtkWidget * label;
const gchar *text = gtk_button_get_label( button );//获得按钮的文本信息
g_print("进入%s\n", text);//g_print() 相当于C语言的 printf(), gchar相当于char
gtk_widget_hide(window);//隐藏菜单函数
insert_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口
window_init(insert_window);//界面初始化
fixed = gtk_fixed_new();//创建一个固定布局容器fixed
//将fixed添加到login_window中
gtk_container_add(GTK_CONTAINER(insert_window), fixed);
GtkWidget *back = gtk_button_new_with_label("返回");
gtk_fixed_put(GTK_FIXED(fixed), back, 50, 20);
g_signal_connect(back, "pressed", G_CALLBACK(deal_pressed_back_insert), NULL);
/*Client*/
n1 = gtk_entry_new();
n2 = gtk_entry_new();
n3 = gtk_entry_new();
n4 = gtk_entry_new();
n5 = gtk_entry_new();
n6 = gtk_entry_new();
n7 = gtk_entry_new();
n8 = gtk_entry_new();
n9 = gtk_entry_new();
n10 = gtk_entry_new();
n11 = gtk_entry_new();
n12 = gtk_entry_new();
n13 = gtk_entry_new();
n14 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), n1, 200, 100);
gtk_fixed_put(GTK_FIXED(fixed), n2, 200, 150);
gtk_fixed_put(GTK_FIXED(fixed), n3, 200, 200);
gtk_fixed_put(GTK_FIXED(fixed), n4, 200, 250);
gtk_fixed_put(GTK_FIXED(fixed), n5, 200, 300);
gtk_fixed_put(GTK_FIXED(fixed), n6, 200, 350);
gtk_fixed_put(GTK_FIXED(fixed), n7, 200, 400);
gtk_fixed_put(GTK_FIXED(fixed), n8, 200, 450);
gtk_fixed_put(GTK_FIXED(fixed), n9, 200, 500);
gtk_fixed_put(GTK_FIXED(fixed), n10, 200, 550);
gtk_fixed_put(GTK_FIXED(fixed), n11, 200, 600);
gtk_fixed_put(GTK_FIXED(fixed), n12, 200, 650);
gtk_fixed_put(GTK_FIXED(fixed), n13, 200, 700);
gtk_fixed_put(GTK_FIXED(fixed), n14, 200, 750);
GtkWidget *label1 = gtk_label_new("clientNo:");
GtkWidget *label2 = gtk_label_new("clientName:");
GtkWidget *label3 = gtk_label_new("clientStreet:");
GtkWidget *label4 = gtk_label_new("clientCity:");
GtkWidget *label5 = gtk_label_new("clientState:");
GtkWidget *label6 = gtk_label_new("clientZipCode:");
GtkWidget *label7 = gtk_label_new("clientTelNo:");
GtkWidget *label8 = gtk_label_new("clientFaxNo:");
GtkWidget *label9 = gtk_label_new("clientWebAddress:");
GtkWidget *label10 = gtk_label_new("contactName:");
GtkWidget *label11 = gtk_label_new("contactTelNo:");
GtkWidget *label12 = gtk_label_new("contactFaxNo:");
GtkWidget *label13 = gtk_label_new("contactEmailAddress:");
GtkWidget *label14 = gtk_label_new("officeNo:");
gtk_fixed_put(GTK_FIXED(fixed), label1, 50, 108);
gtk_fixed_put(GTK_FIXED(fixed), label2, 50, 158);
gtk_fixed_put(GTK_FIXED(fixed), label3, 50, 208);
gtk_fixed_put(GTK_FIXED(fixed), label4, 50, 258);
gtk_fixed_put(GTK_FIXED(fixed), label5, 50, 308);
gtk_fixed_put(GTK_FIXED(fixed), label6, 50, 358);
gtk_fixed_put(GTK_FIXED(fixed), label7, 50, 408);
gtk_fixed_put(GTK_FIXED(fixed), label8, 50, 458);
gtk_fixed_put(GTK_FIXED(fixed), label9, 50, 508);
gtk_fixed_put(GTK_FIXED(fixed), label10, 50, 558);
gtk_fixed_put(GTK_FIXED(fixed), label11, 50, 608);
gtk_fixed_put(GTK_FIXED(fixed), label12, 50, 658);
gtk_fixed_put(GTK_FIXED(fixed), label13, 50, 708);
gtk_fixed_put(GTK_FIXED(fixed), label14, 50, 758);
/*ClientOrder*/
m1 = gtk_entry_new();
m2 = gtk_entry_new();
m3 = gtk_entry_new();
m4 = gtk_entry_new();
m5 = gtk_entry_new();
m6 = gtk_entry_new();
m7 = gtk_entry_new();
m8 = gtk_entry_new();
m9 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), m1, 550, 100);
gtk_fixed_put(GTK_FIXED(fixed), m2, 550, 150);
gtk_fixed_put(GTK_FIXED(fixed), m3, 550, 200);
gtk_fixed_put(GTK_FIXED(fixed), m4, 550, 250);
gtk_fixed_put(GTK_FIXED(fixed), m5, 550, 300);
gtk_fixed_put(GTK_FIXED(fixed), m6, 550, 350);
gtk_fixed_put(GTK_FIXED(fixed), m7, 550, 400);
gtk_fixed_put(GTK_FIXED(fixed), m8, 550, 450);
gtk_fixed_put(GTK_FIXED(fixed), m9, 550, 500);
GtkWidget *label19 = gtk_label_new("orderNo:");
GtkWidget *label20 = gtk_label_new("dateOrder:");
GtkWidget *label21 = gtk_label_new("collectionDate:");
GtkWidget *label22 = gtk_label_new("collectionAddress:");
GtkWidget *label23 = gtk_label_new("delivertDate:");
GtkWidget *label24 = gtk_label_new("delivertAddress:");
GtkWidget *label25 = gtk_label_new("loadWeight:");
GtkWidget *label26 = gtk_label_new("loadDescription:");
GtkWidget *label27 = gtk_label_new("clientNo:");
gtk_fixed_put(GTK_FIXED(fixed), label19, 410, 108);
gtk_fixed_put(GTK_FIXED(fixed), label20, 410, 158);
gtk_fixed_put(GTK_FIXED(fixed), label21, 410, 208);
gtk_fixed_put(GTK_FIXED(fixed), label22, 410, 258);
gtk_fixed_put(GTK_FIXED(fixed), label23, 410, 308);
gtk_fixed_put(GTK_FIXED(fixed), label24, 410, 358);
gtk_fixed_put(GTK_FIXED(fixed), label25, 410, 408);
gtk_fixed_put(GTK_FIXED(fixed), label26, 410, 458);
gtk_fixed_put(GTK_FIXED(fixed), label27, 410, 508);
/*Office*/
o1 = gtk_entry_new();
o2 = gtk_entry_new();
o3 = gtk_entry_new();
o4 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), o1, 880, 100);
gtk_fixed_put(GTK_FIXED(fixed), o2, 880, 150);
gtk_fixed_put(GTK_FIXED(fixed), o3, 880, 200);
gtk_fixed_put(GTK_FIXED(fixed), o4, 880, 250);
GtkWidget *label15 = gtk_label_new("officeNo:");
GtkWidget *label16 = gtk_label_new("officeAddress:");
GtkWidget *label17 = gtk_label_new("officeTelNo:");
GtkWidget *label18 = gtk_label_new("officeFaxNo:");
gtk_fixed_put(GTK_FIXED(fixed), label15, 765, 108);
gtk_fixed_put(GTK_FIXED(fixed), label16, 765, 158);
gtk_fixed_put(GTK_FIXED(fixed), label17, 765, 208);
gtk_fixed_put(GTK_FIXED(fixed), label18, 765, 258);
/*Trailer*/
p1 = gtk_entry_new();
p2 = gtk_entry_new();
p3 = gtk_entry_new();
p4 = gtk_entry_new();
p5 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), p1, 1240, 100);
gtk_fixed_put(GTK_FIXED(fixed), p2, 1240, 150);
gtk_fixed_put(GTK_FIXED(fixed), p3, 1240, 200);
gtk_fixed_put(GTK_FIXED(fixed), p4, 1240, 250);
gtk_fixed_put(GTK_FIXED(fixed), p5, 1240, 300);
GtkWidget *label28 = gtk_label_new("trailerVehLicenseNo:");
GtkWidget *label29 = gtk_label_new("trailerDescription:");
GtkWidget *label30 = gtk_label_new("trailerLength:");
GtkWidget *label31 = gtk_label_new("maxCarryingWeight:");
GtkWidget *label32 = gtk_label_new("officeNo:");
gtk_fixed_put(GTK_FIXED(fixed), label28, 1090, 108);
gtk_fixed_put(GTK_FIXED(fixed), label29, 1090, 158);
gtk_fixed_put(GTK_FIXED(fixed), label30, 1090, 208);
gtk_fixed_put(GTK_FIXED(fixed), label31, 1090, 258);
gtk_fixed_put(GTK_FIXED(fixed), label32, 1090, 308);
/*Unit*/
q1 = gtk_entry_new();
q2 = gtk_entry_new();
q3 = gtk_entry_new();
q4 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), q1, 1240, 400);
gtk_fixed_put(GTK_FIXED(fixed), q2, 1240, 450);
gtk_fixed_put(GTK_FIXED(fixed), q3, 1240, 500);
gtk_fixed_put(GTK_FIXED(fixed), q4, 1240, 550);
GtkWidget *label33 = gtk_label_new("unitVehLicenseNo:");
GtkWidget *label34 = gtk_label_new("unitDescription:");
GtkWidget *label35 = gtk_label_new("maxPayLoad:");
GtkWidget *label36 = gtk_label_new("officeNo:");
gtk_fixed_put(GTK_FIXED(fixed), label33, 1090, 408);
gtk_fixed_put(GTK_FIXED(fixed), label34, 1090, 458);
gtk_fixed_put(GTK_FIXED(fixed), label35, 1090, 508);
gtk_fixed_put(GTK_FIXED(fixed), label36, 1090, 558);
/*TransportReqts*/
r1 = gtk_entry_new();
r2 = gtk_entry_new();
r3 = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), r1, 880, 400);
gtk_fixed_put(GTK_FIXED(fixed), r2, 880, 450);
gtk_fixed_put(GTK_FIXED(fixed), r3, 880, 500);
GtkWidget *label37 = gtk_label_new("unitDescription:");
GtkWidget *label38 = gtk_label_new("maxPayLoad:");
GtkWidget *label39 = gtk_label_new("officeNo:");
gtk_fixed_put(GTK_FIXED(fixed), label37, 765, 408);
gtk_fixed_put(GTK_FIXED(fixed), label38, 765, 458);
gtk_fixed_put(GTK_FIXED(fixed), label39, 765, 508);
GtkWidget *back_Client = gtk_button_new_with_label("INSERT(Client)");
gtk_fixed_put(GTK_FIXED(fixed), back_Client, 200, 50);
g_signal_connect(back_Client, "pressed", G_CALLBACK(insert_Client), NULL);
GtkWidget *back_Office = gtk_button_new_with_label("INSERT(Office)");
gtk_fixed_put(GTK_FIXED(fixed), back_Office, 880, 50);
g_signal_connect(back_Office, "pressed", G_CALLBACK(insert_Office), NULL);
GtkWidget *back_ClientOrder = gtk_button_new_with_label("INSERT(ClientOrder)");
gtk_fixed_put(GTK_FIXED(fixed), back_ClientOrder, 550, 50);
g_signal_connect(back_ClientOrder, "pressed", G_CALLBACK(insert_ClientOrder), NULL);
GtkWidget *back_Trailer = gtk_button_new_with_label("INSERT(Trailer)");
gtk_fixed_put(GTK_FIXED(fixed), back_Trailer, 1240, 50);
g_signal_connect(back_Trailer, "pressed", G_CALLBACK(insert_Trailer), NULL);
GtkWidget *back_Unit = gtk_button_new_with_label("INSERT(Unit)");
gtk_fixed_put(GTK_FIXED(fixed), back_Unit, 1240, 350);
g_signal_connect(back_Unit, "pressed", G_CALLBACK(insert_Unit), NULL);
GtkWidget *back_TransportReqts = gtk_button_new_with_label("INSERT(TransportReqts)");
gtk_fixed_put(GTK_FIXED(fixed), back_TransportReqts, 880, 350);
g_signal_connect(back_TransportReqts, "pressed", G_CALLBACK(insert_TransportReqts), NULL);
gtk_widget_show_all(insert_window);//显示所有控件
gtk_main();
}
//按钮按下的处理函数, gpointer 相当于 void *
void deal_pressed_view(GtkButton *button, gpointer user_data)
{
GtkWidget * fixed;
GtkWidget * label;
const gchar *text = gtk_button_get_label( button );//获得按钮的文本信息
g_print("进入%s\n", text);//g_print() 相当于C语言的 printf(), gchar相当于char
gtk_widget_hide(window);//隐藏菜单函数
view_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口
window_init(view_window);//界面初始化
fixed = gtk_fixed_new();//创建一个固定布局容器fixed
//将fixed添加到login_window中
gtk_container_add(GTK_CONTAINER(view_window), fixed);
label = gtk_button_new_with_label("查找");
name = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), label, 350, 50);
gtk_fixed_put(GTK_FIXED(fixed), name, 150, 50);
GtkWidget *back = gtk_button_new_with_label("返回");
gtk_fixed_put(GTK_FIXED(fixed), back, 50, 20);
g_signal_connect(back, "pressed", G_CALLBACK(deal_pressed_back_view), NULL);
GtkWidget *shuzu[50];
/*table Client*/
GtkWidget *label99 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
GtkWidget *label1 = gtk_label_new("clientNo");
GtkWidget *label2 = gtk_label_new("clientName");
GtkWidget *label3 = gtk_label_new("clientStreet:");
GtkWidget *label4 = gtk_label_new("clientCity:");
GtkWidget *label5 = gtk_label_new("clientState:");
GtkWidget *label6 = gtk_label_new("clientZipCode:");
GtkWidget *label7 = gtk_label_new("clientTelNo:");
GtkWidget *label8 = gtk_label_new("clientFaxNo:");
GtkWidget *label9 = gtk_label_new("clientWebAddress:");
GtkWidget *label10 = gtk_label_new("contactName:");
GtkWidget *label11 = gtk_label_new("contactTelNo:");
GtkWidget *label12 = gtk_label_new("contactFaxNo:");
GtkWidget *label13 = gtk_label_new("contactEmailAddress:");
GtkWidget *label100 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
/*table Office*/
GtkWidget *label14 = gtk_label_new("officeNo:");
GtkWidget *label15 = gtk_label_new("officeNo:");
GtkWidget *label16 = gtk_label_new("officeAddress:");
GtkWidget *label17 = gtk_label_new("officeTelNo:");
GtkWidget *label18 = gtk_label_new("officeFaxNo:");
GtkWidget *label101 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
/*table ClientOrder*/
GtkWidget *label19 = gtk_label_new("officeAddress:");
GtkWidget *label20 = gtk_label_new("officeAddress:");
GtkWidget *label21 = gtk_label_new("officeAddress:");
GtkWidget *label22 = gtk_label_new("officeAddress:");
GtkWidget *label23 = gtk_label_new("officeAddress:");
GtkWidget *label24 = gtk_label_new("officeAddress:");
GtkWidget *label25 = gtk_label_new("officeAddress:");
GtkWidget *label26 = gtk_label_new("officeAddress:");
GtkWidget *label27 = gtk_label_new("officeAddress:");
GtkWidget *label102 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
/*table Trailer*/
GtkWidget *label28 = gtk_label_new("officeAddress:");
GtkWidget *label29 = gtk_label_new("officeAddress:");
GtkWidget *label30 = gtk_label_new("officeAddress:");
GtkWidget *label31 = gtk_label_new("officeAddress:");
GtkWidget *label32 = gtk_label_new("officeAddress:");
GtkWidget *label103 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
/*table Unit*/
GtkWidget *label33 = gtk_label_new("officeAddress:");
GtkWidget *label34 = gtk_label_new("officeAddress:");
GtkWidget *label35 = gtk_label_new("officeAddress:");
GtkWidget *label36 = gtk_label_new("officeAddress:");
GtkWidget *label104 = gtk_label_new("---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------");
/*Cleint weizhi*/
gtk_fixed_put(GTK_FIXED(fixed), label99,100, 110);
gtk_fixed_put(GTK_FIXED(fixed), label1, 100, 150);
gtk_fixed_put(GTK_FIXED(fixed), label2, 300, 150);
gtk_fixed_put(GTK_FIXED(fixed), label3, 500, 150);
gtk_fixed_put(GTK_FIXED(fixed), label4, 700, 150);
gtk_fixed_put(GTK_FIXED(fixed), label5, 900, 150);
gtk_fixed_put(GTK_FIXED(fixed), label6, 1100, 150);
gtk_fixed_put(GTK_FIXED(fixed), label7, 100, 200);
gtk_fixed_put(GTK_FIXED(fixed), label8, 300, 200);
gtk_fixed_put(GTK_FIXED(fixed), label9, 500, 200);
gtk_fixed_put(GTK_FIXED(fixed), label10, 800, 200);
gtk_fixed_put(GTK_FIXED(fixed), label11, 1100, 200);
gtk_fixed_put(GTK_FIXED(fixed), label12, 100, 250);
gtk_fixed_put(GTK_FIXED(fixed), label13, 300, 250);
gtk_fixed_put(GTK_FIXED(fixed), label100, 100, 300);
/*Office weizhi*/
//gtk_fixed_put(GTK_FIXED(fixed), label14, 100, 350);
gtk_fixed_put(GTK_FIXED(fixed), label15, 100, 350);
gtk_fixed_put(GTK_FIXED(fixed), label16, 300, 345);
gtk_fixed_put(GTK_FIXED(fixed), label17, 700, 350);
gtk_fixed_put(GTK_FIXED(fixed), label18,1000, 350);
gtk_fixed_put(GTK_FIXED(fixed), label101, 100, 400);
/*ClientOrder weizhi*/
gtk_fixed_put(GTK_FIXED(fixed), label19, 100, 450);
gtk_fixed_put(GTK_FIXED(fixed), label20, 300, 450);
gtk_fixed_put(GTK_FIXED(fixed), label21, 500, 450);
gtk_fixed_put(GTK_FIXED(fixed), label22, 800, 445);
gtk_fixed_put(GTK_FIXED(fixed), label23, 100, 500);
gtk_fixed_put(GTK_FIXED(fixed), label24, 300, 495);
gtk_fixed_put(GTK_FIXED(fixed), label25, 700, 500);
gtk_fixed_put(GTK_FIXED(fixed), label26, 900, 495);
gtk_fixed_put(GTK_FIXED(fixed), label102, 100, 550);
//gtk_fixed_put(GTK_FIXED(fixed), label27, 700, 500);
/*Trailer*/
gtk_fixed_put(GTK_FIXED(fixed), label28, 100, 600);
gtk_fixed_put(GTK_FIXED(fixed), label29, 400, 595);
gtk_fixed_put(GTK_FIXED(fixed), label30, 700, 595);
gtk_fixed_put(GTK_FIXED(fixed), label31, 1000, 597);
gtk_fixed_put(GTK_FIXED(fixed), label103, 100, 650);
//gtk_fixed_put(GTK_FIXED(fixed), label32, 1000, 597);
/*Unit*/
gtk_fixed_put(GTK_FIXED(fixed), label33, 100, 700);
gtk_fixed_put(GTK_FIXED(fixed), label34, 300, 695);
gtk_fixed_put(GTK_FIXED(fixed), label35, 700, 700);
//gtk_fixed_put(GTK_FIXED(fixed), label35, 1000, 700);
gtk_fixed_put(GTK_FIXED(fixed), label104, 100, 750);
/*Client*/
shuzu[0] = label1;
shuzu[1] = label2;
shuzu[2] = label3;
shuzu[3] = label4;
shuzu[4] = label5;
shuzu[5] = label6;
shuzu[6] = label7;
shuzu[7] = label8;
shuzu[8] = label9;
shuzu[9] = label10;
shuzu[10] = label11;
shuzu[11] = label12;
shuzu[12] = label13;
/*Office*/
shuzu[13] = label14;
shuzu[14] = label15;
shuzu[15] = label16;
shuzu[16] = label17;
shuzu[17] = label18;
/*ClientOrder*/
shuzu[18] = label19;
shuzu[19] = label20;
shuzu[20] = label21;
shuzu[21] = label22;
shuzu[22] = label23;
shuzu[23] = label24;
shuzu[24] = label25;
shuzu[25] = label26;
/*Trailer*/
shuzu[26] = label27;
shuzu[27] = label28;
shuzu[28] = label29;
shuzu[29] = label30;
shuzu[30] = label31;
/*Unit*/
shuzu[31] = label32;
shuzu[32] = label33;
shuzu[33] = label34;
shuzu[34] = label35;
g_signal_connect(label, "pressed", G_CALLBACK(window_view), &shuzu);
gtk_widget_show_all(view_window);//显示所有控件
gtk_main();
}
//查找按键回调函数
void window_view(GtkWidget *button,GtkWidget * shuzu[20])
{
char buf[50];
char *zErrMsg = 0;
int result,i,j;
char *ErrMsg = 0;
char **dbResult=NULL;
int nRow=0,nCloumn;
char *sql;
char *a[1]={"NULL"};
const gchar * ClientNo = gtk_entry_get_text(GTK_ENTRY(name));
g_print("查找的编号为:%s\n", ClientNo);
// sql = sqlite3_mprintf("select * from Client where clientNo ='%s'", ClientNo);
sql = sqlite3_mprintf("select * from Client,Office,ClientOrder,Trailer,Unit where Client.officeNo=Office.officeNo and ClientOrder.clientNo=Client.clientNo and Office.officeNo=Trailer.officeNo and Unit.officeNo=Office.officeNo and Client.clientNo ='%s'", ClientNo);
printf("%s\n",sql);
result = sqlite3_get_table(db, sql, &dbResult, &nRow, &nCloumn, &ErrMsg);
if(nRow != 0)
{
g_print("nRow: %d ||", nRow);
g_print("nColumn: %d\n",nCloumn);
for (i = 0; i < nRow; i++)
{
for (j = 0; j < nCloumn; j++)
{
if (j == 0)
table[j] = sqlite3_mprintf("clientN0: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 1)
table[j] = sqlite3_mprintf("clientName: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 2)
table[j] = sqlite3_mprintf("clientStreet: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 3)
table[j] = sqlite3_mprintf("clientCity: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 4)
table[j] = sqlite3_mprintf("clientState: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 5)
table[j] = sqlite3_mprintf("clientZipCode: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 6)
table[j] = sqlite3_mprintf("clientTelNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 7)
table[j] = sqlite3_mprintf("clientFaxNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 8)
table[j] = sqlite3_mprintf("clientWebAddress: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 9)
table[j] = sqlite3_mprintf("contactName: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 10)
table[j] = sqlite3_mprintf("contactTelNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 11)
table[j] = sqlite3_mprintf("contactFaxNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 12)
table[j] = sqlite3_mprintf("contactEmailAddress: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 13)
table[j] = sqlite3_mprintf("officeNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 14)
table[j] = sqlite3_mprintf("officeNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 15)
table[j] = sqlite3_mprintf("officeAddress: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 16)
table[j] = sqlite3_mprintf("officeTelNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 17)
table[j] = sqlite3_mprintf("officeFaxNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 18)
table[j] = sqlite3_mprintf("orderNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 19)
table[j] = sqlite3_mprintf("dateOrder: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 20)
table[j] = sqlite3_mprintf("collectionDate: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 21)
table[j] = sqlite3_mprintf("collectionAddress: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 22)
table[j] = sqlite3_mprintf("delivertDate: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 23)
table[j] = sqlite3_mprintf("delivertAddress: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 24)
table[j] = sqlite3_mprintf("loadWeight: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 25)
table[j] = sqlite3_mprintf("loadDescription: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 26)
table[j] = sqlite3_mprintf("clientNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 27)
table[j] = sqlite3_mprintf("trailerVehLicenseNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 28)
table[j] = sqlite3_mprintf("trailerDescription: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 29)
table[j] = sqlite3_mprintf("trailerLength: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 30)
table[j] = sqlite3_mprintf("maxCarryingWeight: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 31)
table[j] = sqlite3_mprintf("officeNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 32)
table[j] = sqlite3_mprintf("unitVehLicenseNo: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 33)
table[j] = sqlite3_mprintf("unitDescription: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 34)
table[j] = sqlite3_mprintf("maxPayLoad: %s",dbResult[(i + 1) * nCloumn + j]);
if (j == 35)
table[j] = sqlite3_mprintf("officeNo: %s",dbResult[(i + 1) * nCloumn + j]);
}
}
for (int k = 1; k < 36; k++)
{
gtk_label_set_text(GTK_LABEL(shuzu[k-1]), table[k - 1]);
}
}
else
{
failed_tips();
}
g_print("%s\n ",table[0]);
for (int i = 0; i < 36; i++)
{
g_print("%s ", table[i]);
}
gtk_widget_show_all(shuzu[36]);
sqlite3_free_table(dbResult);
}
//主菜单函数
void window_main()
{
// GtkWidget *window;//初始化窗口
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);//创建窗口
gtk_window_set_default_size(GTK_WINDOW(window), LOGIN_WIDTH,LOGIN_HEIGHT); //设置窗口大小
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);//设置窗口固定
gtk_window_set_title(GTK_WINDOW(window), "Delivery-by-Customer"); //设置标题
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);// 为窗口的 "destroy" 事件设置一个信号处理函数
GtkWidget *fixed = gtk_fixed_new(); //创建一个固定容器
gtk_container_add(GTK_CONTAINER (window), fixed);//固定放进窗口
GtkWidget *title = gtk_label_new("Customer_Shipping_Main_Menu_Ttable");//标题
gtk_fixed_put(GTK_FIXED(fixed), title, 110, 35);
GtkWidget *button1 = gtk_button_new_with_label ("查看总表");//创建按钮
gtk_fixed_put(GTK_FIXED(fixed), button1, 300, 100);//将按钮组装到一个固定容器的窗口中
g_signal_connect(button1, "pressed", G_CALLBACK(deal_pressed_view), NULL);//按钮触发事件
GtkWidget *button2 = gtk_button_new_with_label ("插入数据");//创建按钮
gtk_fixed_put(GTK_FIXED(fixed), button2, 100, 100);//将按钮组装到一个固定容器的窗口中
g_signal_connect(button2, "pressed", G_CALLBACK(deal_pressed_insert), NULL);//按钮触发事件
GtkWidget *button3 = gtk_button_new_with_label ("更新数据");//创建按钮
gtk_fixed_put(GTK_FIXED(fixed), button3, 100, 200);//将按钮组装到一个固定容器的窗口中
g_signal_connect(button3, "pressed", G_CALLBACK(deal_pressed_update), NULL);//按钮触发事件
GtkWidget *button4 = gtk_button_new_with_label ("删除数据");//创建按钮
gtk_fixed_put(GTK_FIXED(fixed), button4, 300, 200);//将按钮组装到一个固定容器的窗口中
g_signal_connect(button4, "pressed", G_CALLBACK(deal_pressed_delete), NULL);//按钮触发事件
gtk_widget_show_all(window);//显示所有控件
gtk_main();//进入事件循环
}
void window_init(GtkWidget *window)
{
//GtkWidget *window;//初始化窗口
//gtk_init(&argc, &argv); // 初始化
gtk_window_set_default_size(GTK_WINDOW(window), WIDTH, HEIGHT); //设置窗口大小
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);//设置窗口固定
gtk_window_set_title(GTK_WINDOW(window), "Delivery-by-Customer"); //设置标题
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);// 为窗口的 "destroy" 事件设置一个信号处理函数
}
//登陆界面
void login()
{
//登录界面窗口
//iGtkWidget * login_window;
//取消按钮
GtkWidget * login_button;
GtkWidget * quxiao_button;
GtkWidget * label;
GtkWidget * image;
GtkWidget * fixed;
//gtk_init(&argc, &argv);
login_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(login_window),"destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_title(GTK_WINDOW(login_window),"登录");
gtk_window_set_default_size(GTK_WINDOW(login_window), LOGIN_WIDTH, LOGIN_HEIGHT);
gtk_window_set_resizable(GTK_WINDOW(login_window), FALSE);//设置窗口固定
gtk_window_set_position(GTK_WINDOW(login_window), GTK_WIN_POS_CENTER);
//创建一个固定布局容器fixed
fixed = gtk_fixed_new();
//将fixed添加到login_window中
gtk_container_add(GTK_CONTAINER(login_window), fixed);
label = gtk_label_new("用户名:");
name = gtk_entry_new();
gtk_fixed_put(GTK_FIXED(fixed), label, 145, 35);
gtk_fixed_put(GTK_FIXED(fixed), name, 200, 30);
label = gtk_label_new("密 码:");
passwd = gtk_entry_new();
//设置行编辑的内容是否可见(不能可视相当于密码模式,看不到文本的内容)
gtk_entry_set_visibility(GTK_ENTRY(passwd), FALSE);
gtk_fixed_put(GTK_FIXED(fixed), label, 150, 105);
gtk_fixed_put(GTK_FIXED(fixed), passwd, 200, 100);
login_button = gtk_button_new_with_label("登 录");
g_signal_connect(login_button, "clicked", G_CALLBACK(login_button_click), NULL);
gtk_fixed_put(GTK_FIXED(fixed), login_button, 150, 180);
quxiao_button = gtk_button_new_with_label("取 消");
g_signal_connect(quxiao_button, "clicked", G_CALLBACK(quxiao_button_click), NULL);
gtk_fixed_put(GTK_FIXED(fixed), quxiao_button, 300, 180);
gtk_widget_show_all(login_window);
gtk_main();
}
//登陆按钮执行操作
void login_button_click(GtkWidget*button, gpointer userdata)
{
const gchar * userName = gtk_entry_get_text(GTK_ENTRY(name));
const gchar * userPassed = gtk_entry_get_text(GTK_ENTRY(passwd));
g_print("用户名是:%s\n", userName);
g_print("用户密码是:%s\n", userPassed);
if(strcmp(userName,name1)==0 && strcmp(passwd1, userPassed)==0)
{
g_print("登录成功!");
gtk_widget_hide(login_window);
window_main();
}
else
{
g_print("登录失败,用户名或密码失败!");
}
}
//取消按钮执行操作
void quxiao_button_click(GtkWidget*button, gpointer userdata)
{
gtk_main_quit();
}
//数据库回调函数
static int callback(void *data, int argc, char **argv, char **azColName)
{
int i;
fprintf(stderr, "%s: ", (const char*)data);
for(i=0; i<argc; i++)
{
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
//数据库以及表格创建函数
int create_database_tables()
{
//sqlite3 *db;
char *zErrMsg = 0;
int rc,rc1,rc2,rc3,rc4,rc5,rc6;
/* Open database */
rc = sqlite3_open("system.db", &db);
if( rc )
{
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return -1;
}
else
{
fprintf(stderr, "Opened database successfully\n");
}
/* Create table Client */
client = "CREATE TABLE Client(" \
"clientNO integer primary key," \
"clientName vchar(20) NOT NULL," \
"clientStreet vchar(20) NOT NULL," \
"clientCity vchar(10) NOT NULL," \
"clientState vchar(10) NOT NULL," \
"clientZipCode char(6) NOT NULL," \
"clientTelNO vchar(11) NOT NULL," \
"clientFaxNO vchar(11) ," \
"clientWebAddress vchar(45) NOT NULL," \
"contactName vchar(20) NOT NULL," \
"contactTelNo vchar(11) ," \
"contactFaxNO vchar(11) ," \
"contactEmailAddress vcharr(30) NOT NULL," \
"officeNo integer NOT NULL," \
"foreign key(officeNo) references Office(officeNo));";
/* Create table Office */
office = "CREATE table Office(" \
"officeNo integer primary key," \
"officeAddress vchar(45) NOT NULL," \
"officeTelNo vchar(11) NOT NULL," \
"officeFaxNo vchar(11) NOT NULL);";
/* Create table ClientOrder */
clientorder = "create table ClientOrder(" \
"orderNO integer primary key," \
"dateOrder vchar(30) NOT NULL," \
"collectionDate vchar(30) NOT NULL," \
"collectionAddress vchar(45) NOT NULL," \
"delivertDate datatime NOT NULL," \
"delivertAddress vchar(45) NOT NULL," \
"loadWeight decimal(10,2) NOT NULL," \
"loadDescription text NOT NULL," \
"clientNo integer NOT NULL," \
"foreign key(clientNo) references Client(clientNo));";
/* Create table Trailer */
trailer = "create table Trailer(" \
"trailerVehLicenseNo integer primary key," \
"trailerDescription text NOT NULL," \
"trailerLength declmal(10,2) NOT NULL," \
"maxCarryingWeight declmal(10,2) NOT NULL," \
"officeNo integer NOT NULL," \
"foreign key(officeNo) references Office(officeNo));";
/* Create table Uint */
unit = "create table Unit(" \
"unitVehLicenseNo integer primary key," \
"unitDescription text NOT NULL," \
"maxPayLoad decimal(10,2) NOT NULL," \
"officeNo integer NOT NULL," \
"foreign key(officeNo) references Office(officeNo));";
/* Create table Uint */
transportreqts = "create table TransportReqts(" \
"TransportReqPartNo integer primary key," \
"unitVehLicenseNo integer NOT NULL," \
"orderNo integer NOT NULL," \
"foreign key(orderNo) references ClientOrder(orderNo));";
"foreign key(unitVehLicenseNo) references Unit(unitVehLicenseNo));";
/* Execute SQL statement */
rc1 = sqlite3_exec(db, client, callback, 0, &zErrMsg);
rc2 = sqlite3_exec(db, office, callback, 0, &zErrMsg);
rc3 = sqlite3_exec(db, clientorder, callback, 0, &zErrMsg);
rc4 = sqlite3_exec(db, trailer, callback, 0, &zErrMsg);
rc5 = sqlite3_exec(db, unit, callback, 0, &zErrMsg);
rc6 = sqlite3_exec(db, transportreqts, callback, 0, &zErrMsg);
if(rc1 == SQLITE_OK && rc2 == SQLITE_OK && rc3 == SQLITE_OK && rc4 == SQLITE_OK && rc5 == SQLITE_OK && rc6 == SQLITE_OK)
//if(rc1 == SQLITE_OK)
//if(rc2 == SQLITE_OK)
//if(rc3 == SQLITE_OK)
//if(rc4 == SQLITE_OK)
// if(rc5 == SQLITE_OK)
//if(rc6 == SQLITE_OK)
{
fprintf(stdout, "Table created successfully\n");
}
else
{
fprintf(stderr, "table error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
/* Create SQL statement */
char *sql_client = "INSERT or ignore INTO Client VALUES (111, '王登涛', '清源街道', '武汉市', '亚洲','中国','15971739828','12345','192.68.1.10','客户运送公司','19202736721','888888','1799055460@qq.com', 222);";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql_client, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Client insert successfully\n");
}
/* Create SQL statement */
char *sql_office = "INSERT or ignore INTO Office VALUES (222, '中南民族大学1栋宿舍', '18181818188','12345');";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql_office, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Office insert successfully\n");
}
/* Create SQL statement */
char *sql_clientorder = "INSERT or ignore INTO ClientOrder VALUES (0123456789, '2023-2-13', '2023-2-14', '湖北省恩施州咸丰县清源将街道','2023-2-15','湖北省恩施州咸丰县清源将街道','11111111.11','货物易碎', 111);";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql_clientorder, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "ClientOrder insert successfully\n");
}
/* Create SQL statement */
char *sql_trailer = "INSERT or ignore INTO Trailer VALUES (12345678, '白蓝相间', '8米','50.05',222);";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql_trailer, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Trailer insert successfully\n");
}
/* Create SQL statement */
char *sql_unit = "INSERT or ignore INTO Unit VALUES (8, '行不更名坐不改姓-单位', '50.05', 222);";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql_unit, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Unit insert successfully\n");
}
/* Create SQL statement */
char *sql_transportreqts = "INSERT or ignore INTO TransportReqts VALUES (123456, 0123456789, 8);";
/* Execute SQL statement */
rc = sqlite3_exec(db, sql_transportreqts, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
fprintf(stdout, "Unit insert successfully\n");
}
}