Java课程设计Word格式.docx
《Java课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《Java课程设计Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
教师评分:
1.学生出勤得分
A.优B.良C.中D.及格E.不及格
2.程序设计得分
3.设计报告得分
总分:
_________
教师评语:
根据该生在课程设计期间,是否严格遵守课程设计纪律,按照规定时间完成设计任务,完成的程序设计的质量与规范,提交的课程设计报告书的质量与规范等多方面的评分,该生本次课程设计的评分为:
________
教师签名:
日期:
年月日
JAVA编程课程设计指导书
学时:
1周,学分:
1
1.课程设计目的:
JAVA编程课程设计属于软件开发类课程设计。
该课程设计培养学生熟练应用当前主流的JAVA软件开发语言,检验软件的设计、编码与测试,具备较强的JAVA语言软件开发能力。
2.课程设计方式:
(1)JAVA编程课程设计方式采取ACM测试的方式,利用所学的面向对象程序设计(JAVA)知识,培养学生具有分析应用问题的能力,能够独立完成应用程序的编制与调试工作。
(3)每个同学必须完成8-12道题,每题写出解题报告,解题报告内容:
.题目标题
.题目描述
.解题思路
.源码
.小结
3.课程设计平台:
eclipse或Myeclipse
4.课程设计考核方式
(1)学生独立提交软件设计作品和“课程设计报告书”,指导教师根据学生组提交的软件设计作品和“课程设计报告书”的质量,为学生组评定“优”“良”“中”“及格”或“不及格”;
(2)根据各组学生所选题目的难易程度以及验收结果,为学生评定“优”“良”“中”“及格”或“不及格”。
“课程设计报告书”包括:
课程设计项目名称,课程设计任务,课程设计任务(功能)说明及功能模块图,数据库设计,各模块功能说明,使用的算法描述(如果需使用算法),各模块界面设计,各模块中关键代码段功能说明与代码行注释,测试说明,参考文献等。
5.参考文献
[1]张思民.Java语言程序设计(第2版)[M].北京:
清华大学出版社,
[2]姜华.Java项目实战教程[M].北京:
[3]陈喧.Java程序设计教程[M].北京:
[4][美]Echel,B.Java编程思想(第四版)[M].北京:
机械工业出版社,2007
[5]MichaelMain.数据结构:
Java语言描述(第二版)(国外经典计算机科学教材)[M].北京:
中国电力出版社,2007
1星系炸弹
1.1问题描述
在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如:
阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。
有一个贝塔炸弹,2014年11月9日放置,输入定时天数,例如定时为1000天,请你计算它爆炸的准确日期。
请填写该日期,格式为yyyy-mm-dd?
即4位年份2位月份2位日期。
2015-02-19
输入:
?
输入炸弹引爆延迟的天数。
输出:
对于每个输入天数,输出符合题目要求的格式的日期。
样例输入:
1000
样例输出:
2017-08-05
1.2解题思路
1,分析题意可知,本题是求一个日期,想到了Calendar。
2,输入的数据是这个日期距离2014-11-09的天数,想到了add方法。
3,用set设置起始日期2014-11-0911月在代码中表现为10。
4,用add方法设置偏移值,偏移值由键盘输入获取scanner。
5,用getTime获取偏移后的Date对象。
6,自定义格式把对象转换成字符串输出,格式为:
yy-MM-dd。
1.3代码
publicclassMain{
/**
*@paramargs
*@throwsIOException
*/
publicstaticvoidmain(String[]args)throwsIOException{
....11表示12月。
日是用1~31的整数表示。
小时用0~23的整数表示。
2小光棍数
2.1问题描述
为了迎接一年一度光棍节的到来,让我们一起来看看小光棍数吧。
倘若一个数的三次方最后三位数是111,这样的数称为小光棍数。
从0开始计数,第一个小光棍数是,请问第m个小光棍数是多少。
输入
第一行一个整数T表示有T组测试数据
接下来T行每行有一个数m
输出
输出第m个小光棍数
每次输出占一行
样例输出
471
解题思路
1,分析题意可知,第一次输入的数据表示测试数据有几组,也就是控制循环的次数。
2,第二次输入的数据表示查找第几个小光棍数,想到了定义一个变量作为计数器,查找到一个记一次数,计数器的值等于输入的数据就停止查询,
并输出查到的数据。
3,循环控制着一个查找功能,数字的三次方要保证是三位数,不是就不用查找了,用if条件语句控制。
直接把三次方处理后的数据对1000取余数得出的值就是最后三位,如果是111就满足条件,这个数字就是小光棍数。
代码
publicstaticvoidmain(String[]args){
Scannerscanner=newScanner;
intn=();
while(n--!
=0)
{
longm=();
}
}
}
小结
这种特殊数字的查找原本在不用数学方法的情况下,计算量十分大,但是对计算机而言却不是很大,以后这种数据找不到规律可以直接用java写一个程序快速计算。
但要注意对循环的控制。
3零起点学算法12——求2个日期之间的天数
2.2问题描述
水题
输入2个日期,日期按照年月日,年月日之间用符号-隔开(题目包含多组数据)
求出这2个日期之间的天数(不包括自身),每组测试数据一行
2011-1-1
2011-1-5
样例输出:
3
2.3解题思路
1,分析题意可知,本题使用了日历,想到了Calendar。
2,分别用两个字符串接收输入的数据,并且把接收到的字符串中的年、月、日切割出来,想到了split方法。
3,分别用set设置起始日期和终止日期。
4,分别用getTime方法获取Date对象,再把Date对象转化为毫秒值。
5,用后一个毫秒值减前一个毫秒值,并把毫秒转化成天打印。
2.4代码
publicclassMain{
.+(1+2+3+...+n)
输入正整数n(多组数据)
输出1+(1+2)+(1+2+3)+...+(1+2+3+...+n)的值(每组数据一行)
2
4
2.5解题思路
1,看到这个式子想到了循环,把一个数据从1累加到n。
但这只是完成了一个小括号内部的运算。
2,继续思考,想到了递归,定义一个方法add实现累加功能,运算完一次就把传入的值减一,把每次累加后的值相加。
3,如果n的值等于1,就停止递归,把最终的和返回。
2.6代码
publicclassMain
{
publicstaticvoidmain(String[]args){
Scannersc=newScanner;
while())
intsum=0;
inta=0;
for(inti=1;
i<
=n;
i++)
a=a+i;
sum=sum+a;
2.7小结
在方法中自己调用了自己,就要想到递归。
使用递归要注意:
1.?
递归一定要有结束条件。
2.递归次数不能过多,容易引起内存溢出。
5零起点学算法35——再求多项式(含浮点)
问题描述
输入一个整数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,建立一个名称为fun的方法计算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方法得到返回值,将返回值以保留两个小数的固定格式输出。
inta;
doubleb=0;
doublec=0;
intflag=1;
a=();
=a;
c=c+flag*(2*i-1);
b=b+c;
flag=-flag;
DecimalFormatdf=newDecimalFormat("
#"
);
小结
以固定格式输出可以考虑String类中的静态方法format方法。
63n+1问题
任给一个正整数n,如果n为偶数,就将它变为n/2,如果为奇数,则将它乘3加1(即3n+1)。
不断重复这样的运算,经过有限步后,一定可以得到1。
输入1个正整数n(n<
=10^10)(多组数据)
输出变化的次数(每组数据一行)
7
1,获取输入的数据,判断是否满足n<
=10^10。
2,定义一个变量count为计数器。
3,用if判断n为奇数还是偶数,按各自要求分别处理数据,直到n值为1。
每处理一次count就加1,循环结束打印count。
代码
intnum=();
if(num<
=(10,10))
{
intcount=0;
while(!
(num==1)){
if(num==0)
break;
if(num%2==0)
num=num/2;
else{
num=num*3+1;
}
count++;
}
}
();
小结
凡是遇到和次数有关的问题,就要想到能否定义一个计数器来记录次数,合适的定义变量可以很好地控制和显化代码的执行。
7基础练习Huffuman树
Huffman树在编码中有着广泛的应用。
在这里,我们只关心Huffman树的构造过程。
给出一列数{pi}={p0,p1,…,pn-1},用这列数构造Huffman树的过程如下:
1.找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。
这个过程的费用记为pa+pb。
2.重复步骤1,直到{pi}中只剩下一个数。
在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。
本题任务:
对于给定的一个数列,现在请你求出用该数列构造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加入,得到{27},费用为27。
5.现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。
输入的第一行包含一个正整数n(n<
=100)。
接下来是n个正整数,表示p0,p1,…,pn-1,每个数不超过1000。
输出用这些数构造Huffman树的总费用。
5
53829
59
1.分析题意知道先输入数列的总数,然后输入数列,可以用数组进行存储数列。
2.用循环,当数列不为空,对数组进行排序,进行运算,直至队列为空,输出结果。
publicclassO{
publicstaticvoidmain(String[]args)throwsException{
Scannera=newScanner;
while()){
intnum=();
int[]huff=newint[num];
for(inti=0;
i<
num;
i++)
huff[i]=();
intsum=0;
intk=0;
while(num>
1){
(huff);
k=huff[0]+huff[1];
sum=sum+k;
huff[0]=k;
huff[1]=;
num--;
}
}
Java中可以直接调用排序,很方便。
总结
通过这次课程设计,我学到了更多的java的知识,很多类库能很好的解决我需要的功能,这使我很有兴趣来学习java,上课时候的还可以听懂,但是在实验过程中我遇到了许多的问题,总是找不到头绪,让自己不知所措,但通过查阅api文档,使我有了很大进步,这让我认识到学习Java一定要多多练习,才能巩固知识。
还好学校安排了课程设计这门课,在这个时候我算是又重新学了一遍java程序设计。
在这次课程设计的过程中有很多的地方不会,但我尽量靠自己的独立思考和查阅书籍来完成的了。
虽然自己遇到了少的困难,但是我当我成功提交一个题目的时候,那种喜悦感记忆犹新。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于解决了。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!