经典案例Word格式文档下载.docx
《经典案例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《经典案例Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
个人所得税计算器
个人所得税计算器,编写程序实现个人所得税的计算,要求从控制台输入本月实际收入,求出本月应纳个税。
个人所得税计算公式:
月应纳税所得额=月实际收入-个税起征点(2000.00)
月应纳个人所得税税额=K1×
F1+K2×
F2+K3×
F3+…+Kn×
Fn
其中Kn表示月应纳税所得额在第n级的部分,Fn表示第n级的税率。
个人所得税率表:
级数
全月应纳税所得额
税率(%)
1
不超过500元的
5
2
超过500元至2,000元的部分
10
3
超过2,000元至5,000元的部分
15
4
超过5,000元至20,000元的部分
20
5
超过20,000元至40,000元的部分
25
6
超过40,000元至60,000元的部分
30
7
超过60,000元至80,000元的部分
35
8
超过80,000元至100,000元的部分
40
9
超过100,000元的部分
45
∙说明:
1,该习题主要考察的知识点:
控制台输入和复杂的选择流程控制。
2,计算个人所得税时要注意,应纳税所得额要分段计算,即:
若某人的本月应纳税所得额为:
7800.00元,则其中有500.00元适用税率5%;
有1500.00元适用税率10%;
有3000.00元适用税率15%;
有2800.00元适用税率20%。
则该员工应纳税:
500×
5%+1500×
10%+3000×
15%+2800×
20%=1185.00元
✧案例4:
百分制分数和等级制分数的转换
百分制分数与等级制分数的转换,编写程序,将一个百分制分数转化为等级制分数并输出出来,转化规则如下:
90分以上A
80分~89分B
70分~79分C
60分~69分D
60分以下E
要求百分制分数从控制台读入,并在程序中判断读入的分数值是否有效。
转化后得到的等级制分数输出在控制台。
控制台输入,多路分支选择结构(switch—case)。
2,教师应启发学生如何设计switch-case
✧案例5:
猜数字游戏
编写程序,实现控制台的猜数字游戏。
游戏运行时产生一个0-1000之间的随机整数,要求用户从控制台输入数字,若输入的数字比产生的数字小,则输出:
“太小了,再大一点!
”;
若输入的数字比产生的数字大,则输出:
“太大了,再小一点!
”,若输入的数字和产生的数字相等,则输出:
“恭喜你猜对了!
”然后退出程序;
若用户猜了10次还未猜对,则输出:
“你太笨了,下次再来吧!
”然后退出程序。
1,该案例主要考察的知识点:
循环控制,控制台输入和输出,随机数的生成。
2,教师应该讲解随机数产生的方法,并将该代码发布给学员。
✧案例6:
九九乘法表的输出
要求编写程序,在控制台输出九九乘法表,如下图所示:
1×
1=1
2=22×
2=4
3=32×
3=63×
3=9
4=42×
4=83×
4=124×
4=16
……
1,该案例主要考察使用两层循环的嵌套来进行复杂的循环流程的控制。
2,该案例可以作为教学案例,也可以要求学生当作课堂练习完成。
✧案例7:
输出唐诗
用二维数组保存一首唐诗(五言或七言),每一行代表一句,保存格式如下:
剑外忽传收蓟北
初闻涕泪满衣裳
却看妻子愁何在
漫卷诗书喜欲狂
白日放歌须纵酒
青春作伴好还乡
即从巴峡穿巫峡
便下襄阳向洛阳
要求将这首唐诗按照古文的方式输出出来(从右至左,竖行排列),输出格式如下:
便即青白漫却初剑
下从春日卷看闻外
襄巴作放诗妻涕忽
阳峡伴歌书子泪传
向穿好须喜愁满收
洛巫还纵欲何衣蓟
阳峡乡酒狂在裳北
二维数组的访问和元素的操作。
2,教师可以画图分析将唐诗按照古文的方式输出时数组元素下标的变换规则。
✧案例8:
酒店前台客房管理程序
某酒店有10层楼,每层楼有12个房间,要求为该酒店设计一套简单的前台房间管理程序,该程序可以通过在命令行输入命令来为客人办理入住和退房手续。
要求该程序支持通过命令行输入以下命令来进行入住,退房及查询的操作:
search:
查询所有房间的状态
in1202tangliang:
姓名为tangliang的客人入住1202房间
out1202:
1202房间退房
quit:
退出程序
1,该案例主要考察知识点:
数组的定义和遍历,两层循环来遍历二维数组。
2,教师可以将程序框架搭建起来,让学员实现其中的部分代码。
3,在本例中要求所有程序代码都写在main方法中。
4,该案例难度系数:
架构级
✧案例9:
用数组解决约瑟夫环问题
用数组实现约瑟夫出圈问题。
n个人排成一圈,从第一个人开始报数,从1开始报,报到m的人出圈,剩下的人继续开始从1报数,直到所有的人都出圈为止。
对于给定的n,m,编写程序求出所有人的出圈顺序。
数组的使用和数组元素的操作
2,教师应该详细讲解约瑟夫环的问题模型,以及如何用数组来模拟约瑟夫环的算法。
✧案例10:
数组排序
介绍常用的数组排序方法:
冒泡排序或选择排序,让学员至少掌握一种数组排序的方法。
1,该案例让学员至少掌握一种数组排序的算法,对各种排序算法的优劣性有一定了解。
2,讲师讲解各种排序算法的原理,让学员自己实现其中至少一种排序方法的代码。
✧案例11:
用模块化的设计重构以前的案例(方法的定义和调用)
将案例8:
酒店前台客房管理程序的代码使用模块化的方式重新组织,抽象出一些方法来分别完成某个模块的任务,然后在主方法中调用这些方法,将程序组织起来。
1,该案例考察方法的定义与调用。
2,教师可以给出部分方法的定义接口,让学员实现,并调用。
✧案例12:
扫雷游戏的核心功能的实现
在该案例中我们要实现类似于windows扫雷游戏程序的核心功能,我们将扫雷游戏的核心功能分为以下4个模块:
1,随机布雷模块
在该模块中,我们要为扫雷游戏随机的布置地雷,扫雷游戏的布雷面板可以用二维int数组表示,若某位置为地雷,则该位置用数字-1表示,若该位置不是地雷,则暂时用数字0表示。
我们要编写程序完成在该二维数组中随机布雷的操作,程序读入三个参数:
布雷面板的行数(r),列数(c),布置的地雷数(n),且要满足要求0<
n<
r×
c×
0.75(布置地雷的密度最大为75%)。
程序运行后将n个地雷随机的布置在r×
c的二维数组中,产生如下的二维数组:
-1
2,计算每个位置周围的地雷数
以上一模块产生的随机地雷分布的二维数组为数据来源,计算该二维数组中不是地雷的位置周围的8个位置总共有多少个地雷,将这一数字存储在该位置,产生如下二维数组:
2
4
3
3,输出布雷面板:
我们要编写程序完成布雷面板的控制台输出,为了区分布雷面板中哪些位置是已经被用户排开的,哪些位置是未被排开的,我们对以上二维数组的数据定义作如下约定:
若该位置保存的数字是n,则n满足如下条件:
1)若0<
=n<
=8,则表示该位置不是地雷,其周围位置的地雷数就是n,且该位置未被用户排开。
2)若10<
=18,则表示该位置不是地雷,其周围位置的地雷数就是n%10,且该位置已经被用户排开。
3)若n==-1,则表示该位置是地雷,并且未被用户标记。
4,用户排雷程序模块
完成以上两个模块后,用户可以完成排雷的操作,我们要编写一个程序来支持用户通过控制台来排除地雷,用户可以在控制台输入坐标位置,来表示排除该位置是地雷。
当用户输入坐标位置后,程序需要执行如下操作:
1)若该坐标位置是地雷(值为-1),则,程序结束,用户排雷失败。
2)若该坐标位置存储的数字是大于0小于等于8的整数(该位置不是地雷,该位置周围地雷数等于该数字,该位置未被用户排开),则将该位置排开(并将该位置的数字+10,表示该位置已经排开),然后重新输出一遍布雷面板。
3)若该坐标位置存储的数字是大于等于10小于等于18的整数(该位置不是地雷,该位置已经被排开),则输出错误信息,请用户重新输入。
4)若该坐标位置存储的数字等于0(该位置不是地雷,该位置周围的8个位置也没有地雷,该位置还未被用户排开),则找该位置的周围8个位置,将其排开,排开时递归的执行排雷程序模块的操作。
1,该案例可分为四个子案例单独讲解,或作为课堂练习或课后作业让学员完成。
2,其中前三个模块比较简单,要求大多数学员都能独立完成,最后一个模块比较复杂,需要设计方法的递归调用,有基础的学员可以在教师和项目经理的指导下完成。
3,该案例考察了以下知识点:
数组的操作,复杂流程的控制,方法的递归调用等。
✧案例13:
五子棋游戏v1.0(控制台版本)
∙定义
编写程序实现两人互玩的五子棋游戏,游戏开始时要求在控制台输出以下棋盘,然后提示黑方和白方下子,玩家从命令行输入落子坐标,如:
af,表示在a,f坐标落子,其中黑方的子用@表示,白方的子用O表示,空白位置用*表示,每有一方落子,则要重新输出棋盘的状态,程序还要能判断某一方获胜,并终止游戏。
棋盘初始状态:
0123456789abcdef
0****************
1****************
2****************
3****************
4****************
5****************
6****************
7****************
8****************
9****************
a****************
b****************
c****************
d****************
e****************
f****************
复杂循环的控制,数组的应用,流程控制解决复杂问题。
2,教师可以讲解如何判断某一方获胜的算法。
3,讲师可以将整个程序分模块,将每个模块的方法定义好,由学员来实现。
✧案例14:
类的抽象—栈
栈是一种常用的数据结构,其特点是存储数据时“先进后出”。
写一个类用来模拟栈这种数据结构,要求底层使用数组存储数据,并给出相应的进栈和出栈的方法。
还要求定义一个测试类,包含主方法,在主方法中测试栈的定义是否正确(生成栈对象,调用栈的方法)。
1,该案例主要考察学员抽象数据类型的能力。
2,教师可以启发学生思考,抽象数据类型时如何抽象属性和方法,如何将属性和方法的定义细化。
✧案例15:
类的抽象—人类
写一个类Person,包含以下属性:
Stringname;
intage;
booleangender;
Personpartner。
为Person类写一个marry(Personp)方法,代表当前对象和p结婚,如若可以结婚,则输出恭贺信息,否则输出不能结婚原因。
要求在本类中写一个主方法,来测试以上程序(生成两个Person对象,并调用它们的marry方法)。
下列情况不能结婚:
1,同性;
2,未达到结婚年龄,男<
22,女<
20;
3,某一方已婚
1,该案例主要考察类的自关联的定义和使用。
2,该案例还可做如下扩展:
将intage的定义改为Calendarbirthday的定义,要求学员使用Calendar操作日期数据。
3,教师可以借助该案例讲解java.util.Calendar和java.util.GregorianCalendar的使用,让学员熟悉日期数据的处理方法。
✧案例16:
酒店前台客房管理程序v2.0(面向对象实现)
将以前写的酒店房间管理程序按照面向对象的方式重新设计,抽象出以下类:
酒店类:
属性:
酒店名称;
酒店所有房间的数组。
方法:
查询房间状态booleanisEmpty(introomNumber);
入住booleancheckIn(intrid,StringgName),退房booleancheckOut(intrid);
开始运行voidstart();
1,该案例考察学员面向对象的抽象能力。
2,教师可以指导学员搭建好程序的代码框架,让学员完成方法。
✧案例17:
继承关系的设计和实现
考虑一个具有各种图形类的图形系统,这些图形包括长方形、正方形、三角形、圆形等。
例如,长方形可以有长、宽、中心点等数据,而正方形和圆形可能只有一个中心点和一个边长或半径。
在一个精心设计的图形系统中,这些类应派生于一个公共的类(即Figure类)。
现要求实现这样一个系统。
Figure类是父类。
定义从Figure类继承的Rectangle和Triangle类。
每个类都有erase和draw方法。
draw方法将该图形在控制台输出出来,而erase方法则擦除这些图形(只需清屏,通过输出空行,或者通过执行更复杂的动作)。
继承关系的定义,方法的覆盖。
2,该案例难度系数:
✧案例18:
接口的应用—DAO模式
我们要开发一套通用的网站用户管理程序,该程序主要包含用户注册和用户登录等基本功能。
用户的注册数据可能会存储在不同的介质中(文件或数据库)。
为了让业务程序访问数据时不需要去关注数据的存储介质,我们需要在程序中抽象一个对数据访问的接口,该接口中给出了业务程序可能对数据访问的所有方法的定义。
然后分别写出该接口的两个实现类,从文件和数据库中访问数据。
以我们现在所学的知识,我们暂时还无法去实现这两个类,但我们可以在相应的方法中输出语句来模拟一个实现。
即便这样,我们还是可以定义一个可以真正实现的类,该类从数据访问用户的注册数据。
1,该案例描述接口的意义,和使用接口降低耦合。
2,教师可以带领学员完成该案例,并讲解使用接口给整个程序结构带来的好处。
✧案例19:
字符串的应用—字符串解析
Unix机器中用9个字符来表示文件的访问权限,其中前三位表示文件拥有者对文件的权限,中间三位表示同组者对文件的权限,最后三位表示其他人对文件的权限,而每一类不同的角色对文件的权限又分为读(r),写(w)和执行(x)三种权限,如:
“rw-r--r--”则表示拥有者具有读和写的权限,同组者和其他人只有读的权限。
同时,我们也可以对权限种类进行编码,如:
读=4,写=2,执行=1,这样文件的权限也可以用三位八进制数字来表示,例如:
“644”就等价于“rw-r--r--”。
现在要求编写程序将给定的文件权限字符串转换为8进制的编码值,或者将8进制编码值转化为文件权限字符串。
1,该案例考察的知识点:
字符串的操作,进制的转换,Integer和String的转化等。
2,教师可以带领学员完成从字符串到8进制数字的转化程序,要求学员自己完成逆向的转化程序。
✧案例20:
模拟ArrayList的实现—MyArrayList类
自己写一个MyArrayList类,实现java.util.ArrayList类的核心功能,要求底层使用数组存储数据,能实现自动扩容,能使用Iterator遍历,实现List接口的常用方法。
1,该案例主要考察学员对ArrayList实现原理的掌握,进一步加深面向对象的抽象思想,熟练掌握数组操作。
2,教师可以写出该类的代码框架,让学员实现其中的重要方法。
3,该案例的重点和难点在于add方法中实现数组自动扩容和iterator方法中实现并得到迭代器。
程序级/设计级
✧案例21:
模拟LinkedList类的实现—MyLinkedList类
自己写一个MyLinkedList类,实现java.util.LinkedList类的核心功能,要求底层使用链表存储数据,能实现自动扩容,能使用Iterator遍历,实现List接口的常用方法。
1,该案例主要考察学员对链表的实现原理的掌握,进一步加深面向对象的抽象思想,熟练掌握链表的定义和操作。
3,教师应该讲解Java实现链表的基本方法。
✧案例22:
反射实现类的动态加载
编写如下格式的配置文件,然后根据配置文件的参数加载类,生成实例,设置属性的值,并调用方法,在该案例中假定类一定有无参构造方法,假定属性类型是String,假定方法都是无参的。
CLASS_NAME=tts.cookbook.key22.Student
FIELD_NAME=name
FIELD_VALUE=zhangsan
METHOD_NAME=study
1,该案例主要考察学员对反射的理解,使用反射进行类的动态加载。
2,教师应该讲解使用Properties装载配置文件的方法,并将该段代码发布给学员。
此时并不需要学员理解文件访问的方法。
3,教师可以引导学员思考一下如果没有题目所给的那些假设,如果要访问的属性和方法不止一个,那用Properties格式的配置文件就不能很好的描述了,这时需要一种有层次感能自我说明的数据描述格式—XML。
✧案例23:
简易计算器的界面设计及实现
使用AWT和Swing设计简单的计算器界面,并实现基本的运算功能,如下图所示:
1,该案例主要考察学员对基本图形组件和布局管理器的使用。
2,教师可以讲解多层布局设计的原理和基本方法。
3,教师可以讲解实现运算的基本算法。
✧案例24:
简易记事本程序的界面设计
使用AWT和Swing设计一个类似于windows记事本的程序界面,要求使用菜单。
1,该案例主要考察学员对基本图形组件,布局管理器和程序菜单的设计和使用。
3,教师可以讲解JFileChooser和JColorChooser的使用。
✧案例25:
图形编程中的事件处理案例
要求为MouseListener,MouseMotionListener,ItemListener,ChangeListener,WindowListener写一些实际案例来说明其用法。
1,要求写一个案例,捕捉鼠标在面板上的活动,每当鼠标指针移动时在面板下方动态输出鼠标当前坐标位置。
若用户在面板上点击鼠标,也要输出鼠标的哪个键被点击,以及点击点的坐标。
2,要求写一个案例,在面板上包含两个下拉列表,省份和城市,要求用户改变省份列表项时,城市的内容同步改变为当前省份的城市。
3,要求写一个案例,使用三个JSlider分别选取R,G,B三原色的值,用户可以通过活动JSlider的滑块来动态的合成一种颜色,合成的颜色动态显示在界面上。