2014-03-05 98 views
1

因此,我正在爲我的CS162類做一個家庭作業,這需要我編寫一個程序,允許用戶輸入他們的大學課程計劃。用戶輸入他們已經採取,正在採取和/或計劃採取的課程,其類別爲:部門/班級編號,班級名稱,學期/年份,班級是否爲其專業所需,以及任何額外註釋。然後,該程序應該將這個信息存儲在外部數據文件中,以便這些類存儲並不會丟失。該程序應該能夠在內存中存儲多達60個類。在C++的外部文件中存儲結構數組

我知道如何創建結構數組,我知道外部文件背後的基礎知識,但我想我在組合這兩個時遇到了困難(我是一個新手,很抱歉,如果這真的很基礎!)

這是我到目前爲止有:

struct college_class 
{ 
    char dept_classnumber; 
    char class_name; 
    char term_year; 
    char is_required; 
    char comments; 
    char grade; 
} 

college_class[60] 

int main() 
{ 
    int n; 
    char again; 
    for(n=0;n<60;n++) 
    { 
     do 
     { 
      cout<<"Enter department and class number (e.g. CS162): "; 
      getline (cin,college_class[n].dept_classnumber); 
      cout<<"Enter class name (e.g. Intro to Computer Science): "; 
      getline (cin,college_class[n].class_name); 
      cout<<"Enter the term and year the class was/will be taken: "; 
      getline (cin, college_class[n],term_year; 
      cout<<"Enter whether or not this class is required for your major: "; 
      getline (cin,college_class[n],is_required); 
      cout<<"Enter any additional comments here: "; 
      getline (cin, college_class[n],comments); 
      cout<<"Would you like to enter another class?(y/n)"; 
      cin>>again; 
     } 
     while(again == 'y' || again == 'Y' && i<60) 
    } 

這是在獲取用戶輸入的條件朝着正確的方向?我的另一個問題是,如何將外部文件合併到此文件中,以便用戶輸入的所有內容都存儲在文件中?對不起,如果這有點含糊,我顯然不是在尋找我爲我做的功課 - 我只是想找一個方向從這裏開始。

我知道,寫在一個文本文件看起來像這樣,例如:

ofstream my file ("example"); 
if(myfile.is_open())) 
{ 
    myfile <<"blah blah blah. \n"; 
    myfile.close(); 
} 

...我只是不知道如何使這項工作對於結構的陣列。

+0

'struct class' this is valid?我從來沒有嘗試過,但我期望編譯器錯誤。在這裏輸入部門和班級號碼(例如「CS162」):「''''''''''''''''''''''''''''''''你應該在字符串中跳過那些引號,比如'」輸入部門和班級編號(例如\「CS162 \」)如何處理文件?然後展示你嘗試過的東西。 –

+0

@MariusBancila:[不,這不是](http://coliru.stacked-crooked.com/a/d12860e784b6f577)。 'class'是一個關鍵字,不能用作標識符。 –

+0

這就是我所說的...... :) –

回答

1

你的代碼有很多錯誤。 首先,你必須爲你的college_class數組創建一個變量。 例如:

college_class myCollegeClass[60] 

和使用要求輸入

getline (cin, myCollegeClass[n].term_year;) 

當你不小心用逗號某些線路出現,注意是

此外,焦炭只能容納一個字符,如果你想保存完整的類名,這將是不夠的,在你的結構中使用字符串。

struct college_class 
{ 
    string class_name; 
    ... 
} 

您使用了嵌套循環出現,這將重複你的問題60次,不管你說你不想輸入任何東西。

我建議

int i=0; 
char again = 'y'; 
while(again != 'n' && again != 'N' && i<60) 
{ 
    ... 
    i++ 
} 

至於該文件,你有你的投入,只是循環雖然你myCollegeClass陣列後的數據寫入到文件中。例如:

myfile << myCollegeClass[i].class_name; 
+0

謝謝!這正是我需要開始的。 – hhoward