Java面向对象程序设计课程设计.docx
- 文档编号:11733796
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:34
- 大小:66.11KB
Java面向对象程序设计课程设计.docx
《Java面向对象程序设计课程设计.docx》由会员分享,可在线阅读,更多相关《Java面向对象程序设计课程设计.docx(34页珍藏版)》请在冰豆网上搜索。
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();
HashSet
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的对象,使用
HashSet
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 程序设计 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)