主頁 > 後端開發 > 我的第二次博客作業

我的第二次博客作業

2023-05-18 07:43:49 後端開發

AZ-1的第二次博客作業

AZ-1 - 博客園 (cnblogs.com)

前言

題量

  1. 題目集4題量較小,
  2. 題目集5題量較小,
  3. 期中考試題量中等,

難度

  1. 題目集4雖然只有一道題,但是題目很長,難度很大,讓人在看到的時就心生畏懼,選單4在選單3的基礎上增加了大量的錯誤輸入,大大增加了程式的代碼量,很考驗編程程序中的細心程度,也很考驗對正則運算式的掌握程度,
  2. 題目集5也只有一道題目,難度相對于選單4來說低了一點,選單5是選單3的另一個分支,在特色菜的基礎上增加了菜的口味度和種類,并且需要計算每張桌子的平均口味度,也為桌增加了電話號碼和人名,總體來講并不簡單,
  3. 期中考試總共有四道題目,除第四題外題目難度都不高,第一題是創建圓類;第二題是創建點類和矩形類;第三題是從圓類和矩形類中提取出一個共同的父類,實作多型;第四題是實作給定的介面設計,

知識點

  1. 選單4的知識點主要是正則運算式、對代碼運行程序的優化以及內容的擴充,
  2. 選單5的知識點主要是正則運算式、對代碼運行程序的優化以及內容的擴充,
  3. 期中考試的主要知識點主要是程式設計中類的設計、程式設計中類結構設計、程式設計中的繼承與多型和程式設計中的抽象類與介面,

題目集四 7-1 選單計價程式-4

設計與分析

  • SourceMonitor生成報表:

  • idea生成類圖:

這個程式由7個類組成,分別是Dish類、Menu類、Record類、Order類、Main類、Time類和Table類,

Dish類包含菜的名字、打折后價格、Boolean型數flag(這道菜是否是特色菜的標志)、Dish的構造方法和每道菜的價格計算方法,

Menu類包含一個Dish陣列、整型數i(記錄選單中共有幾道菜)、Menu的構造方法、向Menu中添加菜的方法和查找菜品的方法,

Record類中包含用戶點的菜、每道菜的份量、每道菜的數量、點菜的序號、Boolean數flag(標志用戶點的是不是特色菜)、這條記錄的價格、Record的構造方法和計算這條記錄的價格的方法,

Order類中包含Record陣列、整形數num(記錄訂單中有幾條點菜記錄)、整型數lastOrderNum(記錄該訂單中的上一條點單記錄的點菜序號)、計算總價格的方法、添加點菜記錄的方法和洗掉點菜記錄的方法,

Time類中包含Calendar類物件cal、整型數(year、month、day、hour、minute、second、week)、Time的建構式、judge方法判斷Table物件是否在營業時間,

Table類包含Time類物件time、Order類物件order、anotherOrder(幫別桌點菜的記錄)、String物件num(桌號)、double物件discount(記錄該桌的折扣)、totalPrice(該桌打折后的總價)、originalPrice(該桌的初始價格)、Boolean型物件flag(判斷該桌是否第一次點菜)、flag1判斷特色菜是否打折、judge方法判斷該桌打幾折、searchTable方法根據桌號找桌物件,

 踩坑心得

  • 我一開始沒有使用正則運算式來規范輸入,而是單純地使用if陳述句判斷輸入是否合規,這導致我的程式不能準確地判斷用戶輸入的情況,相應地輸出各種錯誤輸入的輸出提示,

心得:熟練地使用正則運算式可以準確地篩選出正確的輸入形式,剔除各種各樣奇奇怪怪的錯誤輸入,

  •  不能亂加訪問修飾詞

給Dish中的dishName加private修飾詞:

心得:現在我們的程式只要能夠運行拿滿分就夠了,目前還不會涉及到資料的私密性,沒有必要把資料的訪問權限設定地太高,

  • 方法中傳入的引數名字盡量與該類中存在的變數名不同,如果相同,要用this.指代該類中的變數:

心得:雖然我們幾乎可以給變數起無數種名字,但是果然還是同樣的名字方便日后理解,

  • 一個錯誤輸入可能同時符合多種錯誤輸出情況,但錯誤輸出有優先級,

正確輸出:

錯誤輸出:

 心得:在撰寫程式時要時刻記得題目要求,內心要有一個程式運行的大概的流程,按照要求一步一步地撰寫程式,

改進建議

  • 建議1:Order類中的Record陣列可以設計成動態陣列,增加程式靈活性,
  • 建議2:去除一些運行程序中沒有必要出現的變數,

題目集五 7-1 選單計價程式-5

設計與分析

  • SourceMonitor生成報表:

  • idea生成類圖:

這個程式由8個類組成,分別是Dish類、Menu類、Record類、Order類、Main類、Time類、Table類和Customer類,

