java課程設計階段一 個人設計

来源:https://www.cnblogs.com/ahal/archive/2020/06/28/13203891.html
-Advertisement-
Play Games

目 錄 1 選題.......................................................................................................................... 1 2 系統需求分析......... ...


目    錄

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("\r\n");

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

                String count1= Integer.toString(count);

                w.write(count1);              

                w.write(" 次 \r\n");

                w.write("花費時間:");

                String time1=Double.toString(time);

                w.write(time1);

                w.write(" 秒 \r\n\n");

                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("排名(倒序):\n");

            for(double s1:s) {

                String s2= Double.toString(s1);

                fw.write(s2);

                fw.write("\n");

            }

           

        } 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要腳踏實地,要更有信心和耐心。多向老師、同學請教討論。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.手寫實現ArrayList: 2.手寫實現LinkedList: ...
  • 第一步,下載安裝git 打開 [git官網] https://git-scm.com/,下載git對應操作系統的版本。 所有東西下載慢的話就可以去找鏡像!官網下載太慢,我們可以使用淘寶鏡像下載:http://npm.taobao.org/mirrors/git-for-windows/下載對應的版本 ...
  • import pandas a=pandas.DataFrame({'Country': ['China,US', 'Japan,EU', 'UK,Australia', 'Singapore,Netherland'], 'Number': [100, 150, 120, 90], 'Value': ...
  • 最近也有很多人來向小編"請教",他們大都是一些剛入門的新手,還不瞭解這個行業,也不知道從何學起,開始的時候非常迷茫,實在是每天回覆很多人也很麻煩,所以在這裡小編總結一些基礎課程: 基礎階段 首先是基礎階段,在基礎階段,我們必須掌握Java基礎,Mysql資料庫,Oracle資料庫,JDBC,Linu ...
  • JAVA中繼承和多態的理解 繼承的概念 繼承是java面向對象編程技術的一塊基石,因為它允許創建分等級層次的類。 繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。 類的繼承格式 在Java中通過extends關鍵字可以申 ...
  • 學習記錄1--Springboot的Maven自定義打包 在以往的開發中,Springboot應用預設打成一個jar,雖然方便但是會有很多問題,比如不方便修改配置文件,修改一個處代碼就要更新整包等等,而maven中也有這樣的插件可以給我們提供幫助 複製引用依賴插件 <plugin> <groupId ...
  • 切片 import numpy as np # 使用切片參數start:stop:step來進行切片操作 a_array=np.arange(10) print(a_array,'\n') b_array=a_array[1:10:2] print(b_array,'\n') c_array=a_a ...
  • 線性表: 定義:由零個或多個數據元素組成的有限序列。 首先他是一個序列,也就是說元素之間是有先來後到 若元素存在多個,則第一個元素無前驅,最後一個元素無後繼,其他元素有且只有一個前驅和後繼 另外,線性表強調是有限的。 數學語言的定義: 若將線性表記為(a1,...,ai-1,ai,ai+1,...a ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...