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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

Java课程设计报告书.docx

1、Java课程设计报告书学号201510159308武 汉 科 技 大 学 城 市 学 院课程设计报告 课程设计名称 JAVA程序设计课程设计 题 目 A C M 院 系 信息工程学部 专 业 软件工程 班 级 姓 名 指导教师 2017年6月23日课程设计评分表评分标准:1. 学生是否严格遵守课程设计纪律,按照规定时间完成设计任务(占30%)2. 程序设计的质量与规范:(占40%)(1) 任务书上的题目是否完成,并选做了ACM题目(2) 成功提交的ACM题目的数题及难度(3) 是否采用了良好的设计方法,独立完成程序设计(4) 程序是否运行正常,未见运行错误3. 课程设计报告书的质量与规范 (占

2、30%)教师评分:1.学生出勤得分A. 优 B. 良 C. 中 D. 及格 E. 不及格2.程序设计得分A. 优 B. 良 C. 中 D. 及格 E. 不及格3.设计报告得分A. 优 B. 良 C. 中 D. 及格 E. 不及格总分:_教师评语:根据该生在课程设计期间,是否严格遵守课程设计纪律,按照规定时间完成设计任务,完成的程序设计的质量与规范,提交的课程设计报告书的质量与规范等多方面的评分,该生本次课程设计的评分为:_教师签名:日期: 年 月 日JAVA编程课程设计指导书学时:1周,学分:11课程设计目的:JAVA编程课程设计属于软件开发类课程设计。该课程设计培养学生熟练应用当前主流的JA

3、VA软件开发语言,检验软件的设计、编码与测试,具备较强的JAVA语言软件开发能力。2课程设计方式:(1)JAVA编程课程设计方式采取ACM测试的方式,利用所学的面向对象程序设计(JAVA)知识,培养学生具有分析应用问题的能力,能够独立完成应用程序的编制与调试工作。(3)每个同学必须完成8-12道题,每题写出解题报告,解题报告内容:.题目标题.题目描述.解题思路.源码.小结3课程设计平台: eclipse或Myeclipse4课程设计考核方式(1)学生独立提交软件设计作品和“课程设计报告书”,指导教师根据学生组提交的软件设计作品和“课程设计报告书”的质量,为学生组评定“优”“良”“中”“及格”或

4、“不及格”;(2)根据各组学生所选题目的难易程度以及验收结果,为学生评定“优”“良”“中”“及格”或“不及格”。“课程设计报告书”包括:课程设计项目名称,课程设计任务, 课程设计任务(功能)说明及功能模块图,数据库设计,各模块功能说明,使用的算法描述(如果需使用算法),各模块界面设计,各模块中关键代码段功能说明与代码行注释,测试说明,参考文献等。5参考文献 1 张思民. Java语言程序设计(第2版)M.北京:清华大学出版社,2012.1 2 姜华. Java项目实战教程M. 北京:清华大学出版社,2012.9 3 陈喧. Java程序设计教程M. 北京:清华大学出版社,2011.5 4 美E

5、chel,B .Java编程思想(第四版)M.北京:机械工业出版社,2007 5 Michael Main. 数据结构:Java语言描述(第二版)(国外经典计算机科学教材)M. 北京:中国电力出版社,20071 星系炸弹1.1 问题描述在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。每个炸弹都可以设定多少天之后爆炸。比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。有一个贝塔炸弹,2014年11月9日放置,输入定时天数,例如定时为1000天,请你计算它爆炸的准确日期。请填写该日期,格式为yyyy-mm-dd 即4位年份2位月份2位日期。

6、比如:2015-02-19输入:输入炸弹引爆延迟的天数。输出:对于每个输入天数,输出符合题目要求的格式的日期。样例输入:1000样例输出: 2017-08-051.2 解题思路1,分析题意可知,本题是求一个日期,想到了Calendar。2,输入的数据是这个日期距离2014-11-09的天数,想到了add方法。3,用set设置起始日期2014-11-09 11月在代码中表现为10。4,用add方法设置偏移值,偏移值由键盘输入获取scanner。5,用getTime获取偏移后的Date对象。6,自定义格式把对象转换成字符串输出,格式为:yy-MM-dd。1.3 代码import java.text

