zoukankan      html  css  js  c++  java
  • java课程设计阶段一 个人设计

    目    录

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

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

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

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

    2.3 项目进度安排.......................................................................................................... 3

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

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

    4 系统实现.................................................................................................................... 8

    4.1 算术运算测试.......................................................................................................... 8

    4.2 猜数游戏.................................................................................................................. 9

    5 结论和心得................................................................................................................. 11

    1 选题

    选题一

    算术运算测试

    题目要求

    实现十道100以内加减法数学题,能根据题目计算出答案,

    与输入答案对比,判断做题是否正确,最后计算分数。

    添加排行榜功能存放到文件或数据库中。

    使用Java知识

    Java基本输入输出

    运算符

    循环

    选择分支

    GUI

    选题二

    猜数游戏

    题目要求

    计算机产生随机数,猜中即胜,

    猜不中,提示是大了还是小了,继续猜,

    直至猜到,给出所用时间和评语。

    保留用户测试成绩,做出成绩排行榜。排行榜存放到文件或数据库中。

    使用Java知识

    循环

    分支

    变量

    常用类

    文件

    等.

     2 系统需求分析

    2.1 系统可行性分析

        技术可行性:

          算术运算测试:(1)GUI图形用户界面

                           (2)生成随机数,进行加减法运算

          猜数游戏:(1)产生0--100的随机数

               (2)获取开始和结束时间

                       (3)用for循环来控制猜数,直到猜对为止

               (4)文件管理

        操作可行性:

             只需要用户有一台计算机即可,因此在操作上是可行的。

    2.2 系统需求分析

    算术运算测试:

        实现十道100以内加减法数学题,能根据题目计算出答案,

    与输入答案对比,判断做题是否正确,最后计算分数。

    猜数游戏:

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

    直至猜到,给出所用时间和评语。保留用户测试成绩,做出成绩排行榜。排行榜存放到文件中

     

    图1-1 算术运算测试

     

    图1-2 猜数游戏

    2.3 进度安排

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

    表3-1 进度安排表

    阶段

    持续时间

    阶段描述

    输出

    构思阶段

    1小时

    需求分析

    需求说明,功能模块图

    设计阶段

    1小时

    系统设计

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

    实现阶段

    1天半

    编写代码

    项目工程源代码

     1小时

    系统测试

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

    运行阶段

    1小时

    部署、运行

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

    3 系统设计

    3.1 系统设计

    项目一:算术运算测试: 

    (1)图形界面化设计:

       JFrame jf = new JFrame();//创建窗口

            JPanel jp = new JPanel();//创建面板

            JLabel jl = new JLabel();//创建标签  显示题目

            JLabel jl2 = new JLabel();//创建标签  显示结果正确与否

            JButton jb = new JButton("提交");//创建“提交”按钮

            JButton jb2 = new JButton("下一题");//创建“下一题”按钮

      JTextField jtf = new JTextField();//创建文本框 输入答案

     

      jf.setSize(500, 500);//调整窗口大小 宽,长

            jf.add(jp);//往窗口中添加面板

            jp.setLayout(null);//设置布局管理器为空

            jp.add(jl);//添加标签 此标签显示题目

            jl.setBounds(18, 18, 100, 30);//调整标签位置 大小 x,y,宽,高

            jp.add(jl2);//添加标签 此标签显示结果正确与否

            jl2.setBounds(60, 100, 250, 70);

            jp.add(jtf);//添加文本框用户输入答案

            jtf.setBounds(120, 18, 40, 30);

            jp.add(jb);//添加“提交”按钮

            jb.setBounds(10, 60, 80, 40);

            jp.add(jb2);//添加“下一题”按钮

            jb2.setBounds(100, 60, 80, 40);

            jf.setVisible(true);//true使Window可见,否则隐藏Window

      jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置用户在此框架上启动“关闭”时默认执行的操作。退出应用程序默认窗口关闭操作 在窗口被关闭时退出JVM    

     

    (2)随机生成两个0—100的数:

           Random ran = new Random();

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

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

     

    (3)响应用户点击“提交”按钮:

           jb.addActionListener(new ActionListener() {  

                @Override

                public void actionPerformed(ActionEvent e) {

                    int s=Integer.parseInt(jtf.getText());//将用户输入的答案字符串转化成十进制数

                    if(s==sum) {

                       jl2.setText("恭喜您,回答正确!");

                       score+=10;

                    }else {

                       jl2.setText("很遗憾,回答错误。 正确答案:"+sum);

                    }

                }

            });

    (4)响应用户点击“下一题”按钮:

      jb2.addActionListener(new ActionListener() {

                @Overrid

                public void actionPerformed(ActionEvent e) {

                   

                    Random ran = new Random();

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

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

                    sum=0;

                    temp=(int)(Math.random()*10)%2;//若temp为0则加法  1为减法

                    if(temp==0) {

                       count++;

                       jl.setText("第"+count+"题:"+num1+"+"+num2+"=");

                       sum=num1+num2;

                    }else {       

                       count++;

                       jl.setText("第"+count+"题:"+num1+"-"+num2+"=");

                       sum=num1-num2;

                    }

                    if(count==11) {

                       JOptionPane j = new JOptionPane();//提示框

                       j.showMessageDialog(jf, "您的得分是:"+score);

                       jf.setVisible(false);//关闭窗口

                    }

                }

            });

     

    (5)主函数:

            public static void main(String[] args) {

            Arithmetic a = new Arithmetic();

            a.produce();

        }

     

    项目二猜数游戏:

       (1)录入玩家人数并输入名字:

          Scanner p=new Scanner(System.in);

            System.out.println("请输入玩家人数:"); //游戏人数

            int person=p.nextInt();

      System.out.println("请输入您的代号:");

            String name = p.next();

     

       (2)生成随机数:

          Random ran=new Random();

          number=ran.nextInt(100); //产生0--100的随机数 

     

        (3)猜数过程:

           int  guessNumber=-1;

            for(int j=0;guessNumber!=number;j++) { //用for循环来控制猜数,直到猜对为止

                  guessNumber=p.nextInt(); //录入用户猜的数

                  count++; //猜一次,加一次

                  if(guessNumber>number) {//将用户猜的数与随机数进行比较

                      System.out.println("您猜的太大了,请往小一点猜");

                      continue;

                  }

                  else if(guessNumber<number) {

                  System.out.println("您猜的太小了,请往大一点猜");

                  continue;

                  }else if(number==guessNumber) {

                  end=System.currentTimeMillis(); //猜对了 记录结束时间

                  time=(end-start)/1000;

                  if(count<7)

                      System.out.println("真厉害,恭喜你,猜对了!");

                  else if(count>7) {

                      System.out.println("你终于猜对了。");

                  }

             }

        (4)时间:

           double start=0.0; //开始时间

            double end=0.0; //结束时间

            double time=0.0;//计算所用时间

            start = System.currentTimeMillis(); //获取开始时刻

            end=System.currentTimeMillis(); //猜对了 记录结束时间

            time=(end-start)/1000;

    (5)信息录入:

        try {

                    w=new FileWriter("info.txt",true);

                    w.write("代号:");

                    w.write(name);

                    w.write(" ");

                    w.write("猜数所用次数:");

                    String count1= Integer.toString(count);

                    w.write(count1);              

                    w.write(" 次 ");

                    w.write("花费时间:");

                    String time1=Double.toString(time);

                    w.write(time1);

                    w.write(" 秒 ");

                    System.out.println("玩家信息已读入");

            } catch (IOException e) {

                e.printStackTrace();

            }finally {

                try {

                    w.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

     

        (6)排名:

               try {

                fw = new FileWriter("rank.txt",true);

                fw.write("排名(倒序): ");

                for(double s1:s) {

                    String s2= Double.toString(s1);

                    fw.write(s2);

                    fw.write(" ");

                }

               

            } catch (IOException e) {

                e.printStackTrace();

            }finally {

                try {

                    fw.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

    4 系统实现

    4.1 算术运算测试

     

    4.2 猜数游戏   

     

     

     

    5 结论和心得

           项目一算术运算测试:第一次使用到GUI图形界面设计,通过跟着老师视频学习和网上资料慢慢学会点这部分的内容,窗口、面板、标签、按钮、文本框,组合到了一起变成一个带有一点功能的小窗口。特别的是点击一个按钮之后的响应,这方面是我觉得这次实训收获最大的地方,因为原来都不懂,觉得很神奇,这次的实训则帮我揭开了这层神秘的面纱。通过一个ActionListenr按钮(类似一个监听器)来响应用户点击按钮,而ActionListenr其实是一个接口,里面有一个actionPerformed(ActionEvent e)方法,来具体实现。

           项目二猜数游戏:这个项目巩固了前面大部分所学的知识 变量、循环、数组、条件判断、常用类、异常处理、文件读写等,更加提高了我的编程能力。让我发现了我在数组和文件处理方面还是要加强的,基础没有太牢固。

           以后要多动手,提高自己的编程能力。基础是最重要的,只有基础牢固才能写对代码。学习Java要脚踏实地,要更有信心和耐心。多向老师、同学请教讨论。

  • 相关阅读:
    [反汇编练习] 160个CrackMe之002
    [反汇编练习]160个CrackMe之001
    Leap Motion 开发笔记
    HTMLayout界面CSSS样式解析笔记
    DbgPrint输出格式 Unicodestring
    WinDbg调试命令汇总
    WDF模型驱动程序开发
    [Sciter系列] MFC下的Sciter–5.Sciter中GUI线程研究
    剑指offer第二版-4.二维数组中的查找
    剑指offer第二版-3.数组中重复的数
  • 原文地址:https://www.cnblogs.com/ahal/p/13203891.html
Copyright © 2011-2022 走看看