181111

18111130

目    录

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

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

3.1 系统可行性分析........................................................................................... 2

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

3.3 项目进度安排............................................................................................... 2

4 系统设计.................................................................................................................. 4

4.1 系统设计....................................................................................................... 4

4.2 数据库设计(有则写-无则删除,如果是文件直接写文件)................. 4

5 系统实现.................................................................................................................. 6

5.1 管理员登录界面实现................................................................................... 6

5.2 管理用户信息界面实现............................................................................... 6

6 系统测试.................................................................................................................. 8

7 结论和心得.............................................................................................................. 9

 

 

1 选题

选题一

算术运算测试

题目要求

 

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

 

 

 

 

使用Java知识

 

Random方法的应用

For循环的使用

数组的定义,赋值,排序

 

选题二

简易计算器模拟程序

题目要求

 

功能要求:仿照Windows计算器,编写- -具有GUI的计算器,能实现整数的加、减、乘、除四则运算。历次计算需存放在文件或数据库中,下回启动可重复使用。功能具体参考windows计算器(查看菜单选择:标准型即可)

 

使用Java知识

 

使用if-else循环语句循环嵌套语句

创建对象以及对象的引用

方法构造 方法监听

继承extends和接口实现implements

 

 

 

 

 

 

 


2 系统需求分析

2.1 系统可行性分析

系统具有可行性,操作性。

算术运算测试要求随机生成十道题加减数学题,然后根据输入的结果判断是否正确,并给于得分,将结果列入一个数组中保存。

简易计算器,能进行计算器的加减乘除普通运算,省时省力方便的功能。

2.2 系统需求分析

算术运算测试要求随机生成十道题加减数学题,然后根据输入的结果判断是否正确,并给于得分,将结果列入一个数组中保存。

简易计算器,仿照Windows计算器,编写- -具有GUI的计算器,能实现整数的加、减、乘、除四则运算

 

 

2.3 进度安排

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

表3-1 进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

60分钟

需求分析

需求说明,功能模块图

设计阶段

30分钟

系统设计

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

实现阶段

5小时

编写代码

项目工程源代码

1小时

系统测试

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

运行阶段

1小时

部署、运行

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

 

 

 


3 系统设计

3.1 系统设计

一、算术运算测试

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

import java.util.Random;

import java.util.Scanner;

public class dome {

   public static void main(String[]args) {

          Scanner input = new Scanner (System.in);

          Random r= new Random();

          int score =0;

          int arr[]= new int[10];//定义一个数组

          long total=0;

          int len=arr.length;

          //十个计算题的循环体

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

              int a;

              int b;

              a=r.nextInt(100);

              b=r.nextInt(100);

              System.out.println("请输入"+a+"+"+b+"的答案");

              int c = input.nextInt();

              int k ;

              if(c==a+b) {

                 k=c;

                 System.out.println("回答正确!正确答案是:"+k);

                 score+=10;//成绩+10分

              }

              else {

                 k=a+b;

                 System.out.println("回答错误!正确答案是:"+k);

                 score=score;//成绩不变

                 }

          System.out.println("你的得分:"+score);//测试得分情况

          arr[i]=k;

          }

          //将结果列出来

          System.out.println("所有习题的正确答案是:");

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

              System.out.print(arr[i]+"、");

          }

          System.out.println();

          //冒泡排序(升序)

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

              for(int j=i+1;j<len;j++) {

                 if(arr[i]>arr[j]) {

                     int team=arr[j];

                     arr[j]=arr[i];

                     arr[i]=team;

                 }

              }

          }

          System.out.println("----------");

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

              System.out.print(arr[i]+"、");

          }

         

         

       }

}

 

二、简易计算器模拟程序

import javax.swing.*; 

import javax.swing.JTextField; 

import java.awt.*; 

import java.awt.event.*; 

import java.lang.*; 

import java.awt.Color; 

