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

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

piikee15年前 (2009-06-07)我的开发734
一、 实验要求
综合运用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

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

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

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

分享给朋友:

相关文章

汇编语言编写的时钟的常驻内存程序

实验目的《汇编语言程序设计》是计算机专业的重要的专业基础课,通过本综合性、设计性实验使学生进一步巩固课堂所学,全面熟悉、掌握8088宏汇编语言程序设计的基本方法和技巧,进一步提高编写程序、阅读分析程序及上机操作、调试程序的能力。二、实验要求...

文件监控器

文件监控器

C#.NET开发的一个小工具,用于监控选定目录下文件的变更情况,如文件的创建,修改,重命名,删除等。如果你是一个木马病毒的玩家,这是一个不错的小工具,可以监控木马病毒在搞什么破坏~文件监控器使用须知1,如果是vista/windows 7...

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

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

Discuz论坛批量发贴机

一、 Discuz论坛批量发贴机简介Discuz论坛批量发贴机,采用.net平台开发。该发贴机使用模块化开发,运用了多线程和xml存储技术。适用于通用的Discuz论坛程序的批量发帖。可以设置一个帖子发布到N个论坛,或者N个帖子发布到一个论...

alexaSEO软件

alexaSEO软件

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

IP地址修改器bat文件

把以下内容拷入一个记事本,并把文件后缀改为.bat即可。@echo           ################################################@echo           #####      I...

发表评论

访客

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