暑假编程实战课程总结

川大大一暑假有一门时长几天的编程实战课程,大概是请一些公司的有丰富编程经验的程序猿来讲授,然后我们学生自己实现一个小的小的项目,最后一天还有项目展示和答辩。我花两天时间写了一个简陋的背单词软件,带有查词,选词库,小测试,纠错的功能,还是学到了很多东西的,不虚此行。对界面化程序设计有了进一步的了解,满满的成就感,QT大法好。

贴一点自己实践总结上的内容:

需求分析:

  1. 词库选取:实现大学四级,六级词库切换,需要用数据库或者整理好的文本文件与QT框架交互。(使用QFile,QTextStream)

  2. 主界面单词随机出现,几秒切换一次:导入词库后的主界面。随机从词库中选一个单词,需要用到随机数,单词自动切换则需要一个信号和一个槽,再用一个Timer将信号和槽联系在一起,每隔几秒钟发送一次信号。(使用QTimer,QGlobal) 同时加入一个模式切换功能,循环显示曾经做错的单词或者从词库中随机抽单词显示,用一个简易的状态机。

  3. 出选择题,并且统计正确个数,并将错误的单词加入错误词汇库中:选择题用到的是按钮信号的处理,并且需要处理单词,把单词与解释分开,建立映射。这里想到的是用哈希表键值对匹配(键值都用QSTring),然后再用随机数从词库中抽取单词。 并且学习百词斩,记录上一次背单词的时间,控制题目的个数。(会用到QMap,QMuitiMap,QSTringList,QList)记录时间需要用到QDateTime,且需要用文件来进行储存,又会涉及到文件读写。

  4. 错误词库:使用一个map<string,int>来存单词和错误次数。

  5. 错误词库更新,存档:用文件读写(QFile,QTextStream),写一个save_data函数,在程序出口,即主窗口的析构函数中进行调用。写一个load_data函数,在MAIN函数定义主窗口前调用,以实现更新的功能。

  6. 纠错:循环显示错误词库中的内容(以中文解释来呈现,通过在LineEdit中输入对应单词来匹配),若做对则错误值-1,否则错误值+1(当错误值为0的时候,把它从错误词库中移除

  7. 单词查询,写一个word_map类,将单词与解释联系起来

部分实现代码及界面:

纠错界面:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
主界面部分:

在这里插入图片描述

主界面

小项目答辩经历:

做了个简陋的PPT,含有简单的介绍,以及程序的几个界面展示就上台了,还是靠自己临场yy。一上台非常紧张,接投影仪时手都在抖,下面是全班同学以及几个老师,一个助教。为了让自己放松,上来就来了一句大家好,我是编程时长两天半的QT写手…(律师函警告),后来才想起来这是答辩之大忌,应该严肃一点的,还好老师没太在意。总算不是那么紧张了,开始放ppt,介绍项目,没出什么差错。

我的优势在于:其他人大多选的是老师给的项目,什么数据库,订票系统,贩卖机系统,要么太简单,没啥功能拓展;要么太难,很多东西在能力范围之外,而且还有一个比较致命的因素:实用性。而我的项目则是刚刚好,既在我的能力范围之内,所有功能都可以靠自己实现,又有实用性,可以满足需求。

然后老师开始问问题了,来就是一些数据结构的问题(大一还没学数据结构),问我list,map是怎么实现的,还好我记得map封装的是红黑树,每一次改动都会进行旋转,重新排序。另一个老师接下来又指出了我的一个功能不完善的地方,单词不能反向查找(本来想过去实现,但ubuntu配置有点问题,弄死搞不出中文来),问我该怎么实现,当时也没多想,直接说了再建一个map,中文作为key,英文作为value。

算是人生中第一次答辩了吧,个人感觉还是较为成功的,得益于自己对项目的理解。以后还是得参加些大创和比赛,多答辩,这样毕设时才能不慌,应该吧= =

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值