Coding地址:

https://coding.net/u/huhulqq/p/jiedui1/git/tree/master/

结队成员:

               林清青 201421123095

               郑莹   201421123097

一、题目要求:

本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。
在下面的功能需求中实现两个:

  • 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算;
  • 有计时功能,能显示用户开始答题后的消耗时间;
  • 界面支持中文简体/中文繁体/英语,用户可以选择一种。

二、需求分析:

1.在作业1的基础上,让程序基于GUI界面,使得界面简洁易操作并且较为美观

2.支持中文简体/繁体/英语三种语言,用户可自主选择

3.程序退出时,能将用户所做题目保存在一个txt文件中,存为历史记录

4.程序拥有计时的功能,每道题目都能显示时间,并能保存于文件中

三、功能分析:

1.基本功能:
   支持整数、真分数的四则运算程序,用户能够选择题目数。在用户答题后,能够判断对错,错误及显示正确答案并统计正确率。

2.扩展功能:

  • 实现中文简体、繁体、英语三种语言界面的切换;
  • 用户所做的题目可生成一个txt文件,用于保存所做的题目;
  • 实现计时功能,并且能在txt文件中显示用户做题所用的时间。

四、设计实现:

五、代码实现:

说明:基础功能在作业一中已有体现,以下为此次作业为实现扩展功能的主要代码。

将python代码实现ui界面。

在pyqt4的文件夹里搜索找到脚本,然后将其复制到ui文件所在的文件夹,在配置好python环境的命令行窗口中转到ui所在的文件夹,如图输入以下命令

用于生成窗口:

if __name__ == "__main__":import sysapp = QtGui.QApplication(sys.argv)Form = QtGui.QWidget()ui = Ui_Form()ui.setupUi(Form)Form.show()sys.exit(app.exec_())

在此窗体上创建主键

def setupUi(self, Form):Form.setObjectName(_fromUtf8("Form"))Form.resize(568, 291)self.pushButton = QtGui.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(480, 180, 75, 23))self.pushButton.setObjectName(_fromUtf8("pushButton"))self.label_2 = QtGui.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(230, 140, 54, 12))self.label_2.setObjectName(_fromUtf8("label_2"))self.label_3 = QtGui.QLabel(Form)self.label_3.setGeometry(QtCore.QRect(230, 190, 54, 12))self.label_3.setObjectName(_fromUtf8("label_3"))self.lineEdit = QtGui.QLineEdit(Form)self.lineEdit.setGeometry(QtCore.QRect(300, 130, 113, 31))self.lineEdit.setObjectName(_fromUtf8("lineEdit"))self.pushButton_2 = QtGui.QPushButton(Form)self.pushButton_2.setGeometry(QtCore.QRect(50, 20, 75, 23))self.pushButton_2.setObjectName(_fromUtf8("pushButton_2"))self.pushButton_3 = QtGui.QPushButton(Form)self.pushButton_3.setGeometry(QtCore.QRect(140, 20, 75, 23))self.pushButton_3.setObjectName(_fromUtf8("pushButton_3"))self.pushButton_4 = QtGui.QPushButton(Form)self.pushButton_4.setGeometry(QtCore.QRect(230, 20, 75, 23))self.pushButton_4.setObjectName(_fromUtf8("pushButton_4"))self.label_4 = QtGui.QLabel(Form)self.label_4.setGeometry(QtCore.QRect(60, 120, 141, 41))self.label_4.setText(_fromUtf8(""))self.label_4.setObjectName(_fromUtf8("label_4"))self.label = QtGui.QLabel(Form)self.label.setGeometry(QtCore.QRect(100, 120, 111, 61))self.label.setText(_fromUtf8(""))self.label.setObjectName(_fromUtf8("label"))self.pushButton_5 = QtGui.QPushButton(Form)self.pushButton_5.setGeometry(QtCore.QRect(480, 130, 75, 23))self.pushButton_5.setObjectName(_fromUtf8("pushButton_5"))self.label_5 = QtGui.QLabel(Form)self.label_5.setGeometry(QtCore.QRect(300, 180, 121, 41))self.label_5.setText(_fromUtf8(""))self.label_5.setObjectName(_fromUtf8("label_5"))self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)

测试第三方繁体简体转换:

