Java面向对象程序设计课程设计Word文档下载推荐.docx
《Java面向对象程序设计课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计课程设计Word文档下载推荐.docx(34页珍藏版)》请在冰点文库上搜索。
![Java面向对象程序设计课程设计Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/9de6d2ee-2505-4b39-895d-a5db03006c58/9de6d2ee-2505-4b39-895d-a5db03006c581.gif)
5)比较字符串(equals()方法)
2.22选5彩票号码生成器
设计一个彩票号码生成器,主要处理5位数字序列的排列组合,要求每一位上的数字为1~22区间上的任意一个,且数字不可重复。
1)数字存放的数据结构(Array)
2)随机数的获得(random()方法)
3)循环语句的使用(for语句)
3.设计一个简易的计算器,可以进行四则运算:
加、减、乘、除等(限于十进制下)
程序要求:
1)应具有相应的界面,可参考Windows操作系统自带的计算器界面。
2)操作符号定为:
“+”,“-”,“*”,“/”,“+/-”等。
(按国际惯例设计)
3)用户通过点击程序界面上按钮,实现数字、运算符的输入操作。
4)以上部分为必须完成的内容。
选作部分:
具有操作符号“1/x”,“sqrt”(开方),“.”(小数功能)等。
三、开发工具与平台
1.开发工具
JavaSEDevelopmentKit8u25
2.开发平台
UltraEdit
四、设计思路
第一个人:
赵贯强
(1)界面设计
importjava.util.*;
publicclassZifuchuan{
publicstaticvoidmain(Stringargs[]){
ScannerZ1=newScanner(System.in);
System.out.print("
请您输入一个字符串:
"
);
StringgetString=Z1.next();
System.out.println("
您输入的字符串的长度是:
+getString.length());
请输入查找的字符:
Stringq=Z1.next();
您查找的字符位置在字符串的:
+getString.indexOf(q));
请您再输入一个字符串:
StringgetString2=Z1.next();
booleanZ2=getString.equals(getString2);
您输入的两个字符串是否相等:
+Z2);
}
}
(2)逻辑设计
导入util类包,使用System.in键盘输入获得Z1字符串对象,再使用length()方法获取Z1下的函数next()返回的字符串长度,接着使用IndexOf()方法获取Z1下的函数next()所查找字符或字符串首次出现的位置;
同一个类中,调用System.in键盘输入获得Z2字符串对象,把第二个字符串赋值给Z1下的函数next()返回的字符串,使用equals()方法比较两个字符串字符序列是否相同,输出为布尔类型,即true或false。
(3)程序测试
String类)。
ScannerZ1=newScanner(System.in);
2)字符串信息的输出。
System.out.print("
3)获得字符串长度(length()方法)。
System.out.println("
4)在字符串中查找一个字符(IndexOf()方法)。
5)比较字符串(equals()方法)。
booleanZ2=getString.equals(getString2);
publicclassCaipiao{
publicstaticvoidmain(Stringargs[]){
RandomZ1=newRandom();
HashSet<
Integer>
set=newHashSet<
();
while(set.size()<
5){
intranNubmer=Z1.nextInt(22)+1;
if(ranNubmer!
=0){
set.add(ranNubmer);
}
}
System.out.println(set);
导入util类包,使用Random()方法创建一个Z1随机数生成器,使用HashSet构造一个set空容器,定义set集合为int型数据。
使用while循环语句,返回set.size()<
5的元素数,即五个元素;
定义一个随机数,这个随机数用nextInt(22)+1函数产生,使用if语句,如果随机数不为零,则使用set.add()方法,使产生的随机数添加到set集合中;
如果为零,则不添加set集合中。
并使用set接口,自动去掉重复的数字。
最后输出随机产生的五个1~22之间的数。
1)创建一个Random类的变量Z1使它成为一个新的随机数生成器。
RandomZ1=newRandom();
2)定义一个set变量,使set在HashSet容器类中装的都是类型为Integer的对象,使用<
符号规定对象的类型,是java泛型类的体现。
HashSet<
3)使用while循环语句实现22选5,set.size()<
5即循环五次,返回set中的元素数。
while(set.size()<
4)返回一个伪随机数,它是从此随机数生成器的序列中取出的、在0(包括)和指定值(不包括)之间均匀分布的int值。
nextInt(22)生成的随机数为0(包括)~22(不包括),nextInt(22)+1生成的随机数即为1(包括)~23(不包括)。
intranNubmer=Z1.nextInt(22)+1;
5)使用if语句,如果随机数不为零,则使用set.add()方法,使产生的随机数添加到set容器中;
如果为零,则不添加set容器中。
if(ranNubmer!
6)使用set接口,使得所生成的随机数不重复,使用set.add()把随机数ranNubmer添加到set容器内。
set.add(ranNubmer);
7)输出set容器内的随机数。
System.out.println(set);
第二个人:
付勃达
publicclassTestString{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
System.out.println("
请输入一串字符串"
Strings1=sc.next();
System.out.println("
你输入的字符串的长度是"
+s1.length());
请输入一个字符"
Stringc=sc.next();
你输入的字符位置在字符串的"
+s1.indexOf(c));
请您再输入一串字符串"
Strings2=sc.next();
booleantf=s1.equals(s2);
您输入的两个字符串相等吗"
+tf);
1)通过import语句导入until类包。
2)通过键盘输入初始化字符串,建立字符串对象。
System.in是获取输入的字符串。
Scannersc=newScanner(System.in);
3)获取输入的字符串并封装在s1中。
Strings1=sc.next();
4)通过调用length()方法返回字符串的字符个数,即获取字符串的长度。
+s1.length());
5)通过调用indexOf()方法返回字符c在字符串s1中出现的第一个位置,如果查找成功,则返回匹配成功的字符的位置;
如果没有查找到,则返回-1。
+s1.indexOf(c));
6)通过调用equals()方法比较输入的两个字符串s1和s2的字符序列是否相同;
equals()方法返回类型为布尔类型。
booleantf=s1.equals(s2);
1)键盘输入建立字符串对象。
2)字符串信息的输出。
Strings1=sc.next();
booleantf=s1.equals(s2);
publicclassLottery{
publicint[]getValue(intmax,intn){
intL[]=newint[n];
inti=1;
intj=0;
L[j]=(int)(Math.random()*max)+1;
while(i<
n){
intr=(int)(Math.random()*max)+1;
for(j=0;
j<
i;
j++){
if(r==L[j])
break;
}
if(i!
=j)
continue;
L[i]=r;
i++;
returnL;
publicstaticvoidmain(String[]args){
intv[]=newLottery().getValue(22,5);
for(inti=0;
i<
v.length;
i++){
System.out.print(v[i]+"
"
1)根据题目要求,设计一个22选5彩票号码生成器。
getValue()获取数组中指定位置的值,该代码显示的是设定数组v容量为22个元素,每次所选择使用的元素为5个。
intv[]=newLottery().getValue(22,5);
2)使用整形数组存放数字。
publicint[]getValue(intmax,intn){
3)给数组L分配n个整型的数据空间,并赋初始值为0。
intL[]=newint[n];
4)调用random()方法令系统产生一个大于等于0,小于1的随机数,并且返回的随机数指定范围在m~n之间。
Math.random()*(n-m+1)+m;
5)由于random()方法默认的返回类型为double类型,但需要的是整型的随机数,因此需要强制类型转换(int)使得所取得的随机数为整型;
题目还要求每一位上的数字为1~22区间上的任意一个,但random()方法所生成的随机数为[0,1)之间,因此使用(Math.random()*max)+1语句使得所生成的随机数范围在1~22之间。
L[j]=(int)(Math.random()*max)+1;
6)通过while循环语句和for循环语句的结合使用可以保证每次所生成的5位随机数均不重复。
7)最终通过for循环语句和打印输出语句结合使用完成该程序设计的目的。
for(inti=0;
System.out.print(v[i]+"
);
1)数字存放的数据结构(Array)。
intv[]=newLottery().getValue(22,5);
2)随机数的获得(random()方法)。
L[j]=(int)(Math.random()*max)+1;
intr=(int)(Math.random()*max)+1;
3)循环语句的使用(for语句)。
for(j=0;
(1)界面设计
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
publicclassCalculatorextendsJFrameimplementsActionListener{
privatestaticfinallongserialVersionUID=1L;
JPanelmainpanel=newJPanel();
JPanelcenterpanel=newJPanel();
JTextFieldtxt=newJTextField("
StringBuffersb1=newStringBuffer();
StringBuffersb2=newStringBuffer();
charsign;
booleanflag=false;
JButton[]buttons=newJButton[16];
{
buttons[0]=newJButton("
1"
buttons[1]=newJButton("
2"
buttons[2]=newJButton("
3"
buttons[3]=newJButton("
+"
buttons[4]=newJButton("
4"
buttons[5]=newJButton("
5"
buttons[6]=newJButton("
6"
buttons[7]=newJButton("
-"
buttons[8]=newJButton("
7"
buttons[9]=newJButton("
8"
buttons[10]=newJButton("
9"
buttons[11]=newJButton("
*"
buttons[12]=newJButton("
0"
buttons[13]=newJButton("
c"
buttons[14]=newJButton("
="
buttons[15]=newJButton("
/"
centerpanel.setLayout(newGridLayout(4,4,8,8));
for(inti=0;
buttons.length;
centerpanel.add(buttons[i]);
buttons[i].addActionListener(this);
publicCalculator(intx,inty){
this.setTitle("
我的计算器"
this.setContentPane(mainpanel);
this.setResizable(true);
BorderLayoutbl=newBorderLayout();
mainpanel.setLayout(bl);
mainpanel.add(txt,BorderLayout.NORTH);
mainpanel.add(centerpanel,BorderLayout.CENTER);
this.setBounds(x,y,300,240);
this.setVisible(true);
publicstaticvoidmain(String[]args){
newCalculator(750,200);
publicvoidactionPerformed(ActionEvente){
JButtonjb=(JButton)e.getSource();
charc=jb.getText().charAt(0);
switch(c){
case'
0'
:
1'
2'
3'
4'
5'
6'
7'
8'
9'
addNum(c);
break;
+'
-'
*'
/'
signEvent(c);
c'
Calculator.this.dispose();
newCalculator(Calculator.this.getLocation().x,Calculator.this.getLocation().y);
='
if(!
flag)this.txt.setText(sb1.toString());
;
sb1=newStringBuffer(getAnswer());
sb2=newStringBuffer();
this.txt.setText(sb1.toString());
sign='
flag=false;
default:
privatevoidsignEvent(charc){
if(flag&
&
sb2.length()!
sb1=newStringBuffer("
+getAnswer());
else{
flag=!
flag;
this.txt.setText("
this.sign=c;
privateStringgetAnswer(){
doublea=0;
if(sb1.length()!
=0)
a=Double.parseDouble(sb1.toString());
doubleb=0;
if(sb2.length()!
b=Double.parseDouble(sb2.toString());
doubleanswer=0;
switch(sign){
answer=a+b;
answer=a-b;
answer=a*b;
answer=a/b;
default:
returnnull;
this.sb1=newStringBuffer("
this.sb2=newStringBuffer("
return"
+answer;
privatevoidaddNum(charc){
flag){
sb1.append(c);
else{
sb2.append(c);
this.txt.setText(sb2.toString());
例如:
45-6=45+6=
45*6=45/6=
(2)逻辑设计
定义计算器类calculator,该类继承JFrame类并实现ActionListener接口。
整体窗口采用边界布局,通过另外建立若干面板组件。
再用GridLayout(网格布局)对数字控件和操作按钮进行布局。
使用容器类组件的常用方法如setBounds(x,y,300,240)方法设置窗口的位置和大小;
setTitle("
)方法设置窗口的标题栏;
setVisible(true)方法控制了窗口的可见性。
此外,单击任何一个按钮都会触发ActionEvent事件,要处理这些事件就必须实现ActionListener接口的actionPerformed方法。
计算器的程序设计,必然有数据输入,其中数据包括运算符和数字,均要通过计算器上的button按钮选项按钮输入进去,里面录入的必然是字符型的数据,如果进行运算要将输入的数据转化成Double型,以防出错。
(3)程序测试
1)具有相应的界面。
this.setContent