public class Caculator extends JFrame implements ActionListener 

    private JPanel p1 = new JPanel();  //声明主面板p1

    private JPanel p2 = new JPanel();  //声明主面板p2

    private JTextField t1;     //声明文本框t1

    private JTextField t2;     //声明文本框t2

    private JLabel label;     //声明标签

    StringBuffer str;           

    double x,y;              

    int z;                   

    private JButton b[] = new JButton[12];    //用数组添加12个按钮的空间

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

   

    public Caculator()  //构造方法

    { 

        super("简易计算器");    //调用父类的构造方法

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

        t1 = new JTextField(30);  //给文本框t1分配空间

        t1.setEditable(false);    //使t1编辑框不能编辑

        t2 = new JTextField(30);  //给文本框t2分配空间

        t2.setEditable(false);    //使t2编辑框不能编辑

        label = new JLabel("黄欢设计的计算器");  //设置标签的名字

        label.setForeground(Color.blue);       //将前景设为蓝色

 

         

        str=new StringBuffer();  

 

        p2.add(label);   //在p2面板上添加标签

        p2.add(t2);    

        p2.add(t1);     

        p2.setLayout(new GridLayout(4,1)); //设置四行一列的布局

 

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

        { 

            String s=""+i; 

            b[i]= new JButton(s);     //将数组添加到按钮上

            b[i].addActionListener(this);   //添加监听对象 

        } 

         

         

        b[10]= new JButton("00");  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("="); 

       

        for(int i=0;i<12;i++) 

        { 

            b[i].setForeground(Color.blue);  //设置前景颜色

        } 

 

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

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

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

        b6.setForeground(Color.red);     b8.setForeground(Color.blue); 

         

      

        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(b8);

       

        p1.setLayout(new GridLayout(4,5,5,5));  //给按钮面板设置网格布局

 

         

      

        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);  //设置按X时退出程序

        setVisible(true);      //将窗口隐藏

        setResizable(false);   //生成窗口的大小是固定的

        setSize(400,400);    //设定计算器的尺寸

 

    } 

 

     

  

    public static void main(String[] args)     //创建一个方法实现一个窗口

    {  Caculator f = new Caculator(); } 

 

    public void actionPerformed(ActionEvent e)  //实现按钮的事件处理

    { 

    try 

    { 

        if(e.getSource()==b4)   //调用e.getSource()如果得到Jbutton点击的是b4

        { 

            t1.setText("0"); 

            t1.setHorizontalAlignment(JTextField.RIGHT);   //设置水平对齐  

            str.setLength(0);  //清除字符串

        } 

        else if(e.getSource()==b[10])  

        { 

            x=Double.parseDouble(t1.getText().trim());  //getText().trim():在获得得的文本中去除空格

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

            t1.setHorizontalAlignment(JTextField.RIGHT);  //设置水平对齐

        } 

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

        { 

            x=Double.parseDouble(t1.getText().trim());  //Double.parseDouble:把其他数据转化为double类型

            str.setLength(0); 

            y=0d;   //给y赋初始值0且这个数字类型为double

            z=0; 

        } 

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

        { 

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

            str.setLength(0);   //setLength:设置动态数组长度

            y=0d; 

            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;

               

            } 

        }

       

        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) 

            { 

                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());    //把其他数据转化为double类型

                } 

            } 

        } 

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

        t1.setHorizontalAlignment(JTextField.RIGHT); }  

 

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

        //Java API指出StringIndexOutOfBoundsException异常

        t1.setHorizontalAlignment(JTextField.RIGHT);}   //设置水平对齐

    } 

 


4 系统实现

项目一

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

项目二、

 

 

5 系统测试

表1、算术运算测试

编号

测试功能

输入描述

预期结果

运行结果

HP01

功能

1.生成计算式

2.获取测试得分

3.存入数组中

可以生成计算式,并且可以测试

正常,与预期结果一致

HP02

生成计算式

  1. 生成随机数
  2. 生成随机运算式

 

生成10道100以内的加减随机运算式

正常,与预期结果一致

HP03

生成分数

1计算的结果与输入的值比较

 

参与答题,得出总分

正常,与预期结果一致

 

表2、简易计算器模拟程序

编号

测试功能

输入描述

预期结果

运行结果

HP01

功能键测试

  1. back测试
  2. C测试

可以返回上一步;

可以清0;

正常,与预期结果一致

HP02

符号键测试

1.加减乘除,开根号

能够进行正常的运算

正常,与预期结果一致

HP03

数字键输入

1.1,2,3,4…..0的输入

正常显示

正常,与预期结果一致

 

 

 

6 结论和心得

心得:

通过这个实验我增加了许多代码的认识,还有对Java知识的积累,原本不清晰,不牢固的知识点,能够得到巩固。

通过这个项目一的测试,做Java程序设计要有明确的思路,对代码的熟悉。就像算术运算这个程序,首先要有明确的思路,对功能的明确,然后再去设计程序;像简易计算器这个有很多代码,方法很多都是陌生的,所以进程比较慢,我会通过这个程序好好学习这些新方法,新代码,然后积累下来。

 

posted on 2020-06-28 16:46  181111  阅读(23)  评论(0)    收藏  举报

导航