Java综合项目-----个人篇
目 录
1 选题... 1
2 系统需求分析... 2
2.1 系统可行性分析... 2
2.2 系统需求分析... 3
2.3 进度安排... 4
3 系统设计... 5
3.1 系统设计... 5
4 系统实现... 6
4.1代码实现... 6
4.2程序运行实现... 13
5结论和心得... 16
1 选题
选题一 |
算术运算测试 |
题目要求 |
|
功能要求:实现十道 100 以内加减法数学题,能根据题目计算出答案,与输 入答案对比,判断做题是否正确,然后计算分数,并保存,最后提示是否继续下一轮 设计要求:随机生成两个数进行加法或减法运算,最终得出运算正确次数。 能力要求:1.独立实践能力 2.创新意识 3.自主学习能力 |
|
使用Java知识 |
|
Java用户键盘录入功能、基本运算符、生成随机数、if判断、for循环、多重循环、字符输出流 |
|
选题二 |
猜数游戏 |
题目要求 |
|
功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了, 继续猜,直至猜到,表示猜的次数,然后计算分数,并保存,最后提示是否继续下一轮 能力要求:1.收集资料能力 2.文档攥写能力 3.独立完成项目能力 4.面向对象编程能力
|
|
使用Java知识 |
|
生成随机数、利用布尔类型变量树立旗帜、用户键盘录入功能、do-while循环、多重循环、字符输出流
|
2 系统需求分析
2.1 系统可行性分析
一、算数运算测试
1.技术可行性
本次程序运用所需软件为eclipse,采用的java语言,所以技术上是可行的。
2经济可行性
本次程序所使用的eclipse软件是免费的,我们不需要额外的开销,所以经济上也是可行的。
3.操作可行性
本次程序运用了简单的用户键盘录入操作,简单易懂,很好操作,因此在操作上是可行的。
4.法律可行性
本次程序在国家允许的法律范围内。
二 、猜数游戏
1.技术可行性
本次程序运用所需软件为eclipse,采用的java语言,所以技术上是可行的
2.经济可行性
因为本次程序使用的eclipse软件是免费的,在这个软件上就能满足我们的需求,我们不需要额外的开销,所以经济上也是可行的。
3.操作可行性
本次程序运用了简单的用户键盘录入操作,简单易懂,很好操作,因此在操作上是可行的。
4.法律可行性
本次程序在国家允许的法律范围内。
2.2 系统需求分析
图2-1算数运算测试模块图
图2-2猜数游戏模块图
2.3 进度安排
阶段一进度安排如表2-3所示。
表2-3 进度安排表
阶段 |
持续时间 |
阶段描述 |
输出 |
构思阶段 |
2小时 |
需求分析 |
需求说明,功能模块图 |
设计阶段 |
2小时 |
系统设计 |
设计说明-可以画流程图;数据库设计 |
实现阶段 |
5小时 |
编写代码 |
项目工程源代码 |
5小时 |
系统测试 |
进行黑盒测试(功能测试)-测试说明 |
|
运行阶段 |
1天 |
部署、运行 |
系统使用说明、运维报告、录制视频 |
3 系统设计
3.1 系统设计
根据系统的实际功能需求分析,对系统功能部分进行了设计。
一、算数运算测试
随机生成数:通过调用random包,随机产生两个1-100之间的数
用户输入答案:通过写scanner,从而使用户自行输入答案
加法:比较两个随机数的大小,如果前者较小,则为加法
减法:比较两个随机数的大小,如果前者较大,则为减法
记录得分:一题一分,最终得出分数
保存文件:使用缓存流来保存得到的分数
循环下一轮:询问用户是否继续下一轮,如果继续,输入y,否则输入n
二、猜数游戏
随机生成数:通过调用random包,随机产生一个1-100之间的数
用户输入答案:通过写scanner,从而使用户自行输入答案
判断是否猜对:通过if语句,判断用户输入与随机数是否相等
给出回复:如果相同,则提示猜对了,如果猜的偏大,则提示偏大,反之,则提示偏小
记录次数:猜对后给出最终的猜数次数
保存文件:使用缓存流来保存得到的分数
循环下一轮:询问用户是否继续下一轮,如果继续,输入y,否则输入n
4 系统实现
4.1代码实现
一、算数运算测试
package geren;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Random;
import java.util.Scanner;
/*算术运算测试
功能要求:实现十道 100 以内加减法数学题,能根据题目计算出答案,与输
入答案对比,判断做题是否正确,最后计算分数,并保存*/
public class GeRen11 {
public static void main(String[] args) {
int j = 0;//计算正确次数
boolean flag = false;//用于记录是否进行下一局
String s =null;
do {
for(int i=1;i<11;i++) {
//生成3个随机数
Random r1 = new Random();
int num1=r1.nextInt(100);//第一个运算数
Random r2 = new Random();
int num2=r2.nextInt(100);//第二个运算数
Random r3 = new Random();
int num3=r3.nextInt(2);//产生0/1用于分开+-号
//加法
if(num3==0) {
if(num1+num2>=0 && num1+num2<101) {
System.out.println(num1+"+"+num2+"=?");
Scanner input = new Scanner(System.in);
int answer = input.nextInt();
if(answer==num1+num2) {//判断是否正确
j++;
System.out.println("回答正确!***********您共答对"+j+"次");
}else {
System.out.println("回答错误!***********您共答对"+j+"次");
}
}else {
i-=1;
}
}
//减法
if(num3==1) {
if(num1-num2>=0 && num1-num2<101) {
System.out.println(num1+"-"+num2+"=?"+i);
Scanner input = new Scanner(System.in);
int answer = input.nextInt();
if(answer==num1-num2) {//判断是否正确
j++;
System.out.println("回答正确!***********您共答对"+j+"次");
}else {
System.out.println("回答错误!***********您共答对"+j+"次");
}
}else {
i-=1;
}
}
}
//输出最终成绩
System.out.println("您的最终得分:"+j+"分");
//保存成绩(用字符流输出)
Writer fw=null;
BufferedWriter bw = null;
try {
fw=new FileWriter("C:\\Users\\dell\\Desktop\\JAVA\\111.txt", true);//true--继续追加,防止被覆盖
bw = new BufferedWriter(fw);
bw.write("您的最终得分:"+j+"分");
bw.newLine();//换行
System.out.println("成绩保存成功!");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//查看是否再玩一局
Scanner input = new Scanner(System.in);
System.out.println("再玩一局吗?(y/n)");
s = input.next();
if(s.equals("n")) {
flag = false;
System.out.println("欢迎回来!");
}
else if(s.equals("y")){
flag = true;
System.out.println("游戏继续!");
}
else {
System.out.println("输入错误!请重新输入!");
s = input.next();
}
}while(s.equals("y")); // flag = true
}
}
二、猜数游戏
package geren;
import java.awt.Color;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
/*猜数游戏
功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,
继续猜,直至猜到,表示猜的次数,最后保存*/
public class GeRen2222 extends JFrame {
private JPanel jp1,jp2,jp3,jp4;//添加面板
private JLabel jl1,jl2,jl3,jl4;//添加标签
private JTextField jf1;//添加文本框
private JButton jb11,jb12,jb13,jb14; //按钮
int count = 1;
int num1 = 0;
boolean flag = false;
public GeRen2222() {
this.setTitle("猜数游戏");//添加标题
//对该界面进行初始化
GridBagLayout gridBagLayout = new GridBagLayout();//网格布局
this.setLayout(gridBagLayout);
this.setBackground(Color.blue);
this.setSize(500, 500);//位置大小
this.setLayout(new GridLayout(4,1));
jp1=new JPanel(); //添加面板
jp2=new JPanel();
jp3=new JPanel();
jp4=new JPanel();
this.add(jp1); //将面板放到窗体上
this.add(jp2);
this.add(jp3);
this.add(jp4);
jl1=new JLabel("游戏规则:...");//添加标签
jl2=new JLabel("幸运数");
jl3=new JLabel();
jl4=new JLabel();
jf1=new JTextField(20);//添加文本框并设置文本框后面是长度
jp1.add(jl1);jp2.add(jl2);jp3.add(jl3);
jp2.add(jf1);jp3.add(jl4);
jb11=new JButton("获取随机数");
jb12=new JButton("确定");
jb13=new JButton("重置");
jb14=new JButton("获取评语");
jp1.add(jb11);jp4.add(jb12);jp4.add(jb13);jp4.add(jb14);
//为获取随机数按钮编写功能
jb11.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Random r = new Random();
num1=r.nextInt(100);//num1--中奖数
}
});
//为确定按钮编写功能
jb12.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//getText();
int num = Integer.parseInt(jf1.getText());//返回的是字符串,要转为int
if(num == num1) {
jl4.setText("恭喜你猜对了!共猜了"+count+"次");
}else if(num > num1){
jl4.setText("太大了,重新输入吧!");
}else if(num < num1){
jl4.setText("太小了,重新输入吧!");
}
count++;
}
});
//为重置按钮编写功能
jb13.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
jf1.setText(null);
jl4.setText(null);
jl3.setText(null);
count=1;
}
});
//获取得分
jb14.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
switch(count) {
case 1:
case 2:
case 3:JOptionPane.showMessageDialog(null,"你太厉害啦!" );//jl3.setText("你太厉害啦!");break;
case 4:
case 5:
case 6:JOptionPane.showMessageDialog(null,"加油哦!" );//jl3.setText("加油哦!");break;
case 7:
case 8:
case 9:JOptionPane.showMessageDialog(null,"运气不太好,哈哈哈。" );//jl3.setText("运气不太好,哈哈哈。");break;
default:JOptionPane.showMessageDialog(null,"继续加油吧!" );//jl3.setText("继续加油吧!");break;
}
}
});
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
//实现
public static void main(String[] args) {
GeRen2222 gr = new GeRen2222();
}
}
4.2程序运行实现
一、算数运算测试
图4-1 算数运算测试运行图
二、猜数游戏
图4-2 猜数游戏运行图
5结论和心得
心得:
通过本次课程设计,我更加深刻的理解了java程序设计语言的魅力,算法是各种设计语言的基础,但是只有算法,我们还有很多解决不了的实际问题,而Java的核心是面向对象,面向对象可以解决生活中的很多例子,在日后的生活学习中,一定努力学习Java程序设计语言的强大功能,提升自己的编程水平。
最后,感谢李老师和同学的帮助和教导!
posted on 2020-06-27 20:32 123huyanan 阅读(359) 评论(0) 编辑 收藏 举报