阶段一个人项目

 

 

 

 

 

 

 

 

 

Java课程设计

(阶段一文档)

       
   
 
     

 

 

 

 

 

 

 

 


二〇二一年六月

 

目    录

 

1 选题................................................................................................. 2

2 系统需求分析................................................................................. 3

2.1          系统可行性分析............................................................ 3

2.2 系统需求分析...................................................................... 4

2.3 进度安排.............................................................................. 4

3 系统设计......................................................................................... 5

3.1 系统设计.............................................................................. 5

4 系统实现......................................................................................... 6

4.1 算数运算测试...................................................................... 6

4.1.1 主程序界面................................................................. 6

4.1.2 运行界面..................................................................... 6

4.1.3 查询成绩文件............................................................. 6

 

4.2 猜数字游戏.......................................................................... 8

4.2.1 游戏界面..................................................................... 8

4.2.2 得到随机数并输入猜测数界面................................. 8

4.2.3 猜对了界面................................................................. 9

5 系统测试....................................................................................... 11

5.1 算数运算测试.................................................................... 11

5.1.1 随机产生测试题模块测试.............................. 11

5.1.2 数据正确性测试和分数保存测试................ 11

5.2 猜数字游戏测试................................................................ 11

5.2.1提交模块测试.......................................................... 11

6 结论和心得................................................................................... 12

 

 

1 选题

选题一

算术运算测试

题目要求

实现十道100以内加减法数学题(五道加法,五道减法),能根据题目计算出答案,与输入答案对比,判断做题是否正确, 正确得10分,不正确不得分,将成绩保存到TXT文本中

使用Java知识

Java基本输入输出、运算符、循环

 

选题二

猜数游戏

题目要求

计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,可以选择保存数据和用户信息,有时间限制,时间到自动退出程序 。保留用户测试次数,做出成绩排行榜。排行榜存放到数据库中。

使用Java知识

循环、分支、变量、常用类等;GUI

 

 

 

 


2 系统需求分析

2.1 系统可行性分析

一、算数运算测试

运用Java基础知识(面向对象,流程控制等等),做到了解耦,各干各的事 。实现基本要求,操作简单,控制台输入输出。

 

 

 

 

 

 

 

 

二、猜数字游戏

运用GUI,Java基础知识(面向对象,流程控制等等),做到了解耦,各干各的事 。

有了图形化界面,用户操作更直观方便

 

 

 

 

 

 

 

 

 

 

 

2.2 系统需求分析

一、算数运算测试

系统随机产生10道题,用户输入参赛姓名,参加比赛,做对一题得10分,最后分数和用户姓名保存到文件

二、猜数字游戏

GUI界面,随机产生数字,然后输入猜的数字,提交,系统会和生产的数比较提示用户猜大了还是猜小了,还是猜大了,猜对了。

2.3 进度安排

阶段一进度安排如表3-1所示。

表3-1 进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

2小时

需求分析

需求说明,功能模块图

设计阶段

2小时

系统设计

设计说明-可以画流程图;

实现阶段

2天

编写代码

项目工程源代码

2小时

系统测试

进行黑盒测试(功能测试)-测试说明

运行阶段

3小时

部署、运行

系统使用说明、运维报告、录制视频

3 系统设计

3.1 系统设计

根据系统的实际功能需求分析,对系统功能部分进行了设计。

一、算数运算测试

10道测试用for循环,随机数用Random对象实现,保存数据运用了字符流。

二、猜数字游戏

GUI界面,产生随机数,然后输入要猜的数字,点击提交,弹窗提示大了,小了猜对了。

 

4 系统实现

4.1算数运算测试

源代码实现:

package 阶段一;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Scanner;

