当前位置:首页 > 计算机相关 > 我的开发 > 正文内容

Linux下基于GTK+的单词数值计算器

piikee14年前 (2009-06-07)我的开发327
一、 实验要求
综合运用CTK+提供的函数,按照一定的规则(具体见实验报告)计算一个单词或者一组单词的数值,并输出到屏幕或文件中。
1、 按照规则计算单词的值,如果 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为1 2 3 4 5 6 7 8 9 10 11 12 13 1 15 16 17 18 19 20 21 22 23 24 25 26,

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文件中。如果文件不存在,应该提示错误。
二、 设计思路
程序结构
程序界面主要由一个VBOX,6个HBOX和两个三个LABEL,两个ENTRY,两个BUTTON组成。
程序的执行函数都在两个BUTTON里面,单击按钮就执行对应函数。
计算按钮主要把单词输入框传来的英文单词放到一个字符数组里面,然后把字符数组每个字符的ASCLL码减去64得到单词的值然后累加。累加后得到一个数值,调用sprintf()把值变字符串,再调用strcat()函数在字符串后面加上百分号字符,最后把字符串输出到单词数值LABEL显示。
执行按钮主要实现从文件路径输入框里面获得文件路径,并打开相应文件,然后对每个文件中的单词执行和计算按钮相同的操作,并写入result.txt文件中。
程序代码
#include<gtk/gtk.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const char*danci="dd";
GtkWidget*dancizhib_label;
GtkWidget*wjlj_entry;
void closeApp(GtkWidget*window,gpointer data){
gtk_main_quit();
}
//计算按钮函数
void jisuan_clicked(GtkWidget*window,gpointer data){
const char *danci_text=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));
char sum=0,all[50];
int i;
for(i=0;danci_text[i]!=0;i++)
sum+=danci_text[i]-64;
sprintf(all,"%d",sum);
strcat(all,"%");
gtk_label_set_text(GTK_LABEL (dancizhib_label),all);
}
//执行按钮函数
void zhixing_clicked(GtkWidget*window,gpointer data){
const char *filepath=gtk_entry_get_text(GTK_ENTRY((GtkWidget*)data));
FILE *fp,*fp2;
char i[50],sum=0,all[50],af[50];
int c,k,aa=0;
if((fp=fopen(filepath,"rb"))==FALSE)
{gtk_entry_set_text(GTK_ENTRY(wjlj_entry),"此路径文件不存在!");
return;
}
if((fp2=fopen("result.txt","wb"))==FALSE)
{gtk_entry_set_text(GTK_ENTRY(wjlj_entry),"result.txt文件不存在!");
return;
}
else
{
while((fscanf(fp,"%s",i))!=EOF)//读取直到文件结束
{
for(c=0;i[c]!=0;c++)
sum+=i[c]-64;
sprintf(all,"%d",sum);
strcat(all,"%\n");
fprintf(fp2,"%s",all);
sum=0;
gtk_entry_set_text(GTK_ENTRY(wjlj_entry),"执行成功,已写入result.txt!");
}
}
rewind(fp);
rewind(fp2);
fclose(fp2);
fclose(fp);
}
//主函数
int main(int argc,char *argv[]){
//一些声明定义
GtkWidget*window;
GtkWidget*danci_label,*dancizhi_label,*wjlj_label,*part_label;
GtkWidget*danci_entry;
GtkWidget*jisuan_button;
GtkWidget*zhixing_button;
GtkWidget*hbox1,*hbox2,*hbox3,*hbox4,*hbox5,*hbox6;
GtkWidget*vbox;
gtk_init(&argc,&argv);
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"单词数值计算器");
gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(window),450,250);
danci_label=gtk_label_new("请输入单词值:");
dancizhi_label=gtk_label_new("该单词值:               ");
wjlj_label=gtk_label_new("请输入文件路径:");
dancizhib_label=gtk_label_new("0");
part_label=gtk_label_new("***************************************************************");
danci_entry=gtk_entry_new();
wjlj_entry=gtk_entry_new();
jisuan_button=gtk_button_new_with_label("计算");
zhixing_button=gtk_button_new_with_label("执行");
g_signal_connect(GTK_OBJECT(window),"destroy",GTK_SIGNAL_FUNC(closeApp),NULL);
g_signal_connect(GTK_OBJECT(jisuan_button),"clicked",GTK_SIGNAL_FUNC(jisuan_clicked),danci_entry);
g_signal_connect(GTK_OBJECT(zhixing_button),"clicked",GTK_SIGNAL_FUNC(zhixing_clicked),wjlj_entry);
hbox1=gtk_hbox_new(TRUE,10);
hbox2=gtk_hbox_new(TRUE,10);
hbox3=gtk_hbox_new(TRUE,10);
hbox4=gtk_hbox_new(TRUE,10);
hbox5=gtk_hbox_new(TRUE,10);
hbox6=gtk_hbox_new(TRUE,10);
vbox=gtk_vbox_new(FALSE,20);
gtk_box_pack_start(GTK_BOX(hbox1),danci_label,TRUE,FALSE,10);
gtk_box_pack_start(GTK_BOX(hbox2),danci_entry,TRUE,FALSE,1);
gtk_box_pack_start(GTK_BOX(hbox2),jisuan_button,TRUE,FALSE,9);
gtk_box_pack_start(GTK_BOX(hbox3),dancizhi_label,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox3),dancizhib_label,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox6),part_label,TRUE,FALSE,10);
gtk_box_pack_start(GTK_BOX(hbox4),wjlj_label,TRUE,FALSE,10);
gtk_box_pack_start(GTK_BOX(hbox5),wjlj_entry,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(hbox5),zhixing_button,TRUE,FALSE,5);
gtk_box_pack_start(GTK_BOX(vbox),hbox1,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox2,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox3,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox6,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox4,FALSE,FALSE,10);
gtk_box_pack_start(GTK_BOX(vbox),hbox5,FALSE,FALSE,10);
gtk_container_add(GTK_CONTAINER(window),vbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
三、 程序运行效果图
133
134
135
四、 实验总结
省略啦
版权所有,严禁用于商业用途,转载请写明转载自 www.piikee.net

扫描二维码推送至手机访问。

版权声明:本文由萍客小居发布,如需转载请注明出处。

本文链接:https://www.piikee.net/345.html

分享给朋友:

相关文章

邮件伪装者

邮件伪装者

C#.net开发的一个邮件发送软件,可以自定义发件人,伪装发件人发送邮件。用于垃圾邮件发送。。。使用不当后果自负。使用环境配置一,添加IIS服务器。开始菜单中打开“控制面板”,点击“添加添加或删除程序” ,左边面板选择“添加/删除windo...

Windows XP任务栏图标修复工具V1.2

此工具用于用于修复电脑桌面右下角任务栏图标消失的问题。具体使用方法和注意问题,请参考Windows XP任务栏图标修复工具V1.1版本。由于部分用户反映,使用本工具可以解决图标消失问题,但无法彻底解决,有时候启动系统图标还是会消失,又得重新...

txt文件编码批量转换器

txt文件编码批量转换器

用于批量转换txt文本文档的编码格式。通常我们电脑里的txt文件都是ASNI编码,放到手机,MP3等设备里面,打开看到的都是乱码。所以我们必须先把它们转换为Unicode格式,才能够在手机和MP3上面打开。如果有大量的文件,一个一个打开另存...

Windows系统任务栏图标修复工具 终结版

Windows系统任务栏图标修复工具 终结版

用于修复Windows XP /Vista/Windows 7 等系统中,右下角任务栏图标消失的问题。包括使用U盘时,usb删除图标没有显示的问题。点击修复按钮时,如果有360安全卫士或者瑞星卡卡助手弹出注册表写入警告,请点击允许。这是图标...

windows7网卡MAC地址修改器测试版

1,只适用于windows7系统的网卡MAC地址修改。2,部分windows7下的无线网卡地址无法修改,理论上也可以使用本软件修改。3,修改MAC地址前,请先在开始菜单-运行,输入cmd打开控制台,输入getmac获取原来网卡MAC并记下来...

alexaSEO软件

alexaSEO软件

ALEXASEO软件,提高网站ALEXA排名的同时,为网站增加大量外链。各大alexa排名查询网站,查询每一个网站之后,会在一段时间留下该网站的链接。此时,如果我们频繁的查询我们的网站,那么就会无形之中为网站留下外链。或者查询时,百度和谷歌...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。