1 2 3
1 2 3
您现在的位置:首页/ 信息工程系/ 系部新闻

第六届三创周丨《Java程序设计》项目式课程结课学生作品展示

发布者: 信息工程系     发布时间:2024-01-15    浏览次数:84  

展示班级:202222移动互联网应用技术

指导老师:王冬林

Java程序设计课程介绍:

Java程序设计课程是移动互联网应用技术专业的核心基础课。java编程语言历经近30年依然魅力不减,它的开源性、可移植性和跨平台的特点注定了它具有最广泛的应用,面向对象的程序设计思想是所有程序员的共识。Java是万物互联的起点,是连接梦想宇宙的光束,一杯浓香的咖啡更是所有程序员的情怀。


结课展示内容


202222移动互联网应用技术班的同学们经过一个学期的学习,对Java程序设计课程有了全面的认识,掌握了Java语言的基本语法、算法和程序设计技能点,特别对一些经典算法案例有了充分的理解。下面就请大家看看这批移动互联新星们为经典算法案例撰写的技术文档,如有差错欢迎批评指正,您的反馈是他们最好的成长阶梯。




01

案例一:通过程序判断学生等级

技术文档撰写人:詹永达

上下滑动查看更多



任务目标:

通过键盘录入学生的分数,根据分数判断学生的等级。91-100分为优秀,80-90分为好,71-80分为良,61-70分为及格,60分及以下为不及格,都不符合则执行:不在范围内。

任务分析:

使用Scanner类来获取用户从键盘输入的学生分数,根据分数判断其所属等级,利用if多分支进行判断将判断的结果(等级)输出到控制台,考虑到用户键盘输入的不在范围:如输入非数字或负数的情况,则执行else 输出不在范围内。

实施计划:

1.创建一个Scanner对象来键盘输入:

2.获取用户输入的分数并读取用户输入的分数:

3.通过IF多分支语句来根据分数判断其等级:

4.将学生的等级输出到控制台。

程序代码:

程序主要算法解释:

1.首先,创建了一个Scanner对象,用于从键盘接收用户输入。程序提示用户输入一个整数表示的成绩。

2.读取用户输入的成绩,并将其存储在变量score中。

3.程序if语句检查输入的成绩是否在0到100的范围内(包括0和100)。通过if (score > 0 && score <= 100)语句实现的。

4.如果输入的成绩在这个范围内,程序将进入一系列的else if语句,根据成绩的不同范围给出不同的评价。如果成绩在91到100之间,程序将输出优秀。如果成绩在81到90之间,程序将输出好。如果成绩在71到80之间,程序将输出良。如果成绩在60到70之间,程序将输出及格。如果成绩小于或等于60,程序将输出不及格。如果输入的成绩不在0到100的范围内,程序将输出:不在范围内。

 归纳总结:

Scanner类:用于从键盘接收用户输入。在这个程序中,创建了一个Scanner对象,将其命名为sc,并使用System.in作为参数,表示从键盘接收输入。

条件运算符(if):用于测试一个条件,如果条件为真,则执行一个代码块。在这个程序中,使用IF-else多分支语句检查输入的成绩是否在0到100的范围内(当然包括0和100)。

主要使用了Java的基础输入输出功能和条件判断语句。通过这个任务,我们可以熟悉Java的基本语法和程序结构,并掌握如何从键盘获取输入并根据条件判断输出结果。



02

案例二:打印九九乘法表

技术文档撰写人:彭姝怡

上下滑动查看更多

任务目标:

打印九九乘法表

任务分析:

有两个变量,左边的变量永远小于等于右边的变量输出结果为左对齐直角三角形。

任务实施计划:

首先,创建名为sheet的类;其次,创建一个外循环并定义循环的行数,从1-9然后,创建一个内循环并定义循环的每行的个数,从1-当前的行数;最后,进行输出。

程序编码:

运行结果:

程序主要算法解释:

创建第一个for循环,当i=1时进入下一个for。创建第二个for循环,当i=1时j=1开始循环。第一个输出结果,当j<=i时结束这一个循环。继续从第一个i=2开始循环,直到i>9时停止循环,输出所有结果。

归纳总结:

通过这个案例我掌握了循环技能点,熟练了双层for循环的算法,掌握了九九乘法表的应用。


03

案例三:输出钻石星阵

技术文档撰写人:盛彦玮

上下滑动查看更多

任务目标:

输出钻石星阵

任务分析:

钻石星阵的行数共为奇数行,本例设置7行。将星阵分为两个部分进行输出,使用for来控制*的位置,数量等,并输出。

实施计划:

先创建一个变量a 赋值4(正三角形行数的初始值),使用for创建两个外层循环for循环其中各有2个内层循环小for循环,确定钻石星阵的上半的要创健要多少“*”的行数和个数关系,然后把上半的部分代码数据进行修改达到翻转效果,加在一起即可得到完整的钻石星阵。

