基于GTK+的单词数值计算器.docx
《基于GTK+的单词数值计算器.docx》由会员分享,可在线阅读,更多相关《基于GTK+的单词数值计算器.docx(10页珍藏版)》请在冰豆网上搜索。
基于GTK+的单词数值计算器
Linux综合性实验报告
一实验题目:
二实验任务要求:
1、按照规则计算单词的值,如果ABCDEFGHIJKLMNOPQRSTUVWXYZ26个字母(全部用大写)的值分别为1234567891011121314151617181920212223242526,
如
WINJACK这个单词的值就为W+I+N+J+A+C+K=23+9+14+10+1+3+11=71%
HARDWORK=H+A+R+D+W+O+R+K=8+1+18+4+23+15+18+11=98%
KNOWLEDGE=K+N+O+W+L+E+D+G+E=11+14+15+23+12+5+4+7+5=96%
LOVE=L+O+V+E=12+15+22+5=54%
LUCK=L+U+C+K=12+21+3+11=47%
ATTITUDE=A+T+T+I+T+U+D+E=1+20+20+9+20+21+4+5=100%
2、程序的界面布局参考如下图,在第一个单行文本框输入一单词,点击“计算”按钮,按照以上算法计算出该单词的值。
3、如果在最下面的单行文本框输入一个文件路径,此文件每行记录一个单词,那么经过程序计算出各个单词的值,并把结果输出到当前目录下result.txt文件中。
如果文件不存在,应该提示错误。
三程序代码:
#include
GtkWidget*entry_value;
GtkWidget*entry_file_path;
GtkWidget*label_error;
intget_value(char*String)//gettheworld'svalue
{
inti,value=0,length=strlen(String);
for(i=0;i{value=value+String[i]-64;//'A'=1}returnvalue;}voidbutton_ok_clicked(GtkWidget*widget,gpointerdata)//theeventactionwhen//button_onwasclicked{constchar*input_file;//textofentry_file_pathFILE*source,*result;//pointerofsourcefileandresultfilechartemp,array[100][100];//sourcewordsinti,j,length;input_file=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));//getfilepathg_print("%s\n",input_file);source=fopen(input_file,"r");if(!source){g_print("Thefileisnotexist!!!");return;gtk_label_set_text(GTK_LABEL((GtkWidget*)label_error),error_message);}//iffilecannotbefoundshowerrormessageelse{g_print("success!!!");gtk_label_set_text(GTK_LABEL((GtkWidget*)label_error),success_message);}for(i=0;;i++){for(j=0;;j++){temp=fgetc(source);if(temp==10){array[i][j]='\0';break;}elseif(temp==EOF)break;elsearray[i][j]=temp;}if(temp==EOF)break;}length=i;result=fopen("/root/result.txt","w+");for(i=0;i{g_print("%s\n",array[i]);fprintf(result,"%d\n",get_value(array[i]));}fclose(result);fclose(source);}voidon_delete(GtkWidget*window,GdkEvent*event,gpointerdata)//quitfrommain{gtk_main_quit();}voidbutton_computing_clicked(GtkWidget*widget,gpointerdata)//computethevalueofthdwordthatwasinputindata{constchar*input_text;constchar*output_text;input_text=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));//getthewordsprintf(output_text,"%d",get_value(input_text));//getvalueofwordandchangtoStringformatgtk_entry_set_text(GTK_ENTRY((GtkWidget*)entry_value),output_text);//showthevalueonentry_value}intmain(intargc,char*argv[]){GtkWidget*window;GtkWidget*label;GtkWidget*label_input;GtkWidget*label_value;GtkWidget*label_file_path;GtkWidget*entry_input;GtkWidget*button_computing;GtkWidget*button_ok;GtkWidget*vbox;GtkWidget*hbox_1;GtkWidget*hbox_2;GtkWidget*hbox_3;GtkWidget*hbox_4;GtkWidget*hbox_5;gtk_init(&argc,&argv);window=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window),"ValueofWord!");gtk_container_set_border_width(GTK_CONTAINER(window),10);g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(on_delete),NULL);label_input=gtk_label_new("请输入单词:");label_value=gtk_label_new("该单词的值");label_file_path=gtk_label_new("请输入文件路径:");label_error=gtk_label_new("");button_computing=gtk_button_new_with_label("计算");button_ok=gtk_button_new_with_label("确定");entry_input=gtk_entry_new();entry_value=gtk_entry_new();entry_file_path=gtk_entry_new();vbox=gtk_vbox_new(FALSE,5);hbox_1=gtk_hbox_new(TRUE,2);hbox_2=gtk_hbox_new(TRUE,2);hbox_3=gtk_hbox_new(TRUE,2);hbox_4=gtk_hbox_new(TRUE,2);hbox_5=gtk_hbox_new(TRUE,2);gtk_box_pack_start(GTK_BOX(hbox_1),label_input,TRUE,TRUE,0);gtk_box_pack_start(GTK_BOX(hbox_1),gtk_label_new(""),TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_2),entry_input,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_2),button_computing,TRUE,TRUE,0);gtk_box_pack_start(GTK_BOX(hbox_3),label_value,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_3),entry_value,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_4),label_file_path,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_4),gtk_label_new(""),TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_5),entry_file_path,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_5),button_ok,TRUE,TRUE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_1,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_2,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_3,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),gtk_label_new(""),TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_4,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_5,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX()vbox,label_error,TRUE,FALSE,0);g_signal_connect(G_OBJECT(button_computing),"clicked",G_CALLBACK(button_computing_clicked),entry_input);g_signal_connect(G_OBJECT(button_ok),"clicked",G_CALLBACK(button_ok_clicked),entry_file_path);gtk_container_add(GTK_CONTAINER(window),vbox);gtk_widget_show_all(window);gtk_main();return0;}四程序说明及流程图:A、全局变量:GtkWidget*entry_value;//输入单词用的文本框GtkWidget*entry_file_path;//输入文件名用的文本框GtkWidget*label_error;//显示成功或错误信息用的label部件 B、相关函数说明:intget_value(char*String);//计算给定单词的值voidbutton_ok_clicked(GtkWidget*widget,gpointerdata)//ok按钮按下voidon_delete(GtkWidget*window,GdkEvent*event,gpointerdata);//程序退出voidbutton_computing_clicked(GtkWidget*widget,gpointerdata);//计算按钮按下 C、流程图:(a)intget_value(char*String)对应的流程图:(b)voidbutton_computing_clicked(GtkWidget*widget,gpointerdata)对应流程图: (c)voidbutton_ok_clicked(GtkWidget*widget,gpointerdata)对应流程图:五运行效果图:(1)输入单个单词,直接计算出其值并显示(2)输入的文件不存在时,给出“Thefileisnotexist”的提示信息(3)输入的文件存在,操作成功,给出“Theresulthasbeenwrritentoresult.txt”的信息 (4)读取文件并成功进行计算后所得的结果
value=value+String[i]-64;//'A'=1
}
returnvalue;
voidbutton_ok_clicked(GtkWidget*widget,gpointerdata)//theeventactionwhen//button_onwasclicked
constchar*input_file;//textofentry_file_path
FILE*source,*result;//pointerofsourcefileandresultfile
chartemp,array[100][100];//sourcewords
inti,j,length;
input_file=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));//getfilepath
g_print("%s\n",input_file);
source=fopen(input_file,"r");
if(!
source)
g_print("Thefileisnotexist!
!
");
return;
gtk_label_set_text(GTK_LABEL((GtkWidget*)label_error),error_message);
}//iffilecannotbefoundshowerrormessage
else
g_print("success!
gtk_label_set_text(GTK_LABEL((GtkWidget*)label_error),success_message);
for(i=0;;i++)
for(j=0;;j++)
temp=fgetc(source);
if(temp==10){array[i][j]='\0';break;}
elseif(temp==EOF)break;
elsearray[i][j]=temp;
if(temp==EOF)break;
length=i;
result=fopen("/root/result.txt","w+");
for(i=0;i{g_print("%s\n",array[i]);fprintf(result,"%d\n",get_value(array[i]));}fclose(result);fclose(source);}voidon_delete(GtkWidget*window,GdkEvent*event,gpointerdata)//quitfrommain{gtk_main_quit();}voidbutton_computing_clicked(GtkWidget*widget,gpointerdata)//computethevalueofthdwordthatwasinputindata{constchar*input_text;constchar*output_text;input_text=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));//getthewordsprintf(output_text,"%d",get_value(input_text));//getvalueofwordandchangtoStringformatgtk_entry_set_text(GTK_ENTRY((GtkWidget*)entry_value),output_text);//showthevalueonentry_value}intmain(intargc,char*argv[]){GtkWidget*window;GtkWidget*label;GtkWidget*label_input;GtkWidget*label_value;GtkWidget*label_file_path;GtkWidget*entry_input;GtkWidget*button_computing;GtkWidget*button_ok;GtkWidget*vbox;GtkWidget*hbox_1;GtkWidget*hbox_2;GtkWidget*hbox_3;GtkWidget*hbox_4;GtkWidget*hbox_5;gtk_init(&argc,&argv);window=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_title(GTK_WINDOW(window),"ValueofWord!");gtk_container_set_border_width(GTK_CONTAINER(window),10);g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(on_delete),NULL);label_input=gtk_label_new("请输入单词:");label_value=gtk_label_new("该单词的值");label_file_path=gtk_label_new("请输入文件路径:");label_error=gtk_label_new("");button_computing=gtk_button_new_with_label("计算");button_ok=gtk_button_new_with_label("确定");entry_input=gtk_entry_new();entry_value=gtk_entry_new();entry_file_path=gtk_entry_new();vbox=gtk_vbox_new(FALSE,5);hbox_1=gtk_hbox_new(TRUE,2);hbox_2=gtk_hbox_new(TRUE,2);hbox_3=gtk_hbox_new(TRUE,2);hbox_4=gtk_hbox_new(TRUE,2);hbox_5=gtk_hbox_new(TRUE,2);gtk_box_pack_start(GTK_BOX(hbox_1),label_input,TRUE,TRUE,0);gtk_box_pack_start(GTK_BOX(hbox_1),gtk_label_new(""),TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_2),entry_input,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_2),button_computing,TRUE,TRUE,0);gtk_box_pack_start(GTK_BOX(hbox_3),label_value,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_3),entry_value,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_4),label_file_path,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_4),gtk_label_new(""),TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_5),entry_file_path,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(hbox_5),button_ok,TRUE,TRUE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_1,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_2,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_3,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),gtk_label_new(""),TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_4,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX(vbox),hbox_5,TRUE,FALSE,0);gtk_box_pack_start(GTK_BOX()vbox,label_error,TRUE,FALSE,0);g_signal_connect(G_OBJECT(button_computing),"clicked",G_CALLBACK(button_computing_clicked),entry_input);g_signal_connect(G_OBJECT(button_ok),"clicked",G_CALLBACK(button_ok_clicked),entry_file_path);gtk_container_add(GTK_CONTAINER(window),vbox);gtk_widget_show_all(window);gtk_main();return0;}四程序说明及流程图:A、全局变量:GtkWidget*entry_value;//输入单词用的文本框GtkWidget*entry_file_path;//输入文件名用的文本框GtkWidget*label_error;//显示成功或错误信息用的label部件 B、相关函数说明:intget_value(char*String);//计算给定单词的值voidbutton_ok_clicked(GtkWidget*widget,gpointerdata)//ok按钮按下voidon_delete(GtkWidget*window,GdkEvent*event,gpointerdata);//程序退出voidbutton_computing_clicked(GtkWidget*widget,gpointerdata);//计算按钮按下 C、流程图:(a)intget_value(char*String)对应的流程图:(b)voidbutton_computing_clicked(GtkWidget*widget,gpointerdata)对应流程图: (c)voidbutton_ok_clicked(GtkWidget*widget,gpointerdata)对应流程图:五运行效果图:(1)输入单个单词,直接计算出其值并显示(2)输入的文件不存在时,给出“Thefileisnotexist”的提示信息(3)输入的文件存在,操作成功,给出“Theresulthasbeenwrritentoresult.txt”的信息 (4)读取文件并成功进行计算后所得的结果
g_print("%s\n",array[i]);
fprintf(result,"%d\n",get_value(array[i]));
fclose(result);
fclose(source);
voidon_delete(GtkWidget*window,GdkEvent*event,gpointerdata)//quitfrommain
gtk_main_quit();
voidbutton_computing_clicked(GtkWidget*widget,gpointerdata)//computethevalueofthdwordthatwasinputindata
constchar*input_text;
constchar*output_text;
input_text=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));//gettheword
sprintf(output_text,"%d",get_value(input_text));//getvalueofwordandchangtoStringformat
gtk_entry_set_text(GTK_ENTRY((GtkWidget*)entry_value),output_text);//showthevalueonentry_value
intmain(intargc,char*argv[])
GtkWidget*window;
GtkWidget*label;
GtkWidget*label_input;
GtkWidget*label_value;
GtkWidget*label_file_path;
GtkWidget*entry_input;
GtkWidget*button_computing;
GtkWidget*button_ok;
GtkWidget*vbox;
GtkWidget*hbox_1;
GtkWidget*hbox_2;
GtkWidget*hbox_3;
GtkWidget*hbox_4;
GtkWidget*hbox_5;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"ValueofWord!
gtk_container_set_border_width(GTK_CONTAINER(window),10);
g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(on_delete),NULL);
label_input=gtk_label_new("请输入单词:
label_value=gtk_label_new("该单词的值");
label_file_path=gtk_label_new("请输入文件路径:
label_error=gtk_label_new("");
button_computing=gtk_button_new_with_label("计算");
button_ok=gtk_button_new_with_label("确定");
entry_input=gtk_entry_new();
entry_value=gtk_entry_new();
entry_file_path=gtk_entry_new();
vbox=gtk_vbox_new(FALSE,5);
hbox_1=gtk_hbox_new(TRUE,2);
hbox_2=gtk_hbox_new(TRUE,2);
hbox_3=gtk_hbox_new(TRUE,2);
hbox_4=gtk_hbox_new(TRUE,2);
hbox_5=gtk_hbox_new(TRUE,2);
gtk_box_pack_start(GTK_BOX(hbox_1),label_input,TRUE,TRUE,0);
gtk_box_pack_start(GTK_BOX(hbox_1),gtk_label_new(""),TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox_2),entry_input,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox_2),button_computing,TRUE,TRUE,0);
gtk_box_pack_start(GTK_BOX(hbox_3),label_value,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox_3),entry_value,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox_4),label_file_path,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox_4),gtk_label_new(""),TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox_5),entry_file_path,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(hbox_5),button_ok,TRUE,TRUE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox_1,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox_2,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox_3,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),gtk_label_new(""),TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox_4,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(vbox),hbox_5,TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX()vbox,label_error,TRUE,FALSE,0);
g_signal_connect(G_OBJECT(button_computing),"clicked",G_CALLBACK(button_computing_clicked),entry_input);
g_signal_connect(G_OBJECT(button_ok),"clicked",G_CALLBACK(button_ok_clicked),entry_file_path);
gtk_container_add(GTK_CONTAINER(window),vbox);
gtk_widget_show_all(window);
gtk_main();
return0;
四程序说明及流程图:
A、全局变量:
GtkWidget*entry_value;//输入单词用的文本框
GtkWidget*entry_file_path;//输入文件名用的文本框
GtkWidget*label_error;//显示成功或错误信息用的label部件
B、相关函数说明:
intget_value(char*String);//计算给定单词的值
voidbutton_ok_clicked(GtkWidget*widget,gpointerdata)//ok按钮按下
voidon_delete(GtkWidget*window,GdkEvent*event,gpointerdata);//程序退出
voidbutton_computing_clicked(GtkWidget*widget,gpointerdata);//计算按钮按下
C、流程图:
(a)intget_value(char*String)对应的流程图:
(b)voidbutton_computing_clicked(GtkWidget*widget,gpointerdata)对应流程图:
(c)voidbutton_ok_clicked(GtkWidget*widget,gpointerdata)对应流程图:
五运行效果图:
(1)输入单个单词,直接计算出其值并显示
(2)输入的文件不存在时,给出“Thefileisnotexist”的提示信息
(3)输入的文件存在,操作成功,给出“Theresulthasbeenwrritentoresult.txt”的信息
(4)读取文件并成功进行计算后所得的结果
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1