java软件制作教程_Java程序的方法设计

一、方法的定义

我们在学习Java编程以后接触到的第一个程序就是"Hello World”,在这当中涉及到两个主要的结构:类和main方法,当时我们只是说明了main方法是程序的入口,那么当我们想要自己定义一个方法时应该如何下手呢?

1. 概念与作用

首先我们要明确方法的概念和作用,从名称上来说,方法也可以被称为函数,是用来解决同一类的问题的。从代码的结构上来说,定义方法可以减少重复的代码,也能使得整个程序结构更加清爽。

假如我们需要计算两个数的加和:

public class Test{

public static void main(String[] args){

// 定义两个变量,so easy

int a = 10,b = 5;

int c = a + b;

System.out.println(c);// 15

}

}

如果我们需要多次反复执行同一个逻辑,那么就会产生很多相同的代码:

public class Test{

public static void main(String[] args){

int a = 10,b = 5;

int c = 20,d = 10;

// 可以看到,虽然变量名称不同,但是计算的逻辑是相同的

// 如果某一段代码反复出现,我们可以考虑将他提取出来变成一个方法

int e = a + b;

System.out.println(e);// 15

int f = c + d;

System.out.println(f);// 30

int g = e + f;

System.out.println(g);// 45

}

}

定义方法后调用

public class Test{

public static void main(String[] args){

int a = 10,b = 5;

int c = 20,d = 10;

// 原有的代码逻辑将转变为方法的调用

plus(a,b);// 执行方法时输出:15

plus(c,d);// 执行方法时输出:30

plus(e,f);// 执行方法时输出:45

}

// 定义一个用于计算两个数加和的方法,计算后输出结果

public static void plus(int m,int n){

int result = m + n;

System.out.println(result);

}

}

从以上的例子我们可以看到:从结构上来说,方法就是由多行代码所组成的集合

从使用的角度来看,定义方法的目的是抽取出通用的部分,可以减少重复代码的出现

从最终的效果来看,多行代码的执行转化为了方法的调用

2. 定义的格式

如果我们想定义一个方法,那就需要先了解定义方法的结构,按照次序分别为:修饰符:对方法进行相关的限定,出现在返回值类型之前

权限修饰符:一般我们会将权限修饰符写在方法定义的最前面,它指明了这个方法都可以在什么地方被调用,最开始都声明为public即可

其他修饰符:可以修饰方法的关键词还有static,final等,会在其他文章中逐一介绍,修饰符的先后顺序没有严格要求返回值类型:指明了方法执行后是否需要进行返回,以及相应的类型

方法名:指定方法的名称,方法被调用时使用,在同一类中同名方法将构成重载

参数列表:声明调用方法时需要传入的参数,可以为空,也可以多个

方法体:方法被调用时所执行的代码,是方法的核心部分,需要与方法的返回值类型呼应

3. 方法的签名

方法名称和参数列表构成了方法签名,方法签名可以唯一的确定一个方法,并且对鉴别是否构成重载十分有用。

public class Test{

// 方法签名:main(String[] args)

public static void main(String[] args){

int a = 10,b = 5;

int c = plus(a,b);

}

// 方法签名:plus(int m,int n)

public static int plus(int m,int n){

return m + n;

}

}

4. 方法的注释

在定义一个方法后,我们在使用编译器调用时只能够查看到方法签名及返回值类型,我们希望对于相近或重载的方法进一步进行描述,有利于使用者对方法的区分。

对方法添加注释时需要使用文档注释,称之为javadoc,这样在进行调用时就可以显示方法的相关信息,对于方法的注释主要包括以下几个部分:方法作用描述:描述方法的作用

方法参数描述:@param,解释每个参数代表的含义

返回类型描述:@return,解释返回值代表的含义

在编译器中可以输入/** 快速生成一个方法的模板,效果如下:

public class Test{

/**

* 计算两个数的加和

* @param a 第一个加数

* @param b 第二个加数

* @return 两个数的加和

*/

public int plus(int a,int b){

return a + b;

}

}

二、方法的设计

明确了方法的定义结构之后,我们需要做的就是希望在解决实际问题时知道如何去定义一个方法,并且有一个清晰的思路。

1. 方法设计的思路

笔者认为一个方法的设计其实更像是整个编程思想的缩影,无论是完成一个复杂的功能还是某一个方法的定义都可以按照下面三个步骤来进行:What I want?