程序代码:

程序主要算法解释:

变量 a 被初始化为4,决定了菱形的大小。外层循环 for (int i = 0; i < a; i++)这个循环负责控制正等腰三角形的行数。如果 a 是4,那么这个循环会执行4次,从而打印出4行的正等腰三角形。内层循环for (int l = a; l > i; l--)这个循环负责在每一行前面打印出适当数量的空格,以使星号能居中。如,在第一行(i=0)前打印3个空格,第二行前打印2个空格,以此类推。内层循环2 for (int j = 0; j < 2*i-1; j++)这个循环负责在每一行打印出适当数量的星号。例如,第一行打印1个星号,第二行打印3个星号,以此类推。通过 2*i-1 的计算,实现了星号数量的递增。外层循环 for (int i = a-1; i > 0; i--)此循环负责控制倒等腰三角形的行数。从 a-1 开始递减到1。内层循环1 for (int k = a; k >= i; k--)与正等腰三角形类似,此循环负责在每一行前面打印出适当数量的空格。内层循环2 for (int j = 2*i-3; j > 0; j--)此循环负责在每一行打印出适当数量的星号。注意这里的计算是 2*i-3,与正等腰三角形的 2*i-1 略有不同。

归纳总结:

如何使用嵌套的for循环来打印复杂的图形,同时可以加深for的使用熟练度.



04

案例四:冒泡法排序

技术文档撰写人:冯俊杰

上下滑动查看更多

任务目标:

用冒泡法方法对无序数据进行排序。

任务分析:

我们要将无序数据按从小到大像气泡一样排序,并打印出数据每次对调后的结果。

任务实施计划:

首先,我们先声明一个数组,在数组中填上要进行排序的数据,然后声明一个空变量来临时存放数据,然后运用双重for循环来遍历数组中每一个数据来进行if判断,if来判断前一个数据是否大于后一个数据,符合的话就进行数据对调,不符合就不执行数据对调。

程序编码:

运行结果:

程序主要算法解释:

双重for循环的作用是用于遍历每一个数据,为什么不用一个for循环,因为一个for循环搭配if使用,当它遍历每一个数据的时满足if的条件就会进行数据对调一次,就只会改变两个数据在数值中的位置就会结束程序,这不符合我们要完成的目标所以要用双重for循环来多次让if判断,来多次改变数据在数组中的位置。

第一个for(int i=0;i<arr.length-1;i++< span=>)循环的解释意思是for循环中声明了一个变量i,i它小于数组arr的数组长度-1(arr.length数组的长度指的是数组中数据的个数),i++的意思是这个for循环每执行一次i都+1,i大于arr的长度-1时for循环就停止循环,每循环一次就打印一次数组arr,第二个for循环与第一个意思相同只不过声明的变量名不一样。

为什么i和j要小于arr的长度-1,i要小于arr的长度-1原因是第一个循环循环那么次就可以完成冒泡排序了。

而j要小于arr.length的原因是在for循环中的if判断条件中有这样的一句话if(arr[j]>arr[j+1])如果arr.length不-1的话arr[j+1]就会超出数组的长度就会报错,所以要-1。

在数组数据调换的过程中需要声明一个空的变量来存放数组中的数据,不能arr[j]与arr[j+1]的数据直接互换,所以要声明一个空数组i1,将arr[j]的值赋值给i1,然后将arr[j+1]的值赋值给arr[j],最后将i1的值赋值给arr[j+1]这就完成了数据的对调。

归纳总结:

在冒泡这个案例中,我学习到了双重for循环的基本使用,if判断的使用和数组的使用和数据对调的用法。


05

案例五:选择法排序

技术文档撰写人:温雨琪

上下滑动查看更多

任务目标:

选择排序

任务分析:

本任务从技术角度,for循环,if语句,遍历元素,本任务从应用角度,循环排序,索引。

任务实施计划:

本任务实施需要4个步骤:首先,了解排序概念,排序类的顶层和底层关系;其次,主要应用for循环技术,排序技能点;再次,应用稳定性算法或建立排序对象等;最后,建立遍历测试类,实例化排序对象,调用循环方法,输出排序结果。

程序编码:


运行结果:

程序主要算法解释:

第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。

归纳总结:

此任务学到for双重循环技能点,熟练了排序算法,掌握了选择排序的应用。


06

案例六:返回一维数组最大值

技术文档撰写人:黎圣意

上下滑动查看更多

任务目标:

返回一维数组最大值

任务分析: 

返回最大值:是运用到for循环if语句遍历和索引的方法在几位数组中返回这组数值的最大数字。

任务实施计划:

首先,了解数组概念,包括索引和遍历的顶层和底层关系;其次,建立整型类,求最大值max方法;最后,调用for循环方法,然后使用if语句输出最大值结果。

