ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:240.26KB ,
资源ID:10159380      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-10159380.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(钱晓雪090915JAVA设计报告.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

钱晓雪090915JAVA设计报告.docx

1、钱晓雪090915JAVA设计报告中南大学java课程设计报告学生姓名钱晓雪学 号0909120615专业班级物联网1201班指导老师郭克华学 院信息科学与工程学院完成时间2013年12月目录一系统描述-2-二功能模块结构-3-2.1 划分功能模块.-3-2.2 各功能模块之间的结构图.-3-2.3各模块的功能描述.-3-三主要模块的算法说明-3-四运行结果-4-4.1 典型的界面.-4-4.2 输入和输出数据.-5-五课程设计总结-6-5.1 课程设计过程中遇到的问题.-6-5.2 解决问题的过程和体会.-6-5.3 课程设计的体会和总结.-7-六参考文献-8-七附录-9-一系统描述1. 设

2、计内容:自行下载自己最喜欢的小说1部。存储为文本文档。要求长篇小说,20万字以上。 任取其中10个人物,考虑他们的姓名、别名等等一系列因素。 (1)统计每个人在小说中出现的次数并排序。 (2)统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。 (3) 如果两人在相距较短的一段文字中出现,我们认为两人有关系,距离越短,关系越近。自行设计统计标准,找出10个人中: 1)关系最紧密的两个人,关系最不紧密的两个人。 2)输入一个人名,列出该人和其他人关系的紧密程度排名。 看与实际是否符合?如果不太符合,说明可能的原因。 2.课程设计的要求:学习Java界面开发基础知识。利用所学

3、到的Java编程知识和编程技巧,设计一个实际的应用软件,初步认识软件设计的基本方法,提高进行工程设计的基本技能及分析、解决实际问题的能力,为后续课程和以后的工程实践打下良好的基础。 3.需求分析:a.能统计每个人在小说中出现的次数并排序。b.能统计每个人在小说中出现的篇幅跨度(第一次出现距最后一次出现的篇幅)并排序。c.能输出10个人中关系最紧密的两个人,关系最不紧密的两个人。 d.能输出一个人和其他人关系的紧密程度排名二功能模块结构2.1划分功能模块:小说人物关系统计系统有:按照人物出现次数排序,按照人物出现篇幅跨度排序以及一个人和其他人关系的紧密程度构成2.2 各功能模块之间的结构图:2.

4、3各模块的功能描述:class Relations /这个类保存人物关系距离class Character / 小说人物类 记录一些基本信息class compareCount implements Comparator/ 第一个排序接口 按照出现次数排序class compareGap implements Comparator/ 第二个排序接口 按照篇幅跨度排序class compareRelation implements Comparator/人物关系的排序接口,按照人物关系距离从小到大排序,距离越小关系越紧密public class Novel/ 小说类,主要保存小说文本内容,以及那

5、10个人物,提供题目中要求的相关功能public void countCha()/ 统计每个人物出现在小说中的位置记录下来,顺便计算篇幅跨度与次数public int calRelationDistance/ 计算两个人物之间的关系距离,计算方式为出现位置差的最小值public void precompute()/计算每对人物之间的距离,计算方法为出现位置差的最小值public void testRealation()/最后一个要求的功能,先计算人物关系距离,排序,然后输出关系最紧密和最远的两个人物,然后从控制台读入人物名字,列出他和别人的关系距离排序3主要模块的算法说明/ 读取小说中的十个人

6、物名称,所选人物不存在别名的情况 public void loadCharater(String characterName) throws Exception File inputFile = new File(characterName); InputStreamReader isr = new InputStreamReader(new FileInputStream( inputFile), UTF-8); BufferedReader bfr = new BufferedReader(isr); String curLine = bfr.readLine(); int count =

7、 0; while (curLine != null & curLine.length() 1) characters.get(count).name = curLine; cname.add(curLine); count+; curLine = bfr.readLine(); isr.close(); bfr.close(); / 从文本中读取小说内容 public void loadNovel(String novelName) throws Exception File inputFile = new File(novelName); InputStreamReader isr = n

8、ew InputStreamReader(new FileInputStream( inputFile), UTF-8); BufferedReader bfr = new BufferedReader(isr); StringBuffer bfBuffer = new StringBuffer(); String curLine = bfr.readLine(); while (curLine != null) if (curLine.length() 1) bfBuffer.append(curLine); curLine = bfr.readLine(); isr.close(); bf

