Java面向对象程序设计课程设计.docx

上传人:b****5 文档编号:11733796 上传时间:2023-03-31 格式:DOCX 页数:34 大小:66.11KB
下载 相关 举报
Java面向对象程序设计课程设计.docx_第1页
第1页 / 共34页
Java面向对象程序设计课程设计.docx_第2页
第2页 / 共34页
Java面向对象程序设计课程设计.docx_第3页
第3页 / 共34页
Java面向对象程序设计课程设计.docx_第4页
第4页 / 共34页
Java面向对象程序设计课程设计.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

Java面向对象程序设计课程设计.docx

《Java面向对象程序设计课程设计.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计课程设计.docx(34页珍藏版)》请在冰豆网上搜索。

Java面向对象程序设计课程设计.docx

Java面向对象程序设计课程设计

 

系别:

商学系

专业:

信息管理与信息系统

班级:

信管12班

组别:

第十五组

组员:

面向对象程序设计课程设计

一、课程设计目的

1、熟练掌握java面向对象编程。

2、选择合适的数据结构实现需求。

3、熟练使用各种控制结构。

4、GUI组件、事件处理技术。

二、课程设计任务

1.字符串操作编程

设计字符串操作类,该类主要处理字符串的相关信息,完成以下的操作:

通过键盘输入初始化字符串、获得字符串长度、在字符串中查找一个字符、字符串比较等。

提示:

1)键盘输入建立字符串对象(System.in;IO流类;String类)

2)字符串信息的输出

3)获得字符串长度(length()方法)

4)在字符串中查找一个字符(IndexOf()方法)

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.字符串操作编程

(1)界面设计

importjava.util.*;

publicclassZifuchuan{

publicstaticvoidmain(Stringargs[]){

ScannerZ1=newScanner(System.in);

System.out.print("请您输入一个字符串:

");

StringgetString=Z1.next();

System.out.println("您输入的字符串的长度是:

"+getString.length());

System.out.print("请输入查找的字符:

");

Stringq=Z1.next();

System.out.println("您查找的字符位置在字符串的:

"+getString.indexOf(q));

System.out.print("请您再输入一个字符串:

");

StringgetString2=Z1.next();

booleanZ2=getString.equals(getString2);

System.out.println("您输入的两个字符串是否相等:

"+Z2);

}

}

(2)逻辑设计

导入util类包,使用System.in键盘输入获得Z1字符串对象,再使用length()方法获取Z1下的函数next()返回的字符串长度,接着使用IndexOf()方法获取Z1下的函数next()所查找字符或字符串首次出现的位置;同一个类中,调用System.in键盘输入获得Z2字符串对象,把第二个字符串赋值给Z1下的函数next()返回的字符串,使用equals()方法比较两个字符串字符序列是否相同,输出为布尔类型,即true或false。

(3)程序测试

1)键盘输入建立字符串对象(System.in;IO流类;String类)。

ScannerZ1=newScanner(System.in);

2)字符串信息的输出。

System.out.print("请您输入一个字符串:

");

3)获得字符串长度(length()方法)。

System.out.println("您输入的字符串的长度是:

"+getString.length());

4)在字符串中查找一个字符(IndexOf()方法)。

System.out.println("您查找的字符位置在字符串的:

"+getString.indexOf(q));

5)比较字符串(equals()方法)。

booleanZ2=getString.equals(getString2);

2.22选5彩票号码生成器

(1)界面设计

importjava.util.*;

publicclassCaipiao{

publicstaticvoidmain(Stringargs[]){

RandomZ1=newRandom();

HashSetset=newHashSet();

while(set.size()<5){

intranNubmer=Z1.nextInt(22)+1;

if(ranNubmer!

=0){

set.add(ranNubmer);

}

}

System.out.println(set);

}

}

(2)逻辑设计

导入util类包,使用Random()方法创建一个Z1随机数生成器,使用HashSet构造一个set空容器,定义set集合为int型数据。

使用while循环语句,返回set.size()<5的元素数,即五个元素;定义一个随机数,这个随机数用nextInt(22)+1函数产生,使用if语句,如果随机数不为零,则使用set.add()方法,使产生的随机数添加到set集合中;如果为零,则不添加set集合中。

并使用set接口,自动去掉重复的数字。

最后输出随机产生的五个1~22之间的数。

(3)程序测试

1)创建一个Random类的变量Z1使它成为一个新的随机数生成器。

RandomZ1=newRandom();

2)定义一个set变量,使set在HashSet容器类中装的都是类型为Integer的对象,使用符号规定对象的类型,是java泛型类的体现。

HashSetset=newHashSet();

3)使用while循环语句实现22选5,set.size()<5即循环五次,返回set中的元素数。

while(set.size()<5){

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!

=0){

6)使用set接口,使得所生成的随机数不重复,使用set.add()把随机数ranNubmer添加到set容器内。

set.add(ranNubmer);

7)输出set容器内的随机数。

