版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)</p><p> 09計(jì)應(yīng)1 09821122 謝燕清</p><p> 課題設(shè)計(jì)內(nèi)容、具備的功能 </p><p><b> ?。ㄒ唬┰O(shè)計(jì)內(nèi)容 </b></p><p><b> 1.性質(zhì)</b></p><
2、p> 本課程是學(xué)生在學(xué)習(xí)完《程序設(shè)計(jì)基礎(chǔ)》、《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程后,為提高學(xué)生使用面向?qū)ο蟮恼Z言解決實(shí)際問題的能力設(shè)置的一門實(shí)踐性課程,是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)計(jì)算機(jī)應(yīng)用方向的必修課。</p><p><b> 2.目的 </b></p><p> 本課程實(shí)驗(yàn)教學(xué)的目的是:</p><p> 使學(xué)生通過實(shí)踐環(huán)節(jié)深入理解和掌握課堂
3、教學(xué)內(nèi)容,進(jìn)一步加深理解面向?qū)ο蟮幕纠碚?,掌握基本方法、基本技術(shù)。</p><p> 通過設(shè)計(jì)一個(gè)功能比較完整的,有實(shí)際應(yīng)用價(jià)值的應(yīng)用軟件,使學(xué)生了解采用面向?qū)ο蠹夹g(shù)開發(fā)軟件的全部過程,掌握采用面向?qū)ο蠹夹g(shù)開發(fā)軟件的方法。提高學(xué)生使用面向?qū)ο蠓椒?,和面向?qū)ο蟮恼Z言解決實(shí)際問題的能力。</p><p> 通過本課程設(shè)計(jì),為后續(xù)《數(shù)據(jù)庫系統(tǒng)原理與應(yīng)用》《數(shù)據(jù)結(jié)構(gòu)》《編譯原理》等課程打下扎
4、實(shí)的專業(yè)基礎(chǔ)。</p><p><b> 3.任務(wù)</b></p><p> 學(xué)生成績(jī)管理系統(tǒng),系統(tǒng)存儲(chǔ)以下信息:</p><p> 1) 學(xué)生基本信息和成績(jī);</p><p><b> 2) 學(xué)生的人數(shù)。</b></p><p><b> 4.要求<
5、;/b></p><p> 1) 根據(jù)題目要求,對(duì)問題進(jìn)行需求調(diào)查和分析,識(shí)別類和對(duì)象,合理設(shè)計(jì)類和對(duì)象;</p><p> 2) 合理設(shè)計(jì)程序結(jié)構(gòu),系統(tǒng)各項(xiàng)功能要求在函數(shù)中實(shí)現(xiàn)。在主函數(shù)中設(shè)計(jì)菜單,通過菜單調(diào)用這個(gè)函數(shù);</p><p> 3) 輸入輸出要求由提取運(yùn)算符和插入運(yùn)算符的重載函數(shù)實(shí)現(xiàn);公用過程盡可能設(shè)計(jì)成函數(shù)或函數(shù)模板;</p>
6、<p> 4) 設(shè)計(jì)過程中必須考慮程序的健壯性,在關(guān)鍵的地方必須要有容錯(cuò)處理。</p><p><b> ?。ǘ┚邆涞墓δ?lt;/b></p><p><b> 系統(tǒng)功能:</b></p><p> 1.系統(tǒng)初始化 包括上述文件的創(chuàng)建和讀?。ǘM(jìn)制或ASCII文件);</p><p&
7、gt; 2.增加學(xué)生 新增加學(xué)生信息和成績(jī);</p><p> 3.刪除學(xué)生 根據(jù)學(xué)號(hào)刪除相應(yīng)學(xué)生信息;</p><p> 4查詢 根據(jù)學(xué)號(hào),查詢相應(yīng)學(xué)生信息;</p><p> 5.排序 根據(jù)學(xué)生學(xué)號(hào)、姓名、成績(jī)對(duì)學(xué)生信息排序,并顯示;</p><p> 6.修改 修改指定學(xué)號(hào)
8、的學(xué)生數(shù)據(jù)。</p><p> 模塊(函數(shù))的劃分、各模塊(函數(shù))的功能、采用的自定義的數(shù)據(jù)類型</p><p><b> 模塊(函數(shù))的劃分</b></p><p> 1.類的定義:student.h</p><p> 1) 定義抽象類person</p><p> protected
9、: </p><p> int ID; //學(xué)號(hào)</p><p> char Name[10]; //姓名</p><p><b> publ
10、ic:</b></p><p> virtual bool operator<(Person &)=0; //>運(yùn)算符重載</p><p> virtual bool operator>=(Person &)=0; //<=運(yùn)算符重載</p><p>
11、 2) 定義派生數(shù)據(jù)類student,基類為person類。</p><p><b> Private:</b></p><p> int Score[4]; //成績(jī)</p><p> void SwapData(Student *);
12、 //交換數(shù)據(jù)</p><p><b> public:</b></p><p> Student(int =0,char* =NULL,int* =NULL); //構(gòu)造函數(shù)</p><p> bool operator<(Person &); //>運(yùn)算
13、符重載</p><p> bool operator>=(Person &); //<=運(yùn)算符重載</p><p> friend ofstream& operator<<(ofstream&,Student*); //<<運(yùn)算符重載輸出到文件</p><p>
14、 friend ifstream& operator>>(ifstream&,Student*); //>>運(yùn)算符重載從文件輸入</p><p> friend ostream_withassign& operator<<(ostream_withassign&,Student*);//<<運(yùn)</p><p>
15、; 算符重載輸出到顯示器</p><p> friend istream_withassign& operator>>(istream_withassign&,Student*);//>>運(yùn)算</p><p><b> 符重載從鍵盤輸入</b></p><p> friend class List
16、; //List為友元類</p><p> 3) 定義設(shè)計(jì)結(jié)點(diǎn)類Node</p><p><b> private: </b></p><p> Student *Stup; //指向?qū)W生對(duì)象指針</p><
17、p> Node *Prev,*Next; //指向前后結(jié)點(diǎn)指針</p><p><b> public:</b></p><p> Node(); //構(gòu)造函數(shù)</p><p> Node(Student *);
18、 //構(gòu)造函數(shù)</p><p> Node(Node &); //復(fù)制構(gòu)造函數(shù)</p><p> ~Node(); //析構(gòu)函數(shù)</p><p> friend class List;
19、 //List為友元類</p><p> 4)定義帶有頭結(jié)點(diǎn)鏈表類List,私有數(shù)據(jù)成員為Node *Head,*Tail分別,指向鏈表頭尾:</p><p><b> private:</b></p><p> void InitList(); //
20、初始化函數(shù)</p><p><b> public:</b></p><p> List(); //構(gòu)造函數(shù)</p><p> ~List(); //析構(gòu)函數(shù)</p><p> void
21、ClearList(); //清空鏈表</p><p> Node *FindID(int &); //根據(jù)學(xué)號(hào)尋找學(xué)生所在結(jié)點(diǎn)</p><p> void Insert(Node *); //插入一個(gè)學(xué)生</p><p> No
22、de *CreateNode(Student *); //建立一個(gè)學(xué)生結(jié)點(diǎn)</p><p> void Add(); //增加一個(gè)學(xué)生</p><p> void Update(); //修改學(xué)生成績(jī)</p><p> void Dele
23、te(); //刪除一個(gè)學(xué)生</p><p> void Query(); //查找一個(gè)學(xué)生</p><p> void SortID(); //按學(xué)號(hào)排序</p><p> void SortScore();
24、 //按學(xué)生總成績(jī)排序</p><p> void SaveBin(); //以二進(jìn)制形式保存數(shù)據(jù)</p><p> void PrintList(); //顯示鏈表</p><p> void PrintTitle();
25、 //顯示標(biāo)題</p><p> void PrintOne(Student *); //顯示一個(gè)學(xué)生數(shù)據(jù)</p><p> 2.student類的實(shí)現(xiàn):student.cpp</p><p> 3.node類的實(shí)現(xiàn):node.cpp</p><p> 4.list類的實(shí)
26、現(xiàn):list.cpp</p><p> 5.主函數(shù):main.cpp</p><p> 各模塊(函數(shù))的功能</p><p> 1.實(shí)現(xiàn)類和函數(shù)聲明;</p><p> 2.實(shí)現(xiàn)派生類student的各函數(shù);</p><p> 3.實(shí)現(xiàn)結(jié)點(diǎn)類Node的各函數(shù);</p><p> 4.
27、實(shí)現(xiàn)結(jié)點(diǎn)類List的各函數(shù)。程序結(jié)束運(yùn)行前,調(diào)用SaveBin()函數(shù)以二進(jìn)制形式保存學(xué)生數(shù)據(jù)到文件student.dat中;</p><p> 5. 設(shè)計(jì)主函數(shù)。主函數(shù)中顯示功能菜單,通過菜單調(diào)用類的成員函數(shù)實(shí)現(xiàn)系統(tǒng)各項(xiàng)功能。</p><p> 采用自定義的數(shù)據(jù)類型</p><p> 自定義的數(shù)據(jù)類型:student.h</p><p&g
28、t; #ifndef STUDATA_H</p><p> #define STUDATA_H</p><p> #include<fstream.h></p><p> int GetID();</p><p> class List;</p><p> class Person{
29、 //抽象類</p><p> protected:</p><p><b> int ID;</b></p><p> char Name[10];</p><p><b> public:</b></p><p>
30、virtual bool operator<(Person &)=0;</p><p> virtual bool operator>=(Person &)=0;</p><p><b> };</b></p><p> class Student:public Person{</p><p
31、> int Score[4];</p><p> void SwapData(Student *);</p><p><b> public:</b></p><p> Student(int =0,char* =NULL,int* =NULL);</p><p> bool operator<(P
32、erson &);</p><p> bool operator>=(Person &);</p><p> friend ofstream& operator<<(ofstream&,Student*);</p><p> friend ifstream& operator>>(ifstr
33、eam&,Student*);</p><p> friend ostream_withassign& operator<<(ostream_withassign&,Student*);</p><p> friend istream_withassign& operator>>(istream_withassign&,S
34、tudent*);</p><p> friend class List;</p><p><b> };</b></p><p> class Node{</p><p> Student *Stup;</p><p> Node *Prev,*Next;</p><
35、;p><b> public:</b></p><p><b> Node();</b></p><p> Node(Student *);</p><p> Node(Node &);</p><p><b> ~Node();</b></p&g
36、t;<p> friend class List;</p><p><b> };</b></p><p> class List{</p><p> Node *Head,*Tail;</p><p> void InitList();</p><p><b>
37、 public:</b></p><p><b> List();</b></p><p><b> ~List();</b></p><p> void ClearList();</p><p> Node *FindID(int &);</p><
38、;p> void Insert(Node *);</p><p> Node *CreateNode(Student *);</p><p> void Add();</p><p> void Update();</p><p> void Delete();</p><p> void Query
39、();</p><p> void SortID();</p><p> void SortScore();</p><p> void SaveBin();</p><p> void PrintList();</p><p> void PrintTitle();</p><p>
40、 void PrintOne(Student *);</p><p><b> };</b></p><p><b> #endif</b></p><p><b> 程序運(yùn)行流程圖</b></p><p> 注:在主函數(shù)中,輸入選項(xiàng),判斷是否等于END,如等于END
41、則保存數(shù)據(jù);如不等于則實(shí)行switch中增加學(xué)生、修改成績(jī)、刪除學(xué)生、查詢數(shù)據(jù)、顯示數(shù)據(jù)、按學(xué)號(hào)排序、按總成績(jī)排序。</p><p> 注:增加學(xué)生,判斷學(xué)號(hào)是否有相同,有相同是拋出異常,無相同則繼續(xù)增加,并顯示鏈表、保存數(shù)據(jù)。</p><p> 注:運(yùn)行程序,先實(shí)現(xiàn)鏈表數(shù)據(jù),再按執(zhí)行。</p><p> 修改成績(jī):輸入學(xué)號(hào),判斷是否存在,存在則對(duì)該學(xué)生的成績(jī)
42、進(jìn)行修改;不存在則拋出異常。</p><p> 刪除學(xué)生:輸入學(xué)號(hào),判斷是否存在,存在則繼續(xù)判斷要求刪除的學(xué)生的結(jié)點(diǎn)所在位置,根據(jù)學(xué)生的結(jié)點(diǎn)所在位置不同,做不同的操作;不存在則拋出異常。</p><p> 查詢數(shù)據(jù):輸入學(xué)號(hào),判斷是否存在,存在則顯示該學(xué)生信息;不存在則拋出異常。</p><p> 顯示數(shù)據(jù):顯示鏈表中所有的數(shù)據(jù)。</p><
43、;p> 按學(xué)號(hào)排序:比較學(xué)號(hào)大小,學(xué)號(hào)小的在前,大的在后。</p><p> 按總成績(jī)排序:比較總成績(jī)大小,總成績(jī)大的在前,總成績(jī)小的在后。</p><p> 程序設(shè)計(jì)過程、調(diào)試過程中所用的測(cè)試用例、測(cè)試方法,程序運(yùn)行的結(jié)果</p><p><b> 程序設(shè)計(jì)過程</b></p><p> student
44、.cpp中所要設(shè)計(jì)的程序:</p><p> bool Student::operator <(Person & per){</p><p> return Score[3]<((Student&)per).Score[3]; //學(xué)生設(shè)計(jì)</p><p><b> }</b></p&
45、gt;<p> bool Student::operator>=(Person & per){</p><p> return Score[3]>=((Student&)per).Score[3]; //學(xué)生設(shè)計(jì)</p><p><b> }</b></p><p> void
46、 Student::SwapData(Student * stup){ //學(xué)生數(shù)據(jù)交換(學(xué)生設(shè)計(jì))</p><p> Student t=*this;</p><p> *this=*stup;</p><p><b> *stup=t;</b></p><p><b> }<
47、;/b></p><p> ofstream & operator<<(ofstream & out,Student * stup) //<<運(yùn)算符重載輸出至文件</p><p> out.write((char *)stup,sizeof(Student)); //學(xué)生設(shè)計(jì)</p><p>
48、return out;</p><p><b> }</b></p><p> ostream_withassign & operator<<(ostream_withassign& out,Student* stup){ //<<運(yùn)算符重載輸出至標(biāo)準(zhǔn)文件</p><p> int i;
49、 //學(xué)生設(shè)計(jì)</p><p> out<<stup->ID<<"\t"<<stup->Name <<"\t";</p><p> for(i=0;i<4;i++)</p><p> out
50、<<stup->Score[i]<<"\t";</p><p> out<<endl;</p><p> return out; </p><p><b> }</b></p><p> node.cpp中要求設(shè)計(jì)的程序:</p>
51、<p> Node::Node(Student* stup){</p><p> Stup=stup; //學(xué)生設(shè)計(jì)</p><p> Prev=Next=NULL;</p><p><b> }</b></p><p> Node::
52、Node(Node& node){</p><p> // *Stup=*Prev=*Next; //學(xué)生設(shè)計(jì)</p><p><b> }</b></p><p> Node::~Node(){</p><p> delete Stup;
53、 //學(xué)生設(shè)計(jì)</p><p><b> }</b></p><p> list.cpp中要求設(shè)計(jì)的程序:</p><p> void List::Update(){ //修改學(xué)生成績(jī)</p><p> // S
54、tudent * stup; //學(xué)生設(shè)計(jì)</p><p> Node *nodep;</p><p> int id=GetID();</p><p><b> int i;</b></p><p> if((nodep=FindID(id))==NU
55、LL)</p><p><b> throw(1);</b></p><p> nodep->Stup->Score[3]=0;</p><p> for(i=0;i<3;i++)</p><p><b> {</b></p><p> cout&
56、lt;<"Score"<<i;</p><p> cin>>nodep->Stup->Score[i];</p><p> nodep->Stup->Score[3]+=nodep->Stup->Score[i];</p><p><b> }</b>&
57、lt;/p><p> PrintTitle();</p><p> PrintOne(nodep->Stup);</p><p><b> }</b></p><p> void List::Delete(){ //刪除一個(gè)學(xué)生</p>&
58、lt;p> // Student * stup; //學(xué)生設(shè)計(jì)</p><p> Node * nodep;</p><p> int id=GetID();</p><p> if((nodep=FindID(id))==NULL)</p><p><b>
59、 throw(1);</b></p><p> if(Tail!=nodep){</p><p> nodep->Next->Prev=nodep->Prev; //刪除中間的結(jié)點(diǎn)</p><p> nodep->Prev->Next=nodep->Next;</p><p
60、><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> nodep->Prev->Next=nodep->Next; //刪除最后一個(gè)結(jié)點(diǎn)</p><p> T
61、ail=nodep->Prev;</p><p><b> }</b></p><p> delete nodep;</p><p> PrintList();</p><p><b> }</b></p><p> void List::Query(){
62、 //查詢學(xué)生數(shù)據(jù)</p><p> // Student * stup; //學(xué)生設(shè)計(jì)</p><p> Node *nodep;</p><p> int id=GetID();</p><p> if((node
63、p=FindID(id))==NULL)</p><p> throw(1); </p><p> PrintTitle();</p><p> PrintOne(nodep->Stup);</p>&l
64、t;p><b> }</b></p><p> void List::Insert(Node * nodep){ //在鏈表尾插入一個(gè)學(xué)生</p><p> Tail->Next =nodep; //學(xué)生設(shè)計(jì)</p><p> nodep->Prev=Tai
65、l;</p><p> Tail=nodep; </p><p><b> }</b></p><p> void List::SortScore(){ //按總成績(jī)排序</p><p> Node * nodef,*nodel=Tai
66、l; //學(xué)生設(shè)計(jì)</p><p> if(Head!=Tail){</p><p> while(Head->Next!=nodel){</p><p> nodef=Head->Next;</p><p> while(nodef!=nodel){</p><p&
67、gt; if(*(nodef->Stup)<*(nodef->Next->Stup))</p><p> nodef->Stup->SwapData(nodef->Next->Stup);</p><p> nodef=nodef->Next;</p><p><b> }</b>&
68、lt;/p><p> nodel=nodel->Prev;</p><p><b> }</b></p><p> PrintList();</p><p><b> }</b></p><p><b> }</b></p>&
69、lt;p> void List::SaveBin(){ //鏈表數(shù)據(jù)保存在二進(jìn)制文件</p><p> Node *nodep=Head->Next; //學(xué)生設(shè)計(jì)</p><p> ofstream outStudent;</p><p> if(Head!=Tail)
70、{</p><p> outStudent.open("Student.dat",ios::binary);</p><p> while(nodep){</p><p> outStudent<<nodep->Stup;</p><p> nodep=nodep->Next;</p&
71、gt;<p><b> }</b></p><p><b> }</b></p><p> outStudent.close();</p><p><b> }</b></p><p> void List::PrintList(){
72、 //顯示鏈表中數(shù)據(jù)</p><p> Node* nodep=Head->Next;</p><p> if(Head!=Tail){</p><p> PrintTitle(); //學(xué)生設(shè)計(jì)</p><p> while(nodep!=NULL){&
73、lt;/p><p> PrintOne(nodep->Stup);</p><p> nodep=nodep->Next;</p><p><b> }</b></p><p><b> }</b></p><p><b> else</b&
74、gt;</p><p> cout<<"No student"<<endl;</p><p><b> } </b></p><p> main.cpp中要設(shè)計(jì)的程序:</p><p> case UPDATE: //
75、修改學(xué)生成績(jī)</p><p> try{ //學(xué)生設(shè)計(jì)</p><p> ls.Update();</p><p><b> }</b></p><p> catch(int){</p><p> cout<<"Wrong
76、!This Score is NULL"<<endl;</p><p><b> }</b></p><p><b> break;</b></p><p> case DELETE: //刪除一個(gè)學(xué)生</p><p>
77、 try{ //學(xué)生設(shè)計(jì)</p><p> ls.Delete();</p><p><b> }</b></p><p> catch(int){</p><p> cout<<"Wrong!This Student is NULL&quo
78、t;<<endl;</p><p><b> }</b></p><p><b> break;</b></p><p> case QUERY: //查詢一個(gè)學(xué)生數(shù)據(jù)</p><p> try{
79、 //學(xué)生設(shè)計(jì)</p><p> ls.Query();</p><p><b> }</b></p><p> catch(int){</p><p> cout<<"Wrong!This Data is NULL"<<endl;</p>
80、<p><b> }</b></p><p><b> break;</b></p><p> case SORTSCORE: //根據(jù)總成績(jī)排序</p><p> ls.SortScore(); //學(xué)生設(shè)計(jì)</p&g
81、t;<p> 調(diào)試過程中所用的測(cè)試用例</p><p> 1. 自動(dòng)生成測(cè)試函數(shù):</p><p> 無須手工編輯測(cè)試代碼,建立、編輯測(cè)試用例在測(cè)試用例編輯器中進(jìn)行。</p><p> 2. 測(cè)試用例可視化編輯: </p><p> 使用測(cè)試用例編輯器建立、編輯測(cè)試用例,VU自動(dòng)生成代碼,通常只須填入輸入輸出的數(shù)值。&
82、lt;/p><p> 3. 測(cè)試用例可用點(diǎn)操作符訪問成員變量,還可以用同樣的語法調(diào)用成員函數(shù)。 </p><p><b> 測(cè)試方法</b></p><p> 源程序編制完成后,首先由C++編譯程序build編譯成.obj文件,再由連接程序連接成可執(zhí)行文件。在編譯時(shí),如果源程序存在語法錯(cuò)誤(errors),則系統(tǒng)不允許連接,直到改正了所有的語
83、法錯(cuò)誤后,才能進(jìn)行連接。另外,在編譯時(shí)還可能存在另一類錯(cuò)誤,即警告性錯(cuò)誤(warnings),這類錯(cuò)誤一般不影響程序的連接。</p><p> 選擇編譯菜單(Build)對(duì)編譯好的源程序進(jìn)行編譯,若程序編譯沒有發(fā)現(xiàn)錯(cuò)誤,則該窗口顯示“”,這是可以進(jìn)行程序的連接;若編譯后存在語法錯(cuò)誤或警告,該窗口中則顯示兩類錯(cuò)誤的個(gè)數(shù),并列出相應(yīng)的錯(cuò)誤位置和原因。</p><p> 改正編譯期錯(cuò)誤的方法
84、和一般原則為:</p><p> 改正錯(cuò)誤是一般從第一個(gè)錯(cuò)誤開始,然后依次高正后續(xù)的錯(cuò)誤。因?yàn)榍懊驽e(cuò)誤的出現(xiàn),往往會(huì)導(dǎo)致編譯系統(tǒng)在編譯時(shí)錯(cuò)位,把本來正確的語句認(rèn)為是錯(cuò)的,也可能把某些語句的錯(cuò)誤掩蓋掉。所以當(dāng)改正當(dāng)前的錯(cuò)誤后,可能會(huì)使錯(cuò)誤量減少很多,也可能增加很多;</p><p> 根據(jù)情況,每改正一個(gè)或幾個(gè)錯(cuò)誤后,應(yīng)重新編譯一下,然后再從第一個(gè)錯(cuò)誤進(jìn)行改錯(cuò),知道所有錯(cuò)誤都被 改正過來
85、。</p><p> 實(shí)踐中發(fā)現(xiàn),往往很小的程序在執(zhí)行時(shí)也會(huì)出現(xiàn)錯(cuò)誤。當(dāng)一個(gè)程序可以被連接成功,但執(zhí)行時(shí)卻存在不正?,F(xiàn)象,如不能得到預(yù)期的運(yùn)行結(jié)果或出現(xiàn)死機(jī)等,而一下子很難熬出出錯(cuò)原因時(shí),可以采取單步跟蹤執(zhí)行命令。</p><p><b> 單步跟蹤執(zhí)行命令:</b></p><p> 單步跟蹤執(zhí)行程序,能夠清楚地看到程序的一步步執(zhí)行過程
86、,從而判斷源程序的執(zhí)行流程是否與事先設(shè)計(jì)的流程一致,從中發(fā)現(xiàn)造成死循環(huán)或死機(jī)的原因所在。</p><p> 程序調(diào)試完畢,或想取消程序的調(diào)試狀態(tài)回到編輯狀態(tài),可以選擇集成環(huán)境調(diào)試(Debug),即能夠達(dá)到目的。</p><p><b> 程序運(yùn)行的結(jié)果</b></p><p> 程序運(yùn)行后的菜單顯示</p><p>
87、; “1:add student”界面</p><p> “2:update student”界面</p><p> “3:delete student”界面</p><p> “4:query student”界面</p><p> “5:display student”界面</p><p>
88、“6:sort student by No”界面</p><p> “7:Sort student by score”界面 </p><p> “8:保存數(shù)據(jù)”界面</p><p> 在課程設(shè)計(jì)中遇到的問題和解決的方法,還沒有能解決的問題</p><p><b> ?。ㄒ唬┯龅降膯栴}:</b></
89、p><p> 設(shè)計(jì)刪除一個(gè)學(xué)生的程序后,在程序運(yùn)行過程中,刪除了所有學(xué)生的信息,僅顯示標(biāo)題,沒有其他學(xué)生的信息?同時(shí)在刪除學(xué)生時(shí),若刪除最后一個(gè)學(xué)生,則出現(xiàn)提示終止程序?</p><p> 答:(1)刪除一個(gè)學(xué)生,不是指僅僅刪除這個(gè)學(xué)生,還包括刪除結(jié)點(diǎn)。</p><p> ?。?)在設(shè)計(jì)刪除結(jié)點(diǎn)的同時(shí),還要考慮刪除的是中間的結(jié)點(diǎn)還是最后一個(gè)結(jié)點(diǎn),即if…else…對(duì)
90、應(yīng),根據(jù)刪除結(jié)點(diǎn)位置的不同設(shè)計(jì)相應(yīng)的程序才行。</p><p> 在修改學(xué)生成績(jī)和查詢學(xué)生數(shù)據(jù)設(shè)計(jì)程序過程中,在編譯后顯示無錯(cuò)誤,但有警告,但在繼續(xù)運(yùn)行程序中,修改學(xué)生成績(jī)和查詢學(xué)生數(shù)據(jù)不能執(zhí)行?</p><p> 答:編譯后無錯(cuò)誤即可運(yùn)行程序,但若想正確執(zhí)行程序,則需要修改源程序,直至源程序既無錯(cuò)誤又無警告才能實(shí)現(xiàn)程序的正常運(yùn)行及顯示結(jié)果。</p><p>
91、 3. 數(shù)據(jù)交換如何設(shè)計(jì)?</p><p> 答:void Student::SwapData(Student * stup){ //學(xué)生數(shù)據(jù)交換</p><p> Student t=*this;</p><p> *this=*stup;</p><p><b> *stup=t;&l
92、t;/b></p><p><b> }</b></p><p> 要實(shí)現(xiàn)Swap數(shù)據(jù)交換,一定要定義一個(gè)中間量。這里要求對(duì)*this指針的靈活使用。</p><p> 4.總成績(jī)比較大小,為什么編譯后顯示Score無定義?</p><p> 答:若直接寫per.Score[3],則顯示無定義。因?yàn)镾cor
93、e在Person類里沒定義,它是定義在Student類中的,所以要寫成((Student&)per).Score[3]才能保證編譯無錯(cuò)誤。</p><p> 5.插入運(yùn)算符重載輸出至標(biāo)準(zhǔn)文件的程序設(shè)計(jì)?</p><p> 答: ostream_withassign& operator<<(ostream_withassign& out,Studen
94、t* stup){ //<<運(yùn)算符重載輸出至標(biāo)準(zhǔn)文件</p><p><b> int i;</b></p><p> out<<stup->ID<<"\t"<<stup->Name <<"\t";</p><p> for
95、(i=0;i<4;i++)</p><p> out<<stup->Score[i]<<"\t";</p><p> out<<endl;</p><p> return out; </p><p><b> }</b></p>
96、;<p> 使程序運(yùn)行后顯示的標(biāo)題是:</p><p> ID Name Score1 Score2 Score3 Score</p><p> ?。ǘ┪茨芙鉀Q的問題:</p><p> 對(duì)于指針的前驅(qū)和后繼的理解不清,老是混淆。</p><p> 對(duì)文件的輸入與輸出存在問題。</p><
97、;p> 課程設(shè)計(jì)的體會(huì)和收獲</p><p> 通過這兩周的課程設(shè)計(jì),我完成了一個(gè)較大的C++語言面向?qū)ο蟪绦蛟O(shè)計(jì),,以及認(rèn)真完成了課程設(shè)計(jì)報(bào)告。</p><p> 回憶這兩周的時(shí)間,我收獲很大。首先,我熟練地運(yùn)用所學(xué)的知識(shí)編寫程序,并較好地完成,心里很高興;其次,在設(shè)計(jì)的過程中遇到一些難題,我會(huì)認(rèn)真地去思考,或者充分利用網(wǎng)絡(luò)資源來尋求幫助,提高獲取信息的能力。如果自己還是解決
98、不了的話,我會(huì)向同學(xué)和老師求助,在交流中共同進(jìn)步。</p><p> 對(duì)于計(jì)算機(jī)專業(yè)的大學(xué)生來說,積累實(shí)戰(zhàn)經(jīng)驗(yàn)是一項(xiàng)極其重要的內(nèi)容,很可能成為將來就業(yè)的敲門磚。而課程設(shè)計(jì)就是積累實(shí)戰(zhàn)經(jīng)驗(yàn)的一個(gè)過程,雖然程序的規(guī)模并不大,但能夠讓我們盡早地認(rèn)識(shí)軟件開發(fā)的重要性和必要性,為將來的就業(yè)打下堅(jiān)實(shí)的基礎(chǔ)。</p><p> 經(jīng)過兩個(gè)星期的上機(jī)實(shí)踐學(xué)習(xí),使我對(duì)C++語言有了更進(jìn)一步的認(rèn)識(shí)和了解,要
99、想學(xué)好它,重在實(shí)踐,要通過不斷的上機(jī)操作才能更好地學(xué)習(xí)它。通過實(shí)踐,我也發(fā)現(xiàn)我的好多不足之處。首先是自己編程粗心大意,經(jīng)常出錯(cuò),通過學(xué)習(xí)也有所改進(jìn);再有對(duì)C++語言的一些函數(shù)不太了解,還有對(duì)函數(shù)調(diào)用的正確使用不夠熟悉,以及對(duì)C++語言中經(jīng)常出現(xiàn)的錯(cuò)誤也不了解,通過實(shí)踐,使我在這幾個(gè)方面的認(rèn)識(shí)有所提高。這次的課程設(shè)計(jì)讓我認(rèn)識(shí)到很多C++的內(nèi)在要素:</p><p> 程序設(shè)計(jì)語言是程序設(shè)計(jì)的工具。這是我通過兩周課
100、程設(shè)計(jì)深深體會(huì)的一點(diǎn),并且發(fā)現(xiàn)如果想有效的進(jìn)行程序設(shè)計(jì),正確地應(yīng)用程序設(shè)計(jì)語言表達(dá)算法,必須準(zhǔn)確的運(yùn)用程序設(shè)計(jì)語言,掌握其語法知識(shí)。</p><p> 學(xué)習(xí)課程設(shè)計(jì)必須重視時(shí)間環(huán)節(jié),多讀程序,多編寫程序,多上機(jī)實(shí)踐。這次的課程設(shè)計(jì)就使得課堂教學(xué)、式樣和實(shí)踐之間的關(guān)系更加緊密,對(duì)我的學(xué)習(xí)有著很深的影響。</p><p> 我發(fā)現(xiàn)C++并不是純粹的面向?qū)ο蟮恼Z言,它是一種混合語言。學(xué)習(xí)C+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 《面向?qū)ο蟮某绦蛟O(shè)計(jì)》課程設(shè)計(jì)
- java課程設(shè)計(jì)--java面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)
- 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)---java日歷
- 《面向?qū)ο蟪绦蛟O(shè)計(jì)》課程設(shè)計(jì)java日歷
- 面向?qū)ο蟮某绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- c++面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)——計(jì)算器
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)--火車訂票系統(tǒng)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)學(xué)生選課系統(tǒng)課程設(shè)計(jì)報(bào)告
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)任務(wù)書
- java面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)程序設(shè)計(jì)
- c++課程設(shè)計(jì)-- c++面向?qū)ο蟪绦蛟O(shè)計(jì)
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)任務(wù)書
- 面向?qū)ο蟪绦蛟O(shè)計(jì)課程設(shè)計(jì)--分?jǐn)?shù)計(jì)算器
- 《vb面向?qū)ο蟮某绦蛟O(shè)計(jì)》校本課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論