/*功能基本要求:实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,

* 判断做题是否正确,最后计算分数,提示要不要继续玩下一局,结束后把分数保存起来。

* 用数字1和2来控制加减法;每道题10分,总共一百分;把分数保存到chengji1.txt中

*/

   public class Suanshu {

   public static void main(String[] args) {

   File file=null;//创建文件

   int j=1;

   boolean f=false;//设置不能追加,文件覆盖掉原先的

//(缓冲输出流) BufferedWriter bw=new BufferedWriter(new Filewriter(file),f);Filewriter是字符流

//给循环设标签

loop:

while(true) {

System.out.println("*********欢迎来到算数游戏(100以内加减法)*************");

    int count=0;//分数

    Scanner input=new Scanner(System.in);

//循环10次

    for(int i=1;i<=10;i++) {

    boolean flag=false;//做对了为true,没做对false

//随机生成两个数

    int a=(int)(Math.random()*100);

    int b=(int)(Math.random()*100);

//随机生成加减法

    int c=(int)((Math.random()*2)+1);//1是+法,2是-法[0,2)[1,3)

//不在1-100范围内

    if(a+b>100||a-b<0) {

    i=i-1;

    continue;//跳出本次循环继续做

}

  else {

    System.out.println("第"+i+"道算式:");

//c为1时做加法

    if(c==1) {

     System.out.println("输出:"+a+"+"+b+"=?");

   while(true) {

     System.out.print("得数:");

    String n=input.next();

 

//匹配一个或多个数字并判断用户输入的是不是1-100之间的数,研究正则表达式

if(!(n.matches("[0-9]+"))||(Integer.valueOf(n)>100||Integer.valueOf(n)<0)) {//String类型转换int类型

System.out.println("您输入有误,请重新输入!请输入1-100之间的数字!");

} else{

//String类型转换为int类型

if(Integer.parseInt(n)==(a+b)) {

System.out.println("您算对了!");

flag=true;

}

else {

System.out.println("您算错了!正确答案是:"+(a+b));

}

break ;//结束最近的循环

}

}

}

//c为2时做减法

else if(c==2){

System.out.println("输出:"+a+"-"+b+"=?");

while(true) {

System.out.print("得数:");

String n1=input.next();

//匹配一个或多个数字

if(!(n1.matches("[0-9]+"))||(Integer.valueOf(n1)>100||Integer.valueOf(n1)<0)) {

System.out.println("您输入有误,请重新输入!请输入1-100之间的数字!");

 

} else{

//String类型转换为int类型

if(Integer.parseInt(n1)==(a-b)) {

System.out.println("您算对了!");

flag=true;

}

else {

System.out.println("您算错了!正确答案是:"+(a-b));

}

break ;//结束循环

}

}

}

}

//做对了得分。每道10分,满分100分

if(flag==true) {

count=count+10;

}

}

System.out.println("总分是:"+count);

//用字符流把成绩保存起来

BufferedWriter bw=null;//缓冲流效率高,字符流保存文字不出现乱码

try {

file=new File("chengji1.txt");

bw=new BufferedWriter(new FileWriter(file,f));//f初始值设置不能追加,文件覆盖掉原先的

 

bw.write("第"+j+"次成绩:"+count+"\n");

j++;

System.out.println("成绩保存成功!");

}

catch (IOException e) {

e.printStackTrace();

}

finally {

try {

bw.flush();//刷新缓冲区

bw.close();

} catch (IOException e) {

e.printStackTrace();

}

}

System.out.println("您是否要继续呢?(y是的/n不是)");

String answer=input.next();

while(true) {

if(answer.equals("y")) {

f=true;//继续玩的话设置可追加保留上面的成绩

break ;

}else if(answer.equals("n")) {

System.out.println("***********游戏结束**************");

break loop       ;//结束标签的循环

}else {

System.out.println("输入有误!请重新输入!");

 

answer=input.next();

}

}

}

}

}

4.2 算数运算测试

4.2.1 主程序界面

 

图 4-2-1 主程序界面

4.2.2 运行界面

运用循环实现10道计算题,Random实现随机数的产生,并提示答案的正确与否,渲染到控制台。

 

