• ubuntu 下 使用GTK+、sqlite3、c语言的学生系统


    使用GTK+2.0、sqlite3数据库、c语言 的简易的学生管理系统

    实现了基本的增删查改

    效果图:

     

     

     

     代码:

      1 #include <gtk/gtk.h>
      2 #include <stdio.h>
      3 #include <stdlib.h>
      4 #include <unistd.h>
      5 #include "sqlite3.h"
      6 
      7     GtkWidget *entry11 = NULL;
      8     GtkWidget *entry22 = NULL;
      9     GtkWidget *entry33 = NULL;
     10     sqlite3 *db = NULL;
     11 
     12 //回调
     13 
     14 void callback_1(GtkButton *button,gpointer user_data)
     15 {    char **resultp ;
     16     int nrow;
     17     int ncolumn;
     18     const char * entry_1;
     19     const char * entry_2;
     20     char sql[100];
     21     entry_1 = gtk_entry_get_text(GTK_ENTRY(entry11));
     22     entry_2 = gtk_entry_get_text(GTK_ENTRY(entry22));  
     23     sprintf(sql,"select * from root_info where user_name = '%s' and password = '%s';",entry_1,entry_2);
     24     printf("%s 
    ",sql);
     25     int result = 0;
     26     char *errmsg = NULL;
     27     result = sqlite3_open("test.db",&db);
     28     if(result!=SQLITE_OK)
     29     {
     30         printf("open error
    ");
     31         return -1;
     32     }
     33     else printf("succes
    ");
     34     sqlite3_get_table(db,sql,&resultp,&nrow,&ncolumn,&errmsg);
     35     printf("%d
    ",nrow);
     36     printf("%d
    ",ncolumn);
     37     //int q1=nrow;
     38     //int q2=ncolumn;
     39     
     40     
     41     //if(q1 == 1 && q2 == 2)
     42     if(nrow == 1 && ncolumn ==2)
     43     //if(nrow ==1 && ncolumn ==2)
     44     {
     45     printf("====%d
    ",nrow);
     46     printf("====%d
    ",ncolumn);
     47     gtk_widget_hide_all(user_data);
     48         menu();
     49     printf("登陆
    ");
     50     sqlite3_close(db);
     51     }
     52     else
     53     {    printf("%d
    ",nrow);
     54         printf("%d
    ",ncolumn);
     55         printf("登陆失败");
     56         login_warning();
     57         
     58         sqlite3_close(db);
     59     }
     60     
     61         
     62 }
     63 void callback_2(GtkButton *button,gpointer user_data)
     64 {    
     65     insert_view();
     66     
     67     
     68 }
     69 void callback_3(GtkButton *button,gpointer user_data)
     70 {    
     71     select_view();
     72     
     73     
     74 }
     75 void callback_5(GtkButton *button,gpointer user_data)
     76 {    
     77     update_view();
     78     
     79     
     80 }
     81 void callback_4(GtkButton *button,gpointer user_data)
     82 {    
     83     delete_view();
     84     
     85     
     86 }
     87 
     88 
     89 void callback_insert(GtkButton *button,gpointer user_data)
     90 {    
     91     printf("insert
    ");
     92     const char * entry_1;
     93     const char * entry_2;
     94     const char * entry_3;
     95     char sql[100];
     96     entry_1 = gtk_entry_get_text(GTK_ENTRY(entry11));
     97     entry_2 = gtk_entry_get_text(GTK_ENTRY(entry22));
     98     entry_3 = gtk_entry_get_text(GTK_ENTRY(entry33));  
     99     int n = atoi(entry_1);
    100     int j = atoi(entry_3);
    101     sprintf(sql,"insert into user_info values(%d,'%s',%d);",n,entry_2,j);
    102     printf("%s 
    ",sql);
    103     int result = 0;
    104     char *errmsg = NULL;
    105     result = sqlite3_open("test.db",&db);
    106     if(result!=SQLITE_OK)
    107     {
    108         printf("open error
    ");
    109         return -1;
    110     }
    111     else printf("succes");
    112     int ret=sqlite3_exec(db,sql,NULL,NULL,&errmsg);
    113     if(ret == SQLITE_OK)
    114     {
    115         printf("录入成功
    ");
    116     }
    117     sqlite3_close(db);    
    118 }
    119 void callback_delete(GtkButton *button,gpointer user_data)
    120 {
    121     
    122     const char * entry_1;
    123     char sql[100];
    124     entry_1 = gtk_entry_get_text(GTK_ENTRY(entry11));
    125     int n =atoi(entry_1);
    126     sprintf(sql,"delete from user_info where id = %d;",n);
    127     printf("%s
    ",sql);
    128     int result = 0;
    129     char *errmsg = NULL;
    130     result = sqlite3_open("test.db",&db);
    131     if(result!=SQLITE_OK)
    132     {
    133         printf("open error
    ");
    134         return -1;
    135     }
    136     else printf("succes");
    137     int ret=sqlite3_exec(db,sql,NULL,NULL,&errmsg);
    138     if(ret == SQLITE_OK)
    139     {
    140         printf("删除成功
    ");
    141     }
    142     sqlite3_close(db);
    143 
    144 }
    145 void callback_update(GtkButton *button,gpointer user_data)
    146 {    
    147     
    148     const char * entry_1;
    149     const char * entry_2;
    150     const char * entry_3;
    151     char sql[100];
    152     entry_1 = gtk_entry_get_text(GTK_ENTRY(entry11));
    153     entry_2 = gtk_entry_get_text(GTK_ENTRY(entry22));
    154     entry_3 = gtk_entry_get_text(GTK_ENTRY(entry33));  
    155     int n = atoi(entry_1);
    156     int j = atoi(entry_3);
    157     sprintf(sql,"update user_info set grade = %d,name = '%s' where id =%d ;",j,entry_2,n);
    158     printf("%s 
    ",sql);
    159     int result = 0;
    160     char *errmsg = NULL;
    161     result = sqlite3_open("test.db",&db);
    162     if(result!=SQLITE_OK)
    163     {
    164         printf("open error
    ");
    165         return -1;
    166     }
    167     else printf("succes");
    168     int ret=sqlite3_exec(db,sql,NULL,NULL,&errmsg);
    169     if(ret == SQLITE_OK)
    170     {
    171         printf("更新成功
    ");
    172     }
    173     sqlite3_close(db);    
    174 }
    175 int result_find(void *para,int ncolumn,char ** columnvalue,char *columnname[])
    176 {
    177     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    178     GtkWidget *table = gtk_table_new(4, 6, TRUE);
    179     gtk_widget_set_size_request(window,600,500);
    180     gtk_window_set_title(GTK_WINDOW(window), "Student Manger System");
    181     gtk_container_add(GTK_CONTAINER(window), table);
    182     
    183     int i;
    184     char nlable[100];
    185     
    186      GtkWidget *label_1;
    187     GtkWidget *label_2;
    188     for(i = 0;i < ncolumn; i++)
    189     {
    190         label_1 = gtk_label_new("123 ");
    191         gtk_label_set_text(GTK_LABEL(label_1),columnname[i] );
    192         gtk_table_attach_defaults(GTK_TABLE(table),label_1, 2,3, i+1, i+2);
    193         label_2 = gtk_label_new("123 ");
    194         gtk_label_set_text(GTK_LABEL(label_2),columnvalue[i]);
    195         gtk_table_attach_defaults(GTK_TABLE(table),label_2, 3,4, i+1, i+2);
    196         
    197     }
    198     
    199      g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
    200     gtk_widget_show_all(window);
    201     gtk_main();
    202 
    203     
    204     
    205     return 0;
    206 
    207 }
    208 void callback_select_view(GtkButton *button,gpointer user_data)
    209 {
    210     const char * entry_1;
    211     char sql[100];
    212     entry_1 = gtk_entry_get_text(GTK_ENTRY(entry11));
    213     int n =atoi(entry_1);
    214     sprintf(sql,"select * from user_info where id = %d;",n);
    215     printf("%s
    ",sql);
    216     int result = 0;
    217     char *errmsg = NULL;
    218     result = sqlite3_open("test.db",&db);
    219     if(result!=SQLITE_OK)
    220     {
    221         printf("open error
    ");
    222         return -1;
    223     }
    224     else printf("succes");
    225     int ret=sqlite3_exec(db,sql,result_find,NULL,&errmsg);
    226     if(ret == SQLITE_OK)
    227     {
    228         printf("查询成功
    ");
    229     }
    230     sqlite3_close(db);
    231     //select_result_view();
    232     
    233     
    234 }
    235 int main()
    236 {    gtk_init(&argc,&argv);
    237     login();
    238     return 0;
    239 }
    240 
    241 void login(int argc,char *argv[])
    242 {
    243     
    244     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    245     gtk_window_set_title(GTK_WINDOW(window), "Student Manger System");
    246     GtkWidget *table = gtk_table_new(5,5,TRUE);
    247     gtk_widget_set_size_request(window,500,300);
    248     gtk_window_set_resizable(GTK_WINDOW(window), FALSE); 
    249     
    250     GtkWidget *label1 = gtk_label_new("学 生 管 理 系 统");
    251     GtkWidget *label2 = gtk_label_new("版本:awsl 1.0");
    252     GtkWidget *label3 = gtk_label_new("user");
    253     GtkWidget *label4 = gtk_label_new("password");
    254     
    255     
    256     entry11 = gtk_entry_new();
    257     entry22 = gtk_entry_new();
    258     GtkWidget *button1 = gtk_button_new_with_label("登陆");
    259     
    260     gtk_entry_set_text(GTK_ENTRY(entry11),"请输入用户名");
    261     gtk_entry_set_text(GTK_ENTRY(entry22),"请输入密码");
    262     gtk_entry_set_visibility(GTK_ENTRY(entry22),FALSE);
    263     
    264     
    265     
    266     gtk_container_add(GTK_CONTAINER(window),table);
    267     gtk_table_attach_defaults(GTK_TABLE(table),label1,0,5,0,1);
    268     gtk_table_attach_defaults(GTK_TABLE(table),label3,0,1,1,2);
    269     gtk_table_attach_defaults(GTK_TABLE(table),label4,0,1,2,3);
    270     gtk_table_attach_defaults(GTK_TABLE(table),label2,0,5,4,5);
    271     
    272     gtk_table_attach_defaults(GTK_TABLE(table),entry11,1,4,1,2);
    273     gtk_table_attach_defaults(GTK_TABLE(table),entry22,1,4,2,3);
    274     
    275     gtk_table_attach_defaults(GTK_TABLE(table),button1,1,4,3,4);
    276     
    277     
    278     g_signal_connect(button1,"pressed",G_CALLBACK(callback_1),window);
    279     
    280     g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
    281     gtk_widget_show_all(window);
    282     gtk_main();
    283 }
    284 void menu(int argc,char *argv[])
    285 {
    286     
    287     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    288     GtkWidget *table = gtk_table_new(7,7,TRUE);
    289     gtk_widget_set_size_request(window,700,500);
    290     gtk_window_set_title(GTK_WINDOW(window), "Student Manger System");
    291     
    292     GtkWidget *label1 = gtk_label_new("功能列表");
    293     GtkWidget *label2 = gtk_label_new("版本:awsl 1.0");
    294     //GtkWidget *label3 = gtk_label_new("haha");
    295     
    296     GtkWidget *button2 = gtk_button_new_with_label("增添学生信息");
    297     GtkWidget *button3 = gtk_button_new_with_label("查询学生信息");
    298     GtkWidget *button4 = gtk_button_new_with_label("删除学生信息");
    299     GtkWidget *button5 = gtk_button_new_with_label("更新学生信息");
    300     
    301     gtk_container_add(GTK_CONTAINER(window),table);
    302     gtk_table_attach_defaults(GTK_TABLE(table),label1,0,7,0,1);
    303     //gtk_table_attach_defaults(GTK_TABLE(table),label3,1,7,1,7);
    304     
    305     gtk_table_attach_defaults(GTK_TABLE(table),button2,0,7,2,3);
    306     gtk_table_attach_defaults(GTK_TABLE(table),button3,0,7,3,4);
    307     gtk_table_attach_defaults(GTK_TABLE(table),button4,0,7,4,5);
    308     gtk_table_attach_defaults(GTK_TABLE(table),button5,0,7,5,6);
    309     gtk_table_attach_defaults(GTK_TABLE(table),label2,0,7,6,7);
    310     
    311     
    312     g_signal_connect(button2,"pressed",G_CALLBACK(callback_2),window);
    313     g_signal_connect(button3,"clicked",G_CALLBACK(callback_3),window);
    314     g_signal_connect(button4,"clicked",G_CALLBACK(callback_4),window);
    315     g_signal_connect(button5,"clicked",G_CALLBACK(callback_5),window);
    316     
    317     
    318     g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
    319     gtk_widget_show_all(window);
    320     gtk_main();
    321 }
    322 //添加
    323 void insert_view(int argc,char *argv[])
    324 {    
    325     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    326     GtkWidget *table = gtk_table_new(5,6,TRUE);
    327     gtk_widget_set_size_request(window,600,500);
    328     gtk_window_set_title(GTK_WINDOW(window), "Student Manger System");
    329     gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
    330     
    331     entry11 = gtk_entry_new();
    332     entry22 = gtk_entry_new();
    333     entry33 = gtk_entry_new();
    334     
    335     //GtkWidget entry_s [4] = {entry1,entry2,entry3};
    336     
    337     gtk_entry_set_text(GTK_ENTRY(entry11),"10086");
    338     gtk_entry_set_text(GTK_ENTRY(entry22),"ayao");
    339     gtk_entry_set_text(GTK_ENTRY(entry33),"99");
    340     
    341     GtkWidget *label1 = gtk_label_new("id");
    342     GtkWidget *label2 = gtk_label_new("name");
    343     GtkWidget *label3 = gtk_label_new("grade");
    344     GtkWidget *label4 = gtk_label_new("输入添加信息");
    345     GtkWidget *label5 = gtk_label_new("awsl 1.0");
    346     
    347     GtkWidget *button1 = gtk_button_new_with_label("提交");
    348     
    349     gtk_container_add(GTK_CONTAINER(window),table);
    350     gtk_table_attach_defaults(GTK_TABLE(table),label4,0,5,0,1);
    351     gtk_table_attach_defaults(GTK_TABLE(table),label1,0,1,1,2);
    352     gtk_table_attach_defaults(GTK_TABLE(table),label2,0,1,2,3);
    353     gtk_table_attach_defaults(GTK_TABLE(table),label3,0,1,3,4);
    354     gtk_table_attach_defaults(GTK_TABLE(table),label5,0,5,5,6);
    355     
    356     gtk_table_attach_defaults(GTK_TABLE(table),entry11,1,4,1,2);
    357     gtk_table_attach_defaults(GTK_TABLE(table),entry22,1,4,2,3);
    358     gtk_table_attach_defaults(GTK_TABLE(table),entry33,1,4,3,4);
    359     
    360     gtk_table_attach_defaults(GTK_TABLE(table),button1,1,4,4,5);
    361     
    362     
    363     
    364     
    365     
    366     g_signal_connect(button1,"pressed",G_CALLBACK(callback_insert),window);
    367     
    368     
    369     g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
    370     gtk_widget_show_all(window);
    371     gtk_main();
    372     
    373 }
    374 //删除
    375 void delete_view(int argc,char *argv[])
    376 {
    377     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    378     GtkWidget *table = gtk_table_new(5,4,TRUE);
    379     gtk_widget_set_size_request(window,600,400);
    380     gtk_window_set_title(GTK_WINDOW(window), "Student Manger System");
    381     gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
    382     
    383     entry11 = gtk_entry_new();
    384     gtk_entry_set_text(GTK_ENTRY(entry11),"1111");
    385     
    386     GtkWidget *label1 = gtk_label_new("id");
    387     GtkWidget *label2 = gtk_label_new("输入要删除人的id");
    388     GtkWidget *label3 = gtk_label_new("awsl 1.0");
    389     
    390     GtkWidget *button1 = gtk_button_new_with_label("提交");
    391     
    392     gtk_container_add(GTK_CONTAINER(window),table);
    393     gtk_table_attach_defaults(GTK_TABLE(table),label2,0,5,0,1);
    394     gtk_table_attach_defaults(GTK_TABLE(table),label1,0,1,1,2);
    395     gtk_table_attach_defaults(GTK_TABLE(table),label3,0,5,3,4);
    396     
    397     gtk_table_attach_defaults(GTK_TABLE(table),entry11,1,4,1,2);
    398     
    399     gtk_table_attach_defaults(GTK_TABLE(table),button1,1,4,2,3);
    400     
    401     g_signal_connect(button1,"clicked",G_CALLBACK(callback_delete),window);
    402     
    403     g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
    404     gtk_widget_show_all(window);
    405     gtk_main();
    406 }
    407 //更新
    408 void update_view(int argc,char *argv[])
    409 {
    410     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    411     GtkWidget *table = gtk_table_new(5,6,TRUE);
    412     gtk_widget_set_size_request(window,600,500);
    413     gtk_window_set_title(GTK_WINDOW(window), "Student Manger System");
    414     gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
    415     
    416     entry11 = gtk_entry_new();
    417     entry22 = gtk_entry_new();
    418     entry33 = gtk_entry_new();
    419     
    420     gtk_entry_set_text(GTK_ENTRY(entry11),"10086");
    421     gtk_entry_set_text(GTK_ENTRY(entry22),"ayao");
    422     gtk_entry_set_text(GTK_ENTRY(entry33),"99");
    423     
    424     GtkWidget *label1 = gtk_label_new("id");
    425     GtkWidget *label2 = gtk_label_new("name");
    426     GtkWidget *label3 = gtk_label_new("grade");
    427     GtkWidget *label4 = gtk_label_new("输入更新信息");
    428     GtkWidget *label5 = gtk_label_new("awsl 1.0");
    429     
    430     GtkWidget *button1 = gtk_button_new_with_label("提交");
    431     
    432     gtk_container_add(GTK_CONTAINER(window),table);
    433     gtk_table_attach_defaults(GTK_TABLE(table),label4,0,5,0,1);
    434     gtk_table_attach_defaults(GTK_TABLE(table),label1,0,1,1,2);
    435     gtk_table_attach_defaults(GTK_TABLE(table),label2,0,1,2,3);
    436     gtk_table_attach_defaults(GTK_TABLE(table),label3,0,1,3,4);
    437     gtk_table_attach_defaults(GTK_TABLE(table),label5,0,5,5,6);
    438     
    439     gtk_table_attach_defaults(GTK_TABLE(table),entry11,1,4,1,2);
    440     gtk_table_attach_defaults(GTK_TABLE(table),entry22,1,4,2,3);
    441     gtk_table_attach_defaults(GTK_TABLE(table),entry33,1,4,3,4);
    442     
    443     gtk_table_attach_defaults(GTK_TABLE(table),button1,1,4,4,5);
    444     
    445     g_signal_connect(button1,"clicked",G_CALLBACK(callback_update),window);
    446     
    447     g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
    448     gtk_widget_show_all(window);
    449     gtk_main();
    450     
    451 }
    452 //查询
    453 select_view(int argc,char *argv[])
    454 {
    455     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    456     GtkWidget *table = gtk_table_new(5,4,TRUE);
    457     gtk_widget_set_size_request(window,600,400);
    458     gtk_window_set_title(GTK_WINDOW(window), "Student Manger System");
    459     gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
    460     
    461     entry11 = gtk_entry_new();
    462     gtk_entry_set_text(GTK_ENTRY(entry11),"10086");
    463     
    464     GtkWidget *label1 = gtk_label_new("id");
    465     GtkWidget *label2 = gtk_label_new("输入要查询人的id");
    466     GtkWidget *label3 = gtk_label_new("awsl 1.0");
    467     
    468     GtkWidget *button1 = gtk_button_new_with_label("查询");
    469     
    470     gtk_container_add(GTK_CONTAINER(window),table);
    471     gtk_table_attach_defaults(GTK_TABLE(table),label2,0,5,0,1);
    472     gtk_table_attach_defaults(GTK_TABLE(table),label1,0,1,1,2);
    473     gtk_table_attach_defaults(GTK_TABLE(table),label3,0,5,3,4);
    474     
    475     gtk_table_attach_defaults(GTK_TABLE(table),entry11,1,4,1,2);
    476     
    477     gtk_table_attach_defaults(GTK_TABLE(table),button1,1,4,2,3);
    478     
    479     g_signal_connect(button1,"clicked",G_CALLBACK(callback_select_view),window);
    480     
    481     g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
    482     gtk_widget_show_all(window);
    483     gtk_main();
    484 }
    485 //提示
    486 login_warning(int argc,char *argv[])
    487 {
    488     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    489     gtk_widget_set_size_request(window,400,400);
    490     gtk_window_set_title(GTK_WINDOW(window), "Student Manger System");
    491     gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
    492     GtkWidget *label = gtk_label_new("用户名或者密码错误!");
    493     gtk_container_add(GTK_CONTAINER(window),label);
    494     g_signal_connect(window,"destroy",G_CALLBACK(gtk_main_quit),NULL);
    495     gtk_widget_show_all(window);
    496     gtk_main();
    497 }
  • 相关阅读:
    VS编译cmake工程提示 “无法识别的标记”错误解决方法
    Markdown
    latex公式
    ros:time::now()详解
    c++中PROTOBUF遍历所有属性及值
    ORB-SLAM3相关博文
    WSL2安装及GUI图形界面配置踩坑指南
    ROS与PCL数据转换
    手眼标定中AX=XB求解方法及MATLAB、C++代码
    正则表达式用于数据清洗
  • 原文地址:https://www.cnblogs.com/zero-vic/p/11180437.html
Copyright © 2020-2023  润新知