123huyanan

导航

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编辑  收藏  举报