2015-02-08 53 views
0

在網上搜索了近3天后,我決定在這裏發帖,因爲我似乎無法親自找到它。我在Visual Basic中的技能非常有限,但我正在學習。xml,my.settings?走哪條路?

我的目標是編寫一個能夠分析孩子在高中進行測試的程序。我在VBA中完成了第一個版本,效果很好,但是我想創建一些不依賴於Excel的東西,因此我正在開發.NET版本。

我看到它的方式我需要先完整指定一個測試。年份,級別,問題數量,每個問題的最高分數以及指定哪些問題屬於哪些章節/技能的方法。 (例如,對於我的物理課而言,這些章節可能是電力/力量/壓力,技能可能是複製/洞察/使用公式等。用戶應該可以自由指定這些,然後選擇屬於電力,力量等的問題)

之後,必須有可能添加一個班級來對每個學生的每個問題進行評分。必須有可能爲一個測試添加更多的類,因爲碰巧幾個類進行了相同的測試。我可以通過xml導入這些類,因爲它們可以從我們學校的數據庫中生成。

讀出這一切仍然是在遙遠的未來......

到目前爲止,我有其中有一些組合框,一些radiobuttens,一個文本框,並在運行時產生的文本框/複選框的形式。

我需要能夠保存用戶放置的設置,因爲它們將定義測試的所有參數。這是令我困擾的這個節省部分。我懷疑要走哪條路。

我看到有些人使用my.settings方式並以這種方式保存設置。這似乎是一個不錯的選擇,但我將不得不研究一下如何使用動態生成的文本框和複選框來實現這一點。

另一方面,我一直在試驗保存一切到一個.xml文件。我不知道.xml文件格式是否適用於這類事情,它必須包含分數表,控制值等。如果可以在一個xml文件中包含所需的所有內容(測試參數並且無論用戶希望添加多少類別的測試結果),那將是驚人的。另一方面,my.settings似乎是一種更簡單的方法來保存設置,但是我必須要解決一個單獨的.xml文件,其中包含用戶必須加載到程序中的所有分數數據。我希望這一切都是有道理的......

有沒有人可以給我的任何形式的建議?沒有真正問過如何對所有這些進行編碼,只是苦苦思索如何實現應用程序的保存和加載功能。如果我可以得到它(保存並加載用戶輸入),它會啓動我,但我害怕開始錯誤的方式。

感謝:-)

編輯:

多一點光在我想要實現:

孩子們在紙上測試。

*教師將程序的名稱放入程序中。

*老師把問題的數量放到程序中。*教師將測試包含在哪些章節中,以及哪些技能(例如「力量」或「二戰」,技能可能是「語法」或「使用公式」)。這些技能和章節被輸入到文本框並輸出到標籤。

*老師把每個問題的最高分。

*程序在每個標籤後面都會生成一個帶有複選框的行。複選框的數量對應於問題的數量。

輸出可能是這樣的一個測試用9個問題

部隊□□□□□□□□□

壓力□□□□□□□□□

等。 (文本框甚至可能在表中生成......可能更容易檢索:-)

*教師選擇屬於其前面標籤類別問題的複選框。

完成此操作後,測試配置完成。這意味着控制值必須保存。這裏我面臨的挑戰是加載值,因爲幾乎所有的複選框都是在運行時創建的。

老師的下一步是將一個類加載到程序中。這些類以xml格式提供,我可以將它們導入到datagridview中,以便爲每個問題的每個學生輸入點數。

應該可以保存類結果,事實上,將它們全部添加到測試配置文件中似乎更方便,但將它們作爲單獨文件存放在文件夾中似乎更方便。該程序可以在用戶不知道的情況下生成該文件夾。我已經添加類選擇的列表框會很好。

然後讀出所有這些應該是一個圖。首先,老師選擇課程,然後從下拉菜單中選擇學生。最終的結果應該是一張圖表,用百分比表示孩子在第一步中對老師指定的每個類別所做的事情。

我有這個在VBA中工作的整個事情,它看起來很漂亮。我發現它的編程非常有趣,所以我決定嘗試一下.NET版本:-)

回答

1

因爲這是一個非常開放的問題,我不確定你是否可以使用我的答案。但我願意試一試。

首先My.Settings是一個VB選項,它不適用於C#。因此,如果您想將您的解決方案移植到C#,這會讓事情變得困難。其次My.Settings只是一個簡單的過載與App.Config文件。正如你可能已經理解的,My.Settings是用來配置你的應用程序的。你所要求的並不是真正的配置,儘管動態文本框處於灰色區域。

儘管如此,我的直覺告訴我My.Settings不是要走的路。

文件格式(xml,json,text,binary,database,whatever)實際上並不那麼有趣。我認爲設計更重要。

如果我理解正確,你有一個測試學生的動態設置。雖然測試框架對於各種問題都是一樣的?!也就是說,針對多個問題進行的測試的答案是預定義的。 但並不是所有的(類型)的測試將在一個單一的去裝,別說了,所有的學生都將被單一測試期間加載?因此,將所有這些信息存儲在單個文件中對我來說聽起來很奇怪。 採取頭腦會發生什麼,如果應用程序將成長,你將有一個單一的文件:這將是真正的問題(而且有很多!): - 你失去了一個文件! - 一個單獨的文件會得到腐敗 - 單個文件將增長到大小時,它會需要幾分鐘來加載 - 多用戶保存(或裝載)在同一時間的信息。你會如何防止這一點,甚至更具挑戰性的控制呢?

我會設計圍繞着一堆SOLID類的應用程序(poco對象):

  • 類定義測試(從這個你可以生成輸入表單)
  • 一個類中定義一個問題(參考試驗)
  • 一類定義的類
  • 一個類定義學生(引用類類:-)
  • 甲CLA ss定義每個問題的結果(通過引用學生和問題)

使用此設置,您可以簡單地將類序列化爲您選擇的文件格式並以結合的方式存儲它們。您可能不得不考慮命名約定和/或目錄結構。你讓用戶無法打開這些文件本身,通過Windows資源管理器或東西,但讓你的應用程序的use case決定需要加載的文件。

我更喜歡使用json,因爲它使用起來非常簡單,特別是在使用NewtonSoft json serializer時,您可以從NuGet中將它解壓到您的解決方案中。

打字畢竟,我認爲當你描述你應該直接通過使用數據庫開始你的目標是一樣大。與Entity Framework Code FirstSQL local db這很容易做到。它將爲您提供查詢的所有好處,並且在應用程序變得龐大時很容易移植到SQL服務器。

+0

嗨裏克,這個答案是超過我能有希望的。我會堅決檢查你的建議並閱讀鏈接。感謝那!我編輯了我的OP,因爲我認爲如果你有興趣閱讀它,這個想法還不完全清楚。再次感謝:-) – 2015-02-09 17:40:42

+0

我閱讀你的編輯。聽起來像一個很好的設計。儘管如此,它並沒有改變我的答案。我認爲你真的應該使用數據庫,因爲文件只是文件。特別是您的圖形需求需要查詢,使用數據庫要容易得多。 – 2015-02-10 13:37:10

+0

如果你喜歡我的回答,你可以隨時接受它和/或upvote :-) – 2015-02-10 13:37:53