7、.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Scanner;public class Main /* * param args * throws IOException */ public static void main(String args) throws IOException / TODO Auto-generated method stub Scanner sc=new Scanner(System.in); while(sc.hasNext() Calenda

8、r c=Calendar.getInstance(); c.set(2014, 10, 9); int amount=sc.nextInt(); c.add(Calendar.DATE,amount); Date date =c.getTime(); DateFormat format = new SimpleDateFormat(yyyy-MM-dd); String str=format.format(date); System.out.println(str); 1.4 小结Calendar对象可以灵活地设置修改日期,非常好用,还有就是要注意在java中日期的数字表示:月是用011的整数

9、表示的,0表示1月,1表示2月.11表示12月。日是用131的整数表示。小时用023的整数表示。2 小光棍数2.1 问题描述为了迎接一年一度光棍节的到来,让我们一起来看看小光棍数吧。倘若一个数的三次方最后三位数是111,这样的数称为小光棍数。从0开始计数,第一个小光棍数是471(4713=104487111),请问第m个小光棍数是多少。输入第一行一个整数T表示有T组测试数据接下来T行每行有一个数m输出输出第m个小光棍数每次输出占一行样例输出11样例输出4712.2解题思路1,分析题意可知,第一次输入的数据表示测试数据有几组,也就是控制循环的次数。2,第二次输入的数据表示查找第几个小光棍数,想到

10、了定义一个变量作为计数器,查找到一个记一次数,计数器的值等于输入的数据就停止查询,并输出查到的数据。3,循环控制着一个查找功能,数字的三次方要保证是三位数,不是就不用查找了,用if条件语句控制。直接把三次方处理后的数据对1000取余数得出的值就是最后三位,如果是111就满足条件,这个数字就是小光棍数。2.3代码import java.util.Scanner;public class Main public static void main(String args) Scanner scanner=new Scanner(System.in); int n=scanner.nextInt();

11、 while(n-!=0) long m=scanner.nextLong(); System.out.println(471+(m-1)*1000); 2.4小结这种特殊数字的查找原本在不用数学方法的情况下,计算量十分大,但是对计算机而言却不是很大,以后这种数据找不到规律可以直接用java写一个程序快速计算。但要注意对循环的控制。3 零起点学算法12求2个日期之间的天数2.2 问题描述 水题输入输入2个日期,日期按照年月日,年月日之间用符号-隔开(题目包含多组数据)输出求出这2个日期之间的天数(不包括自身),每组测试数据一行样例输入:2011-1-12011-1-5样例输出:32.3 解题思

12、路1,分析题意可知,本题使用了日历,想到了Calendar。2,分别用两个字符串接收输入的数据,并且把接收到的字符串中的年、月、日切割出来,想到了split方法。3,分别用set设置起始日期和终止日期。4,分别用getTime方法获取Date对象,再把Date对象转化为毫秒值。5,用后一个毫秒值减前一个毫秒值,并把毫秒转化成天打印。2.4 代码import java.util.Date;import java.util.Calendar;import java.util.Scanner;public class Main /* * param args */ public static voi

13、d main(String args) / TODO Auto-generated method stub Calendar c1=Calendar.getInstance(); Calendar c2=Calendar.getInstance(); Scanner sc=new Scanner(System.in); while(sc.hasNext() String s1=sc.nextLine(); String s2=sc.nextLine(); if(s1.equals(s2) return; String str1=s1.split(-); String str2=s2.split

14、(-); c1.set(Integer.parseInt(str10), Integer.parseInt(str11),Integer.parseInt(str12); c2.set(Integer.parseInt(str20), Integer.parseInt(str21),Integer.parseInt(str22); if(pareTo(c2)0) return; Date date1=c1.getTime(); Date date2=c2.getTime(); long time1=date1.getTime(); long time2=date2.getTime(); lon

15、g t=time2-time1; int day=(int) (t/1000/3600/24)-1; System.out.println(day); 2.5 小结对日期进行运算首先要想到,将日期转化为毫秒值,转化后就可以使用数学方法计算,从而得到日期结果,这种想法很方便。3 4 零起点学算法34继续求多项式4.1 问题描述输入1个正整数n, 计算1+(1+2)+(1+2+3)+.+(1+2+3+.+n)输入输入正整数n(多组数据)输出输出1+(1+2)+(1+2+3)+.+(1+2+3+.+n)的值(每组数据一行)样例输入:2样例输出:44.2 解题思路1,看到这个式子想到了循环,把一个数据

16、从1累加到n。但这只是完成了一个小括号内部的运算。2,继续思考,想到了递归,定义一个方法add实现累加功能,运算完一次就把传入的值减一,把每次累加后的值相加。3,如果n的值等于1,就停止递归,把最终的和返回。4.3 代码import java.util.Scanner;public class Main public static void main(String args) Scanner sc=new Scanner(System.in); while(sc.hasNext() int sum=0; int a=0; int n=sc.nextInt(); for(int i=1;i=n;

17、i+) a=a+i; sum=sum+a; System.out.println(sum); 4.4 小结在方法中自己调用了自己,就要想到递归。使用递归要注意:1.递归一定要有结束条件。2.递归次数不能过多,容易引起内存溢出。5 零起点学算法35再求多项式(含浮点)5.1问题描述输入一个整数n,计算1+1/(1-3)+1/(1-3+5)+.+1/(1-3+5-.+2n-1)的值输入输入一个整数n(多组数据)输出出1+1/(1-3)+1/(1-3+5)+.+1/(1-3+5-.+2n-1)的值,保留2位小数(每组数据一行)样例输入:1样例输出:1.005.2解题思路1,建立一个名称为fun的方法

18、计算1-3+5-.+2n-1的值。2,建立一个名称为operation的方法计算1+1/(1-3)+1/(1-3+5)+.+1/(1-3+5.+2n+1)的值,分母的值调用fun方法得到,分子为1,运用递归知识,和上一题思想一样。3,调用operation方法得到返回值,将返回值以保留两个小数的固定格式输出。5.3代码import java.text.DecimalFormat;import java.util.Scanner;public class Main public static void main(String args) Scanner sc=new Scanner(System

19、.in); while(sc.hasNext() int a; double b=0; double c=0; int flag=1; a=sc.nextInt(); for(int i=1;i=a;i+) c=c+flag*(2*i-1); b=b+1.0/c; flag=-flag; DecimalFormat df=new DecimalFormat(#0.00); System.out.println(df.format(b); 5.4小结在方法中自己调用了自己,就要想到递归。使用递归要注意:1.递归一定要有结束条件。2.递归次数不能过多,容易引起内存溢出。以固定格式输出可以考虑Str

20、ing类中的静态方法format方法。6 3n+1问题6.1问题描述任给一个正整数n,如果n为偶数,就将它变为n/2,如果为奇数,则将它乘3加1(即3n+1)。不断重复这样的运算,经过有限步后,一定可以得到1。输入:输入1个正整数n(n=1010)(多组数据)输出:输出变化的次数(每组数据一行)样例输入:3样例输出:76.2解题思路1,获取输入的数据,判断是否满足n=1010。2,定义一个变量count为计数器。3,用if判断n为奇数还是偶数,按各自要求分别处理数据,直到n值为1。每处理一次count就加1,循环结束打印count。6.3 代码import java.util.Scanner;

21、public class Main public static void main(String args) Scanner sc=new Scanner(System.in); while(sc.hasNext() int num=sc.nextInt(); if(num=Math.pow(10, 10) int count=0; while(!(num=1) if(num=0) break; if(num%2=0) num=num/2; else num=num*3+1; count+; System.out.println(count); sc.close(); 6.4 小结凡是遇到和次

22、数有关的问题,就要想到能否定义一个计数器来记录次数,合适的定义变量可以很好地控制和显化代码的执行。7基础练习 Huffuman树 7.1问题描述Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。给出一列数pi=p0, p1, , pn-1,用这列数构造Huffman树的过程如下:1. 找到pi中最小的两个数,设为pa和pb,将pa和pb从pi中删除掉,然后将它们的和加入到pi中。这个过程的费用记为pa + pb。2. 重复步骤1,直到pi中只剩下一个数。在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。本题任务:对于给定的一个数列,

23、现在请你求出用该数列构造Huffman树的总费用。例如,对于数列pi=5, 3, 8, 2, 9,Huffman树的构造过程如下:1. 找到5, 3, 8, 2, 9中最小的两个数,分别是2和3,从pi中删除它们并将和5加入,得到5, 8, 9, 5,费用为5。2. 找到5, 8, 9, 5中最小的两个数,分别是5和5,从pi中删除它们并将和10加入,得到8, 9, 10,费用为10。3. 找到8, 9, 10中最小的两个数,分别是8和9,从pi中删除它们并将和17加入,得到10, 17,费用为17。4. 找到10, 17中最小的两个数,分别是10和17,从pi中删除它们并将和27加入,得到2

24、7,费用为27。5. 现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。输入输入的第一行包含一个正整数n(n=100)。接下来是n个正整数,表示p0, p1, , pn-1,每个数不超过1000。输出输出用这些数构造Huffman树的总费用。样例输入:55 3 8 2 9 样例输出59 7.2解题思路1.分析题意知道先输入数列的总数,然后输入数列,可以用数组进行存储数列。2.用循环,当数列不为空,对数组进行排序,进行运算,直至队列为空,输出结果。7.3代码import java.util.Arrays; import java.util.Scanner; publ

25、ic class O public static void main(String args)throws Exception Scanner a = new Scanner(System.in); while (a.hasNext() int num = a.nextInt(); int huff = new intnum; for (int i = 0; i 1) Arrays.sort(huff); k = huff0 + huff1; sum = sum + k; huff0 = k; huff1 = Integer.MAX_VALUE; num-; System.out.printl

26、n(sum); 7.4小结Java中可以直接调用排序,很方便。总结通过这次课程设计,我学到了更多的java的知识,很多类库能很好的解决我需要的功能,这使我很有兴趣来学习java,上课时候的还可以听懂,但是在实验过程中我遇到了许多的问题,总是找不到头绪,让自己不知所措,但通过查阅api文档,使我有了很大进步,这让我认识到学习Java一定要多多练习,才能巩固知识。还好学校安排了课程设计这门课,在这个时候我算是又重新学了一遍java程序设计。在这次课程设计的过程中有很多的地方不会,但我尽量靠自己的独立思考和查阅书籍来完成的了。虽然自己遇到了少的困难,但是我当我成功提交一个题目的时候,那种喜悦感记忆犹新。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于解决了。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1