9、r.close(); novelContent = bfBuffer.toString(); novelContent = novelContent.replace( , ); novelContent = novelContent.replace(n, ); / 统计每个人物出现在小说中的位置记录下来,顺便计算篇幅跨度与次数 public void countCha() int len = characters.size(); for (int i = 0; i len; i+) String curName = characters.get(i).name; int curNameLen

10、= curName.length(); int curIndex = novelContent.indexOf(curName); while (curIndex != -1) characters.get(i).occurPlace.add(curIndex); curIndex = novelContent.indexOf(curName, curIndex + curNameLen); characters.get(i).occurCount = characters.get(i).occurPlace.size(); characters.get(i).gap = characters

11、.get(i).occurPlace.lastElement() - characters.get(i).occurPlace.firstElement(); / 两个比较器,分别按照人物的出现次数和篇幅来进行排序 compareCount cmp1 = new compareCount(); compareGap cmp2 = new compareGap(); Collections.sort(characters, cmp1); System.out.println(按照人物出现次数排序为:); System.out.println(人物名称t出现次数); for (int i = 0;

12、 i 10; i+) System.out.println(characters.get(i).name + t + characters.get(i).occurCount); System.out.println(-); Collections.sort(characters, cmp2); System.out.println(按照人物出现篇幅长度排序为:); System.out.println(人物名称t篇幅长度); for (int i = 0; i 10; i+) System.out.println(characters.get(i).name + t + characters

13、.get(i).gap); System.out.println(-); / 计算两个人物之间的关系距离,计算方式为出现位置差的最小值 public int calRelationDistance(Character c1, Character c2) Vector o1 = c1.occurPlace; Vector o2 = c2.occurPlace; int distance = 10000000; int len1 = o1.size(); int len2 = o2.size(); for (int i = 0; i len1; i+) for (int j = 0; j len2

14、; j+) int tmp = Math.abs(o1.elementAt(i) - o2.elementAt(j); if (tmp distance) distance = tmp; return distance; /计算每对人物之间的距离,计算方法为出现位置差的最小值 public void precompute() for (int i = 0; i 10; i+) for (int j = i + 1; j 10; j+) Character ci = characters.get(i); Character cj = characters.get(j); int distance

15、 = calRelationDistance(ci,cj); Relations tRelations = new Relations(ci.name,cj.name, distance); relations.add(tRelations); /输入一个名字,列出他和别人的关系和关系距离 public void listRelation(String name) int len = relations.size(); for(int i =0;ilen; i+) Relations cr = relations.get(i); if (name.equals(cr.c1) System.ou

16、t.printf(%st%st%dn,cr.c1,cr.c2,cr.relationDistance); else if (name.equals(cr.c2) System.out.printf(%st%st%dn,cr.c2,cr.c1,cr.relationDistance); /最后一个要求的功能,先计算人物关系距离,排序,然后输出关系最紧密和最远的两个人物,然后从控制台读入人物名字,列出他和别人的关系距离排序 public void testRealation() precompute(); compareRelation cmp = new compareRelation(); C

17、ollections.sort(relations,cmp); System.out.println(关系最紧密的一对人物为:); System.out.println(人物1t人物2t距离); System.out.printf(%st%st%dn,relations.get(0).c1,relations.get(0).c2,relations.get(0).relationDistance); System.out.println(-); System.out.println(关系最不紧密的一对人物为:); System.out.println(人物1t人物2t距离); int len

18、= relations.size(); len-; System.out.printf(%st%st%dn,relations.get(len).c1,relations.get(len).c2,relations.get(len).relationDistance); System.out.println(-); while (true) System.out.println(请输入十个人物中的一个,或者输入字母q退出程序); byte bin = new byte1024; int n = 0; try n = System.in.read(bin); catch (Exception e

19、) System.out.println(e.toString(); String curname = new String(bin,0,n-2); if (curname.equals(q) break; if (cname.indexOf(curname) = -1) System.out.println(输入的名字不在十个人物列表中!); else System.out.println(输入人物与其他人物的紧密度排序为); System.out.println(人物1t人物2t距离); listRelation(curname); System.out.println(-); 四运行结果

20、4.1 典型的界面4.2 输入和输出数据五课程设计总结5.1 课程设计过程中遇到的问题JAVA课程设计有别于大学考试的类型,要求我们创新自己的新程序,从已有的教材模板中推陈出新,总结教材上的例题和基本结构,发散思维来设计命题程序,对我们提出了很高的要求,是我们不仅要把课本读透,还要求我们有所创造,这是一个很大的挑战。5.2 解决问题的过程和体会当毫无头绪时,一个人的力量是微薄的,所以这就要求我们和同学一起讨论,一起研究,在激烈的争论中有所收获,也提高了我们思维的缜密度和拓展了思想的深度及广度。扬长避短,通过讨论和对书本的进一步深究理解,以及上网查询有关注意事项并上机调试,是我们加深了对程序设计

21、的理解与探寻,使我们在设计的过程中加强了编程逻辑,深喑耐心细致十分重要,更懂得了编程不能求快,急于求成,只能稳扎稳打,步步推进。而我们从中所收获的,不仅如此,更为以后我们的编程学习和工作获得了一些初级经验,我明天积累下重要财富。虽然通过自己的努力,解决了很多从前没有遇到的问题,但依旧有无数的难题摆在我面前,重重叠叠的大山阻碍着我前进的道路。山高人为峰,我一定不会惧怕摆在前面的困难,不断努力奋斗,争取看到更多的阳光。这次的课程设计,让我受益匪浅。不仅为自己揭开了JAVA程序神秘的面纱,而且在实际的程序编写与调试过程中,成长了不少,实战的能力提高了很多,也让我明白了自己还有很大的提高空间。虽然以后

22、不再学习程序设计这门课了,但这次课程设计确实激发了我编程的兴趣,我以后一定还会努力钻研,争取往更深更透的方向发展。万丈高楼平地起,能够编写复杂的程序都是在编写过简单的程序的基础上演变过来的能力。目前的程序漏洞确实还是很多,但编成之后的成就感还是会油然而生,成为我向程序设计之路成功迈出的第一步,同时,对于我的JAVA的应用水平也有很大的提高,用起来会更加娴熟、得心应手。从易到难这是一个准则,总之,这次的研究会对增长程序阅读能力、程序编写能力等起到了意想不到的作用。在以后漫漫的研究学习道路上,我还有很远的路要走,迎接我的是又一个严峻的挑战!5.3 课程设计的体会和总结此次JAVA课程设计,在指导教

23、师的精心教导下,我们学会了如何用JAVA编写一个简单的应用程序。首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。根据JAVA课程所学的概念、理论和方法,按照JAVA程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对JAVA语言的理解和掌握。理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。JAVA语言程序设计是目前大多数普通高等学校

24、都开设的一门计算机基础课。对于我这样的初学者来说特别难于接受,也容易出现一些问题,使我在学习过程中有快要放弃的感觉,但我一直相信自己可以努力克服荆棘。我努力锻炼编程的感觉,深究具体的技术点,而这确实让我有所收获,那么作为新生努力提升自己的能力是任重而道远的。但不管如何,我们都应该从编程中有所收获,有所进步,努力的提升自己,不要轻易放弃。六参考文献1.JAVA语言程序设计 郭克华 清华大学出版社七附录源代码import java.io.File;import java.io.FileInputStream;import java.io.BufferedReader;import java.io.

25、InputStreamReader;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Vector;/这个类保存人物关系距离,暂时先这么写,不是很科学。反正10个人,怎么写也不会太慢/关系紧密程度上,我默认所有人物都是有关系的,题目有些矛盾,如果按照一个阈值去定义有关系和没关系,那没关系的人其实是关系最不紧密的人。那么就无法度量哪个最不相关了/所以。这里所有人的关系距离都要计算和保存class Relations String c1; / 第一

26、个人物名字 String c2; / 第二个人物名字 int relationDistance; / 人物关系的距离,计算方式为出现位置差的最小值 public Relations(String _c1, String _c2, int _relationDistance) c1 = _c1; c2 = _c2; relationDistance = _relationDistance; / 小说人物类 记录一些基本信息class Character String name; / 人物名称 Vector occurPlace; / 出现在小说中的位置 int gap; / 篇幅跨度 int occurCount; / 出现次数 public Character() name = null; occurPlace = new Vector(); gap = -1; occurCount = 0; / 第一个排序接口

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2