要定义一个方法,就要先明确:我需要完成怎样一个功能,用于解决一个什么样的问题?明确了之后我们就可以知道这个方法的用途,进而确定方法的名称、返回值类型、调用访问的权限、是否有其他修饰符。What I need?

接下来要我们要根据方法的用途,考虑这个方法执行时都需要什么,是否需要传入一些参数?于是我们可以确定参数列表的部分了。How to do?

在明确了方法要解决的问题以及所需要的参数之后,我们就可以分析方法中用该编写什么样的代码来解决问题,也就是最后确定方法体的部分,用上传递进来的参数,最后返回应该返回的变量或进行打印输出。

2. 方法名称的确定

方法名称的定义比较容易,因为自定义的程度较高,没有什么强制性的规则,只要满足标识符的规定就可以了。一般来说,方法的命名也需要做到见名知意,以小写字母开头,如果遇到多个单词首字母大写,可以是字母和数字的组合。

3. 参数列表的确定

参数列表的确定主要就是考虑调用方法时需要传入的参数的类型,可以为空,也可以为一个至多个,分别需要声明类型和名称。声明的类型用于限制调用方法时传入参数的类型

声明的名称用于代表传递进来的参数

除此之外,我们还需要了解一下各种参数类型之间的差别:基本数据类型:对于基本数据类型,我们可以认为是值的传递,即:这是一个值拷贝之后,复制的过程,我们在方法中如果对参数的值进行修改,也不会改变原有的值。

public class Test{

public static void main(String[] args){

int a = 10;

test(a);// 进行方法的调用,方法中对值进行了修改

System.out.println(a);// 结果为10

}

public static void test(int n){

System.out.println(n);// 接收到值,结果为10

n = 100;// 修改n的值,不会影响传入的参数a的值

System.out.println(n);// 结果为100

}

}

引用类型:包括数组在内的引用类型,也就是除了基本数据类型以外的其他类型,在进行传递时发生的是引用传递,也就是说参数接收到的是一个引用,相当于多了一个变量指向了同一个位置,这样在方法中进行的修改直接会作用在对象实例上。

public class Test{

public static void main(String[] args){

int[] a = {1,2,3};

test(a);// 进行方法的调用,方法中对数组a进行了修改

for(int i = 0;i < a.length;i++){

System.out.println(n);// 结果为10,20,30

}

}

public static void test(int[] n){

for(int i = 0;i < n.length;i++){

System.out.println(n[i]);// 接收数组的引用,结果为:1,2,3

}

for(int i = 0;i < n.length;i++){

n[i] = n[i] * 10;// 修改数组的值,每个元素变为原来的10倍

}

// 对于修改对象的属性值同理,直接作用在对象本身

}

}

可变参数:可变参数与数组类似,但是却有所不同,允许调用时以罗列的方式将参数传进来可变参数又叫不定参数,从字面解释就是:有的时候我不确定参数到底有几个,但是又不想每次都构建一个数组,这个时候就可以使用不定参数

可变参数在一个方法的定义中只能出现一个

可变参数只能出现在参数列表的最后一个位置

不建议使用Object类型作为可变参数类型,将在方法重载时说明

声明格式:参数类型... 参数名称,如:int... nums

public class Test{

public static void main(String[] args){

int a = 1;

int b = 2;

int c = 3;

test(null);// 调用成功,此时参数为null

test();// 调用成功,此时参数个数为0

test(a);// 调用成功,传入1个参数

test(a,b);// 调用成功,传入2个参数

test(new int[]{a,b,c});// 调用成功,也可构建成数组后传入

}

public static void test(int... nums){

// 将nums当成数组一样使用即可,可以通过判断数组长度确定传入参数的个数

// 前提是传入的参数不为null,否则会出现空指针异常

if(nums == null){

System.out.println("传入的参数为null");

}else{

System.out.println("传入的参数个数为:" + nums.length);

}

}

}

4. 返回类型的确定

如何确定一个方法是否需要有返回值呢?在上述的方法中,在返回值类型的部分我们使用的都是void关键字,代表此方法返回值为空,或无需返回。其实,对于一个方法是否需要返回这不是一个语法问题,而是取决于我们使用者的需要,我们来讨论一下这两种情况。void:代表方法执行后不需要指定返回值,也就是不需要使用return关键字,只需要完成方法的逻辑,输出某些信息,或者通过引用修改对象的某些属性。

