基于GTK+的单词数值计算器.docx
- 文档编号:4601555
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:10
- 大小:140.46KB
基于GTK+的单词数值计算器.docx
《基于GTK+的单词数值计算器.docx》由会员分享,可在线阅读,更多相关《基于GTK+的单词数值计算器.docx(10页珍藏版)》请在冰豆网上搜索。
基于GTK+的单词数值计算器
Linux综合性实验报告
一实验题目:
基于GTK+的单词数值计算器
二实验任务要求:
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
#include
#include
#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_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));//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)读取文件并成功进行计算后所得的结果
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 GTK 单词 数值 计算器