基于GTK+的单词数值计算器.docx

上传人:b****5 文档编号:4601555 上传时间:2022-12-07 格式:DOCX 页数:10 大小:140.46KB
下载 相关 举报
基于GTK+的单词数值计算器.docx_第1页
第1页 / 共10页
基于GTK+的单词数值计算器.docx_第2页
第2页 / 共10页
基于GTK+的单词数值计算器.docx_第3页
第3页 / 共10页
基于GTK+的单词数值计算器.docx_第4页
第4页 / 共10页
基于GTK+的单词数值计算器.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

基于GTK+的单词数值计算器.docx

《基于GTK+的单词数值计算器.docx》由会员分享,可在线阅读,更多相关《基于GTK+的单词数值计算器.docx(10页珍藏版)》请在冰豆网上搜索。

基于GTK+的单词数值计算器.docx

基于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)读取文件并成功进行计算后所得的结果

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1