版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 信息科學(xué)與工程學(xué)院</b></p><p><b> 課程設(shè)計(jì)任務(wù)書(shū)</b></p><p> 題目: </p><p> 組 員:
2、 </p><p> 專 業(yè): 網(wǎng)絡(luò)工程 </p><p> 課 程: C++語(yǔ)言程序設(shè)計(jì) </p><p> 指導(dǎo)教師: 職稱: 助 教 </p><p>
3、; 完成時(shí)間: 2013年 5月----2013年 6 月</p><p> 課程設(shè)計(jì)任務(wù)書(shū)及成績(jī)?cè)u(píng)定</p><p><b> 目 錄</b></p><p> 一、摘要………………………………………………………………….</p><p> 二、問(wèn)題描述……………………………………………………………<
4、/p><p><b> 1.摘要</b></p><p> 本系統(tǒng)主要用于對(duì)學(xué)生的成績(jī)進(jìn)行管理。通過(guò)本系統(tǒng),可以將各個(gè)學(xué)生的成績(jī)記錄輸入到系統(tǒng)中,保存到文件,便于查閱和相關(guān)管理。此外,該系統(tǒng)還能實(shí)現(xiàn)對(duì)學(xué)生成績(jī)記錄的顯示,查詢以及插入或刪除學(xué)生的成績(jī)記錄等功能。</p><p><b> 2.問(wèn)題描述</b></p&
5、gt;<p> 編寫(xiě)一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)。學(xué)生成績(jī)管理系統(tǒng)有若干學(xué)生成績(jī)記錄組成,每個(gè)記錄由學(xué)號(hào)、姓名、性別和成績(jī)四部分組成,學(xué)號(hào)不超過(guò)11個(gè)字符,姓名不超過(guò)21個(gè)字符,性別為’m’(male)或’f’(female),成績(jī)?yōu)閐ouble型數(shù)據(jù)。該系統(tǒng)具有以下功能:</p><p> 程序開(kāi)始執(zhí)行時(shí)顯示如下版權(quán)信息和主菜單:</p><p> *******學(xué)生成
6、績(jī)管理系統(tǒng)*************</p><p> *1.添加學(xué)生成績(jī)記錄 </p><p> *2.顯示學(xué)生成績(jī)記錄 </p><p> *3.查找學(xué)生成績(jī)記錄</p><p> *4.刪除學(xué)生成績(jī)記錄</p><p> *5.保存學(xué)生成績(jī)記錄</p><p> *6.加載學(xué)生
7、成績(jī)記錄</p><p> *7.退出學(xué)生成績(jī)管理系統(tǒng)</p><p> ************************************</p><p><b> 請(qǐng)輸入(1~7):</b></p><p> 通過(guò)鍵盤輸入數(shù)字1~7后,程序能夠執(zhí)行相應(yīng)的功能,執(zhí)行完后回到上述主菜單繼續(xù)等待用戶輸入,輸入
8、數(shù)字7后退出程序。</p><p> 選擇“添加學(xué)生成績(jī)記錄”后,輸入要插入記錄的位置。按程序提示依次輸入學(xué)號(hào),姓名,性別,成績(jī),插入記錄成功。</p><p> 選擇“顯示學(xué)生成績(jī)記錄”,顯示學(xué)生成績(jī)表中已有的學(xué)生記錄的個(gè)數(shù),并顯示出各個(gè)學(xué)生記錄的相關(guān)信息。</p><p> 選擇“查找學(xué)生成績(jī)記錄”,按提示輸入要查找的學(xué)生的學(xué)號(hào),輸入學(xué)號(hào),若該學(xué)號(hào)存在,則
9、輸出相應(yīng)的學(xué)生記錄,如該學(xué)號(hào)不存在,則按任意鍵返回主菜單。</p><p> 選擇“刪除學(xué)生成績(jī)記錄”,按提示輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào),輸入學(xué)號(hào),若改學(xué)號(hào)存在,則刪除相應(yīng)的學(xué)生記錄,如果該學(xué)號(hào)不存在,則按任意鍵返回主菜單。</p><p> 選擇“保存學(xué)生成績(jī)記錄”,系統(tǒng)會(huì)將已有的學(xué)生記錄保存在默認(rèn)的文件名為fname.txt的文件中。</p><p> 選擇“
10、加載學(xué)生成績(jī)記錄”,系統(tǒng)會(huì)提示輸入文件名,輸入默認(rèn)的文件名為fname.txt,則可將文件中的相關(guān)信息導(dǎo)出。</p><p> 選擇“退出學(xué)生成績(jī)管理系統(tǒng)”,按任意鍵退出系統(tǒng)。</p><p><b> 3.解決方案</b></p><p> 這是一個(gè)很實(shí)際的編程實(shí)例。編程要求很詳細(xì),內(nèi)容也比較多,有一定難度。首先,學(xué)生成績(jī)記錄是一個(gè)復(fù)雜
11、的數(shù)據(jù)結(jié)構(gòu),至少應(yīng)包括學(xué)號(hào),姓名,性別和成績(jī)。所以,必須建立一個(gè)類student,用來(lái)記錄學(xué)號(hào),姓名,性別和成績(jī)。此外還得建立一個(gè)類stuscore,用來(lái)記錄多個(gè)學(xué)生的成績(jī)記錄。</p><p> 3.1建立類學(xué)生類student</p><p> 它至少包括學(xué)號(hào)number,姓名name,性別sex,成績(jī)chengji。具體如下:</p><p> clas
12、s student</p><p><b> {</b></p><p><b> public:</b></p><p> char name[21]; //姓名</p><p> char number[11]; //學(xué)號(hào)</p><p>
13、char sex; //性別</p><p> double chengji; //成績(jī)</p><p> student *next; //類指針,用來(lái)指向下一個(gè)記錄</p><p> student();</p><p> void init(string &Name,string &Number,char
14、Sex,double Chengji); //輸入學(xué)生成績(jī)記錄</p><p> virtual ~student();</p><p><b> };</b></p><p> 函數(shù)init(string &Name,string &Number,char Sex,double Chengji)用于輸入學(xué)生記錄,相當(dāng)于
15、一個(gè)注冊(cè)。其具體實(shí)現(xiàn)如下:</p><p> void student::init(string &Name,string &Number,char Sex,double Chengji)</p><p><b> {</b></p><p><b> int len;</b></p>
16、<p> len=Name.length();</p><p> if(len>20)len=20;</p><p> Name.copy(name,len,0);</p><p> name[len]=0;</p><p> len=Number.length();</p><p> if
17、(len>10)len=10;</p><p> Number.copy(number,len,0);</p><p> number[len]=0;</p><p> sex=((sex=='m')?'m':'f');</p><p> chengji=Chengji;</
18、p><p><b> }</b></p><p> 3.2建立學(xué)生成績(jī)記錄類stuscore</p><p> 該類是學(xué)生成績(jī)記錄的集合。其成員函數(shù)則是問(wèn)題中要求的添加、顯示、查找、刪除、保存、導(dǎo)出等各種操作。改類具體如下:</p><p> class stuscore </p><p>
19、<b> {</b></p><p> student* head;</p><p><b> public:</b></p><p> bool add_record();//添加學(xué)生成績(jī)記錄</p><p> void display_record();//顯示學(xué)生成績(jī)記錄</p
20、><p> int length();//學(xué)生成績(jī)記錄個(gè)數(shù)</p><p> bool delete_record();//刪除學(xué)生成績(jī)記錄</p><p> void save_record();//保存學(xué)生成績(jī)記錄</p><p> void load_record();//加載學(xué)生成績(jī)記錄</p><p>
21、 bool find_record();//查找學(xué)生成績(jī)記錄</p><p> stuscore();</p><p> virtual ~stuscore();</p><p><b> };</b></p><p> 3.3編寫(xiě)各個(gè)功能的函數(shù)實(shí)體</p><p> 3.3.1添加學(xué)生
22、成績(jī)記錄add_record()</p><p><b> 建立一個(gè)鏈表:</b></p><p> bool stuscore::add_record()</p><p><b> {</b></p><p><b> int i;</b></p>&l
23、t;p><b> int j=1;</b></p><p> string Name;</p><p> string Number;</p><p><b> char Sex;</b></p><p> double Chengji;</p><p>
24、student *newnode,*current,*previous;</p><p> current=previous=head;</p><p> cout<<"請(qǐng)輸入插入的位置:";</p><p><b> cin>>i;</b></p><p> if(i
25、<=0||i>length()+1)</p><p><b> {</b></p><p> cout<<"輸入的位置不正確!";</p><p> return false;</p><p><b> }</b></p><p
26、> cout<<"請(qǐng)輸入學(xué)號(hào):";</p><p> cin>>Number;</p><p> cout<<"請(qǐng)輸入姓名:";</p><p> cin>>Name;</p><p> cout<<"請(qǐng)輸入性別:&q
27、uot;;</p><p><b> cin>>Sex;</b></p><p> cout<<"請(qǐng)輸入成績(jī):";</p><p> cin>>Chengji;</p><p> newnode=new student();</p><p
28、> newnode->init(Name,Number,Sex,Chengji);</p><p> newnode->next=null;</p><p> if(!newnode)</p><p><b> {</b></p><p> cout<<"內(nèi)存已滿!&qu
29、ot;;</p><p> return false;</p><p><b> }</b></p><p><b> if(i==1)</b></p><p><b> { </b></p><p> newnode->next=he
30、ad;</p><p> head=newnode;</p><p> return true;</p><p><b> }</b></p><p><b> Else</b></p><p><b> {</b></p>&l
31、t;p> while(current&&j<i)</p><p><b> {</b></p><p> previous=current;</p><p> current=current->next;</p><p><b> j++;</b><
32、/p><p><b> }</b></p><p> newnode->next=current;</p><p> previous->next=newnode;</p><p> return true;</p><p><b> }</b></p
33、><p><b> }</b></p><p> 3.3.2顯示學(xué)生成績(jī)記錄display_record()</p><p><b> 具體實(shí)現(xiàn)如下:</b></p><p> void stuscore::display_record()</p><p><b&g
34、t; {</b></p><p> student*current;</p><p> current=head;</p><p> cout<<"表中有"<<length()<<"條記錄!\n";</p><p> if(length())&l
35、t;/p><p><b> {</b></p><p> cout<<setiosflags(ios::left)<<setw(15)<<"學(xué)號(hào)"<<setw(15)<<"姓名"<<setw(12)<<"性別"<<
36、setw(5)<<"成績(jī)"<<endl;</p><p> while(current)</p><p><b> {</b></p><p> cout<<current;</p><p> current=current->next;</p&
37、gt;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> 另外,對(duì)<<運(yùn)算符進(jìn)行了重載,這樣就可以直接用cout輸出學(xué)生成績(jī)記錄,函數(shù)重載如下:</p><p> ost
38、ream&operator<<(ostream&output,const student *addr)</p><p><b> {</b></p><p> output<<setiosflags(ios::left)<<setw(15)<<addr->number<<setw(1
39、5)<<addr->name<<setw(12)<<addr->sex<<setw(5)<<addr->chengji<<endl;</p><p> return output;</p><p><b> }</b></p><p> 3.3.3查
40、找學(xué)生成績(jī)記錄find_record()</p><p><b> 具體實(shí)現(xiàn)如下:</b></p><p> bool stuscore::find_record()</p><p> {student *current,*previous;</p><p> string Number;</p>
41、<p> cout<<"請(qǐng)輸入要查找的學(xué)生的學(xué)號(hào):";</p><p> cin>>Number;</p><p> current=previous=head;</p><p> while(current)</p><p><b> {</b><
42、/p><p> if(current->number==Number)</p><p><b> {</b></p><p> cout<<setiosflags(ios::left)<<setw(15)<<"學(xué)號(hào)"<<setw(15)<<"姓名&
43、quot;<<setw(12)<<"性別"<<setw(5)<<"成績(jī)"<<endl;</p><p> cout<<current;</p><p> return true;</p><p><b> }</b></p
44、><p><b> Else</b></p><p><b> {</b></p><p> previous=current;</p><p> current=current->next;</p><p><b> }</b></p
45、><p><b> }</b></p><p> if(!current)</p><p><b> {</b></p><p> cout<<"沒(méi)有找到該學(xué)生!";</p><p> return false;</p>&
46、lt;p><b> } </b></p><p> return true;</p><p><b> }</b></p><p> 3.3.4刪除學(xué)生記錄delete_record()</p><p><b> 具體實(shí)現(xiàn)如下:</b></p>&
47、lt;p> bool stuscore::delete_record()</p><p><b> {</b></p><p><b> string s;</b></p><p> student*current,*previous;</p><p> current=previo
48、us=head;</p><p> cout<<"成績(jī)表中有"<<length()<<"個(gè)學(xué)生成績(jī)記錄"<<endl;</p><p> if(!length())</p><p><b> {</b></p><p> co
49、ut<<"學(xué)生成績(jī)表已空!\n";</p><p> return false;</p><p><b> }</b></p><p><b> else{</b></p><p> cout<<"請(qǐng)輸入要?jiǎng)h除的學(xué)生記錄的學(xué)號(hào):"
50、;</p><p><b> cin>>s;</b></p><p> while(current)</p><p><b> {</b></p><p> if(current->number==s)</p><p><b> {<
51、;/b></p><p> if(current==head)</p><p><b> {</b></p><p> head=head->next;</p><p> delete current;</p><p> cout<<"刪除成功!&quo
52、t;;</p><p> return true;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> previous->next=current-&
53、gt;next;</p><p> delete current;</p><p> cout<<"刪除成功!";</p><p> return true;</p><p><b> }</b></p><p><b> }</b>
54、</p><p><b> else</b></p><p><b> {</b></p><p> previous=current;</p><p> current=current->next;</p><p><b> }</b>
55、</p><p><b> }</b></p><p> if(!current)</p><p><b> {</b></p><p> cout<<"沒(méi)有找到該學(xué)號(hào)所對(duì)應(yīng)的學(xué)生記錄!";</p><p> return false
56、; </p><p><b> }</b></p><p><b> }</b></p><p> return true</p><p><b> }</b></p><p> 3.3.5保存學(xué)生成績(jī)記錄save_record()</p
57、><p><b> 具體實(shí)現(xiàn)如下:</b></p><p> void stuscore::save_record()</p><p> { ofstream file;</p><p> student*current=head;</p><p> file.open("./fn
58、ame.txt",ios::out);</p><p><b> if(!file)</b></p><p><b> {</b></p><p> cout<<"打開(kāi)文件失敗!";</p><p> cin.get();</p>&l
59、t;p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> while(current)</p><p><b> {</b></p><p>
60、 if(file&&!file.eof())</p><p> file.write((char*)current,sizeof(*current));</p><p> current=current->next;</p><p><b> }</b></p><p> cout<&
61、lt;"保存完成!";</p><p> file.close();</p><p><b> }</b></p><p><b> }</b></p><p> 3.3.6加載學(xué)生成績(jī)記錄load_record()</p><p><b&g
62、t; 具體實(shí)現(xiàn)如下:</b></p><p> void stuscore::load_record()</p><p><b> {</b></p><p> ifstream file;</p><p> char fname[20];</p><p> student
63、 *n;</p><p> n=new student();</p><p> cout<<"請(qǐng)輸入要打開(kāi)的文件名(fname.txt):";</p><p> cin>>fname;</p><p> file.open(fname,ios::in);</p><p&g
64、t;<b> if(!file)</b></p><p><b> {</b></p><p> cout<<"文件打開(kāi)失敗!";</p><p> cin.get();</p><p><b> }</b></p>&l
65、t;p><b> else</b></p><p><b> {</b></p><p> cout<<setiosflags(ios::left)<<setw(21)<<"姓名"<<setw(11)<<"學(xué)號(hào)"<<setw
66、(5)<<"性別"<<setw(5)<<"成績(jī)"<<endl;</p><p> while(file&&file.peek()!=EOF)</p><p><b> {</b></p><p> file.read((char*)n,
67、sizeof(*n));</p><p> cout<<n<<endl;</p><p><b> }</b></p><p> file.close();</p><p><b> }</b></p><p><b> }<
68、/b></p><p> 3.3.7計(jì)算學(xué)生成績(jī)記錄的個(gè)數(shù)length()</p><p><b> 具體實(shí)現(xiàn)如下:</b></p><p> int stuscore::length()</p><p><b> {</b></p><p><b>
69、 int j=0;</b></p><p> student*current;</p><p> current=head;</p><p> while(current)</p><p> {current=current->next;</p><p><b> j++;<
70、;/b></p><p><b> }</b></p><p><b> return j;</b></p><p><b> }</b></p><p><b> 四.程序運(yùn)行結(jié)果</b></p><p> 4.1
71、 主菜單界面 </p><p> 4.2添加學(xué)生成績(jī)記錄</p><p> 4.3顯示學(xué)生成績(jī)記錄</p><p> 4.4再添加幾個(gè)學(xué)生成績(jī)記錄</p><p><b> 顯示結(jié)果為:</b></p><p> 4.5查找學(xué)生成績(jī)記錄</p><p> 4.6
72、刪除學(xué)生成績(jī)記錄</p><p> 4.7刪除記錄后再顯示學(xué)生成績(jī)記錄</p><p> 4.8保存學(xué)生成績(jī)記錄</p><p> 4.9加載學(xué)生成績(jī)記錄</p><p> 4.10退出學(xué)生成績(jī)系統(tǒng)</p><p><b> 五.課程設(shè)計(jì)總結(jié)</b></p><p&g
73、t; 這是一個(gè)綜合性較強(qiáng),很實(shí)際的一個(gè)編程實(shí)例。剛學(xué)C++時(shí)候,感覺(jué)類和對(duì)象還挺有意思的,剛接觸到這個(gè)題目時(shí),覺(jué)得應(yīng)該沒(méi)什么大問(wèn)題吧,因?yàn)?,我自認(rèn)為一些基本知識(shí)點(diǎn)都已經(jīng)掌握了??墒?,真的當(dāng)我動(dòng)手編程的時(shí)候,才發(fā)現(xiàn)并沒(méi)有想象中的那么簡(jiǎn)單。單個(gè)知識(shí)點(diǎn)是弄清了,但是,將所有的知識(shí)點(diǎn)綜合起來(lái)運(yùn)用時(shí),就碰到了各種各樣的問(wèn)題了。有時(shí)候,一個(gè)錯(cuò)誤得找好久,才能發(fā)現(xiàn)。</p><p> 本系統(tǒng)的重點(diǎn)就是要會(huì)建立兩個(gè)類。一個(gè)是
74、學(xué)生類student,用來(lái)存放一個(gè)學(xué)生的成績(jī)記錄,相當(dāng)于一個(gè)結(jié)構(gòu)體的功能吧。另一個(gè)類是學(xué)生成績(jī)記錄系統(tǒng)類stuscore,該類用來(lái)存放多個(gè)學(xué)生的成績(jī)記錄。難點(diǎn)就是stuscore類里的各個(gè)功能的實(shí)現(xiàn)。總的來(lái)說(shuō),添加,顯示,查找,這三個(gè)功能比較容易,但是,刪除,保存,加載這三個(gè)功能就需要花點(diǎn)心思了,可能是平時(shí)用的比較少吧,生疏了??梢?jiàn)只有通過(guò)平時(shí)多加練習(xí),才能有助于自己鞏固知識(shí)點(diǎn)。</p><p> 最后想說(shuō)的是
75、,調(diào)試程序真的很關(guān)鍵。調(diào)試程序需要較大的耐心??赡苷{(diào)試程序的時(shí)間比自己編寫(xiě)整個(gè)程序的時(shí)間還要長(zhǎng),下的工夫還要深,但這是一個(gè)程序員必須了解,也必須接受的事實(shí)。有好幾次,幾個(gè)錯(cuò)誤讓我很是頭疼啊,很想刪了,重新來(lái)過(guò),可是最后發(fā)現(xiàn),還是得有耐心去調(diào)試程序。</p><p> 通過(guò)這個(gè)實(shí)驗(yàn)的練習(xí),我也學(xué)到了很多東西,特別是加深了對(duì)類和對(duì)象理解和應(yīng)用方面,也很謝謝老師給我的幫助。</p><p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c++學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- c++課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- c++課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)c++課程設(shè)計(jì)
- c++課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c++課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c++課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- c++課程設(shè)計(jì)——學(xué)生成績(jī)管理系統(tǒng)
- c++課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c++學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- c++課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- c++程序課程設(shè)計(jì)報(bào)告—學(xué)生成績(jī)管理系統(tǒng)
- c++課程設(shè)計(jì)--學(xué)生成績(jī)管理
- c++課程設(shè)計(jì)--- 學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)
- c++課程設(shè)計(jì)--學(xué)生成績(jī)管理
- c&c++課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- c++課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)與管理
評(píng)論
0/150
提交評(píng)論