00001
00007 #include <stdlib.h>
00008 #include <stdio.h>
00009 #include<string.h>
00010 #include <mysql/mysql.h>
00011 #include <gtk/gtk.h>
00012 #include <unistd.h>
00013 #include <stdlib.h>
00014 #include <strings.h>
00015 #include <sys/socket.h>
00016 #include <sys/types.h>
00017 #include <arpa/inet.h>
00018 #include <netinet/in.h>
00019
00020 #define BUFFER 4096
00021 int argc1;
00022 char *argv1[];
00023 int ans[10]={3,1,2,4,1,4,2,1,3,3},ans_given[5]={0,0,0,0,0};
00024 int marks=0;
00025 char r[100][200];int rind=0;
00026 MYSQL_ROW sqlrow;
00027 MYSQL *connection1;
00028 MYSQL_RES *res;
00029 GtkWidget *radio1,*radio2,*radio3,*radio4;
00030 GtkWidget *window;
00031 GtkWidget *button;
00032 GtkWidget *box1;
00033 GtkWidget *q1;
00034
00035
00036 void print_result1(GtkWidget *widget1, gpointer data);
00037 void button_toggled1(GtkWidget *widget1, gpointer data);
00038 void button_toggled2(GtkWidget *widget1, gpointer data);
00039 void button_toggled3(GtkWidget *widget1, gpointer data);
00040 void button_toggled4(GtkWidget *widget1, gpointer data);
00041 void end_program(GtkWidget *widget1, gpointer data);
00042 int option1[10]={1,1,1,1,1,1,1,1,1,1};
00043 int i=0;int p=0;
00047 void display_row ()
00048 {
00049 unsigned int field_count;
00050
00051 field_count = 0;
00052 while (field_count < mysql_field_count (connection1))
00053 {
00054
00055 strcpy(r[rind++],sqlrow[field_count]);
00056 field_count++;
00057 }
00058 printf ("\n");
00059 }
00066 int main (int argc, char *argv[])
00067 {
00068 int result;
00069 connection1 = mysql_init(NULL);
00070 argc1=argc;
00071 *argv1=&argv;
00072 if (mysql_real_connect (connection1, "localhost", "cs3002_user", "cs3002_password", "cs3002_database", 0, NULL, 0))
00073 {
00074 result = mysql_query (connection1, "select * from questions");
00075 if (result)
00076 {
00077 printf ("select failed as : %s\n", mysql_error (connection1));
00078 }
00079 else
00080 {
00081 res=mysql_use_result (connection1);
00082 if(res)
00083 {
00084 while((sqlrow = mysql_fetch_row (res)))
00085 display_row();
00086 if (mysql_errno (connection1))
00087 {
00088 printf ("Error occurred while retrieving data : %s\n", mysql_error (connection1));
00089 }
00090 }
00091
00092 mysql_free_result(res);
00093 }
00094 mysql_close (connection1);
00095
00096
00097 gtk_init(&argc, &argv);
00098
00099 window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
00100 gtk_window_set_title(GTK_WINDOW(window), "Question....");
00101 gtk_window_set_default_size(GTK_WINDOW(window),300,200);
00102
00103
00104 box1 = gtk_vbox_new (TRUE, 2);
00105
00106
00107 q1=gtk_label_new(r[p++]);
00108
00109 radio1 = gtk_radio_button_new_with_label (NULL, r[p++]);
00110 g_signal_connect(G_OBJECT(radio1), "toggled", G_CALLBACK(button_toggled1), NULL);
00111
00112 radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),r[p++]);
00113 g_signal_connect(G_OBJECT(radio2), "toggled", G_CALLBACK(button_toggled2), NULL);
00114
00115 radio3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),r[p++]);
00116 g_signal_connect(G_OBJECT(radio3), "toggled", G_CALLBACK(button_toggled3), NULL);
00117
00118 radio4 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),r[p++]);
00119 g_signal_connect(G_OBJECT(radio4), "toggled", G_CALLBACK(button_toggled4), NULL);
00120
00121 button = gtk_button_new_with_label("Submit");
00122 g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(print_result1), NULL);
00123
00124
00125 gtk_box_pack_start (GTK_BOX (box1), q1, TRUE, TRUE, 2);
00126 gtk_box_pack_start (GTK_BOX (box1), radio1, TRUE, TRUE, 2);
00127 gtk_box_pack_start (GTK_BOX (box1), radio2, TRUE, TRUE, 2);
00128 gtk_box_pack_start (GTK_BOX (box1), radio3, TRUE, TRUE, 2);
00129 gtk_box_pack_start (GTK_BOX (box1), radio4, TRUE, TRUE, 2);
00130 gtk_box_pack_start (GTK_BOX (box1), button, TRUE, TRUE, 2);
00131
00132
00133
00134 gtk_container_add (GTK_CONTAINER (window), box1);
00135 gtk_widget_show_all (window);
00136 gtk_main();
00137
00138 }
00139 else
00140 {
00141 fprintf (stderr, "Connection failed\n");
00142 if (mysql_errno (connection1))
00143 {
00144 fprintf (stderr, "Connection error %d: %s\n",
00145 mysql_errno (connection1),
00146 mysql_error (connection1));
00147 }
00148 }
00149
00150 exit(EXIT_SUCCESS);
00151 return 0;
00152 }
00157 void end_program(GtkWidget *widget1, gpointer data)
00158 {
00159
00160
00162
00163
00164 int socket_file_descriptor;
00165
00166
00167 char temp_line[BUFFER];
00168
00169
00170 int character_read;
00171
00172 char buffer[200];
00173
00174
00175 struct sockaddr_in server_address;
00176
00177
00178
00179
00180 socket_file_descriptor = socket(AF_INET, SOCK_STREAM, 0);
00181
00182
00183 if(socket_file_descriptor < 0)
00184 {
00185 fprintf(stderr, "2345: cannot open socket.\n");
00186 exit(1);
00187 }
00188
00189
00190 bzero(&server_address, sizeof(server_address));
00191
00192
00193 server_address.sin_family = AF_INET;
00194
00195
00196
00197
00198
00199 server_address.sin_port = htons(8892);
00200
00201
00202
00203
00204
00205
00206
00207
00208 if(inet_pton(AF_INET, "127.0.0.1", &server_address.sin_addr) <= 0)
00209 {
00210 fprintf(stderr, " the supplied ipv4 address is incorrect.\n");
00211 exit(1);
00212 }
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222 if(connect(socket_file_descriptor, (struct sockaddr *) &server_address, sizeof(server_address)) < 0)
00223 {
00224 fprintf(stderr, " cannot connect to server \n");
00225 exit(1);
00226 }
00227 sprintf(buffer,"%d",marks);
00228 printf("\ntotal marks are:%d\n",marks);
00229 write (socket_file_descriptor, buffer, strlen(buffer));
00230 printf("Reading message from server\n");
00231 temp_line[0]='\0';
00232 character_read = read (socket_file_descriptor, temp_line , BUFFER);
00233
00234
00235
00236 temp_line[character_read]='\0';
00237 GtkWidget *dialog;
00238
00239 gtk_init(&argc1, &argv1);
00240
00241 dialog = gtk_message_dialog_new (NULL,
00242 GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,temp_line);
00243 gtk_dialog_run (GTK_DIALOG (dialog));
00244 gtk_widget_destroy (dialog);
00245 gtk_main_quit();
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255
00256
00257 if(character_read < 0)
00258 {
00259 printf("Read error\n");
00260 exit(1);
00261 }
00262
00263
00264 close(socket_file_descriptor);
00265 gtk_main_quit();
00266
00267
00268
00269 }
00270
00271 void button_toggled1(GtkWidget *widget1, gpointer data)
00272 {
00273 option1[i] = 1;
00274 }
00275
00276 void button_toggled2(GtkWidget *widget1, gpointer data)
00277 {
00278 option1[i] = 2;
00279 }
00280
00281 void button_toggled3(GtkWidget *widget1, gpointer data)
00282 {
00283 option1[i] = 3;
00284 }
00285 void button_toggled4(GtkWidget *widget1, gpointer data)
00286 {
00287 option1[i] = 4;
00288 }
00289
00294 void print_result1(GtkWidget *widget1, gpointer data)
00295 {
00296 if(i<9)
00297 {
00298
00299 i++;
00300
00301 gtk_container_remove(GTK_CONTAINER (window),box1);
00302 box1 = gtk_vbox_new (TRUE, 2);
00303
00304 q1=gtk_label_new(r[p++]);
00305
00306 radio1 = gtk_radio_button_new_with_label (NULL, r[p++]);
00307 g_signal_connect(G_OBJECT(radio1), "toggled", G_CALLBACK(button_toggled1), NULL);
00308
00309 radio2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),r[p++]);
00310 g_signal_connect(G_OBJECT(radio2), "toggled", G_CALLBACK(button_toggled2), NULL);
00311
00312 radio3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),r[p++]);
00313 g_signal_connect(G_OBJECT(radio3), "toggled", G_CALLBACK(button_toggled3), NULL);
00314
00315 radio4 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (radio1),r[p++]);
00316 g_signal_connect(G_OBJECT(radio4), "toggled", G_CALLBACK(button_toggled4), NULL);
00317
00318 button = gtk_button_new_with_label("Submit");
00319 g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(print_result1), NULL);
00320
00321
00322 gtk_box_pack_start (GTK_BOX (box1), q1, TRUE, TRUE, 2);
00323 gtk_box_pack_start (GTK_BOX (box1), radio1, TRUE, TRUE, 2);
00324 gtk_box_pack_start (GTK_BOX (box1), radio2, TRUE, TRUE, 2);
00325 gtk_box_pack_start (GTK_BOX (box1), radio3, TRUE, TRUE, 2);
00326 gtk_box_pack_start (GTK_BOX (box1), radio4, TRUE, TRUE, 2);
00327 gtk_box_pack_start (GTK_BOX (box1), button, TRUE, TRUE, 2);
00328 gtk_container_add (GTK_CONTAINER (window), box1);
00329 gtk_widget_show_all (window);
00330 }
00331 else
00332 {
00333 gtk_container_remove(GTK_CONTAINER (window),box1);
00334 box1 = gtk_vbox_new (TRUE, 2);
00335
00336 int h=0;
00337 for(h=0;h<10;h++)
00338 {
00339 if(ans[h] == option1[h])
00340 marks++;
00341
00342 }
00343 button = gtk_button_new_with_label("SUBMIT EXAM");
00344 g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(end_program), GTK_OBJECT(window));
00345 gtk_box_pack_start (GTK_BOX (box1), button, TRUE, TRUE, 2);
00346 gtk_container_add (GTK_CONTAINER (window), box1);
00347 gtk_widget_show_all (window);
00348
00349 }
00350 }