2017《面向对象程序设计》作业四
2017《面向對象程序設計》作業四
林燊 031602325?https://www.cnblogs.com/linshen/
github鏈接:https://github.com/Travaill/arithmetic.git
1.設計思路
2.程序功能
能對0--10之間的整數進行四則運算(加減乘除)
- 能實現選擇中文,英文,德語法語,日語五種語言
- 程序能接收用戶輸入的整數答案,并判斷對錯
程序結束時,統計出答對、答錯的題目數量
3.算法分析
- 類generate 實現隨機算式的生成
- 類calculate 計算算式的結果
- 類control 控制題目生成的數量 控制生成符合要求的算式 控制程序的退出 控制程序的語言
- 類printf 輸出算式、判斷結果、統計答題情況
4.代碼規范
- 函數的命名必須使用英文單詞,不使用拼音縮寫
- 函數的命名如果一個單詞的必須首字母大寫,如果多個單詞的用下劃線隔開
- 程序結構清析,簡單易懂,單個函數的程序行數不得超過100行。
- 要隨意定義全局變量,盡量使用局部變量。
- 函數的旁邊必須注釋上本函數的功能
- 禁止GOTO語句。
5.代碼展示
類"control"
bool Control::JudgeIfGet(char *language) //判斷路徑是否正確 {fstream file;stringstream ss;char filepath[200] = "";ss<<"Languagerc\\"<<language<<".txt";ss>>filepath;ss.str("");file.open(filepath,ios::in);if (file.is_open()){file.close();return true;} }void Control::GetResource(string *Resource,char *filepath) //讀取資源文件 {fstream File;stringstream ss; File.open(filepath,ios::in);int i,j;string Line;for (i=0;i<8;i++){getline(File,Line);swap(Line,Resource[i]);}File.close(); }main
char language[20];gets(language);while(!Control().JudgeIfGet(language)){cout<<"請輸入你所需要的語言的名稱:"<<endl;cout<<"Please enter a name for the language you need:"<<endl;cout<<"Bitte geben sie ihren namen: die erforderlichen Sprachen"<<endl;cout<<"Prie dans la langue dont vous avez besoin:"<<endl;cout<<"入力してください。あなたに必要な言葉の名稱:" <<endl; gets(language);}fstream file;stringstream ss;char filepath[200] = "";ss<<"Languagerc\\"<<language<<".txt";ss>>filepath;ss.str("");string Resource[30];Control().GetResource(Resource,filepath); Printf()._Printf(Resource);6.提交日志證明
7.程序測試
9.個人感受
此次的作業其實目的是讓我們學習C++對于文件操作,如下為個人覺得可以記錄的東西.
文件操作
頭文件 fstream: 可同時讀寫操作的文件類
打開文件(Open a file)
成員函數open():void open (const char * filename, openmode mode);
這里filename 是一個字符串,代表要打開的文件名,mode 是以下標志符的一個組合: ios::in 為輸入(讀)而打開文件?
ios::out 為輸出(寫)而打開文件?
ios::ate 初始位置:文件尾?
ios::app 所有輸出附加在文件末尾?
ios::trunc 如果文件已存在則先刪除該文件?
ios::binary 二進制方式
關閉文件(closing a file)
需要調用成員函數close(),它負責將緩存中的數據排放出來并關閉文件。
讀取文件中的字符
getline(istream &in, string &s)
從輸入流讀入一行到string s
?功能:
–從輸入流中讀入字符,存到string變量
–直到出現以下情況為止:
?讀入了文件結束標志
?讀到一個新行
?達到字符串的最大長度
–如果getline沒有讀入字符,將返回false,可用于判斷文件是否結束
檢驗文件是否打開
使用is_open()函數,如果打開成功返回1,失敗返回0
小技巧
因為getline如果沒有讀取到字符直接返回false,所以可以直接使用getline(istream &in, string &s)作為進入循環的條件.
我沒有應用strcpy來進行字符串的存儲,而是直接使用,swap(string sub,string str)來進行二者的交換變向進行存儲.
.ps
此次的作業,由于上次的作業基本由我一個人完成,所以這次作業我希望搭檔能夠完成更多的部分,但搭檔由于自身原因,沒有完成自己的部分,所以導致這次的作業不能及時上交,所以這次作業由我全部完成.
前期在尋找用rc文件來解決問題的時候用了大量的時間,走投無路,參考了趙暢同學的陳璟同學的方法,得知可以用txt文件來實現.
關于抄襲的現象,我個人認為學習計算機本來就是在借鑒別人的代碼算法中慢慢的把這些東西熟練的應用,同時在借鑒的同時需要帶有自己的思考,要把借鑒過來的東西變成自己的東西,借鑒完后,下次遇到同樣的東西能解決嗎?如果可以,那么就是一次成功的學習,如果不能就完全是一個毫無意義的復制黏貼.同時,在借鑒的時候你可以相出可以優化地方嗎?亦或是你能想出更好的辦法,我覺得各行各業都是這樣發展起來的.借鑒,掌握,創新,這才是學習的正確方法.
轉載于:https://www.cnblogs.com/linshen/p/6559461.html
總結
以上是生活随笔為你收集整理的2017《面向对象程序设计》作业四的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DX: 照相机
- 下一篇: POJ 3040 Allowance【贪