网站大量收购独家精品文档,联系QQ:2885784924

“背单词”软件设计讲解及作业要求.doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
那一世 我翻遍十万经书 不为修来世 只为寻你的一丝气息 ---引自《面向对象的前世今生》 本篇目的是演示:编程不是写代码,是做设计。 设计要求: 开发一个“英文单词学习软件”,其功能包括: = 1 \* GB3 ① 文件中读取已保存的单词信息,单词在文件中的存放格式为一行一条单词,英文单词在前,中文解释在后,中间以一个空格分隔,如“teacher 教师” = 2 \* GB3 ② 能力测试:在屏幕上随机显示一个英文单词,使用者输入中文解释,检查输入的中文解释是否正确,并给出对错信息。如果错误,给出正确的中文解释。当用户输入一个特殊单词(如end_)时终止测试,并给出本次测试的对错率。 首先,设计程序的总体处理流程: = 1 \* GB3 ① 初始化功能: 打开保存单词信息的文本文件,将所有单词读入内存保存; = 2 \* GB3 ② 单词测试: 随机挑选一个测试单词; 在屏幕上显示该单词的信息; 接收用户输入; 如果用户输入的是结束信息则结束程序,否则判断用户输入的是否正确答案并显示对应的提示信息(例如,如果回答正确显示“正确”,回答错误则显示正确答案); 回到 = 2 \* GB3 ②继续测试。 然后,初步进行设计规划 注意:是设计整个程序的代码框架,而不是代码编写。就像写作文前要先打个草稿,梳理思路,确定整篇文章分成哪几个主要段落,这些段落之间彼此如何互相呼应。同理,我们先要确定整个程序结构分成哪几个部分(即类)、彼此间是如何调用配合的、这些代码间的数据流向。 按照上述处理流程,我们很自然地设计出如下几个类,以及彼此间的调用关系: class loadDictionary { public loadDictionary(String filename);//功能:打开filename指定的文件,将所有单词信息读入内存。 } class testVocabulary { //单词测试类 public void test() { //功能:单词测试: while(true) { 随机挑选一个测试单词:设计为一个方法selectToken 在屏幕上显示该单词的信息:设计为一个方法showToken 接收用户输入;或者直接实现,或者设计为一个方法getAnswer if(用户输入的是结束信息) break; if(用户输入的不是正确答案) 显示答案(设计为一个方法showRightAnswer) } } } public class 主类{ public static void main(String args[]) { loadDictionary ld = new loadDictionary(args[0]用命令行参数输入保存单词的文件名); 用命令行参数输入保存单词的文件名 testVocabulary test = new testVocabulary(); test.test(); } } 设计数据结构: 关键问题:如何在内存中保存单词? 解决方法:数组、链表、哈希表、Vector等,此处为了简化设计,暂定为数组。数组中每个元素保存一个单词信息。 显然,我们需要增加一个单词类,该类的一个对象保存一个单词信息,设计如下: class Token{ String china; String english; } 我们定义一个Token数组保存所有单词:Token tokens = new Token[1000] 因为我们并不知道文件中会保存多少个单词,所以暂定为1000(其实更好的办法是将1000用常量来代替,这样便于修改)。但这1000是上限,实际上一般文件中的单词数目都是小于1000的,这样为了知道tokens中实际保存的单词数目,我们再引入一个变量记录tokens数组中保存的实际单词数目:int totalTokens 很显然,loadDictionary类中的构造函数负责初始化tokens数组和totalTokens;而testVocabulary类中的代码也需要使用到tokens数组和totalTokens。这样tokens和totalTokens便应该被loadDictionary类和testVocabulary类的代码所共享,那我们如何定义tokens数组和totalTokens才能使其被loadDictionary类和testVocabulary类中的代码所共享? 如果是C++,很方便,将tokens数组和totalTokens变量定义为全局的即可,但Java不允许定义全局,奈之何? 为师有上、中、下三策供君抉择: 下策:

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档