一、 实验要求

综合运用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

#include

#include

#include

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;

}

三、 程序运行效果图

四、 实验总结

省略啦

版权所有,严禁用于商业用途,转载请写明转载自 www.piikee.net

打赏

微信扫一扫,打赏作者吧~

linux计算器程序实验,Linux下基于GTK+的单词数值计算器相关推荐

  1. 基于GTK+的单词数值计算器-实验报告

    一.实验要求 实现基于GTK+的单词数值计算器.该功能如下: (1)按照规则计算单词的值,如果AB C D E F G H I J K L M N O P Q R S T U V W S Y Z 26 ...

  2. Linux下基于GTK人脸识别界面设计

    Linux下基于GTK人脸识别界面设计 1.人脸识别简介   人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸, ...

  3. linux系统程序问题报告,Linux程序设计实验报告.docx

    Linux程序设计实验报告.docx Linux程序设计实验指导书实验类别课内实验 实验课程名称Linux程序设计实验室名称软件工程专业实验室 实验课程编号 000 总 学 时32 学 分 2 适用专 ...

  4. linux c程序hello,Linux下实现c语言hello world 步骤

    最近.刚开始学习Linux.下面简单介绍一下在Linux 下实现hello world的几个步骤: 先附上基本的过程 [crazw@Linux ~]$ ls code Documents Music ...

  5. Linux软件基础实验,linux基本操作的实验

    linux基本操作的实验 发布时间:2008-10-02 00:37:30来源:红联作者:sfwjeo 实验一.linux基本操作 1.实验目的 了解linux的基本命令,熟练掌握其基本操作 2.相关 ...

  6. linux应用程序原理,LINUX原理及应用:第15章 XWindow及Genie应用程序

    <LINUX原理及应用:第15章 XWindow及Genie应用程序>由会员分享,可在线阅读,更多相关<LINUX原理及应用:第15章 XWindow及Genie应用程序(12页珍藏 ...

  7. python监控linux运行程序_python linux监控程序

    Pyinotify – Linux中实时监控文件系统更改 Pyinotify 是一个简单而实用的 Python 模块,它用于通过 inotify 实时监控Linux文件系统的更改.用于在Linux中实 ...

  8. linux有趣程序视频,Linux系统下也玩视频编辑 10个非常流行的免费Linux视频软件

    为了满足广大Linux爱好者的需要,我们为大家搜罗基于Linux操作系统的优秀应用软件.首先,让我们一起来认识一些面向Ubuntu Linux的免费的视频编辑工具. PiTiVi是一个使用Python ...

  9. linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...

    使用linux的过程中,我们会熟悉各种命令,偶尔我们不禁会问,这些命令是怎么实现的,学习他们其实是学习linux高级系统编程很快捷的方法. 这些命令的源码肯定是存放在相应的包里面,但是是哪些包呢? 发 ...

最新文章

  1. oracle相关操作
  2. ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`meiduo`.`
  3. flask框架创建数据库定义字段类型和字段常用参数
  4. Spring+ Spring cloud + SSO单点登录应用认证
  5. 闲话WPF之十(Dependency属性 [2] )
  6. [蓝桥杯2016初赛]卡片换位-bfs
  7. Vue之splice和push
  8. linux 29900端口,USB2.0接口100M以太网芯片SR9900(A)的应用
  9. 2个字段并在一次插入一个字段里面_elasticsearch外用与内观(二)-当插入文档时,elasticsearch都在做什么...
  10. Netty工作笔记0002---Netty的应用场景
  11. Linux中删除文件夹和文件的命令
  12. Python_骑士游历问题
  13. android zlib 和zip,gzip zip 和zlib
  14. powerbi导入地图_PowerBI 地图 - 层级下钻形状地图最佳实践
  15. Erlang 游戏开发经验总结
  16. 单片机c语言编写注解,单片机C语言程序注解
  17. 苹果cms怎么采集别人网站的视频
  18. 网线信道测试软件,测试网线是否正常的方法有哪些
  19. ZbxTable 2.0 重磅发布!6大主要优化功能!
  20. jvm调优五:jvm调优工具和调优实战

热门文章

  1. 无证书访问https外部接口
  2. BMS电池管理系统中的各种算法介绍
  3. 外汇交易系统应遵循的原则
  4. 5个月82起数据泄露事件,新西兰运输局网络安全受质疑
  5. Inno Setup 精灵显示插件 InnoFairy (V2.0 版本)
  6. 发那科机器人的LPOS JPOS指令
  7. Unsupported compiler 'GCC 4.2 (Plausible Blocks)' selected for i386
  8. 【转】rundll32 运行 dll 中的函数
  9. 安卓简单app《录音机》实现
  10. safari10.0以上版本出现默认小人头图标