程序编码:

运行结果:

程序主要算法解释:

创建变量,通过for循环实现,运用索引的数据定义变量,首先定义一个数组,并对其中元素赋值。然后定义一个变量max,并将数组的0索引赋值给这个变量。接下来遍历数组,并使之与max进行比较,如果比max的值大,则将值赋值给max。最后输出max的值。

归纳总结:

此代码运用for循环和if语句,运用for循环对数组进行遍历,在遍历的过程中只要遇到比max大的元素,就将该元素赋值给max。


07

案例七:实现二维数组转置

技术文档撰写人:温玉柱

上下滑动查看更多

任务目标:

本任务目标要实现二维数组的转置,需要将一个二维数组的行和列进行交换。

任务分析:

二维数组转置,二维数组的转置是指将数组的行和列进行交换,形成一个新的二维数组。这个过程也被称为矩形的转置。即第i行第j列的元素与第j行第i列的元素进行交换。确定输入和输出,输入为一个二维整数数组,输出为转置后的二维整数数组。

在本次任务中我们需要:

1.初始化,确定输入的二维数组arr的行数和列数。假设行数为m,列数为n;

2.创建新数组,创建一个新的二维数组transposed,其行数为n(原数组的列数),列数为 m (原数组的行数);

3.遍历原数组,使用两个嵌套的for循环遍历

原数组arr。外层循环从0到 n-1 ,内层循环从0到m-1 ;

4.置换元素,在内层循环中,将原数组中第i行第i列的元素赋值给新数组的第i行第i列。即, transposed[j][i] = arr[i][j];

5. 返回结果,完成所有置换后,返回转置后的新数组 transposed。

实施计划:

使用嵌套循环遍历二维数组,进行转置操作。使用两个嵌套的for循环遍历输入数组的每个元素,并将元素的值赋给新数组的相应位置。这样新数组的行和列就被转置 。然后,返回转置后的二维数组。

具体步骤:

1.检查输入的二维数组是否为空或者不是矩形(行数和列数不相等)。如果满足这些条件中的任何一个,就抛出一个异常;

2.获取输入数组的行数和列数,并创建一个新的二维数组,其行数为原数组的列数,列数为原数组的行数;

3.使用两个嵌套的 for 循环遍历输入数组的每个元素,并将元素的值赋给新数组的相应位置。这样,新数组的行和列就被转置了;

4.最后,返回转置后的二维数组。

程序代码:

运行结果:

程序主要算法解释:

这段代码定义了一个名为 ArrayTranspose 的类,用于将一个二维数组进行转置(即行列交换)。以下是该代码的详细解析:transpose 方法:输入:一个二维整数数组 arr;输出:返回 arr 的转置数组。

处理过程:首先检查输入数组是否为空、没有行或没有列。如果是,则抛出一个异常。定义两个变量 rows 和 cols 分别存储 arr 的行数和列数。创建一个新的二维数组 transposed,其行数为 arr 的列数,列数为 arr 的行数。这样确保了转置后的数组维度是正确的。使用双重循环遍历 arr 的每一个元素,并将其放置到 transposed 的相应位置,实现转置操作。main 方法:定义了一个 3x3 的二维数组 arr;调用 transpose 方法得到 arr 的转置数组 transposed;打印原始数组和转置后的数组。printArray 方法:用于打印二维数组的内容。它遍历数组的每一行和每一列,并将元素打印到控制台。

总结:在本次任务中,我们成功地实现了二维数组的转置功能。在代码实现过程中,我们使用了嵌套的for循环来遍历原数组的每个元素,并将其按照转置规则放入新数组的对应位置。经过测试,我们的代码能够正确地转置各种形状和大小的二维数组,包括矩形和非矩形数组。


08

案例八:定义一个phone类并创建对象调用

技术文档撰写人:陈嘉瑜

上下滑动查看更多

任务目标:

定义一个手机类,并创建对象。

本任务目标要实现:

手机类的定义,成员变量、成员方法、构造方法和类的实例化等设计。

任务分析:

成员变量为品牌,价格,颜色,成员方法为打电话和发短信。构造方法用于创建对象,内部类即在类体中命名的类。测试类,是带有main方法的类叫做测试类。

实施计划:

对一类事物进行的描写,是抽象的,概念上的定义。类必须先定义才能使用,类是创建对象的模板,创建对象也是类的实列化。应用了成员变量和成员方法。建立phone测试类,实化了品牌,颜色,价格等对象,调用成员方法,输出结果。

程序编码:

运行结果:

运行结果:

程序主要算法解释:

1.定义一个phone类,手机类中定义String类型的品牌,String类型的颜色,int类型的价格;

2.编写打电话的成员方法,方法中对成员变量进行使用;

3.编写发短信的成员方法,方法中对成员变量进行使用;

