四則運算問題的MFC移植

2022-09-08 18:48:06 字數 1400 閱讀 8562

這種實現了將上週所寫的兩個程式結合起來並利用mfc提供了圖形介面介面。本來這件事是沒有什麼太大的難點的,但是由於我最初的想法使得我設計了乙個相對比較複雜的ui,所以就憑空加了很多需要額外考慮的問題。所以最先講一下我的ui的設計思路吧。

圖形介面的設計圖如上所示。使用者能夠選擇生成算式的數量,使用者輸入相應數量後,需點選生成算式。在圖形介面中一次最多可以同時顯示5個算式,使用者可分別輸入對這5個算式的答案。若算式數量多於5個,使用者可以通過點選左右兩側的翻頁按鈕進行翻頁。當然,左右翻頁不會影響使用者之前輸入的結果的情況。使用者答案輸入結束後,點選提交結果,系統會自動評判每一道題的答案,對每一道題的評判結果會顯示在相應題目右側兩個edit control中。包括使用者答案的正誤,以及標準答案。同時系統還會統計整輪答題選手總共的正誤情況,並將結果顯示。

由於此次的實現中不涉及新的演算法的設計,所以只是寫相關的mfc控制項的**。所以其具體的細節就不在此贅述。我只在此談一下我在實現中遇到的一些需要考慮到的問題以及相應的解決方法。

由於在控制台程式版本中操作字元用的是char*,而在mfc中edit control中字元的操作都是cstring,所以需要進行轉化,解決的方法就是修改函式,將控制台版本中所有函式中操作char的步驟修改為對cstring的操作,cstring操作與string操作類似,修改過程比較順利。

在控制台版本中,每生成乙個表示式使用者就輸入乙個答案,然後立馬進行正誤判斷。這種情況下是不需要儲存表示式以及結果的,只需要在正確累加器或錯誤累加器上自加就可以了。而由於mfc版本的設計,我們必須要儲存歷史上曾生成的算式,以及使用者輸入的結果。所以對於此改動的解決方案就是增加乙個新的結構體陣列,用來儲存歷史出現過的算式,當使用者需要看到之前的算式時,點選翻頁按鈕就可檢視。該結構體的定義如下:

1

struct

problem

15 };

其中:prob為四則表示式,ans_usr_input為使用者輸入的答案(從edit control中直接讀取),usrans為使用者答案轉換成計算格式的結果(num為結構體,定義同控制台程式的定義),ans為標準答案,h**a_judge用來標記此道題是否已經被判過,judge為此題使用者的正確性。

我們定義乙個陣列來儲存所有生成的題目 problem pro[maxp][5];。

在整個的實現過程中還有很多其他瑣碎的小問題,解決的思路也比較好像,只是實現起來**上寫的比較多,在此我就不贅述了。總的來說這次的實現比較倉促,雖然功能實現了,但是魯棒性沒有考慮的很周全,現在仍有一些已知的bug沒有解決。同時,此版程式也不支援使用者限制題目是否加括號,是否支援乘除法等。改進的空間還是很大的。但是此版也在控制台版本上有了一些改進,首先是支援了圖形介面操作;其次能夠支援使用者回看已經做過的題目,如果對之前的答案不滿意還可以修改。

python四則運算程式 四則運算(Python)

四則運算程式 一 資訊 二.題目要求 寫乙個能自動生成小學四則運算題目的程式,然後在此基礎上擴充套件 除了整數以外,還要支援真分數的四則運算,例如 1 6 1 8 7 24 程式要求能處理使用者的輸入,判斷對錯,累積分數 程式支援可以由使用者自行選擇加 減 乘 除運算 三 import random...

java四則運算

public class arithmetic implements serializable 除法 param number1 除數 param number2 被除數 param decimal 保留幾位小數點 return public static double divide string ...

C 四則運算

一 問題及 檔名稱 兩個浮點數的四則運算 02.作 者 李欽 03.完成日期 2016 年 3 月 12 日 04.版 本 號 v1.0 05.對任務及求解方法的描述部分 06.輸入描述 07.問題描述 略 08.程式輸出 略 09.問題分析 略 10.演算法設計 略 11.includevoid ...