要求設計的管理系統能夠實現以下功能:
1.每一條記錄包括一個學生的學號、姓名、3個成績(平時成績、作業成績、考試成績)
2.成績錄入功能:(成績信息用文件保存,可以一次完成若干條記錄)
3.成績信息顯示瀏覽功能,完成全部學生記錄的顯示。
4.查詢功能:完成按姓名查找學生記錄,并顯示
5.成績信息的刪除:按學號進行刪除某學生的成績
6.排序功能:按學生總成績進行排序
1.首先,列出所需要的頭文件以及聲明所需要的函數,細心的同學會發現,就算是數字,也用了字符串,方便輸入以及存取信息。
2.下面可以直接寫主函數,也可以在聲明函數的時候,直接定義函數,在最后寫主函數。
效果圖如下:
主函數菜單包括了題目中的所需信息,在每個選項的函數里都加了mei()這個函數,這個函數只是為了有一個這樣的效果
這個就是為了每次進行一次操作之后,有一個進入成績管理系統的提示信息。
3.下面就是函數部分了,從第一個開始,添加學生,如果你在成績管理系統菜單選1,就會進入添加學生的界面,按照提示輸入對應的信息即可。在這個函數中,有學生數量的計數器,也有循環,直到在相應位置輸入n即可跳出循環。
4.按照學號刪除學生,這個需要寫好幾個函數,首先,提示用戶輸入想要刪除學生的學號,然后,根據學號與結構體數組想對比,找出來該學號所對應的結構體數組下標。再呈現出該學生信息,詢問用戶是否確認刪除,防止用戶誤刪信息。刪除信息也可以使用鏈表,對指針要求較高,后續會推出。
根據下面這個函數可以找到該學號對應的數組下標,從而可以輸出該下標對應的學生信息(Stu_display函數)
5.成績信息顯示瀏覽功能,完成全部學生記錄的顯示。在進行學生的添加以及刪除之后,這個時候,已經有了數據信息,就可以去顯示,顯示的方法很簡單,按照數組循環輸出各項信息即可。
6.查詢功能:完成按姓名查找學生記錄,并顯示。跟刪除學生類似,找出用戶輸入的名字信息,去對照數組中的name,如果相同就返回對應的數組下標。進行學生信息的顯示。
7.排序功能:按學生總成績進行排序,排序的方法很多,我在這就放一個最簡單的冒泡排序。共有九大排序方法,喜歡的話可以去研究一下,其他的方法都比冒泡要快的多。
8.下面就是文件操作了。寫兩個函數,一個寫入,一個讀出。如果第一次運行該程序,尚未創建你的文件,那么,在你的寫入函數中就應該考慮到這種情況,在沒有文件的時候,直接新建。以后再運行就可以直接讀取了。輸入學生信息,你可以按照菜單中的選項去執行輸入信息,也可以你在那個自己創建的txt中,按照剛才存下來的那種格式,直接寫,最后程序中,也是可以讀取你的信息的。
注意排序后的數據必須放到一個新的txt文件里。防止下次讀取的是排序后的文件。但是添加,刪除,你必須還存到第一個學生信息文件中(未排序)
一次輸入就存到文件里了,下次直接讀取就行,而且讀取根寫入是對應的,就不用考慮那么多細節了。
這樣說可能有點不清楚,直接上代碼吧。
首先,介紹幾個函數
(1)gets()
char*fgets(char*buf,intbufsize, FILE *stream);
*buf: 字符型指針,指向用來存儲所得數據的地址。
bufsize: 整型數據,指明存儲數據的大小。
*stream: 文件結構體指針,將要讀取的文件流。
返回值
成功,則返回第一個參數buf;
在讀字符時遇到end-of-file,則eof指示器被設置,如果還沒讀入任何字符就遇到這種情況,則buf保持原來的內容,返回NULL;
如果發生讀入錯誤,error指示器被設置,返回NULL,buf的值可能被改變。
(2)fread
size_tfread (void* ptr,size_tsize,size_tcount, FILE * stream );
其中,ptr:指向保存結果的指針;size:每個數據類型的大小;count:數據的個數;stream:文件指針
函數返回讀取數據的個數。
(3)fwrite
size_tfwrite (constvoid* ptr,size_tsize,size_tcount, FILE * stream );
其中,ptr:指向保存數據的指針;size:每個數據類型的大小;count:數據的個數;stream:文件指針
函數返回寫入數據的個數。
注意!!!
寫操作fwrite()后必須關閉流,不關閉流的情況下,每次讀或寫數據后,文件指針都會指向下一個待寫或者讀數據位置的指針。
(4)fopen()
fopen函數是在當前目錄下打開一個文件,其調用的一般形式為:
文件指針名=fopen(文件名,使用文件方式);
“文件指針名”必須是被說明為FILE 類型的指針變量;
“文件名”是被打開文件的文件名;
“使用文件方式”是指文件的類型和操作要求,可參考c prime plus 第十三章文件操作,此處不贅述。
“文件名”是字符串常量或字符數組。
另有:標準輸入文件(鍵盤),標準輸出文件(顯示器),標準出錯輸出(出錯信息)是由系統打開的,可直接使用。
讀取到文件的信息有數量和各項信息。這是已保存的文件,從文件中讀取出來的信息
排序后的文件依然按照上面的寫入函數一樣,只不過文件名需要改動一下(只需要改動文件名啊)
想要成為一個優秀的、有能力程序員,做軟件開發的話,就來學習C/C++吧,而且學習編程的話有一個學習的氛圍跟交流圈子特別重要!這里我推薦一個C語言C++交流扣裙,--先八七零九;后63251,不管你是大牛還是小白,大家都一起成長進步。
有同學會問,這樣就可以讀取了嗎?是的。注意開頭的主函數中調用寫入函數和讀出函數的地方,好好理解,并運用一下吧。比如說寫入函數,只要你在哪里調用,之前所有輸入的信息都會保存到文件里。讀取信息的時候,是按照結構體數組一個一個讀取,采用循環即可。