【linux下用C语言编写带图形界面的成绩管理系统附带源代码】

2019-07-13 05:51发布


linux下用C语言编写带图形界面的成绩管理系统附带源代码:(下面内容请配合源代码看    源代码下载地址:         点击打开链接            或留下联系方式,发给你 一、题目内容    嵌入式Linux数据库编程,用C实现成绩管理系统,通过图形化界面查询。 二、设计框架 (一)登陆界面     输入账号,密码后,如果账号密码匹配则进入系统,否则弹出错误提示框,提醒登陆用户账户或密码错误,请重新输入。 (二)功能界面    用户可选择相应的功能进行操作。功能界面分为学生基本信息查询,学生信息添加,学生信息修改和按条件查询。 (三)学生基本信息查询    在学学号处输入学号,即可查看学生个人信息。括学生姓名,性别,各科成绩等。 (四)学生个人信息添加    在学生个人信息添加模块中,我们先在每个选项中输入相应的值,最后按确认即可完成添加。 (五)学生个人信息修改     我们通过此模块,我们可以对已存在的学生信息进行更改,只需在相应的选项中按要求输入,即可完成更改。   (六)按条件查询信息 我们按要求输入我们需要查询对象满足的条件,最后按开始,即可查看满足要求的信息。 三、设计详细过程 (一)登陆界面 1.实现功能 输入账号,密码后,如果账号密码匹配则进入系统,否则弹出错误提示框,提醒登陆用户账户或密码错误,请重新输入。 2.设计思路 main()函数主要是画出用户文本框的和密码输入文本框,和一个“登陆”按钮,当用户按下确认是,就会触发按钮时间,调用callback_buttton()函数对按钮事件进行响应。初始设置用户名为:cyp,密码为:123。 3.成果展示 (一)功能界面 1.实现功能     用户可选择相应的功能进行操作。功能界面分为学生基本信息查询,学生信息添加,学生信息修改和按条件查询。     2.设计思路 calllback_button()函数主要是对输入界面的响应。获取用户输入的账号和密码,并进行判断,如果匹配则进入功能界面,否则弹出提示框,提示用户密码或账号错误。功能界面主要是四个按钮,按钮被绑定相应的函数。 3.成果展示  


(三)学生基本信息查询 1.实现功能 输在学学号处输入学号,即可查看学生个人信息。括学生姓名,性别,各科成绩等。     2.设计思路     callback_button1()是对查看个人信息按钮事件的响应,画出成绩按输入学号查询的界面,包括个人所有信息。在这个界面中的“确定”按钮绑定函数lookfor(),并作出相应的处理。    lookfor()函数主要是打开学生成绩管理数据库,并按照用户输入的学号,并根据学号信息生成相应的sql语句,通过数据库查询成绩,如果没有查找到相关信息,则输出提示框提示用户查询失败,否则就将查询到的信息显示到界面中。 3.成果展示    (四)学生个人信息添加 1.实现功能 输在学生个人信息添加模块中,我们先在每个选项中输入相应的值,最后按确认即可完成添加。     2.设计思路 callback_button2()是对查看个人信息添加按钮的事件响应,画出成绩插入的界面,包括个人所有信息。在这个界面中的“确定”按钮绑定函数lookfor1(),并作出相应的处理。       lookfor1()函数主要获取用户的输入的个人信息,如果某些选项没有输入,则表示此项为默认值,根据用户的输入信息处理成的数据库插入语句,用sqlite3_exec()执行sql语句,根据插入情况,弹出插入失败或成功的提示框。 3.成果展示
(五)学生个人信息更改 1.实现功能     我们通过此模块,我们可以对已存在的学生信息进行更改,只需在相应的选项中按要求输入,即可完成更改。     2.设计思路     calllback_button3()函数主要是对输入界面的个人信息修改按钮响应。画出用户的个人信息输入界面,具体的修改过程由本界面中“确认”按钮绑定函数lookfor2()完成。     lookfor2()函数的先根据输入的学号,查找相应的信息。在将从界面用户输入将要修改的信息,如果某项输入为空,则有查找出原来的信息项代替,根据这些信息形成sql插入语句,先把此学号的个人信息删除,再将我们得到的sql语句用sqlite3_exec()完成插入,即可完成用户的信息修改。 3.成果展示
  (六)按条件查询个人信息 1.实现功能     我们按要求输入我们需要查询对象满足的条件,最后按开始,即可查看满足要求的信息。     2.设计思路     calllback_button4()函数主要是对功能界面的按条件查询个人信息按钮响应。主要是画出界面,包括用户条件选择组成部分,选择显示选项部分,和显示部分组成。按下“开始匹配”按钮后,就开始打开数据库,按条件查询,并作出将查询的结果显示到界面上,显示界面是滚动类型界面。    lookfor4()函数主要是从界面获取用户需要显示的条件信息,并根据条件形成sql语句,从数据库中查询信息,并将获得信息显示到界面中。 3.成果展示  
 
                附录: 1.参考文献 [1]杜华 《Linux编程技术详解》人民邮电出版社 2007.11 [2]赵廷涛《Linux下的MySQL数据库编程》清华大学出版社 2010.6. [3] http://blog.csdn.net/tianyou121/article/details/6104317 [4]http://www.sqlite.org/download.html [5]http://linger-yan.iteye.com/blog/1571895 2.部分源代码: /*************************************************************************    > File Name: student_gtk.c    > Author: maple    > Mail: deadlysins.sx@gmail.com    > Created Time: 2015骞?4鏈?2鏃?鏄熸湡鏃?14鏃?4鍒?2绉?************************************************************************/   #include #include #include #include #include void callback_button(GtkWidget*btn,GtkWidget *entry[3]); char * str_str(char *A,char *B); char *str_filled(char *str); void callback_button1(GtkWidget *btn); void callback_button2(GtkWidget *btn); void callback_button3(GtkWidget *btn); void callback_button4(GtkWidget *btn);   static gboolean release_resourse(GtkWidget*widget,GdkEvent *event,gpointer data); void lookfor(GtkWidget *btn,GtkWidget*shuzu[7]); void lookfor1(GtkWidget *btn,GtkWidget*shuzu[7]); void lookfor2(GtkWidget *btn,GtkWidget*shuzu[7]); void lookfor3(GtkWidget *btn,int n); void lookfor4(GtkWidget *btn,GtkWidget*shuzu[7]); char*table[7]={"","","","","","",""}; int xuanzhong[6]={0,0,0,0,0,0}; GtkWidget *shuzu[7]; char *temp=""; GtkTextBuffer *buffer; int main(int argc,char* argv[]) {  GtkWidget *wnd;  GtkWidget *label;  GtkWidget *label1;  GtkWidget *btn1;  GtkWidget *fixed;  GtkWidget *entry1;  GtkWidget *entry2;  GtkWidget *entry[3];    gtk_init(&argc,&argv);   wnd= gtk_window_new(GTK_WINDOW_TOPLEVEL);  gtk_window_set_title((GtkWindow*)wnd,"鎴愮哗绠$悊绯荤粺鐧诲綍");  gtk_widget_set_usize(wnd,500,200);  gtk_container_set_border_width(GTK_CONTAINER(wnd),15);    fixed = gtk_fixed_new();  gtk_container_add(GTK_CONTAINER(wnd),fixed);    label = gtk_label_new("鐢ㄦ埛");  label1 = gtk_label_new("瀵嗙爜");  btn1 = gtk_button_new_with_label("鐧诲綍");  entry1 = gtk_entry_new_with_max_length(20);  entry2 = gtk_entry_new_with_max_length(20);  gtk_fixed_put(GTK_FIXED(fixed),label,80,40);  gtk_fixed_put(GTK_FIXED(fixed),label1,80,80);  gtk_fixed_put(GTK_FIXED(fixed),btn1,265,120);  gtk_fixed_put(GTK_FIXED(fixed),entry1,150,40);  gtk_fixed_put(GTK_FIXED(fixed),entry2,150,80);  gtk_entry_set_visibility(entry2,FALSE);  entry[0] = entry1;  entry[1] = entry2;  entry[2] = wnd;  g_signal_connect(G_OBJECT(btn1),"pressed",G_CALLBACK(callback_button),&entry);  g_signal_connect(G_OBJECT(wnd),"delete_event",G_CALLBACK(release_resourse),NULL);  gtk_widget_show_all(wnd);  gtk_main();  return 0; } //鐧诲綍鎴愬姛鍑芥暟////////////////////////////////////////////////// void callback_button(GtkWidget*btn,GtkWidget *entry[3]) {  char *login = NULL;  char *password = NULL;  gboolean btn_state;  login = gtk_entry_get_text((GtkEntry *)entry[0]);  password = gtk_entry_get_text((GtkEntry *)entry[1]);  if(strcmp(login,"cyp")==0&&strcmp(password,"123")==0)   {          GtkWidget *wnd;          GtkWidget *label;          GtkWidget *btn1;          GtkWidget *btn2;          GtkWidget *btn3;          GtkWidget *btn4;          GtkWidget *fixed;          wnd = gtk_window_new(GTK_WINDOW_TOPLEVEL);         gtk_window_set_title((GtkWindow*)wnd," 鐧诲綍鎴愬姛");         gtk_widget_set_usize(wnd,500,400);         gtk_container_set_border_width(GTK_CONTAINER(wnd),15);            fixed = gtk_fixed_new();          gtk_container_add(GTK_CONTAINER(wnd),fixed);                 btn1 = gtk_button_new_with_label("鏌ョ湅涓汉淇℃伅");          btn2 = gtk_button_new_with_label("娣诲姞涓汉淇℃伅");          btn3 = gtk_button_new_with_label("淇敼涓汉淇℃伅");          btn4 = gtk_button_new_with_label("鏉′欢鏌ヨ淇℃伅");          label = gtk_label_new("娆㈣繋浣跨敤瀛︾敓鎴愮哗鏌ヨ绯荤粺");            gtk_fixed_put(GTK_FIXED(fixed),label,40,20);          gtk_fixed_put(GTK_FIXED(fixed),btn1,60,100);          gtk_fixed_put(GTK_FIXED(fixed),btn2,300,100);          gtk_fixed_put(GTK_FIXED(fixed),btn3,60,200);          gtk_fixed_put(GTK_FIXED(fixed),btn4,300,200);      release_resourse(entry[2],NULL,NULL);         g_signal_connect(G_OBJECT(wnd),"delete_event",G_CALLBACK(release_resourse),NULL);         g_signal_connect(G_OBJECT(btn1),"pressed",G_CALLBACK(callback_button1),NULL);           g_signal_connect(G_OBJECT(btn2),"pressed",G_CALLBACK(callback_button2),NULL);          g_signal_connect(G_OBJECT(btn3),"pressed",G_CALLBACK(callback_button3),NULL);          g_signal_connect(G_OBJECT(btn4),"pressed",G_CALLBACK(callback_button4),NULL);           gtk_widget_show_all(wnd);         gtk_main();   }  else   {          GtkWidget *dialog;          GtkWidget *label;          dialog = gtk_dialog_new();         gtk_window_set_title(GTK_WINDOW(dialog),"閿欒鎻愮ず");          gtk_widget_set_usize(dialog,300,100);          label = gtk_label_new("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒锛佽閲嶆柊杈撳叆");          gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),label,TRUE,TRUE,0);      g_signal_connect(G_OBJECT(dialog),"delete_event",G_CALLBACK(release_resourse),NULL);      gtk_widget_show_all(dialog);          gtk_main();   } } ////////////绐楀彛鍏抽棴鍑芥暟///////////////////////////////// static gboolean release_resourse(GtkWidget*widget,GdkEvent *event,gpointer data) {        gtk_main_quit();        returnFALSE; } //////////涓汉淇℃伅鏌ョ湅//////////////////////////////////////// void callback_button1(GtkWidget *btn) {      GtkWidget *wnd;          GtkWidget *label;          GtkWidget *label1;          GtkWidget *label2;          GtkWidget *label3;          GtkWidget *label4;      GtkWidget *label5;      GtkWidget *label6;      char *label_table[6];          GtkWidget *btn1;      GtkWidget *btn2;          GtkWidget *btn3;          GtkWidget *entry;          GtkWidget *fixed;       GtkWidget *shuzu[8];                 wnd= gtk_window_new(GTK_WINDOW_TOPLEVEL);         gtk_window_set_title((GtkWindow*)wnd,"涓汉淇℃伅鏌ョ湅");         gtk_widget_set_usize(wnd,400,600);         gtk_container_set_border_width(GTK_CONTAINER(wnd),15);            fixed = gtk_fixed_new();          gtk_container_add(GTK_CONTAINER(wnd),fixed);             entry = gtk_entry_new_with_max_length(20);          btn1 = gtk_button_new_with_label("纭畾");         // btn2 = gtk_button_new_with_label("涓婁竴涓?);          //btn3 = gtk_button_new_with_label("涓嬩竴涓?);          label = gtk_label_new("瀛﹀彿");          label1 = gtk_label_new("瀛﹀彿");          label2 = gtk_label_new("濮撳悕");          label3 = gtk_label_new("鎬у埆");          label4 = gtk_label_new("璇枃");          label5 = gtk_label_new("鏁板");          label6 = gtk_label_new("澶栬");            gtk_fixed_put(GTK_FIXED(fixed),label,40,40);          gtk_fixed_put(GTK_FIXED(fixed),btn1,300,40);         //gtk_fixed_put(GTK_FIXED(fixed),btn2,40,340);          gtk_fixed_put(GTK_FIXED(fixed),entry,100,40);         //gtk_fixed_put(GTK_FIXED(fixed),btn3,300,340);          gtk_fixed_put(GTK_FIXED(fixed),label1,60,100);         gtk_fixed_put(GTK_FIXED(fixed),label2,60,140);         gtk_fixed_put(GTK_FIXED(fixed),label3,60,180);         gtk_fixed_put(GTK_FIXED(fixed),label4,60,220);         gtk_fixed_put(GTK_FIXED(fixed),label5,60,260);          gtk_fixed_put(GTK_FIXED(fixed),label6,60,300);                   shuzu[0]=entry;          shuzu[1]=label1;          shuzu[2]=label2;          shuzu[3]=label3;          shuzu[4]=label4;          shuzu[5]=label5;          shuzu[6]=label6;          shuzu[7]=wnd;         g_signal_connect(G_OBJECT(btn1),"pressed",G_CALLBACK(lookfor),&shuzu);         g_signal_connect(G_OBJECT(wnd),"delete_event",G_CALLBACK(release_resourse),NULL);          gtk_widget_show_all(wnd);         gtk_main(); } //////////鏁版嵁搴撲釜浜轰俊鎭煡璇㈠嚱鏁?////////////////////////  void lookfor(GtkWidget *btn,GtkWidget *shuzu[8]) {    int k;     char*temp=NULL;        sqlite3*pdb = NULL;        sqlite3_open("student_base",&pdb);        char*sql = "select * from student where id ='2012211564'";        char*ErrMsg = 0;        intresult,i,j;        char**dbResult=NULL;        intnRow=0,nCloumn;        GtkEntry*entry = (GtkEntry*)shuzu[0] ;    const gchar *id = gtk_entry_get_text(entry);        sql=str_str("select * from student where id ='",id);        sql=str_str(sql,"'");    printf("%s ",sql);        result= sqlite3_get_table(pdb,sql,&dbResult,&nRow,&nCloumn,&ErrMsg);          if(nRow==0)        {          GtkWidget *dialog;          GtkWidget *label;          dialog = gtk_dialog_new();         gtk_window_set_title(GTK_WINDOW(dialog),"閿欒鎻愮ず");          gtk_widget_set_usize(dialog,200,200);          label = gtk_label_new("鏌ヨ澶辫触锛?);         gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),label,TRUE,TRUE,0);      g_signal_connect(G_OBJECT(dialog),"delete_event",G_CALLBACK(release_resourse),NULL);      gtk_widget_show_all(dialog);          gtk_main();        }        else        {               for(i = 0;i < nRow;i++)               for(j = 0;j < nCloumn;j++)               {                if(j==0)                table[j]=str_str("瀛﹀彿锛?",dbResult[(i+1)*nCloumn+j]);                if(j==1)                table[j]=str_str("濮撳悕锛?",dbResult[(i+1)*nCloumn+j]);                if(j==2)                table[j]=str_str("鎬у埆锛?",dbResult[(i+1)*nCloumn+j]);                if(j==3)                table[j]=str_str("璇枃锛?",dbResult[(i+1)*nCloumn+j]);                if(j==4)                table[j]=str_str("鏁板锛?",dbResult[(i+1)*nCloumn+j]);                if(j==5)                table[j]=str_str("澶栬锛?",dbResult[(i+1)*nCloumn+j]);               }        } for (k=1;k<7;k++)  gtk_label_set_text(GTK_LABEL(shuzu[k]),table[k-1]);  gtk_widget_show_all(shuzu[7]);  sqlite3_free_table(dbResult);  sqlite3_close(pdb); } //////////瀛楃娴嬭繛鎺?////////////////////////////////////////////////////// char *str_str(char *A,char *B) {                 int i = 0,j=0;               int a=strlen(A);               int b=strlen(B);               char *ptr = NULL;               ptr = malloc((a+b+1)*sizeof(char));               while(A[i]!='