java阶段一项目设计

 

 

 

Java课程设计

(阶段一文档)

目    录

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 选题

选题一

猜数游戏

题目要求

计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,

继续猜,直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。

排行榜存放到文件或数据库中。

使用Java知识

数组,Random random = new Random();定义一个随机数,for循环,while循环

if循环,多重if 选择结构,Scanner input= new Scanner() ;声明一个Scanner类的对象,并实例化,

计算时间方法,文件的读写,Arrays类:对数组元素的排序

选题二

简易计算器模拟程序

题目要求

仿照 Windows 计算器,编写一具有 GUI 的计算器,能实现整数的

加、减、乘、除四则运算。历次计算需存放在文件或数据库中,下回启动可重复

使用。功能具体参考 windows 计算器(查看菜单选择:标准型即可)

使用Java知识

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

private JTextField声明文本框

private JLabel label声明标签

super()调用父类的构造方法

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

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

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

addActionListener 添加监听对象

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

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  设置按X时退出程序

 setVisible(true);      将窗口隐藏

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

setHorizontalAlignment设置水平对齐

getText().trim():在获得得的文本中去除空格

Double.parseDouble:把其他数据转化为double类型


2 系统需求分析

2.1 系统可行性分析

猜数游戏:随机生成1到100的随机数,让几位玩家猜数,直到每个人猜对为止,根据每位玩家的次数和时间进行排血,然后将成绩存储到文件中。

简易计算器:设计一个简易计算器实现加减乘除等四则运算。历次计算器存放在文件中。

2.2 系统需求分析


 

 

2.3 进度安排

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

表3-1 进度安排表

阶段

持续时间

阶段描述

输出

构思阶段

30min

需求分析

需求说明,功能模块图

设计阶段

30min

系统设计

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

实现阶段

3h

编写代码

项目工程源代码

5h

系统测试

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

运行阶段

1h

部署、运行

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

 


3 系统设计

3.1 系统设计

   项目二:猜数游戏

import java.util.Arrays;

import java.util.Random;

import java.util.Scanner;

import java.io.FileWriter;

import java.io.IOException;

   public class Guess{

      public static void main(String[] args){

          int n=1;

          int []a=new int[2];

          while(n<=2) {      

          int cishu=0;

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

          System.out.println("请输入"+n+"号玩家猜的数字:");

          Random random = new Random();     //生成一个随机数

          int suiji = random.nextInt(100);

          Scanner input = new Scanner(System.in);

          long startTime = System.currentTimeMillis();

            while(true) { 

             int num =input.nextInt();

             if(num>100||num<0) {

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

                break;

             }

             else if(num<suiji) {

                System.out.println("您猜的数偏小了");cishu++;

             }

             else if(num>suiji) {

                System.out.println("您猜的数偏大了");cishu++;

             }

             else {

                System.out.println("恭喜您猜对了");cishu++;

                break;

             } 

          }n++;

          long endTime = System.currentTimeMillis();

          long Time = endTime-startTime;

          System.out.println("共用"+cishu+"次猜对");

          System.out.println("用时"+Time+"毫秒猜对");

          a[i]=cishu;

          startTime=0;endTime=0;

            FileWriter fw = null;

              try {             

                  fw = new FileWriter("d:\程序测试\测试.txt", true);

                  fw.write(" ");

                  fw.write(+(n-1)+"号玩家所用次数为:");

                  String data = Integer.toString(cishu);

                  fw.write(data);

                  fw.write(" ");

                  fw.write(+(n-1)+"号玩家所用时间为:");

                  String counts = Integer.toString((int) Time);

                  String info = counts;

                  fw.write(info);

                  fw.flush();

              } catch (IOException e) {

                  e.printStackTrace();

              }

          }

          }

          System.out.println("根据次数排行榜为:");

          Arrays.sort(a);

          for(int m=0;m<a.length;m++) {

          System.out.println(+a[m]);}

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

      }

      }    

 

项目三:简易计算器

package com.gui.test;

import javax.swing.*; 

import javax.swing.JTextField; 

import java.awt.*; 

import java.awt.event.*; 

import java.lang.*; 

import java.awt.Color; 

 

public class CalculateTest 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[13];    //用数组创建13个按钮的空间

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

 

 

    public CalculateTest()  //构造方法

    { 

        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面板上添加文本框

        p2.add(t1);     

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

 

        for(int i=0;i<10;i++)     //将数组中0到9设置为标签

        { 

            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("="); 

        b9= new JButton("^2");

       

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

        b9.setForeground(Color.red);

         

      

        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.add(b9);        //添加面板

        p1.setLayout(new GridLayout(5,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); 

        b9.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)     //创建一个方法实现一个窗口

    {  CalculateTest f = new CalculateTest(); } 

 

    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()==b9) {

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

             if(x<0) 

             { 

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

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

             } 

             else 

             { 

                 t1.setText(""+Math.pow(x,2));      //添加平方

                 t1.setHorizontalAlignment(JTextField.RIGHT); 

             } 

             str.setLength(0); 

             y=0d;   

        }

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

        { 

            if(t1.getText().trim().indexOf('.')!=-1)   //判断字符串中是否包含小数

            { 

            } 

            else

            { 

                if(t1.getText().trim().equals("0"))  //初始值显示为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());    //把其他数据转化为double类型

                } 

            } 

        } 

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

        t1.setHorizontalAlignment(JTextField.RIGHT); }  

 

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

        //Java API指出StringIndexOutOfBoundsException异常

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

    } 

           

4 系统实现

4.1 猜数游戏

两个玩家猜数:

 

 


4.2简易计算器

 

33的平方:

 

 

 

5 系统测试

表6-1 猜数游戏测试表

编号

测试功能

输入描述

预期结果

运行结果

HP01

猜数超出界限

1.输入一个小于0或大于100的数

显示游戏结束并退出循环

正常,与预期结果一致

HP02

猜数功能

1.任意输入1到100之间的整数

2.根据系统提示猜大或猜小继续输入,,知道猜对为止

根据玩家每次输入的数,系统将会显示猜大,猜小或者猜对了

正常,与预期结果一致

HP03

排序功能

1.输入不同玩家所猜测的数字直到猜对为止

根据不同玩家猜对的次数进行排序

正常,与预期结果一致

表6-1 计算器测试表

编号

测试功能

输入描述

预期结果

运行结果

HP01

加减乘除四则运算

1.输入数字按运算符号得出结果

显示出正确运算结果

正常,与预期结果一致

HP02

平方及平方根运算

1.输入数字求出那个数的平方及平方根

显示出正确运算结果

正常,与预期结果一致

HP03

归零功能

1.输入数字按C归零

将输入的数字归零

正常,与预期结果一致

 

 

 

6 结论和心得

心得:通过本次实验,加深了我对GUI的了解,也让我在之前的java 学习中找到了不足,以及遗忘的知识漏洞。这次实验让我巩固了曾经学习的java知识,也让我学习上的漏洞得以弥补,还加强了我在编程的活学活用的能力。希望在以后的学习中加强对知识的巩固,不要遗漏任何一点知识。

原文地址:https://www.cnblogs.com/zsc961644823/p/13205684.html