System.out.println(set);

第二个人:

付勃达

1.字符串操作编程

(1)界面设计

importjava.util.*;

publicclassTestString{

publicstaticvoidmain(String[]args){

Scannersc=newScanner(System.in);

System.out.println("请输入一串字符串");

Strings1=sc.next();

System.out.println("你输入的字符串的长度是"+s1.length());

System.out.println("请输入一个字符");

Stringc=sc.next();

System.out.println("你输入的字符位置在字符串的"+s1.indexOf(c));

System.out.println("请您再输入一串字符串");

Strings2=sc.next();

booleantf=s1.equals(s2);

System.out.println("您输入的两个字符串相等吗"+tf);

}

}

(2)逻辑设计

1)通过import语句导入until类包。

importjava.util.*;

2)通过键盘输入初始化字符串,建立字符串对象。

System.in是获取输入的字符串。

Scannersc=newScanner(System.in);

3)获取输入的字符串并封装在s1中。

Strings1=sc.next();

4)通过调用length()方法返回字符串的字符个数,即获取字符串的长度。

System.out.println("你输入的字符串的长度是"+s1.length());

5)通过调用indexOf()方法返回字符c在字符串s1中出现的第一个位置,如果查找成功,则返回匹配成功的字符的位置;如果没有查找到,则返回-1。

System.out.println("你输入的字符位置在字符串的"+s1.indexOf(c));

6)通过调用equals()方法比较输入的两个字符串s1和s2的字符序列是否相同;equals()方法返回类型为布尔类型。

booleantf=s1.equals(s2);

(3)程序测试

1)键盘输入建立字符串对象。

Scannersc=newScanner(System.in);

2)字符串信息的输出。

System.out.println("请输入一串字符串");

Strings1=sc.next();

3)获得字符串长度(length()方法)。

System.out.println("你输入的字符串的长度是"+s1.length());

4)在字符串中查找一个字符(IndexOf()方法)。

System.out.println("你输入的字符位置在字符串的"+s1.indexOf(c));

5)比较字符串(equals()方法)。

booleantf=s1.equals(s2);

2.22选5彩票号码生成器

(1)界面设计

publicclassLottery{

publicint[]getValue(intmax,intn){

intL[]=newint[n];

inti=1;

intj=0;

L[j]=(int)(Math.random()*max)+1;

while(i

intr=(int)(Math.random()*max)+1;

for(j=0;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

System.out.print(v[i]+"");

}

}

}

(2)逻辑设计

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位随机数均不重复。

while(i

intr=(int)(Math.random()*max)+1;

for(j=0;j

if(r==L[j])

break;

}

if(i!

=j)

continue;

L[i]=r;i++;

}

7)最终通过for循环语句和打印输出语句结合使用完成该程序设计的目的。

for(inti=0;i

System.out.print(v[i]+"");

}

(3)程序测试

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(inti=0;i

for(j=0;j

3.设计一个简易的计算器,可以进行四则运算:

加、减、乘、除等(限于十进制下)

(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;i

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':

case'1':

case'2':

case'3':

case'4':

case'5':

case'6':

case'7':

case'8':

case'9':

{

addNum(c);

break;

}

case'+':

case'-':

case'*':

case'/':

{

signEvent(c);

break;

}

case'c':

{

Calculator.this.dispose();

newCalculator(Calculator.this.getLocation().x,Calculator.this.getLocation().y);

break;

}

case'=':

{

if(!

flag)this.txt.setText(sb1.toString());;

sb1=newStringBuffer(getAnswer());

sb2=newStringBuffer();

this.txt.setText(sb1.toString());

sign='=';

flag=false;

break;

}

default:

break;

}

}

privatevoidsignEvent(charc){

if(flag&&sb2.length()!

=0){

sb1=newStringBuffer(""+getAnswer());

this.txt.setText(sb1.toString());

}

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()!

=0)

b=Double.parseDouble(sb2.toString());

doubleanswer=0;

switch(sign){

case'+':

answer=a+b;

this.txt.setText("");

break;

case'-':

answer=a-b;

this.txt.setText("");

break;

case'*':

answer=a*b;

this.txt.setText("");

break;

case'/':

answer=a/b;

this.txt.setText("");

break;

default:

returnnull;

}

this.sb1=newStringBuffer("");

this.sb2=newStringBuffer("");

return""+answer;

}

privatevoidaddNum(charc){

if(!

flag){

sb1.append(c);

this.txt.setText(sb1.toString());

}

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)具有相应的界面。

publicCalculator(intx,inty){

this.setTitle("我的计算器");

this.setContent

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1