版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計任務(wù)書</b></p><p><b> 目 錄</b></p><p> 1 題目內(nèi)容及設(shè)計要求1</p><p><b> 2 總體設(shè)計1</b></p><p> 2.1 總體功能框圖1</p>&l
2、t;p> 2.2 類的設(shè)計說明1</p><p> 2.3 主要算法流程圖1</p><p> 3程序清單及注釋1</p><p> 4運行結(jié)果與分析1</p><p><b> 5總結(jié)2</b></p><p><b> 6參考文獻2</
3、b></p><p><b> 題目內(nèi)容及設(shè)計要求</b></p><p> 題目: 統(tǒng)計學(xué)生成績</p><p><b> 內(nèi)容及要求:</b></p><p> 要求編寫一個“Student”類及用來存取文件的save()和load()函數(shù),使用函數(shù)及運算符重載技術(shù)完成如下操
4、作:</p><p> ?。?)計算每個學(xué)生的平均成績,將數(shù)據(jù)存入文件stud.dat中并驗證是否正確地存入了文件。</p><p> ?。?)要求對“<<”和“>>”運算符進行重載。</p><p> ?。?)把學(xué)生姓名和平均成績抽取出來,建立一個簡明文件stud_mean.dat,并驗證是否正確地存入了。</p><p
5、> ?。?)從文件stud.dat按如下格式輸出大于等于平均成績的學(xué)生信息:</p><p> 學(xué)號 姓名 算術(shù) 語文 平均</p><p> ?。?)將兩門功課成績都不及格的學(xué)生信息從文件中刪除并另外存入文件bad.dat中。(6)編寫能檢索文件中某個學(xué)生信息的子程序。如無此學(xué)生,輸出“未查到”信息。(7)使用多文件編程和菜單操作。</p><
6、;p><b> 2 總體設(shè)計</b></p><p> 2.1 總體功能框圖</p><p> 圖2-1總體功能框圖</p><p> 2.2 類的設(shè)計說明 </p><p> 設(shè)計一個菜單,通過菜單選擇實現(xiàn)相應(yīng)的操作,對于輸入的原始信息,使用鏈表存儲它們,這樣做的好處是,可以隨時增加內(nèi)容,也容易將兩
7、門功課不及格的學(xué)生從文件中刪除。為學(xué)生設(shè)計一個類,單獨設(shè)計完成這個這個文件讀寫的成員函數(shù)。</p><p> 使用結(jié)構(gòu)數(shù)組作為學(xué)生信息簡表和兩門不及格的學(xué)生的存儲器,由它們和文件建立讀寫關(guān)系,需要顯示它們時,現(xiàn)將文件讀入內(nèi)存,然后再顯示。需要顯示輸出大于等于平均成績的學(xué)生信息時,則直接從內(nèi)存鏈表中篩選。當然,需要顯示原始信息時,也通過直接顯示鏈表信息的方法實現(xiàn)。這四種數(shù)據(jù)的顯示問題均通過一個成員函數(shù)來實現(xiàn)。&l
8、t;/p><p> 為了操作方便,原始數(shù)據(jù)可以單獨存取.修改和查詢。</p><p> 2.3 主要算法流程圖</p><p> 圖2-2 算法流程圖</p><p><b> 圖2-3算法流程圖</b></p><p><b> -</b></p>&
9、lt;p><b> 程序清單及注釋</b></p><p> Header Files</p><p><b> Cpp9.h</b></p><p> #if !defined(CPP9_H) </p><p> #define CPP9_H
10、 </p><p> #include <fstream.h> //對文件操作 文件輸入輸出</p><p> #include <stdlib.h> //標準庫頭文件 定義雜項函數(shù)及內(nèi)存分配函數(shù)</p><p> #includ
11、e <stdio.h> //定義輸入輸出函數(shù)</p><p> #include <string.h> //字符串處理</p><p> #include <iostream.h> //數(shù)據(jù)輸入輸出</p><
12、;p> #define ASK(p) { do {p = new Student; if (p == NULL) {cout << "memory fail!" << endl; exit(-1);}}while(0);}; //宏定義</p><p> static struct shorts {
13、 //靜態(tài)結(jié)構(gòu)體聲明 定義變量</p><p> char name[16];</p><p> double ave;</p><p> }sm[10]={{" ",0}}; //給靜態(tài)結(jié)構(gòu)體變量賦初值</p><p> stat
14、ic struct bads { // 靜態(tài)結(jié)構(gòu)體聲明 定義變量</p><p> char no[10]; //定義學(xué)生總數(shù)</p><p> char name[16]; //定義學(xué)生姓名</p><p>
15、int math; //定義數(shù)學(xué)成績</p><p> int chi; //定義語文成績</p><p> double ave; //定義平均成績</p><p> }bad[1
16、0]={{" "," ",0,0}}; //給靜態(tài)結(jié)構(gòu)體變量賦初值</p><p> class Student //定義一個學(xué)生類</p><p><b> {</b></p><p> pr
17、ivate: //定義私有成員</p><p> char no[10]; </p><p> char name[16];</p><p><b> int math;</b></p><p>
18、<b> int chi;</b></p><p> double ave;</p><p> Student *next; //定義對象指針</p><p> int menu_select(void); //聲明菜單選擇函數(shù)</p>
19、<p> public: //定義公有成員</p><p> static int count; //定義了一個靜態(tài)對象</p><p> Student(); //構(gòu)造函數(shù)的聲明</p>
20、<p> ~Student(); //析構(gòu)函數(shù)的聲明</p><p> Student *input(Student *); //輸入信息函數(shù)的聲明</p><p> void display(Student *); //顯示數(shù)據(jù)信息函數(shù)的聲明&l
21、t;/p><p> void save(Student *); //文件存儲操作函數(shù)的聲明</p><p> Student *load(Student *); //文件讀取操作函數(shù)的聲明</p><p> void handle_menu(Student *);
22、 //菜單處理函數(shù)的聲明</p><p> Student *delete_record(Student *); //刪除學(xué)生信息函數(shù)的聲明</p><p> void short_record(Student *); //建立簡明文件的聲明</p><p> Student *bad_record(St
23、udent *top); //建立不及格文件的聲明</p><p> void Student::find_record(Student *); //查詢學(xué)生信息文件的聲明</p><p> friend ostream &operator <<( ostream &os, Student &ob); //重載"
24、<<"運算符函數(shù)聲明</p><p> friend istream &operator >>( istream &is, Student &ob);//重載">>"運算符函數(shù)聲明</p><p><b> };</b></p><p><b&g
25、t; #endif</b></p><p> Source Files</p><p><b> Cpp9.cpp</b></p><p> #include "cpp9.h"</p><p> int Student::count=0;//聲明靜態(tài)成員記錄計數(shù)變量&
26、lt;/p><p> /***************************************</p><p><b> *構(gòu)造函數(shù)</b></p><p> ***************************************/</p><p> Student::Student()
27、 //定義構(gòu)造函數(shù)</p><p><b> {</b></p><p> next=NULL;</p><p> name[0]='0';</p><p> no[0]=' ';</p><p><b> math
28、=0;</b></p><p><b> chi=0;</b></p><p><b> ave=0.0;</b></p><p><b> }</b></p><p> /***************************************<
29、;/p><p><b> *析構(gòu)函數(shù)</b></p><p> ***************************************/</p><p> Student::~Student() //定義析構(gòu)函數(shù)</p><p><b> {</b
30、></p><p> if (next !=NULL)</p><p> delete next; </p><p> } //缺省析構(gòu)函數(shù)體為空</p><p> void main()
31、 //定義主函數(shù)</p><p><b> {</b></p><p> Student *top; //定義對象指針</p><p><b> ASK(top);</b></p><p> top->handl
32、e_menu(top);</p><p><b> }</b></p><p> /***********************************</p><p><b> *菜單處理函數(shù)</b></p><p> **********************************
33、*/</p><p> void Student::handle_menu(Student *top) //定義菜單處理函數(shù)</p><p><b> {</b></p><p> for ( ; ; ) //相當于while(1)語句(死循環(huán))</p>&
34、lt;p><b> {</b></p><p> switch(menu_select())</p><p><b> {</b></p><p><b> case 1:</b></p><p> top = input(top);
35、 //調(diào)用輸入信息函數(shù)</p><p><b> break;</b></p><p><b> case 2:</b></p><p> display(top); //調(diào)用顯示數(shù)據(jù)信息函數(shù)</p><p><b> break;<
36、/b></p><p><b> case 3:</b></p><p> save(top); //調(diào)用文件存儲操作函數(shù)</p><p><b> break;</b></p><p><b> case 4:</b><
37、;/p><p> top=load(top); //調(diào)用文件讀取操作函數(shù)</p><p><b> break;</b></p><p><b> case 5:</b></p><p> top=delete_record(top); //調(diào)用刪除
38、學(xué)生信息數(shù)據(jù)函數(shù)</p><p><b> break;</b></p><p><b> case 6:</b></p><p> short_record(top); //調(diào)用生成簡明文件函數(shù)</p><p><b> break;</b>&
39、lt;/p><p><b> case 7:</b></p><p> top=bad_record(top); //調(diào)用查詢學(xué)生信息函數(shù)</p><p><b> break;</b></p><p><b> case 8:</b></p&
40、gt;<p> find_record(top);</p><p><b> break;</b></p><p><b> case 9:</b></p><p> cout<<"\t退出操作,再見!"<<endl;</p><p>
41、; delete top;</p><p> return; //退出函數(shù)</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p
42、> /***********************************</p><p><b> *菜單選擇函數(shù)</b></p><p> ***********************************/</p><p> int Student::menu_select() //定義菜單選擇函數(shù)&
43、lt;/p><p><b> {</b></p><p> char s[2];</p><p><b> int cn=0;</b></p><p> cout<<'\n'</p><p> <<"\t1,增加原始記錄
44、\n"</p><p> <<"\t2,顯示各種文件\n"</p><p> <<"\t3,保存原始文件\n"</p><p> <<"\t4,讀取原始文件\n"</p><p> <<"\t5,刪除原始記
45、錄\n"</p><p> <<"\t6,建立簡明文件\n"</p><p> <<"\t7,均不及格文件\n"</p><p> <<"\t8,尋找原始記錄\n"</p><p> <<"\t9,結(jié)束程
46、序運行\(zhòng)n"</p><p> <<"\n\t左邊數(shù)字對應(yīng)功能選擇,請選擇1~9:"<<flush;</p><p> for( ; ; )</p><p><b> {</b></p><p> gets(s); //從鍵盤接受字符串
47、,并放入數(shù)組s中</p><p> cn=atoi(s);</p><p> if(cn<1||cn>9) cout<<"\n\t輸入錯誤,重選1- 9:"<<flush;</p><p> else break;</p><p><b> }</b>&l
48、t;/p><p> return cn; //退出函數(shù)</p><p><b> }</b></p><p> Save_load.cpp</p><p> #include "cpp9.h"</p><p> /*****************
49、**</p><p> * 文件存儲操作函數(shù)</p><p> *******************/</p><p> void Student::save(Student *top) //定義文件存儲操作函數(shù)</p><p><b> {</b></p><p
50、> if(top->name[0]=='0') //如果指針指向?qū)ο蟮膎ame等于0,那么就直接退出函數(shù)</p><p><b> {</b></p><p> cout<<"\t沒有記錄可存!"<<endl;</p><p> return;
51、 //退出函數(shù)</p><p><b> }</b></p><p> ofstream out; //建立輸出流對象</p><p> out.open("stud.dat",ios::out); //與stud.dat關(guān)聯(lián)并制
52、定以輸出方式打開</p><p> if (!out) //如果文件不能打開</p><p><b> {</b></p><p> cout<<"\t不能打開文件!"<<endl;</p><p> exit(1);
53、 //非正常退出</p><p><b> }</b></p><p> cout<<"\n\t存文件"<<endl;</p><p> out<<top->count<<'\n'; //重載"
54、<<"運算符</p><p> Student *p=top; //定義對象指針</p><p> while(p!=NULL) //當p不為空時</p><p><b> {</b></p><p> out<< *p;
55、 //重載"<<"運算符</p><p> p=p->next; //對象訪問成員</p><p><b> }</b></p><p> out.close(); //關(guān)閉文件</p><
56、;p> cout<<'\t'<<top->count<<"條記錄已經(jīng)存入文件,請繼續(xù)操作。"<<endl;</p><p><b> }</b></p><p> /*******************</p><p> * 文件讀取操作函
57、數(shù)</p><p> *******************/</p><p> Student *Student::load(Student *top) //定義文件讀取操作函數(shù)</p><p><b> {</b></p><p> ifstream in;
58、 //建立輸入流對象</p><p> in.open("stud.dat",ios::in|ios::nocreate);//與stud.dat關(guān)聯(lián)并制定以輸入方式打開/如果文件不存在,則打開文件失敗</p><p> if(!in) //如果打開文件失敗</p><p><b> {</
59、b></p><p> cout<<"\t文件不存在!"<<endl;</p><p> return top;</p><p><b> }</b></p><p> cout<<"\n\t取文件..."<<endl;
60、</p><p> in>>top->count;</p><p> in.ignore();</p><p> Student *p=top;</p><p> Student *old;</p><p> for(int i=0;i<top->count;i++)</p
61、><p><b> {</b></p><p><b> in>>*p;</b></p><p> ASK(p->next);</p><p><b> old=p;</b></p><p> p=p->next;</
62、p><p> in.ignore();</p><p><b> }</b></p><p> old->next=NULL;</p><p> in.close(); //關(guān)閉文件</p><p> cout<&
63、lt;"\t取入"<<top->count<<"條記錄."<<endl;</p><p> return(top); //退出函數(shù)</p><p><b> }</b></p><p> /***
64、****************</p><p> * 重載>>運算符函數(shù)</p><p> *******************/</p><p> istream & operator >>(istream &is,Student &ob) //重載">>"運算符函數(shù)聲明&l
65、t;/p><p><b> {</b></p><p> is.getline(ob.no,10,'\n'); //使其能夠讀入字符串中的空格</p><p> is.getline(ob.name,16,'\n'); //使其能夠讀入字符串中的空格</p><p> is&g
66、t;>ob.math;</p><p> is>>ob.chi;</p><p> is>>ob.ave;</p><p> return is; //退出函數(shù)</p><p><b> }</b></p><
67、;p> /*******************</p><p> * 重載<<運算符函數(shù)</p><p> *******************/</p><p> ostream & operator<<(ostream &os,Student &ob) //重載"<<&qu
68、ot;運算符函數(shù)聲明</p><p><b> {</b></p><p> os<<ob.no<<'\n';</p><p> os<<ob.name<<'\n';</p><p> os<<ob.math<<
69、;'\n';</p><p> os<<ob.chi<<'\n';</p><p> os<<ob.ave<<'\n';</p><p> return os; //退出函數(shù)</p><
70、p><b> }</b></p><p> Input_disp.cpp</p><p> #include"cpp9.h"</p><p> /******************</p><p><b> * 輸入信息函數(shù)</b></p><
71、;p> ******************/</p><p> Student *Student::input(Student *top) //定義輸入信息函數(shù)</p><p><b> {</b></p><p> ifstream in; //
72、建立輸入流對象</p><p> in.open("sname",ios::in|ios::nocreate); //與sname關(guān)聯(lián)并制定以輸入方式打開/如果文件不存在,則打開文件失敗</p><p> if(!in) //判斷是否已有文件</p><p><b> {</b>
73、</p><p> cout<<"\t還沒有建文件,退出時別忘記存文件。"<<endl;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
74、;<p> in.close(); //關(guān)閉文件</p><p> if(top->count==0) //如果指針指向?qū)ο蟮腸ount等于0,那么就直接退出函數(shù) </p><p><b> {</b></p><p> cout<&l
75、t;"\t請稍候,取已有文件..."<<endl;</p><p> top=load(top); //函數(shù)調(diào)用</p><p><b> }</b></p><p><b> }</b></p><p> St
76、udent *old,*star; //定義對象指針</p><p> ASK(star); //重新初始化</p><p> old=top; //對象指針訪問對象</p&g
77、t;<p> while(old->next!=NULL)</p><p><b> {</b></p><p> old=old->next;</p><p><b> }</b></p><p> cout<<"\t輸入數(shù)據(jù),輸入0時結(jié)束
78、。"<<endl;</p><p> --top->count;</p><p><b> do</b></p><p><b> {</b></p><p> ++top->count;</p><p> cout<<
79、"\t學(xué)號:"<<flush;</p><p> gets(star->no); //從鍵盤接受學(xué)號</p><p> if(strcmp(star->no,"0")==0) //比較字符串</p><p>&l
80、t;b> break;</b></p><p> cout<<"\t名字:"<<flush;</p><p> gets(star->name); //從鍵盤接受名字</p><p> cout<<"\t數(shù)學(xué):"
81、<<flush;</p><p> cin>>star->math; //輸入數(shù)學(xué)成績</p><p> cout<<"\t語文:"<<flush;</p><p> cin>>star->chi;
82、 //輸入語文成績</p><p> star->ave=(star->chi+star->math)/2; //計算平均成績</p><p> if(top->count==0) top=star;</p><p> old->next=star;</p>&l
83、t;p><b> old=star;</b></p><p> ASK(star);</p><p> }while(1);</p><p> old->next=NULL;</p><p> return(top); //
84、退出函數(shù)</p><p><b> }</b></p><p> /**********************</p><p> * 顯示數(shù)據(jù)信息的函數(shù)</p><p> **********************/</p><p> void Student::display(St
85、udent *top) //定義顯示數(shù)據(jù)信息函數(shù)</p><p><b> {</b></p><p> char choose[2];//,input[30];</p><p><b> int cn=0;</b></p><p> cout&l
86、t;<"\t選擇要看到的文件類型"<<endl;</p><p> cout<<"\t1.原文件"<<endl;</p><p> cout<<"\t2.簡明文件"<<endl;</p><p> cout<<"\
87、t3.均不及格文件"<<endl;</p><p> cout<<"\t4.輸出高于或等于平均成績的學(xué)生名單"<<flush;</p><p> cout<<"\t請選擇1-4:"<<flush;</p><p> gets(choose) ;
88、 //從鍵盤接受字符串</p><p><b> while(1)</b></p><p><b> {</b></p><p> cn=atoi(choose);</p><p> if(cn<1||cn>4)</p><p
89、><b> {</b></p><p> cout<<"\t輸入錯誤,重選1-4:"<<flush;</p><p> gets(choose); //從鍵盤接受字符串</p><p><b> }</b></p><p&
90、gt; else break;</p><p><b> }</b></p><p> switch(cn)</p><p><b> { </b></p><p> case 1: //顯示原始數(shù)據(jù)</p><p&g
91、t;<b> {</b></p><p> if(top->count==0)</p><p><b> {</b></p><p> cout<<"\n\t現(xiàn)在沒有記錄!"<<endl;</p><p><b> return;
92、</b></p><p><b> }</b></p><p> Student*p=top;</p><p> cout<<"\n\t現(xiàn)在共有如下"<<count<<"條記錄:\n";</p><p> cout<&l
93、t;"\t學(xué)號\t名字\t數(shù)學(xué)\t語文\t平均\n";</p><p> while(p!=NULL) //當p為非空時</p><p><b> {</b></p><p> cout<<'\t'<<p->no<<'\t
94、39;<<p->name<<'\t'</p><p> <<p->math<<'\t'<<p->chi<<'\t'<<p->ave<<'\n'; //輸出原始數(shù)據(jù)</p><p> p=p->nex
95、t;</p><p><b> }</b></p><p> cout<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p> case 2:
96、 //顯示簡明文件 </p><p><b> {</b></p><p> ifstream in; //建立輸入流對象</p><p> in.open("stud_mean.dat",ios::in|ios::no
97、create);//與stud_mean.dat關(guān)聯(lián)并制定以輸入方式打開/如果文件不存在,則打開文件失敗</p><p> if(!in) //判斷是否已有文件</p><p><b> {</b></p><p> cout<<"\t文件不存在!"<&
98、lt;endl;</p><p> return; //退出函數(shù) </p><p><b> }</b></p><p> cout<<"\n\t取文件..."<<endl;</p><
99、;p> in.read((char*)sm,sizeof sm);</p><p> in.close(); //關(guān)閉文件</p><p> cout<<"\t名字\t平均成績\n";</p><p> for(int i=0;i<10;i++)//,p=p->next
100、)</p><p><b> {</b></p><p> if(sm[i].ave==0) break;</p><p> cout<<'\t'<<sm[i].name<<'\t'<<sm[i].ave<<endl;</p><
101、;p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p><p> case 3: //顯示均不及格文件</p><p><b> {
102、</b></p><p> ifstream in; //建立輸入流對象 </p><p> in.open("bad.dat",ios::in|ios::nocreate);//與bad.dat關(guān)聯(lián)并制定以輸入方式打開/如果文件不存在,則打開文件失敗</p><p> if(!in
103、) //判斷是否已有文件</p><p><b> {</b></p><p> cout<<"\t文件不存在!"<<endl;</p><p> return; //退出函數(shù)</p&g
104、t;<p><b> }</b></p><p> cout<<"\n\t取文件..."<<endl;</p><p> in.read((char*)bad,sizeof bad); </p><p> in.close();
105、 //關(guān)閉文件</p><p> cout<<"\t學(xué)號\t名字\t數(shù)學(xué)\t語文\t平均\n";</p><p> for(int i=0;i<10;i++)</p><p><b> {</b></p><p> if(bad[i].ave==0) break;</
106、p><p> cout<<'\t'<<bad[i].no<<'\t'<<bad[i].name</p><p> <<'\t'<<bad[i].math<<'\t'<<bad[i].chi</p><p>
107、 <<'\t'<<bad[i].ave<<endl; //輸出簡明文件</p><p><b> }</b></p><p><b> break;</b></p><p><b> }</b></p>&l
108、t;p> case 4: //顯示高于或等于平均分的學(xué)生信息</p><p><b> {</b></p><p> if(top->count==0)</p><p><b> {</b></p><p> cout<<"
109、;\n\t現(xiàn)在沒有記錄!"<<endl;</p><p> return; //退出函數(shù)</p><p><b> }</b></p><p> Student *p=top; //定義對象指針訪問對象<
110、/p><p> cout<<"\n\t現(xiàn)在共有如下"<<count<<"條記錄:\n"; //計算平均成績</p><p> int num=0;</p><p> double mean=0;</p><p> while(p!=NULL)
111、 //當p為非空時</p><p><b> {</b></p><p> ++num; //記載符合條件的學(xué)生人數(shù)</p><p> mean+=p->ave; //計算平均分之和</p><p> p=p->next;</p>
112、<p><b> }</b></p><p> mean=mean/num; //計算全部學(xué)生的平均分</p><p> cout<<"\t平均成績?yōu)?"<<mean<<"分"<<endl;</p><p> cout<
113、;<"\t其中高于或等于平均成績的學(xué)生信息如下:\n";</p><p> cout<<"\t學(xué)號\t名字\t數(shù)學(xué)\t語文\t平均\n";</p><p><b> p=top;</b></p><p> while(p!=NULL) //當p為非
114、空時</p><p><b> {</b></p><p> if(p->ave>=mean)</p><p><b> {</b></p><p> cout<<'\t'<<p->no<<'\t'<
115、<p->name<<'\t'</p><p> <<p->math<<'\t'<<p->chi<<'\t'<<p->ave<<'\n';//輸出高于或等于平均分的學(xué)生信息</p><p><b> }
116、</b></p><p> p=p->next;</p><p><b> }</b></p><p> cout<<endl;</p><p><b> break;</b></p><p><b> }</b>
117、</p><p><b> }</b></p><p><b> }</b></p><p> Short_record.cpp</p><p> #include "cpp9.h" </p><p> /***************
118、****</p><p> * 生成簡明函數(shù)文件</p><p> ********************/</p><p> void Student::short_record(Student *top) //定義簡明文件函數(shù)</p><p><b> {</b></p>&l
119、t;p> Student *p;</p><p><b> p=top;</b></p><p> if(p->count==0)</p><p><b> {</b></p><p> cout<<"\t內(nèi)存中沒有可用記錄"<<en
120、dl;</p><p><b> return;</b></p><p><b> }</b></p><p> for(int i=0;i<p->count;i++,p=p->next)</p><p><b> {</b></p>&
121、lt;p> strcpy(sm[i].name,p->name);</p><p> sm[i].ave=p->ave;</p><p><b> }</b></p><p> ofstream out; //建立輸出流對象</p><p&g
122、t; out.open("stud_mean.dat",ios::out);</p><p> if(!out) //如果文件不能打開</p><p><b> {</b></p><p> cout<<"\t不能打開文件!&
123、quot;<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> cout<<"\n\t存文件"<<endl;</p><p> out.write((char *)sm
124、,sizeof sm);</p><p> out.close(); // 打開文件</p><p> cout<<'\t'<<top->count<<"條記錄已經(jīng)存入文件,內(nèi)容如下:"<<endl;</p><p&
125、gt; cout<<"\t名字\t平均成績\n";</p><p> for(i=0;i<p->count;i++)</p><p> cout<<"\t"<<sm[i].name<<"\t"<<sm[i].ave<<endl;</p&
126、gt;<p><b> }</b></p><p><b> Bad.cpp</b></p><p> #include"cpp9.h" </p><p> /*********************************</p><p> * 生
127、成均不及格的學(xué)生文件的處理函數(shù)</p><p> **********************************/</p><p> Student *Student::bad_record(Student *top) //定義均不及格的學(xué)生文件處理函數(shù)</p><p><b> {</b></p><p&g
128、t;<b> int cb=0;</b></p><p> Student *old,*star;</p><p> old=star=top;</p><p> if(top->count==0)</p><p><b> {</b></p><p> c
129、out<<"\t內(nèi)存中沒有可用記錄"<<endl;</p><p> return top;</p><p><b> }</b></p><p> for (int i=0;star!=NULL;i++)</p><p><b> {</b>&
130、lt;/p><p> //取出均不及格學(xué)生的信息</p><p> if((star->math<60)&&(star->chi<60))</p><p><b> {</b></p><p> strcpy(bad[cb].no,star->no);</p>
131、<p> strcpy(bad[cb].name,star->name);</p><p> bad[cb].math=star->math;</p><p> bad[cb].chi=star->chi;</p><p> bad[cb].ave=star->ave;</p><p> if(
132、top==star) top=star->next;</p><p> else old->next=star->next;</p><p> star=star->next;</p><p><b> ++cb;</b></p><p><b> --count;</b&
133、gt;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> old=star;</b></p><p> star=star-&
134、gt;next;</p><p><b> }</b></p><p><b> }</b></p><p> cout<<"\n\t兩科均不及格的學(xué)生信息如下:"<<endl;</p><p> cout<<"\t學(xué)號\t名
135、字\t數(shù)學(xué)\t語文\t平均\n"; //輸出兩科均不及格的學(xué)生信息</p><p> for( i=0;i<cb;i++)</p><p><b> {</b></p><p> if(bad[i].ave==0) break;</p><p> cout<<
136、9;\t'<<bad[i].no<<'\t'<<bad[i].name<<'\t'</p><p> <<bad[i].math<<'\t'<<bad[i].chi<<'\t'<<bad[i].ave<<endl;<
137、/p><p><b> }</b></p><p><b> //存入文件</b></p><p> ofstream out; //建立輸出流對象</p><p> out.open("bad.dat",ios::out)
138、;</p><p> if(!out) //如果文件不能打開</p><p><b> {</b></p><p> cout<<"\t不能打開文件!"<<endl;</p><p> return top;<
139、/p><p><b> }</b></p><p> out.write((char *)bad,sizeof bad);</p><p> out.close(); //打開文件</p><p> cout<<"\n\t文件存儲成功&
140、quot;<<endl;</p><p> if(count==0) //說明鏈表已空,需要重新初始化</p><p><b> {</b></p><p> ASK(top); //重新初始化</p><p> cout<<&q
141、uot;\t原文件在內(nèi)存中的記錄已經(jīng)刪空"<<endl;</p><p><b> }</b></p><p> return top;</p><p><b> }</b></p><p><b> Find.cpp</b></p>
142、<p> #include "cpp9.h"</p><p> /********************** </p><p><b> 查找學(xué)生信息函數(shù)</b></p><p> ***********************/</p><p> void Student:
143、:find_record(Student *top) //定義查找學(xué)生信息函數(shù)</p><p><b> {</b></p><p> char choose[2],input[30];</p><p> int cn=0;</p><p> cout<<"\t1.通過學(xué)號尋找&qu
144、ot;<<endl; </p><p> cout<<"\t2.通過名字尋找"<<endl;</p><p> cout<<"\t請選擇1-2:"<<flush;</p><p> gets(choose);
145、 //從鍵盤接受字符串</p><p><b> while(1)</b></p><p><b> {</b></p><p> cn=atoi(choose);</p><p> if(cn!=1&&cn!=2)</p><p>
146、;<b> {</b></p><p> cout<<"\t輸入錯誤,重選1-2:"<<flush;</p><p> gets(choose); //從鍵盤接受字符串</p><p><b> }</b></p><p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計-學(xué)生成績統(tǒng)計管理
- c++語言課程設(shè)計 ----學(xué)生成績統(tǒng)計
- rsa實現(xiàn)課程設(shè)計--學(xué)生成績的統(tǒng)計
- c語言課程設(shè)計學(xué)生成績統(tǒng)計設(shè)計報告
- c語言課程設(shè)計報告-- 學(xué)生成績統(tǒng)計系統(tǒng)
- 學(xué)生成績管理---課程設(shè)計
- 學(xué)生成績課程設(shè)計報告
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 課程設(shè)計——學(xué)生成績管理系統(tǒng)
- 課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理匯編課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理課程設(shè)計
- 學(xué)生成績管理課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 匯編課程設(shè)計---學(xué)生成績管理
- 學(xué)生成績管理系統(tǒng) 課程設(shè)計
- 課程設(shè)計--學(xué)生成績管理系統(tǒng)
評論
0/150
提交評論