其他类型

返回值类型只能指定一种,但可以是数组类型

如果声明了返回值类型,那么必须配合return关键字一同使用

return在一般情况下只能出现在方法的最后一行,作为方法的结束

在选择结构中,也可能不会出现在最后一行的位置,可以根据需要提前结束某一个方法,但是必须保证选择结构对应的所有情况都有相应的返回值

return后只能跟一个变量的名称或表达式,变量或表达式结果的类型必须和返回值类型相同

如果需要同时返回多个变量的值,可以使用数组

如果需要同时返回多种类型的变量,可以将返回值类型声明为:Object[]

public class Test{

public static void main(String[] args){

// 需要实现如下逻辑:计算两个数的加和,并将得到的结果变为10倍后输出

int a = 1,b = 2;

// 在进行方法调用后,我们必须想办法先得到两个数计算加和的结果,再继续下一步

int c = plus(a,b);

// 使用对应类型的变量(c)接收返回结果,然后继续下一步操作

int result = c * 10;

System.out.println(result);

}

public static int plus(int a,int b){

return a + b;

}

}

5. 方法内容的确定

能够根据需要熟练并快速的写出方法体中的内容这是一个长期训练和锻炼的过程,有的时候我们并不是不知道如何使用方法这种结构,而是给出的问题根本没有任何的思路。

在这里笔者将给大家一些建议,因为举再多的例子也无法在短时间内对大家有实质性的帮助。

其实程序本身只是我们一种逻辑思维表达,而且计算机真的很笨,所有的步骤都需要你一步一步去告诉他。

比如你想写一个判断素数的程序,不要指望你定义一个变量i,然后使用选择结构在判断条件中写上:if(i == 素数){}计算机就能明白,你首先要让计算机明白什么是素数,或者符合什么样的条件的数是素数。

基本上所有的问题都可以转换为一个数学问题,或者是具有步骤的逻辑问题,特别是我们要让计算机帮助我们去完成一项操作或功能的时候,你必须告诉它明确的步骤,以及遇到各种情况要如何处理,毕竟大佬是这么说的:

很多同学看到这句话的第一反应可能是:我信你个鬼!你个xx头子坏得很!但是仔细想想其实很有道理,特别是对于初学者,我们在学习编程时一定要尝试去理解计算机是如何工作的,如何教会它来帮助我们解决问题。

那么笔者的建议可以概括为以下几点:不要着急开始一个方法的编写

首先理清问题的解决步骤

如果可能,对每一个步骤进行细化,分析可能出现的情况,给出解决的办法

结合所学的语法知识,将每一个步骤翻译为相应的结构或代码

如果没有解决问题,重复以上步骤

经历几次之后你就可以完全在大脑中完成这几个步骤,顺畅的写出方法的内容。

三、方法的调用

当一个方法被定义以后,只有被调用了才会被执行,否则也是没有意义的。

1. 方法调用的格式

根据上面的例子,我想对于方法的调用方式大家已经掌握了。没错,很简单:方法名称 + 传入参数。

有关于参数的写法上需要作出一点说明,在进行方法定义时,我们需要声明参数的类型,而在调用方法,传入参数时,我们需要做的仅仅是匹配,不要再次声明参数的类型,而只需要保证传入的参数与定义的类型相匹配就好,可以传入一个具体的值,也可以是声明赋值后的变量,还是那句话:类型匹配就好。

2. 方法的执行过程

方法的执行过程其实比较简单,具体的包含嵌套调用的结构我们将在后面的文章中说明。方法的执行过程其实用到的了一个最基本的结构:顺序结构。

如果一段代码在执行的过程中遇到了方法调用,那么一定会进入到方法中,将方法中的代码全部执行完毕,再返回到方法的调用处,继续执行后面的代码。

那么这里也给大家解释一下初学者的问题:你说方法中定义的return是返回的意思,那到底返回到哪去了?什么时候返回的?

解释这个问题可以用一句话概括:返回到了调用该方法的位置。首先,只有一个方法被调用以后,才会执行其中的代码,才会轮到return语句的执行,那么return之后去哪了呢?自然是返回到调用这个方法的位置继续执行,这个时候,整个方法的调用语句就代表了这个方法的返回值,我们直接使用对应类型的变量接收就可以了。