from langconv import *
#line=('和')
line='我'
print (line.unicode())
#line = line.decode ('utf-8')
line = Converter('zh-hans').convert( line)
#line = line.decode('utf-8')
#line = line.encode ('utf-8')
print (line)

部分简体和繁体转换代码:

# -*- coding: utf-8 -*-
# copy fom wikipedia

zh2Hant = {
'确': '確',
"定": "定",
'你': '你',
"的": "的",
"答": "答",
"案": "案",
"是": "是",
"否": "否",
"正": "正",
"目": "目",
"显": "显",
"示": "示",
"题": "题",
"简": "简",
"体": "体",
"繁": "繁",
"英": "英",
"文": "文"

显示做题开始和结束时间,为了精确,取到毫级:

import timet1=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
with  open('new.txt','a+') as f:f.write("start"+str(t1)+'\n\r')f.write(str(h5))

 with  open('new.txt','a+') as f:f.write("right"+'\n\r')f.write("final"+str(t2)+'\n\r')

做题结束,显示正确率,并可以选择返回主界面:

def retranslateUi(self, Form):Form.setWindowTitle(_translate("Form", "Form", None))self.pushButton.setText(_translate("Form", "显示正确率", None))self.commandLinkButton.setText(_translate("Form", "    返回主界面", None))def huhu(self):global rightcountglobal errorcount #f.write("error"+'\n\r')f = open("new.txt", "r") for line in f:if line.find('right')!=-1:rightcount=rightcount+1elif line.find('error')!=-1:errorcount=errorcount+1zcount=rightcount+errorcountif zcount!=0:mingzhonglv=float(rightcount)/zcountr=float('%.3f'%mingzhonglv)tt=str(float('%.3f'%mingzhonglv)*100)+'%'self.label.setText(tt)

文件读取和文件创建:

with  open('new.txt','w') as f:pass with  open('new.txt','a+') as f:f.write("right"+'\n\r')f.write("final"+str(t4)+'\n\r')

六、运行测试:

开始界面,选择题目数

进入答题页面,进行答题:

用户可自主切换繁体和英文界面进行答题:

结束答题,显示正确率,点击可以返回初始界面:

答题结束,生产txt文件,显示所做题目、题目正确与否以及时间:

七、PSP展示:

PSP2.1 Personal Software Process Stages Time (%) Senior Student(/hour) Time (%)(/hour)
· Planning 计划 2 1.5
· Estimate 估计这个任务需要多少时间 30 27
· Analysis 需求分析 (包括学习新技术) 5 6
· Coding Standard 代码规范 1 1.5
· Design 具体设计 3 3.5
· Coding 具体编码 30 35
· Test 测试(自我测试,修改代码,提交修改) 1 2
Reporting 报告 1.5 1

八、个人总结:

1、此次实验是在Qt designer 上创建组件、控件,在通过控制台,pyuic4 -x C:\ui_xxx.ui -o C:\py_xxx.py,当时在这上面摸索了很久,因为没有在文件前加目录盘C:\。
2、在记录历史计算中使用的是文件的读取和写入,其实对文件的操作已经忘得比较多,例如w+,a+等的区别。
3、在繁体、简体和英文的转换中使用了第三方库,需要我们先把简体繁体的字列好,这需要的时间较长,所以借助了网上的一些第三方库,这样就避免了机械操作。
4、在按钮触发事情上花的时间较多,因为有一些触发事情。
self.pushButton_5.clicked.connect(self.buttonClicked)
5、使用记事本来计算正确率和消耗时间比较不机能,需要改进。

转载于:https://www.cnblogs.com/huhulqq12138/p/6551418.html

结队编程1-四则运算(95、97)相关推荐

  1. 作业四-结队编程项目-四则运算

    四则运算-结队编程 队友:郑都都 学号:130201239 博客地址:http://www.cnblogs.com/dudu-27/ 作业要求: 基本功能要求: 1) 实现一个带有用户界面的四则运算. ...

  2. 结队编程项目——四则运算

    一.项目与分析 项目功能 自动生成小学四则运算题目(加.减.乘.除)并统计正确率 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 分析 生成整数与真分数:实现了生成真分数即可利 ...

  3. 20172307 结对编程项目-四则运算 第二周 阶段总结

    20172307 结对编程项目-四则运算 第二周 阶段总结 (结队项目码云地址) 相关过程截图(关键代码处加了注释) 编写出实现中缀转后缀的类Transform /*Transform.java 作者 ...

  4. 20165330 结对编程项目-四则运算 第一周

    需求分析 实现一个命令行程序,要求:自动生成小学四则运算题目(加.减.乘.除) 可实现多个运算符一起运算 可以真分数形式输出结果 测试结果的正确性 统计题目完成数并计算正确率 设计思路 实验首先是完成 ...

  5. Java黑皮书课后题第5章:*5.24(数列求和)编写程序,计算下面数列的和:1/3+3/5+5/7+7/9+……95/97+97/99

    5.24(数列求和)编写程序,计算下面数列的和:1/3+3/5+5/7+7/9+--95/97+97/99 题目 题目概述 破题 代码 运行示例 题目 题目概述 5.24(数列求和)编写程序,计算下面 ...

  6. 对二分法思想的体会 及 结队编程情况汇报

    算法课第二章作业 1. 对二分法思想的体会: 二分法是分治法的一种,当遇到大问题难以解决的时候,可以使用二分法将问题细化,提高效率,减小问题规模.例如二分搜索,有效率高的优点,但是这个优点的实现前提是 ...

  7. 20165318 结对编程项目-四则运算 阶段总结

    20165318 结对编程项目-四则运算 阶段总结 目录 一.需求分析 二.设计思路 三.实现过程中的关键代码解释 四.测试方法 五.运行过程截图 六.代码托管 七.遇到的困难及解决方法 八.对结对小 ...

  8. 结队编程1-四则运算(107、120)

    [码市链接]https://git.coding.net/Luojiening/Teamwork1.git a.需求分析 将这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Lin ...

  9. 结对编程项目-四则运算阶段性总结

    结对编程项目-四则运算阶段性总结 在这段时间的结对编程过程中,我和我的组员一同编程,初步完成了项目的要求,现在我将阶段性的成果做一个总结 一.需求分析 实现一个命令行程序,要求: 1.自动生成小学四则 ...

  10. 结对编程项目-四则运算整体总结

    结对编程项目-四则运算整体总结 在这一周中,我和我的搭档完成项目并实现了拓展需求,现在我将本项目的成果做一个总结 一.需求分析 实现一个命令行程序,要求: 1.自动生成小学四则运算题目(加.减.乘.除 ...

最新文章

  1. 可变参数__VA_ARGS__使用和va_list使用小结
  2. python selenium 三种等待方式详解
  3. pyinstaller运行时出现TCLError的错误该怎么办?
  4. 小米9私密相册怎么找_“拼藏搜”,手机相册还能这么玩
  5. lua redisson执行lua脚本
  6. 滑动平均滤波c语言_9种简单的数字滤波算法(C语言源程序)
  7. b 站视频下载神器合集,支持电脑和手机端
  8. rk3328或树莓派开发板系统镜像备份制作剪裁
  9. 谈谈MySQL如何选择float, double, decimal
  10. 苏州 计算机 在职研究生,苏州地区,可以报考哪些在职研究生院校!
  11. 校验MD5值是什么意思?
  12. python图片合并代码
  13. 电池极耳尺寸视觉检测系统
  14. k8s资源之service
  15. 线性代数(13)——向量空间、维度和四大子空间(下)
  16. POJ 2954-Triangle(计算几何+皮克定理)
  17. html css纵向滑动列表,css3页面鼠标纵向滑动效果
  18. 从1到无穷大--深度学习篇
  19. 流行和声(6)mMaj7和弦
  20. 别了,超人——黑曼巴!

热门文章

  1. voltdb mysql_voltdb数据库持久性,扩展集群
  2. 【蜡笔小新全集】+动漫【灌蓝高手】 高速在线看
  3. 思科云服务器是干什么的,思科的服务器困局:投资增长,还是退出?
  4. 7-1 Forever (20分)
  5. 双向循环神经网络(隐马尔可夫模型)
  6. Linux ping6 本地ipv6地址(local ipv6 address) 无效的参数(Invalid argument)
  7. Idea 无法创建Servlet问题
  8. android+多处理器+ios,ios与安卓的区别 浅谈ios为什么比安卓流畅 (2)
  9. 微波通道穿刺模型研究
  10. 用Python实现火爆全网的「蚂蚁呀嘿」视频特效!