图 4-2-2 运行界面

4.2.3 查询成绩文件

 

图4.2.3

4.3 猜数字游戏

源码实现:package com.ts.zy;

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class MyFrame extends JFrame {

int number;

JLabel label;

JTextField text;

JButton button1,button2;

PoliceListener policeListener;

public static void main(String[] args) {

MyFrame myFrame = new MyFrame();

}

        public MyFrame(){

        init();

        setTitle("猜数字");

        setBounds(300,300,260,150);

        setVisible(true);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        validate();

}

void init(){

                 setLayout(new FlowLayout());

                

                 button1 = new JButton("得到一个随机数");

                 add(button1);

                 label = new JLabel("输入你的猜测:",JLabel.CENTER);

                 label.setBackground(Color.cyan);

                 add(label);

                 text = new JTextField("0",10);

                 add(text);

                 button2 = new JButton("确定");

                 add(button2);

                 policeListener = new PoliceListener();

                 button1.addActionListener(policeListener);

                 button2.addActionListener(policeListener);

}

class PoliceListener implements ActionListener{

 

public void actionPerformed(ActionEvent e) {

    if(e.getSource() == button1){

        number = (int)(Math.random()*100)+1;

        label.setText("输入你的猜测");

        text.setText(null);

    }

    else if(e.getSource() == button2){

        int guess = 0;

        try{

            guess = Integer.parseInt(text.getText());

            if(guess == number){

                label.setText("猜对了!");

            }else if(guess < number){

                label.setText("猜小了!");

                text.setText(null);

            }else {

                label.setText("猜大了!");

                text.setText(null);

            }

        }catch (NumberFormatException event){

            label.setText("请输入数字字符");

        }

    }

}

}

}

 

4.3.1 游戏界面

GUI实现图形化界面,

布局涉及到表格布局,流式布局等。

 

图 4-2-1 游戏界面

4.3.2 得到随机数并输入猜测数界面

 

图 4-2-2 游戏界面

确定按钮绑定监听事件,当被按下弹出提示猜大了还是小了还是猜对了,弹窗点击确定关闭

 

图 4-3-3 提交界面猜大了

 

图 4-3-4提交界面猜小了

4.3.3 猜对了界面

出现弹窗提示猜对了

 

5 系统测试

5.1 算数运算测试

5.1.1随机产生测试题模块测试

表 5-1-1 输入和随机产生测试题 测试表

编号

测试功能

输入描述

预期结果

运行结果

C01

随机产生测试题

不输入

显示题目到控制台

与预期结

果一致

5.1.2 数据正确性测试和分数保存测试

表 5-1-2 数据持久化测试表

编号

测试功能

输入描述

预期结果

运行结果

C02

判断答案正确性

不输入

与答案相一致

与预期结

果一致

C03

查询保存的文件

查找打开文件

文件中显示分数

与预期结

果一致

 

5.2 猜数字游戏测试

5.2.1提交模块测试

表 5-2-1 提交模块测试表

编号

测试功能

输入描述

预期结果

运行结果

C04

点击产生随机数

不输入

自动生成随机数

与预期结

果一致

C05

点击输入框输入要猜的数字

2

弹窗提示猜小了,

与预期结

果一致

C06

再次输入要猜的数字

95

弹窗提示猜大了

与预期结

果一致

C07

不停输入要猜的数字,往复

随机数

弹窗提示猜对了

与预期结

果一致

 

 

6 结论和心得

心得:通过这次的学习真的让自己成长的不少,学会了很多新知识,复习了很多旧知识。虽然过程非常的艰辛,期间遇到了很多难题,但是通过同学的指导以及自己上网百度,翻阅资料顺利的做了下来。尽管大部分的问题我还都不会,但我相信只要有付出就会有收获。今后我一定会继续学习,丰富自己的知识。

posted @ 2021-06-30 13:59  乐嘉  阅读(84)  评论(0)    收藏  举报