首页 > 编程语言 > 详细

java阶段一项目设计

时间:2020-06-29 00:39:14      阅读:123      评论:0      收藏:0      [点我收藏+]

   

1 选题 2

系统需求分析 3

2.1 系统可行性分析 3

2.2 系统需求分析 3

2.3 进度安排 4

3 系统设计 4

3.1 系统设计 4

系统实现 15

系统测试 18

结论和心得 19

 

 

1 选题

选题一

算术运算测试

题目要求

 

实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算出分数,添加排行榜功能存放到文件或数据库中。

 

 

 

 

使用Java知识

Java基本输入输出

获取当前时间System.currentTimeMillis()

一维数组

Random

for循环

if-else选择分支

冒泡排序

writer

异常try-catch-finally

 

选题二

简易计算器模拟程序

题目要求

 

仿照 Windows 计算器,编写一个具有 GUI 的计算器,能实现整数的 加、减、乘、除四则运算,更漂亮界面、更方便的操作、支持解析四则运算表达式、支持对大数的加减法,历次计算需存放在文件或数据库中。

 

 

 

 

使用Java知识

继承extends

实现接口implements

GUI

for循环

选择分支结构

数组

字符串类(StringBuffer

异常try-catch

 


系统需求分析

2.1 系统可行性分析

技术可行性:

算术运算测试:(1)生成随机数,进行加减法运算

(2)两个数组分别存每个人的分数和答题时间

(3)冒泡排序实现成绩排行榜功能

(4)文件管理

简易计算器模拟程序:(1)GUI图形用户界面

(2addActionListener监听

(3)实现JButton按钮的功能

4)文件管理

 

操作可行性:

  只需要用户有一台计算机安装好IDE和MySQL操作环境,因此在操作上是可行的。

 

2.2 系统需求分析

算术运算测试:

实现十道100以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数,实现排行榜功能,并将成绩排行榜保存到文件。

 

简易计算器模拟程序:

仿照 Windows 计算器,编写一个具有 GUI 的计算器,能实现整数的 加、减、乘、除四则运算,更漂亮的界面、更方便的操作、支持对大数的加减法、能将历史计算结果保存到文件,还可以实现阶乘,开根号,平方,返回上一步等功能按钮。

 

           技术分享图片

 

          技术分享图片

 

 

 

 

           

 

2.3 进度安排

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

3-1 进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

1小时

需求分析

需求说明,功能模块图

设计阶段

30分钟

系统设计

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

实现阶段

1天

编写代码

项目工程源代码

1小时

系统测试

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

运行阶段

4小时

部署、运行

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

 

3 系统设计

3.1 系统设计

项目一:算术运算测试:

package com.tianshi.design;

/*

 *实现十道 100 以内加减法数学题,能根据题目计算出答案,与输入答案对比,判断做题是否正确,最后计算分数

 *实现排行榜功能,并且将它保存到文件里

 */

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Writer;

import java.util.Random;

import java.util.Scanner;

public class MathQue {

public static void main(String[] args) {

int i,j;

int[] a1 = new int[2];   //存分数

long[] b1 = new long[2];   //存所用时间

Random ran = new Random();

Scanner input = new Scanner(System.in);

//外层循环控制答题人数,内层循环控制题的数量

for(i=1;i<=a1.length;i++) {

int count=0;  //记录每个人答对次数

long starttime = System.currentTimeMillis();  //开始时间

for(j=1;j<=10;j++) {

int a = ran.nextInt(100);

int b = ran.nextInt(100);

int c = ran.nextInt(2);  //c==0执行加法,c==1执行减法

if(c==0) {

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

int answer = input.nextInt();

if(a+b == answer) {

count++;

}else {

continue;

}

}else if(c == 1) {

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

int answer = input.nextInt();

if(a-b == answer) {

count++;

}else {

continue;

}

}

}

long endtime = System.currentTimeMillis();   //结束时间

long time = (endtime - starttime)/1000;

a1[i-1] = 10*count;

b1[i-1] = time;

System.out.println("第"+i+"位同学答题情况:");

System.out.println("共答对"+count+"道题,得分为:"+(10*count)+" ,用时"+time+"秒");

}

//实现成绩排行榜

for(int x=0;x<a1.length-1;x++) {

for(int y=0;y<a1.length-1-x;y++) {

if(a1[y]<a1[y+1]) {

int temp = a1[y];

a1[y] = a1[y+1];

a1[y+1] = temp;

long t = b1[y];

b1[y] = b1[y+1];

b1[y+1] = t;

}

}

}

for(int x=0;x<a1.length;x++) {

for(int y=x+1;y<a1.length;y++) {

if(a1[x] == a1[y]) {

if(b1[x]>b1[y]) {

long temp = b1[x];

b1[x] = b1[y];

b1[y] = temp;

}

}

}

}

System.out.println();

System.out.println("***********成绩排行榜**************");

System.out.println("名次\t答对题数\t总分\t所用时间(s)");

for(int z=0;z<a1.length;z++) {

System.out.println(" "+(z+1)+"\t   "+(a1[z]/10)+"\t "+a1[z]+"\t   "+b1[z]);

}

//把排行榜存放到文件(d:\\学生成绩排行榜.txt)

Writer s = null;

BufferedWriter f = null;

try {

s = new FileWriter("d:\\学生成绩排行榜.txt");

f = new BufferedWriter(s);

f.write("名次\t答对题数\t总分\t所用时间(s)");

f.newLine();

for(int z=0;z<a1.length;z++) {

f.write(" "+(z+1)+"\t   "+(a1[z]/10)+"\t "+a1[z]+"\t   "+b1[z]);

f.newLine();

}

System.out.println("成绩排行榜已保存!");

f.flush();

} catch (IOException e) {

e.printStackTrace();

}finally {

try {

f.close();

s.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

 

 

 

项目二:简易计算器模拟程序:

 

package com.gui.test;

/*

 * 实现简易计算器:编写一个具有 GUI 的计算器,能实现整数的 加、减、乘、除四则运算

 * 历次计算需存放在文件或数据库中

 */

import javax.swing.*;  

import javax.swing.JTextField;  

import java.awt.*;  

import java.awt.event.*;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.Writer;

import java.awt.Color;  

  

public class CalculatorInterface extends JFrame implements ActionListener  {  

//new两个面板

    private JPanel p1 = new JPanel();  

    private JPanel p2 = new JPanel();  

    //文本框

    private JTextField t1;     

    private JTextField t2;      

    private JLabel label;   //标签

    StringBuffer str;            

    double x,y;               

    int z;                    

    private JButton b[] = new JButton[18];  //按钮

    private JButton b1,b2,b3,b4,b5,b6,b7,b8;

    public CalculatorInterface()  {  

        super("简易计算器");    

        setBackground(Color.WHITE);

        getContentPane().setBackground(Color.DARK_GRAY);

        getContentPane().setForeground(Color.BLACK);

        Container c = getContentPane(); //容器初始化

        t1 = new JTextField(30);  

        t1.setEditable(false);  //文本框不能被编辑

        t2 = new JTextField(30);  

        t2.setEditable(false);  

        label = new JLabel("董琼林设计的计算器");

        label.setForeground(Color.black);  

        str=new StringBuffer();   

        p2.add(label);   

        p2.add(t2);     

        p2.add(t1);     

        //setLayout()设置页面当前布局,GridLayout(3,1):3行1列

        p2.setLayout(new GridLayout(3,1));

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

            String s=""+i;  

            b[i]= new JButton(s);     

            b[i].addActionListener(this);  //监听     

        }      

        b[10]= new JButton("-/+");  b[11]= new JButton(".");  

        b1= new JButton("/");       b2= new JButton("Back");  

        b3= new JButton("*");       b4= new JButton("C");  

        b5= new JButton("+");       b6= new JButton("Sqrt");

        b7= new JButton("-"); b8= new JButton("=");

        b[13]= new JButton("e"); b[12]= new JButton("%");

        b[14] = new JButton("n!");  b[15]= new JButton("10^");

        b[16]= new JButton("^");

        for(int i=0;i<=16;i++) {  

            b[i].setForeground(Color.black);  

        }  

        b1.setForeground(Color.RED);    b3.setForeground(Color.RED);  

        b5.setForeground(Color.RED);    b7.setForeground(Color.RED);  

        b2.setForeground(Color.BLACK);    b4.setForeground(Color.BLACK);  

        b6.setForeground(Color.BLACK);    b8.setForeground(Color.BLACK);  

        p1.add(b[7]); p1.add(b[8]); p1.add(b[9]); p1.add(b1); p1.add(b2);  

        p1.add(b[4]); p1.add(b[5]); p1.add(b[6]); p1.add(b3); p1.add(b4);  

        p1.add(b[1]); p1.add(b[2]); p1.add(b[3]); p1.add(b5); p1.add(b6);  

        p1.add(b[0]); p1.add(b[10]); p1.add(b[11]);p1.add(b7);p1.add(b[12]);

        p1.add(b[15]);p1.add(b[13]);p1.add(b[14]);p1.add(b[16]);p1.add(b8);

        //5行5列,行间距8,列间距8

        p1.setLayout(new GridLayout(5,5,8,8));

        b[16].addActionListener(this);

        b[14].addActionListener(this);  b[15].addActionListener(this);

        b[12].addActionListener(this);  b[13].addActionListener(this);

        b[10].addActionListener(this);  b[11].addActionListener(this);  

        b1.addActionListener(this); b2.addActionListener(this);  

        b3.addActionListener(this); b4.addActionListener(this);  

        b5.addActionListener(this); b6.addActionListener(this);  

        b7.addActionListener(this); b8.addActionListener(this);  

        c.add(p2);  

        c.add(p1);  

        c.setLayout(new FlowLayout());  //流布局              

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //单击窗口的关闭按钮时程序执行的操作

        setVisible(true);    //设置窗体可见

        setResizable(false);  //设置窗体是否可以调整大小

        setSize(420,350); //设置窗体的大小为420*350像素大小  

    }

    

    public static void main(String[] args)  {  

    CalculatorInterface f = new CalculatorInterface();

    }  

    public void actionPerformed(ActionEvent e) {  

     try  

     {  

        if(e.getSource()==b4)      //清空c

        {  

            t1.setText("0");  //显示文字的属性setText(String s)

            t1.setHorizontalAlignment(JTextField.RIGHT); //设置对齐方式,向右对齐

            str.setLength(0);  

        }  

        else if(e.getSource()==b[10])    //变为负数

        {  

            x=Double.parseDouble(t1.getText().trim());

            t1.setText(""+(-x));  

            t1.setHorizontalAlignment(JTextField.RIGHT);  

        }  

        else if (e.getSource()==b5)    //加法

        {  

            x=Double.parseDouble(t1.getText().trim());  

            str.setLength(0);  

            y=0d;  

            z=0;  

        }  

        else if(e.getSource()==b7)     //减法

        {  

            x=Double.parseDouble(t1.getText().trim());  

            str.setLength(0);  

            y=0d; //这个数字类型是double

            z=1;  

        }  

        else if(e.getSource()==b3)    //乘法

        {  

            x=Double.parseDouble(t1.getText().trim());  

            str.setLength(0);  

            y=0d;  

            z=2;  

        }  

        else if(e.getSource()==b1)   //除法

        {  

            x=Double.parseDouble(t1.getText().trim());  

            str.setLength(0);  

            y=0d;  

            z=3;  

        }  

        else if(e.getSource()==b8)  

        {  

            str.setLength(0);  

            switch(z)  

            {  

                case 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.RIGHT);break;  

                case 1: t1.setText(""+(x-y)); t1.setHorizontalAlignment(JTextField.RIGHT);break;  

                case 2: t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.RIGHT);break;  

                case 3: t1.setText(""+(x/y)); t1.setHorizontalAlignment(JTextField.RIGHT);break;  

            }

            //将四则运算的计算结果保存到文件

            Writer s = null;

     BufferedWriter f = null;

     try {

s = new FileWriter("d:\\历史计算结果.txt",true);

f = new BufferedWriter(s);

            switch(z)  

            {  

                case 0: f.write(x+"+"+y+"="+t1.getText().trim()); break;  

                case 1: f.write(x+"-"+y+"="+t1.getText().trim()); break;

                case 2: f.write(x+"*"+y+"="+t1.getText().trim()); break;

                case 3: f.write(x+"/"+y+"="+t1.getText().trim()); break;  

            }

f.newLine();

f.flush();

} catch (IOException e1) {

e1.printStackTrace();

}        

        }

        else if(e.getSource()==b[12]) {          //%

            x=Double.parseDouble(t1.getText().trim());

            t1.setText(""+(x*0.01));  

            t1.setHorizontalAlignment(JTextField.RIGHT);  

        }

        else if(e.getSource()==b[13]) {           //e

            t1.setText(""+2.71828182845);  

            t1.setHorizontalAlignment(JTextField.RIGHT);

        }

        else if(e.getSource()==b[14]) {          //阶乘

            x=Double.parseDouble(t1.getText().trim());

            double sum=1;

            if(x==0) {

             sum = 0;

            }

            for(double i=1;i<=x;i++) {

             sum = sum*i;

            }

            t1.setText(""+(sum));  

            t1.setHorizontalAlignment(JTextField.RIGHT);

        }

        else if(e.getSource()==b[15]) {         //10^

         x=Double.parseDouble(t1.getText().trim());

         double sum=10;

         if(x==0) {

         sum = 1;

         }

            for(double i=1;i<x;i++) {

             sum = sum*10;

            }

            t1.setText(""+(sum));

            t1.setHorizontalAlignment(JTextField.RIGHT);

        }

        else if(e.getSource()==b[16]) {         //平方

         x=Double.parseDouble(t1.getText().trim());

            t1.setText(""+(x*x));

            t1.setHorizontalAlignment(JTextField.RIGHT);

        }

        else if(e.getSource()==b[11])   //.

        {  

            if(t1.getText().trim().indexOf(‘.‘)!=-1)

            {  

            }  

            else

            {  

                if(t1.getText().trim().equals("0"))

                {  

                    t1.setText(str.append(e.getActionCommand()).toString());  

                    t1.setHorizontalAlignment(JTextField.RIGHT);  

                }  

                else if(t1.getText().trim().equals(""))

                {}  

                else   

                {   

                    t1.setText(str.append(e.getActionCommand()).toString());   

                    t1.setHorizontalAlignment(JTextField.RIGHT);  

                }  

            }  

        y=0d;  

        }  

        else if(e.getSource()==b6)    //开根号

        {  

            x=Double.parseDouble(t1.getText().trim());   

            if(x<0)  

            {  

                t1.setText("数字格式异常");  

                t1.setHorizontalAlignment(JTextField.RIGHT);  

            }  

            else  

            {  

                t1.setText(""+Math.sqrt(x));  

                t1.setHorizontalAlignment(JTextField.RIGHT);  

            }  

            str.setLength(0);  

            y=0d;  

        }  

        else  

        {  

            if(e.getSource()==b[0])   

            {  

                if(t1.getText().trim().equals("0"))

                {}  

                else  

                    t1.setText(str.append(e.getActionCommand()).toString());  

                    t1.setHorizontalAlignment(JTextField.RIGHT);  

                    y=Double.parseDouble(t1.getText().trim());   

            }  

            else if (e.getSource()==b2)     //返回上一步Back

            {  

                if(!t1.getText().trim().equals("0"))   

                {  

                if(str.length()!=1)   

                {   

                    t1.setText(str.delete(str.length()-1,str.length()).toString());                    

                    t1.setHorizontalAlignment(JTextField.RIGHT);  

                }  

                else   

                {   

                    t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT);  

                    str.setLength(0);   

                }   

            }   

            y=Double.parseDouble(t1.getText().trim());   

            }  

            else   

                {  

                t1.setText(str.append(e.getActionCommand()).toString());   

                t1.setHorizontalAlignment(JTextField.RIGHT);  

                y=Double.parseDouble(t1.getText().trim());  

                }  

            }  

        }  

        catch(NumberFormatException e1){ t1.setText("数字格式异常");  

        t1.setHorizontalAlignment(JTextField.RIGHT); }   

        catch(StringIndexOutOfBoundsException e1){t1.setText("字符串索引越界");  

        t1.setHorizontalAlignment(JTextField.RIGHT);}   

    }  

}  

 

 

 

 

 

  

 

 

 

 

 

 

 

 

  

 

 

系统实现

4.1:算术运算测试

 技术分享图片

 

 

 技术分享图片

 

 

 

 

4.2:简易计算器模拟程序

 技术分享图片

 

 

 技术分享图片

 

 

 

 

 

 

 

 

 

 

 

系统测试

5.1:算术运算测试

技术分享图片

 

 技术分享图片

 

 技术分享图片

 

 

 

5.2:简易计算器模拟程序

6-1 简易计算机测试表

编号

测试功能

输入描述

预期结果

运行结果

HP01

数字按钮的测试

输入一个或多个0-9的数字

显示的是输入的数字

正常,与预期结果一致

HP02

运算符号按钮的测试

输入+ - * /中的运算符

/ 中当除数为0时,会提示错误,其他运算符结果正常

正常,与预期结果一致

HP03

功能按钮的测试

点击n! 10^ sqrt ^ %等按钮

显示的是运算后的最终结果

正常,与预期结果一致

 

 

 

 

结论和心得

通过本次阶段一的实验,让我了解了GUI图形界面设计的一些知识,还有巩固了之前学过的java基础知识,让之前原本模糊的知识更加清晰明了,在实际编程过程中,我也遇到了各种各样的错误,这也多亏了老师的指点和班级同学的帮忙,使我一步步克服了编程过程中遇到的困难。虽然我所写的程序并没有实现所有功能,但是我觉得自己进步了,很多原来都不懂的东西现在都已经了解了。

还让我明白了在拿到一个需求时,不是立刻就写代码,而是先分析需求,有什么样的功能,怎么去实现,思考思路,画流程图等等,弄好了这些,才能开始写代码,最后还要进行多次测试。

我认为学知识不能凭自己的爱好和一时兴趣,要一步一个脚印,认认真真,踏踏实实,理论与实践相结合,在扎实掌握课本实例和内容之后,有一定的扩展阅读和课外学习,充分全面的了解JAVA的应用和扩展运用,多动手,提高自己的编程能力。

java阶段一项目设计

原文:https://www.cnblogs.com/dqlcool/p/13205429.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!