Dish類包含菜的名字、打折后單價、Boolean物件flag(這道菜是否是特色菜的標志,如果這道菜是特色菜,String物件記錄該特色菜的種類(即川菜、浙菜等))、Dish的構造方法和每道菜的價格計算方法,

Menu類包含一個Dish陣列、整型數i(記錄選單中共有幾道菜)、Menu的構造方法、向Menu中添加菜的方法和查找菜品的方法,

Record類中包含用戶點的菜、每道菜的份量、每道菜的數量、點菜的序號、Boolean物件flag(標志用戶點的是不是特色菜,如果是特色菜,String物件記錄該特色菜的種類(即川菜、浙菜等))、這條記錄的價格、Record的構造方法和計算這條記錄的價格的方法,

Order類中包含Record陣列、整形數num(記錄訂單中有幾條點菜記錄)、計算訂單總價格的方法、添加點菜記錄的方法和洗掉點菜記錄的方法,

Time類中包含Calendar類物件cal、整型數(year、month、day、hour、minute、second、week)、Time的建構式、judge方法判斷Table物件是否在營業時間,

Table類中包含String物件name和phoneNumber、Time類物件time、Order類物件order、anotherOrder(幫別桌點菜的記錄)、String物件num(桌號)、double物件discount(記錄該桌的折扣)、totalPrice(該桌打折后的總價)、originalPrice(該桌的初始價格)、Boolean物件flag1判斷特色菜是否打折、double物件spicy(儲存該桌辣菜的總辣度)、sweetNess(儲存該桌甜菜的總辣度)、acidity(儲存該桌酸菜的總辣度)、int物件spicyAmount(儲存該桌辣菜的總數量)、sweetNessAmount(儲存該桌甜菜的總數量)、acidityAmount(儲存該桌酸菜的總數量)、boolean物件spicyFlag(該桌有沒有點辣菜的標志)、sweetFlag(該桌有沒有點甜菜的標志)、acidityFlag(該桌有沒有點酸菜的標志)、void judge()方法判斷該桌打幾折、searchTable方法根據桌號找桌物件、String judge(String kind,int a)把平均口味度轉化為字符標準、taste方法計算該桌的口味度的總和以及特色菜的總量、tasteCalculation方法計算該桌特色菜的平均口味度、showTaste方法輸出該桌的平均口味度的字符形式以及每種口味的特色菜的總量,

Customer類中包含String物件name、phoneNumber、double物件totalPrice(這個顧客點菜的總價格)、record方法記錄該顧客的名字,電話號碼以及點菜的總價格,

 踩坑心得

  • 程式有兩種輸入錯誤提示,“** does not exist”和“delete error”,這時需要注意這兩個提示的輸出順序,否則會提示格式錯誤

錯誤的輸出順序:

正確的輸出順序:

心得:答案對固然重要,但是也要格式對才能得分,

  •  訂單總價的計算程序是菜的原價在按份量計算一次后進行四舍五入,再在乘以數量以及折扣后進行一次四舍五入,最后再加在一起即為訂單總價格,如果是加在一起后再進行打折會計算出不同的答案,

錯位的價格計算順序:

正確的價格計算順序:

4

心得:在撰寫程式前應該認真地研讀題目要求,思考清楚程式運行程序再進行撰寫,避免出現邏輯錯誤,

  •  為別桌點特色菜時被點菜的桌的口味度及特色菜總數量不變(不小心遺漏了在為別桌點菜時給別桌增加口味度總量以及特色菜總數量的程序)

輸入

東坡肉 浙菜 25 T
油淋生菜 9
蜜汁灌藕 浙菜 10 T
刀削面 晉菜 10 T
醋澆羊肉 晉菜 30 T
麻婆豆腐 川菜 12 T
麻辣雞絲 川菜 15 T
table 1 : tom 13605054400 2023/5/6 12/30/00
1 油淋生菜 2 1
table 2 : jerry 18100334566 2023/5/1 12/30/00
1 1 醋澆羊肉 4 1 2
3 麻婆豆腐 2 2 1
4 麻辣雞絲 2 3 3
end

錯誤輸出:

正確輸出:

心得:撰寫程式的程序中要專注,避免遺漏一些簡單的部分,

  • 如果某桌沒有點特色菜則要在輸出table *: *** ***后加一個空格

錯誤輸出:

正確輸出:

心得:雖然題目中沒有給出相應的測驗樣例,但我們可以在不斷的試錯中把題目需要的格式測出來

  • 如果點了特色菜,但是該桌的平均口味度為零的時候要輸出不辣、不甜或者不酸,

錯誤輸出:

正確輸出:

 心得:在撰寫程式前應該認真地研讀題目要求,思考清楚程式運行程序再進行撰寫,避免輸出的答案與題目要求不符合,