public class Test{

public static void main(String[] args){

// 需要实现如下逻辑:计算两个数的加和,并将得到的结果变为10倍后输出

int a = 1,b = 2;// 代码执行步骤:1

// 代码执行步骤:2,进行方法的调用

int c = plus(a,b);// 代码执行步骤:4,进行返回值的赋值

int result = c * 10;// 代码执行步骤:5

System.out.println(result);// 代码执行步骤:6

}

public static int plus(int a,int b){

return a + b;// 代码执行步骤:3

}

}

3. 调用的注意事项static修饰符

static修饰符有很多作用,我们这里只讨论它用在方法上时,对方法的调用产生怎样的影响。由于main方法是程序的入口,那么它必须使用static声明,即:不需要实例化对象即可直接执行。那么由于main方法是static修饰的,那么它直接调用的方法必须也是由静态(static)修饰的。接收返回值

具有返回值的方法在调用后,是不是一定要对返回值进行接收呢?当然不是必须的,如果不接收,方法的值也会正常返回,只不过随即被丢弃了而已。接收时将方法调用语句看成一个整体,直接用对应类型的变量赋值接收即可。

四、方法的重载

1. 重载的概念

重载指的是在一个类中,可以定义多个同名的方法,区别在于参数列表不同。对于重载的概念还是很好理解的,无非是描述了一种现象,在一个类中存在了很多名字相同的方法,大家需要掌握的就是如何定义才符合重载的规则,以及重载有什么用?方法名称相同,参数列表不同

不要看这个概念简单,还是有很多同学在此翻车。方法名称相同很好理解,完全一致的才叫做相同,这里对大小写敏感。

另外一个概念是:参数列表不同,大家一定要注意,参数列表相同与否,是靠参数类型以及排列顺序来决定的,与参数名称无关。因为参数列表中声明的参数名称只是传入参数的一个代表,并不具备什么具体的区分意义。

public class Test{

// 求两个整数和的方法:plus

public int plus(int a,int b){

return a + b;

}

// 参数列表相同,不构成重载,不能在类中同时存在

public int plus(int c,int d){

return c + d;

}

// 参数列表不同,构成重载

public double plus(double a,double b){

return a + b;

}

// 参数列表不同,构成重载,但是不定参数容易构成调用的歧义,不推荐

public int plus(int... a){

return 0;

}

// 参数列表相同,方法名称不同,不构成重载,可以在类中同时存在

public int Plus(int a,int b){

return a + b;

}

}方法重载有什么用?

在很多时候,我们使用方法完成一个功能或逻辑,存在很多种情况,有些情况来自于代码逻辑处理的过程中,也有些情况是要对不同的参数类型做出不同的操作。

这个时候我们就可以利用重载的特点,用相同的方法名代表我们要处理的逻辑是类似的,然后在参数列表中声明不同的参数类型,这样就可以避免我们在方法中再繁杂的写各种参数个数的判断,参数类型的判断,更加利于维护。

同时,使用相同的方法类型,也使得使用者在调用时变得十分方便,不需要在同一功能上记忆各种不同的方法名称,同时又能很好的解决问题。

2. 重载方法的调用

对于重载方法的调用,由于方法名称相同,jvm主要就是根据传入的参数类型来进行区分,效果如下:

public class Test{

public static void main(String[] args){

int a = 1,b = 2;

int c = plus(a,b);// 调用plus(int a,int b)

double m = 1.0,n = 2.0;

double d = plus(m,n);// 调用plus(double a,double b)

}

// 求两个整数和的方法:plus

public static int plus(int a,int b){

return a + b;

}

// 方法名相同,参数列表不同,构成重载

public static double plus(double a,double b){

return a + b;

}

}

从上面的例子我们可以看到,在执行方法调用时主要是通过参数类型来进行区分的。但是当方法中出现不定参数时要尤为注意:

public class Test{

public static void main(String[] args){

int a = 1,b = 2,c = 3;

int d = plus(a);// 编译失败,与plus(int... a)和plus(int a,int... b)都匹配

int e = plus(a,b);// 编译成功,调用plus(int a,int b)

int f = plus(a,b,c);// 编译失败,与plus(int... a)和plus(int a,int... b)都匹配

int g = plus(new int[]{a,b});// 编译成功,调用plus(int... a)

int h = plus(a,new int[]{b,c});// 编译成功,调用plus(int a,int... b)

}

// 求两个整数和的方法:plus

public static int plus(int a,int b){

return a + b;

}

// 方法名称相同,参数列表不同,构成重载,但是不定参数容易构成调用的歧义,不推荐

public int plus(int... a){

return 0;

}

// 方法名称相同,参数列表不同,构成重载,但是不定参数容易构成调用的歧义,不推荐

public int plus(int a,int... b){

return 0;

}

}

从以上的例子我们可以看到,如果重载方法中出现了不定参数,那么在调用时很可能出现歧义,依然要通过手动构建数组的方式来解决,所以在进行方法重载时应该尽量避免出现不定参数,当不定参数是Object类型时,歧义问题就会更加严重。

​文源网络,仅供学习之用,如有侵权,联系删除。