4.在测试类中创建手机对象,直接给对象的属性赋值,分别调用各个方法。

归纳总结:

在手机类中我学会了如何创建类并进行实现,也知道了成员变量,成员方法如何使用。


09

案例九:定义一个类表示矩形,提供求周长和面积的方法

技术文档撰写人:朱健承

上下滑动查看更多

任务目标:

本任务的目标是创建一个Java程序,该程序定义了一个名为“Rectangle”的类,用于表示矩形。这个类将具有两个私有成员变量(length和width),分别表示矩形的长度和宽度。此外,该类将包含两个公共方法(perimeter和area),用于计算矩形的周长和面积。最后,在main方法中,我们将创建一个新的矩形对象,并输出其周长和面积。

任务分析:

从技术角度分析,本任务主要涉及Java类的基本结构(包括私有成员变量、构造函数、公共方法)以及基本的数学运算(加法和乘法)。

从应用角度分析,本任务展示了如何使用面向对象编程的概念来解决实际问题。在这个例子中,我们通过定义一个Rectangle类来抽象矩形这个概念,使得我们可以更容易地处理与矩形相关的各种操作(如计算周长和面积)。

任务实施计划:

本任务的实施需要以下步骤。

1.定义Rectangle类,包括私有成员变量length和width,以及构造函数和公共方法perimeter和area;

2.在main方法中,创建一个新的Rectangle对象,并使用perimeter和area方法计算并输出矩形的周长和面积;

程序编码:

运行结果:

程序主要算法解释:

在perimeter方法中,我们使用公式2*(length + width)来计算矩形的周长。我们首先将length和width相加,然后将结果乘以2。这个公式是计算矩形周长的标准公式。

在area方法中,我们使用公式length * width来计算矩形的面积。这个公式是计算矩形面积的标准公式。

在main方法中,我们首先创建一个新的Rectangle对象rect,然后使用rect对象的perimeter和area方法来计算并输出矩形的周长和面积。我们使用System.out.println()方法来输出结果。

归纳总结:

通过这个任务,我们学习了如何使用Java编程语言定义一个表示矩形对象的类,包括私有成员变量、构造函数和公共方法。我们了解了如何计算矩形的周长和面积,并将结果输出到控制台。这个任务让我们熟悉了Java编程的基本概念和技术,包括类的定义和使用、私有成员变量和公共方法的创建和使用等。同时,我们也掌握了基本的数学运算在编程中的应用。


10

案例十:创建一个学生类,完成构造方法并实例化。

技术文档撰写人:卢莹莹

上下滑动查看更多

任务目标:

学生类,完成构造方法并实例化。

任务分析:

本任务从技术角度:如何定义一个对象作为它的主类是否需要其他的数据类型或方法。本任务从应用角度:通过学生类的创建,可以对学生的数据进行处理。

任务实施计划:

本任务实施需要3个步骤:1.定义一个名为Student的类;2.成员变量的使用;3.使用成员方法的调用。

程序编码:

运行结果:

程序主要算法解释:

1.public static void main(String[] args): 这是Java程序的入口点,当你运行Java程序时,会从这个方法开始执行;

2.在main方法中,首先创建了类为Student;

3.public void setName(String name)和public void setAge(int age)  这是两段带参构造函数,创建Student类的对象并提供参数时,就会调用这个构造函数。在这两短构造函数中,它将参数值分别赋给name和age属性;

4.public String getName(): 这是一个公开的getter方法,用于获取name属性的值;

5.public int getAge(): 这是一个公开的getter方法,用于获取age属性的值;

6.public void eat(): 这是一个公开的方法显示爱好。

归纳总结:

在java中类的属性被称为成员变量,行为就是成员方法。构造方法的作用是给对象的数据初始化。


11

案例十一:通过输入输出流复制一个.txt格式的文件

技术文档撰写人:刘少铭

上下滑动查看更多

任务目标:

编写一个java程序,将file src.txt文件中的内容复制到file opo.txt中。

任务分析:

使用while循环从输入流中读取数据。每次读取最多18个字节的数据到缓冲区中,并将读取的字节数赋值给变量b。当读取到文件末尾时,返回-1,此时循环结束。将从输入流中读取的数据(存储在缓冲区中)写入到输出流中。写入的字节数为变量b的值。

实施计划:

通过循环从源文件读取,然后写入目标文件,实现一个简单的文件复制功能。

程序编码:

运行结果:

程序主要算法解释:

归纳总结:

使用了while循环从输入流中读取数据。将从输入流中读取的数据(存储在缓冲区中)写入到输出流中。循环结束后实现了用java代码来复制txt文本文件。

end

快来为你喜欢的作品投票吧~


信息工程系微信公众号

编辑丨曾思燕

审核丨欧阳林

复核丨黄学文 王冬林

核发丨周林卫