改進建議

  • 建議1:Menu中的dishes陣列和Order中的records陣列都可以改為動態陣列,增加程式的靈活性,
  • 建議2:Table中的name物件和phoneNumber物件可以替換成一個Customer物件,
  • 建議3:Table類中的與口味有關的引數可以整合為一個口味類,
  • 建議4:創建一個特色菜類作為Dish類的子類,

期中考試 7-1 測驗1-圓類設計

設計與分析

  • idea生成類圖:

這個程式由2個類組成,分別是Circle類和Main類,

Ciecle類中包含r(半徑)、getS方法、setR方法和Circle的構造方法,

 踩坑心得

  • 題目要求當輸入的半徑范圍超過(0,+∞)時輸出Wrong Format不輸出面積

錯誤輸出:

 正確輸出:

 心得:編程時要注意題目的要求,

改進建議

  • 建議1:可以在Circle類中增加getR的方法,在getS方法中用getR代替R,

期中考試 7-2 測驗2-類結構設計

設計與分析

  • idea生成類圖:

這個程式由3個類組成,分別是Point類、Rectangle類和Main類,

Point類中包含x、y、getY方法、getX方法、setX方法、setY方法和Point的構造方法,

Rectangle類中包含Point類物件lowerRightPoint和toLeftPoint、setLowerRightPoint方法、getLength方法、getToLeftPoint方法、setToLeftPoint方法、getLowerRightPoint方法、getHeight方法、getArea方法和Rectangle的構造方法,

期中考試 7-3 測驗3-繼承與多型

設計與分析

  • idea生成類圖:

這個程式由5個類組成,分別是Shape類、Circle類、Point類、Rectangle類和Main類,Shape類是Rectangle類和Circle類的父類,

Point類中包含x、y、getY方法、getX方法、setX方法、setY方法和Point的構造方法,

Rectangle類中包含Point類物件lowerRightPoint和toLeftPoint、setLowerRightPoint方法、getLength方法、getToLeftPoint方法、setToLeftPoint方法、getLowerRightPoint方法、getHeight方法、getArea方法和Rectangle的構造方法,

Ciecle類中包含r(半徑)、getS方法、setR方法和Circle的構造方法,

Shape類中包含getArea方法和Shape的構造方法,

 踩坑心得

  • 把我前兩題的代碼和第三題中提供的主方法不能順利地實作題目要求的功能,所以我為Circle的半徑賦初值為-1,若Circle的半徑最終的值為-1則輸出Wrong Format,

錯誤輸出:

 

 正確輸出:

 心得:為了實作功能可以使用一些不太合適的改動,

改進建議

  • 建議1:可以把錯誤輸出寫在Shape的getArea方法中,

期中考試 7-4 測驗4-抽象類與介面

設計與分析

  • idea生成類圖:

這個程式由5個類組成,分別是Shape類、Circle類、Point類、Rectangle類和Main類,Shape類是Rectangle類和Circle類的父類,

Point類中包含x、y、getY方法、getX方法、setX方法、setY方法和Point的構造方法,

Rectangle類中包含Point類物件lowerRightPoint和toLeftPoint、setLowerRightPoint方法、getLength方法、getToLeftPoint方法、setToLeftPoint方法、getLowerRightPoint方法、getHeight方法、getArea方法和Rectangle的構造方法,

Ciecle類中包含r(半徑)、getS方法、setR方法和Circle的構造方法,

Shape類中包含getArea方法和Shape的構造方法,Shape類實作了Comparable介面,方法為compareTo(Shape),

 踩坑心得

  • compareTo方法當傳入的Shape物件的area更大時輸出正值,更小時輸出負值是逆向排序,不符合要求,應該反過來,

錯誤輸出:

 正確輸出:

 心得:可以通過試錯來理解一些方法,

改進建議

  • 建議1:把compareTo方法改為固定輸出1或-1,

總結

  • 在6-9周的學習中我加深了對繼承關系的理解,掌握了部分正則運算式的用法,學會了介面的用法,學會了動態陣列的用法,
  • 正則運算式的用法、介面的用法以及類與類之間的關系的劃分我還需要更進一步地學習,
  • 課上講的一些東西我們不能立刻在作業中得以實踐,會導致我們在課上聽懂了,但是由于沒有課后習題的及時鞏固,最終忘記我們上課所學到的一些知識,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/552678.html

標籤:其他

上一篇:SpringBoot+MyBatis+MySQL電腦商城專案實戰(四)用戶注冊—控制層

下一篇:返回列表