这里边包括:第1章 Java图形用户界面编程 1实例1 布局管理 2实例2 设计软件启动界面 9实例3 实现多色窗口 11实例4 切分窗口 13实例5 丰富多彩的按钮 15实例6 在窗口中显示背景图 16实例7 在窗体中绘制图形 18实例8 利用JNI实现窗口特效 20实例9 文件选择对话框 24实例10 改变字体 26实例11 应用JTree 28实例12 应用JTable 30实例13 记事本 32实例14 使用JTextPane 36实例15 实现多文档视图 37实例16 使用进度条 39实例17 使用工具提示 42实例18 不同界面的风格 43第2章 Java的二维和三维图形处理 45实例19 颜色处理 46实例20 合成效果 47实例21 多种字体效果 49实例22 合成两个图片 53实例23 实现多种线形 58实例24 混合效果 62实例25 纹理与色彩处理 63实例26 实现填充效果 66实例27 变形与转换处理 67实例28 绘制弧线 69实例29 剪裁效果 74实例30 跳动的文字特效 78实例31 火焰与水纹特效 82实例32 盖房子特效 91实例33 旋转的方块特效 95实例34 光照效果特效 103第3章 Java输入/输出编程 109实例35 读取文件 110实例36 写入文件 111实例37 压缩文件 112实例38 打印文本文件 114实例39 读取配置文件 115实例40 流操作 117实例41 管道操作 118实例42 标准I/O重定向 121实例43 文件过滤器 122实例44 获取文件信息 123第4章 Java网络编程 125实例45 选择字体 126实例46 UDP与TCP/IP的简单应用 129实例47 聊天室 131实例48 浏览FTP 136实例49 局域网广播 147实例50 建立HTTP连接 151实例51 迷你浏览器 152实例52 扫描应用端口 154实例53 监控HTTP 155实例54 收发电子邮件 156实例55 一个简单的代理服务器 164实例56 扫描网站信息 173实例57 远程方法调用 174实例58 调用JINI方法 176第5章 Java数据库编程 179实例59 应用JDBC-ODBC桥 180实例60 使用单独JDBC连接驱动程序 184实例61 数据库基本操作 185实例62 使用游标 189实例63 使用事务 191实例64 实现SQL语句的检索功能 192实例65 SQL嵌套检索 194实例66 获取数据库基本信息 195第6章 Java C/S结构编程 197实例67 实现C/S多线程 198实例68 客户端程序 200实例69 服务器端程序 201实例70 C/S结构聊天室 203实例71 基于C/S的小游戏 209实例72 应用C/S数据库 237实例73 实现客户端程序 242实例74 实现一个简单的代理服务器 246实例75 C/S结构的分布式运算 248第7章 Java B/S结构编程 253实例76 简单的Servlet程序 254实例77 简单的留言簿 256实例78 JSP+Java Bean的计数器 258实例79 数据库查询 260实例80 文件的上传下载 262实例81 收发E-mail 267实例82 B/S结构的聊天室 269实例83 网上选课 276实例84 B/S结构的商业应用——购物车 282实例85 通过JSP调用Applet程序 285实例86 JSP与XML的结合 288第8章 Java安全控制编程 291实例87 控制访问权限 292实例88 产生密钥 296实例89 单钥加解密 299实例90 双钥加解密 301实例91 数字签名 303实例92 实现SSL协议 306实例93 简单的HTTPS服务 314第9章 Java Web Service编程 319实例94 使用DOM的层次模型 320实例95 使用SAX事件模型 324实例96 JAXP编程 327实例97 JDOM编程 331实例98 简单的SOAP应用 336实例99 访问SOAP RPC服务 339实例100 SOAP消息编程 342实例101 构建SOAP Script服务 347实例102 应用SOAP EJB Bean服务 354实例103 部署SOAP COM服务 358实例104 查询UDDI信息 364第10章 Java 2 Platform Enterprise Edition编程 367实例105 构建简单的EJB 368实例106 无状态会话Bean编程 371实例107 简单的累加器 374实例108 简单Bean管理的实体 377实例109 创建CMP EntityBean 386实例110 编写MessageDrivenBean 392实例111 使用JNDI 396实例112 各种EJB之间的调用过程 397实例113 使用B/S结构的EJB 402实例114 使用C/S结构的EJB组件服务 405实例115 与时间有关的函数 407实例116 EJB与UML的对应关系 412实例117 C/S结构的RMI-IIOP应用 414实例118 使用JTA与JTS 417实例119 Request-Reply模式的JMS应用 421实例120 使用Java IDL 426实例121 EJB与CORBA的交互 430实例122 基于EJB的真实世界模型 433实例123 EJB的商业应用——定购单 447第11章 Java 2 Platform Micro Edition编程 475实例124 插入和替换表单元素 476实例125 使用线程与定时 478实例126 J2ME绘图 480实例127 基于J2ME的小游戏 483实例128 建立无线HTTP连接 485实例129 收发短信 487实例130 获取基金报价 490第12章 JNI编程 493实例131 简单的JNI调用 494实例132 调用Windows API 495实例133 通过JNI运行OpenGL动画 496实例134 JNI与COM之间的调用 500实例135 隐藏Java控制台 502实例136 监控内存 505实例137 获取本机的Mac地址 508实例138 获取Java系统信息 509实例139 控制Java与C++程序的通信 510实例140 访问Windows注册表 514第13章 Java配置与集成 523实例141 J2SDK的安装配置 524实例142 使用第三方包 525实例143 安装配置Tomcat 526实例144 安装配置Apache 528实例145 安装配置WebLogic 529实例146 整合Tomcat与IIS 531实例147 整合Tomcat与Apache 532实例148 整合JBuilder与WebLocig 533实例149 安装、编译和执行一个MIDlet 535实例150 构造Jsp/javabean开发和发布环境 537 还包括第1章 记忆测试软件1.1. 设计内容1.2. 设计要求1.3. 总体设计1.4. 具体设计1.4.1. 运行效果与程序发布1.4.2. 主类Memory1.4.3. 方块 Block1.4.4. 记忆测试板MemoryTestPane1.4.5. 显示成绩 ShowRecord1.4.6. 记录成绩 Record1.4.7. 随机排列图标 RandomSetIcon1.4.8. 测试者 People1.5. 课程设计作业第2章 计算器2.1. 设计内容2.2. 设计要求2.3. 总体设计2.4. 具体设计2.4.1. 运行效果与程序发布2.4.2. 主类 ComputerPad2.4.3. 数值按钮NumberButton2.4.4. 运算符号按钮OperationButton2.5. 课程设计作业第3章 HANNOI-塔3.1. 设计内容3.2. 设计要求3.3. 总体设计3.4. 具体设计3.4.1. 运行效果与程序发布3.4.2. 主类 Tower3.4.3. Hannoi-塔 HannoiTower3.4.4. 塔点 TowerPoint3.4.5. 盘子 Disk3.5. 课程设计作业第4章 JPEG图象生成器4.1. 设计内容4.2. 设计要求4.3. 总体设计4.4. 具体设计4.4.1. 运行效果与程序发布4.4.2. 主类 MakeJPEG.java4.5. 课程设计作业第5章 标准化考试系统 (单机版)5.1. 设计内容5.2. 设计要求5.3. 总体设计5.4. 具体设计5.4.1. 运行效果与程序发布5.4.2. 主类EnglishTest5.4.3. 考试区域TestArea5.4.4. 读取试题 ReadTestquestion5.5. 课程设计作业第6章 标准化考试系统 (C/S网络版)6.1. 设计内容6.2. 设计要求6.3. 总体设计6.4. 具体设计6.4.1. 运行效果与程序发布6.4.2. 客户端主类Client6.4.3. 客户端选择试题界面ChoiceFile6.4.4. 客户端考试界面ClientTestArea6.4.5. 服务器端主类Server6.4.6. 服务器端读取试题 ReadTestquestion6.5. 课程设计作业第7章 标准化考试系统 (B/S网络版)7.1. 设计内容7.2. 设计要求7.3. 总体设计7.4. 具体设计7.4.1. 运行效果与程序发布7.4.2. 客户端主类ClientBS7.4.3. 客户端选择试题界面ChoiceFile7.4.4. 客户端考试界面ClientTestArea7.4.5. 服务器端主类Server7.4.6. 服务器端读取试题 ReadTestquestion7.5. 课程设计作业第8章 日历记事本8.1. 设计内容8.2. 设计要求8.3. 总体设计8.4. 具体设计8.4.1. 运行效果与程序发布8.4.2. 主类CalendarPad8.4.3. 记事本NotePad8.4.4. 年Year8.4.5. 月Month8.5. 课程设计作业18.6. 课程设计作业2第9章 学籍管理系统9.1. 设计内容9.2. 设计要求9.3. 总体设计9.4. 具体设计9.4.1. 运行效果与程序发布9.4.2. 主类StudentManager9.4.3. 录入界面StudentSituation9.4.4. 查询界面Inquest9.4.5. 修改界面ModifySituation9.4.6. 删除界面Delete9.4.7. 学生对象Student9.5. 课程设计作业第10章 图书查询系统 (B/S网络版)10.1. 设计内容10.2. 设计要求10.3. 总体设计10.4. 具体设计10.4.1. 运行效果与程序发布10.4.2. 客户端主类DatabaseClient10.4.3. 服务器端主类DatabaseServer10.5. 课程设计作业第11章 中国象棋打谱软件11.1. 设计内容11.2. 设计要求11.3. 总体设计11.4. 具体设计11.4.1. 运行效果与程序发布11.4.2. 主类 Chess11.4.3. 对弈棋盘ChessBoard11.4.4. 棋子ChessPiece11.4.5. 棋点 ChessPoint11.4.6. 走棋法则Rule11.4.7. 步骤MoveStep11.4.8. 记录棋谱MakeChessManual11.4.9. 棋谱演示Demon11.5. 课程设计作业111.6. 课程设计作业2第12章 魔板游戏12.1. 设计内容12.2. 设计要求12.3. 总体设计12.4. 具体设计12.4.1. 运行效果与程序发布12.4.2. 主类PuzzleFrame12.4.3. 魔板PuzzlePad12.4.4. 魔板中的点SquarePoint12.5. 课程设计作业第13章 挖雷游戏13.1. 设计内容13.2. 设计要求13.3. 总体设计13.4. 具体设计13.4.1. 运行效果与程序发布13.4.2. 主类Game13.4.3. 方块 Block13.4.4. 雷区 MineSquare13.4.5. 雷标数目 FindAroundMineMarkNumber13.4.6. 雷标判断 DetermineMineMarkIsRightOrWrong13.4.7. 成片挖开区域 DetermineDigArea13.4.8. 无雷连通区 FindSafeArea13.4.9. 随机布雷 RandomSetMine13.4.10. 周围地雷个数FindAroundMineNumber13.4.11. 显示剩余雷数CountMine13.4.12. 计时器TimeCount13.4.13. 英雄榜录入对话框Record13.4.14. 显示英雄榜对话框ShowRecord13.4.15. 挖雷成功DecideWinner13.5. 课程设计作业第14章 网络聊天室 (B/S模式)14.1. 设计内容14.2. 设计要求14.3. 总体设计14.4. 具体设计14.4.1. 运行效果与程序发布14.4.2. 客户端主类ClientChat14.4.3. 客户端输入妮称界面InputNameTextField14.4.4. 客户端聊天界面ChatArea14.4.5. 服务器端主类ChatServer14.5. 课程设计作业第15章 局域网络广播系统15.1. 设计内容15.2. 设计要求15.3. 总体设计15.4. 具体设计15.4.1. 运行效果与程序发布15.4.2. 客户端主类Receive15.4.3. 服务器端主类BroadCastWord15.5. 课程设计作业
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值