標籤雲
其他(159182) Python(38148) JavaScript(25431) Java(18055) C(15228) 區塊鏈(8267) C#(7972) AI(7469) 爪哇(7425) MySQL(7191) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5871) 数组(5741) R(5409) Linux(5340) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4572) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2433) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1975) 功能(1967) Web開發(1951) HtmlCss(1938) python-3.x(1918) C++(1917) 弹簧靴(1913) xml(1889) PostgreSQL(1878) .NETCore(1861) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • 我的第二次博客作業

    AZ-1的第二次博客作業 AZ-1 - 博客園 (cnblogs.com) 前言 題量 題目集4題量較小。 題目集5題量較小。 期中考試題量中等。 難度 題目集4雖然只有一道題,但是題目很長,難度很大,讓人在看到的時就心生畏懼。選單4在選單3的基礎上增加了大量的錯誤輸入,大大增加了程式的代碼量,很考 ......

    uj5u.com 2023-05-18 07:43:49 more
  • SpringBoot+MyBatis+MySQL電腦商城專案實戰(四)用戶注冊—控制層

    5 注冊-控制層 5.1 創建回應 狀態碼、狀態碼描述資訊、資料。這部分功能封裝到一個類中,將這類作為方法回傳值,回傳給前端瀏覽器。 package com.cy.store.util; import java.io.Serializable; /** * Json格式的資料進行回應 */ publ ......

    uj5u.com 2023-05-18 07:43:19 more
  • ThreadLocal 的原理講述 + 基于ThreadLocal實作MVC中的M層的事務

    ThreadLocal 的原理講述 + 基于ThreadLocal實作MVC中的M層的事務控制 每博一文案 生活不是努力了就可以變好的,喜歡做的事情也不是輕易就可以做的。以前總聽別人說, 堅持就好了,努力就好了,都會好的,可是真的做起來壓根就不是這樣。這種時候要怎么辦? 這種時候還能輕易地相信時間嗎 ......

    uj5u.com 2023-05-18 07:42:13 more
  • 認識Java

    Java的產生和發展 產生與發展歷程 1991年,由Sun公司開發Oak,最初為家用消費電子產品進行編程,是Java前身。 1994年,使用Oak語言撰寫了Web瀏覽器 1995年,改名為Java,96年發布JDK1.1 … 1998年,發布JDK1.2,從語言發展為平臺 … 2004年,發布JDK ......

    uj5u.com 2023-05-18 07:41:35 more
  • 位段/位域 的使用

    在一些特定的應用場景中,需要對一個整數型別的變數中的每個位進行單獨的控制或訪問。例如,硬體暫存器常常包含一些特定的位用于表示設備的狀態、配置選項或標志位。使用位段區可以使程式員更方便地訪問和控制這些位,而無需進行位運算或掩碼操作。(類似于位尋址?) 位段區使用特定的語法來定義和操作位段。在C語言中, ......

    uj5u.com 2023-05-18 07:41:30 more
  • Java中列印物件輸出的字串到底是什么

    列印輸出的Java物件是一知半解的字串,那么這個字串是怎么來的?代表什么?我們如何列印出物件中的資料呢? ......

    uj5u.com 2023-05-18 07:41:27 more
  • python中set和frozenset方法和區別

    set(可變集合)與frozenset(不可變集合)的區別: set無序排序且不重復,是可變的,有add(),remove()等方法。既然是可變的,所以它不存在哈希值。基本功能包括關系測驗和消除重復元素. 集合物件還支持union(聯合), intersection(交集), difference( ......

    uj5u.com 2023-05-18 07:41:23 more
  • MVC 三層架構案例詳細講解

    MVC 三層架構案例詳細講解 @ 每博一文案 多讀書,書中有,你對生活,困難所解不開的答案 比如:《殺死一只是更鳥》中提到的 對應我們:我們努力中考,高考,升本,考研,每天都在努力學習,但是某天突然想到萬一沒有考上的話,那現在的努力又有什么意義呢? 答案:在《殺死一只是更鳥》里有這樣一段話: > 勇 ......

    uj5u.com 2023-05-18 07:40:57 more
  • Python從零到壹丨帶你了解影像直方圖理論知識和繪制實作

    摘要:本文將從OpenCV和Matplotlib兩個方面介紹如何繪制直方圖,這將為影像處理像素對比提供有效支撐。 本文分享自華為云社區《[Python從零到壹] 五十.影像增強及運算篇之影像直方圖理論知識和繪制實作》,作者:eastmount。 一.影像直方圖理論知識 灰度直方圖是灰度級的函式,描述 ......

    uj5u.com 2023-05-18 07:40:23 more
  • java設計模式【抽象工廠模式】

    java設計模式【抽象工廠模式】 抽象工廠模式 抽象工廠模式是對簡單工廠模式的一個變種,它允許通過一個統一的介面來創建不同的產品實體,而無需指定具體的子類。在這個模式中,我們只關心產品的抽象介面,而將具體的產品實作留給子類去實作。這樣,我們可以通過創建不同的工廠物件來創建不同的產品實體,而無需關心它 ......

    uj5u.com 2023-05-18 07:40:11 more