版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《C++語(yǔ)言程序設(shè)計(jì)》</p><p><b> 課題設(shè)計(jì)報(bào)告</b></p><p> 課題名稱: 學(xué)生信息查詢系統(tǒng) </p><p> 課程序設(shè)計(jì)目的(根據(jù)情況寫(xiě))</p><p> ?。?)了解數(shù)據(jù)的處理,了解基本的程序控制語(yǔ)句,了解表達(dá)式和運(yùn)算符的使用;</p>&l
2、t;p> (2)了解函數(shù)的定義及其調(diào)用(如傳值、引用、嵌套、遞歸的調(diào)用),了解函數(shù)變量作用域與其存儲(chǔ)類型;</p><p> (3)學(xué)會(huì)構(gòu)造數(shù)據(jù)類型(如結(jié)構(gòu)體、共用體類型)及預(yù)編處理,熟練掌握指針的使用,理清指針與指針變量的區(qū)別,了解指針與數(shù)組及指針與函數(shù)的內(nèi)在聯(lián)系,熟練掌握指向結(jié)構(gòu)體指針的使用。</p><p> ?。?)以學(xué)生信息管理為應(yīng)用背景,建立學(xué)生信息管理程序。程序?qū)崿F(xiàn)
3、對(duì)學(xué)生信息的增加、查詢、刪除、排序、顯示、修改幾項(xiàng)功能。用函數(shù)分別實(shí)現(xiàn)動(dòng)態(tài)鏈表的創(chuàng)建,節(jié)點(diǎn)的查找、刪除、修改,節(jié)點(diǎn)的排序,動(dòng)態(tài)鏈表輸出功能。并且學(xué)會(huì)使用文件的保存,使用指針作函數(shù)形參,主函數(shù)分別調(diào)用各函數(shù)。</p><p><b> 開(kāi)發(fā)環(huán)境</b></p><p> (1)系統(tǒng)環(huán)境:Windows XP,Windows 7</p><p>
4、; ?。?)編程環(huán)境:Visual C++.NET,Visual C++ 6.x,Visual Studio 2005,Visual Studio 2010……….等。</p><p><b> 實(shí)現(xiàn)過(guò)程</b></p><p> C++編程基礎(chǔ)知識(shí)介紹</p><p> 輸入:用來(lái)在程序執(zhí)行期間給變量輸入數(shù)據(jù);一般格式cin>&
5、gt;變量名1《>>變量名2>>…>>變量名n》; “>>”稱為提取運(yùn)算符</p><p> 輸出:實(shí)現(xiàn)將數(shù)據(jù)輸出到顯示器的操作;一般格式:cout<<表達(dá)式1《<<表達(dá)式2<<…<<表達(dá)式n》;“<<”稱為插入運(yùn)算符。</p><p> 數(shù)據(jù)類型:對(duì)數(shù)據(jù)類型定義是非常重要的,它
6、可以為數(shù)據(jù)在內(nèi)存中分配適合的存儲(chǔ)區(qū)域、確定數(shù)據(jù)范圍,并且可以規(guī)定數(shù)據(jù)所能進(jìn)行的有效操作;</p><p> 1:對(duì)數(shù)據(jù)類型的分類有:</p><p> 2:常量和變量:變量(variable):取值在程序的執(zhí)行過(guò)程中可改變值的量;常量(constant):取值在程序的執(zhí)行過(guò)程中始終保持不變的量。又分為文字常量(literal constant)常變量(也稱為符號(hào)常量)</p>
7、;<p> 3:運(yùn)算符和表達(dá)式:包括C++運(yùn)算符、優(yōu)先級(jí)和結(jié)合性 ;基本運(yùn)算符及其表達(dá)式(即算術(shù)運(yùn)算符及算符表達(dá)式;賦值運(yùn)算符與賦值表達(dá)式;自增、自減運(yùn)算;邏輯運(yùn)算、邏輯表達(dá)式及其求值優(yōu)化;位運(yùn)算;逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式;sizeof( )運(yùn)算符) ; 語(yǔ)句(包括表達(dá)式語(yǔ)句;表達(dá)式; 空語(yǔ)句;復(fù)合語(yǔ)句{若干語(yǔ)句} 流程控制語(yǔ)句:用來(lái)控制或改變程序的執(zhí)行方向);算術(shù)類型轉(zhuǎn)換和賦值類型轉(zhuǎn)換 ;求值次序與副作用 等知識(shí)。<
8、;/p><p> 4:鏈表:鏈表是一種常見(jiàn)的重要的數(shù)據(jù)結(jié)構(gòu)。利用它可以實(shí)現(xiàn)動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配。 鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成。每個(gè)結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域。</p><p> 組成結(jié)構(gòu)及特點(diǎn)——程序主體:一般由一個(gè)或多個(gè)函數(shù)組成,但只有一個(gè)函數(shù)是程序入口,即代碼執(zhí)行的起點(diǎn)。如本例由max(
9、)和main()兩個(gè)函數(shù)組成,函數(shù)main()是所有控制臺(tái)(console) 程序的入口,稱為主函數(shù)。</p><p><b> 程序流程控制</b></p><p> 復(fù)合語(yǔ)句:將多個(gè)語(yǔ)句組合在一起,用一對(duì)花括號(hào)將這些語(yǔ)句組合在一起,稱為復(fù)合語(yǔ)句</p><p><b> 分支流程If 語(yǔ)句</b></p&g
10、t;<p> 語(yǔ)法:If (條件表達(dá)式)</p><p><b> 語(yǔ)句1</b></p><p><b> [else</b></p><p><b> 語(yǔ)句2]</b></p><p> If (a<b)</p><p
11、><b> cout<<a;</b></p><p><b> else</b></p><p><b> cout<<b;</b></p><p><b> 循環(huán)流程</b></p><p><b> a
12、:While語(yǔ)句</b></p><p> While (條件表達(dá)式)</p><p><b> 循環(huán)體</b></p><p> While(條件表達(dá)式1)</p><p><b> { 語(yǔ)句1;</b></p><p> if(條件表達(dá)式2)&
13、lt;/p><p><b> break;</b></p><p><b> 語(yǔ)句2;</b></p><p><b> }</b></p><p><b> 語(yǔ)句3;</b></p><p> break語(yǔ)句使用:用在whi
14、le,do…while,for和switch語(yǔ)句中,在循環(huán)語(yǔ)句中,break用來(lái)從最近的封閉循環(huán)體內(nèi)跳出,</p><p> 在switch語(yǔ)句中,break用來(lái)跳出switch語(yǔ)句。</p><p><b> b:for循環(huán)</b></p><p> 語(yǔ)法:for(初始化表達(dá)式;條件表達(dá)式;循環(huán)表達(dá)式) 循環(huán)體語(yǔ)句
15、 </p><p><b> 初始化表達(dá)式;</b></p><p> 函數(shù)的調(diào)用:調(diào)用一個(gè)函數(shù)就是暫時(shí)中斷現(xiàn)有程序的運(yùn)行,轉(zhuǎn)去執(zhí)行被調(diào)用函數(shù),當(dāng)被調(diào)用函數(shù)執(zhí)行結(jié)束以后,再返回到中斷處繼續(xù)執(zhí)行的過(guò)程,如下表:</p><p> 函數(shù)的嵌套:執(zhí)行過(guò)程如下表:</p><p> ?。?)程序的概要設(shè)
16、計(jì)(流程圖)</p><p> 1:總體(主函數(shù)):設(shè)計(jì)學(xué)生信息管理系統(tǒng)界面,定義程序功能選擇的方式,定義所需結(jié)構(gòu)體指針,用switch循環(huán)進(jìn)行程序選擇(即程序功能選擇);整體使用函數(shù)的調(diào)用(嵌套、傳值)</p><p> 2:子函數(shù):包括增加學(xué)生信息(STU *add)、查詢學(xué)生信息(struct stu *find(struct stu *top,int numToFind))、刪
17、除學(xué)生信息(STU *del(STU*top))、修改學(xué)生信息(void ChangeByNumber(STU*top))、排序?qū)W生信息(void Compositor(STU *top))、顯示所有學(xué)生信息(print(struct stu *top)) 六個(gè)子函數(shù) </p><p> a:增加學(xué)生信息(STU *add):先構(gòu)建臨時(shí)變量struct stu temp,用來(lái)儲(chǔ)存增加的信息,輸入你要增加的學(xué)生
18、數(shù),學(xué)號(hào)是否符合條件,否則退出增加模塊,符合進(jìn)行增加,如果原來(lái)文件中沒(méi)有數(shù)據(jù)就直接將該臨時(shí)變量的數(shù)據(jù)信息賦給首地址所對(duì)應(yīng)的內(nèi)存空間直接儲(chǔ)存,否則將從p節(jié)點(diǎn)開(kāi)始增加。增加完后,返回首地址,調(diào)用保存函數(shù)保存。</p><p> b:查詢學(xué)生信息(struct stu *find(struct stu *top,int numToFind)):用函數(shù)的調(diào)用來(lái)調(diào)用系統(tǒng)中儲(chǔ)存的信息中符合查找要求的信息。</p>
19、;<p> c:刪除學(xué)生信息(STU *del(STU*top)):</p><p> 以學(xué)號(hào)為查找線索,討論該數(shù)據(jù)在整個(gè)鏈表中的位置,如果是在鏈表中的第一個(gè)節(jié)點(diǎn)就直接刪除,不然的話則用while循環(huán),滿足要?jiǎng)h除的條件就刪除,并返回首地址調(diào)用resaveLink()(清空文件后保存)函數(shù)保存。</p><p> d:修改學(xué)生信息(void ChangeByNumber(
20、STU*top)):用學(xué)號(hào)為數(shù)據(jù)修改前查找數(shù)據(jù)依據(jù),用指針變量來(lái)執(zhí)行查找工作,用while循環(huán),當(dāng)在學(xué)生信息結(jié)構(gòu)體中找到與之對(duì)應(yīng)的學(xué)號(hào),調(diào)出所需修改的數(shù)據(jù) 后進(jìn)行數(shù)據(jù)重新輸入;再用指針變量對(duì)原先數(shù)據(jù)進(jìn)行刪除 再存入修改后數(shù)據(jù),完成數(shù)據(jù)修改。</p><p> e:排序?qū)W生信息(void Compositor(STU *top)):分為學(xué)號(hào)排序,平均成績(jī)排序 。先保證系統(tǒng)內(nèi)有數(shù)據(jù)儲(chǔ)存。a:學(xué)號(hào)排序:用兩次wh
21、ile循環(huán), 實(shí)現(xiàn)全部數(shù)據(jù)的排序,第二次比較p、q所指學(xué)號(hào)的大小,按小到大進(jìn)行排序, 如不符合條件交換的雙方指針?biāo)傅臄?shù)據(jù)組內(nèi)容。b:平均成績(jī)排序:用兩次while循環(huán),實(shí)現(xiàn)全部數(shù)據(jù)的排序,第二次比較p、q所指數(shù)據(jù)中平均成績(jī)的大小,按大到小進(jìn)行排序 如不符合條件交換的雙方指針?biāo)傅臄?shù)據(jù)組內(nèi)容</p><p> f:顯示所有學(xué)生信息(print(struct stu *top)):先判斷系統(tǒng)中的學(xué)生信息庫(kù)中是否為
22、空,如果沒(méi)有學(xué)生信息則應(yīng)先存入數(shù)據(jù),不為空則輸出所有數(shù)據(jù)</p><p><b> 程序的詳細(xì)設(shè)計(jì)</b></p><p> a:增加學(xué)生信息(STU *add)</p><p> STU *add()//鏈表的創(chuàng)建</p><p><b> {</b></p><p&g
23、t; struct stu temp; 構(gòu)建臨時(shí)變量</p><p> struct stu *top=NULL,*p=NULL;</p><p><b> int a;</b></p><p> cout<<"請(qǐng)輸入你要輸入的學(xué)生數(shù)"&l
24、t;<endl;</p><p><b> cin>>a;</b></p><p> for(int i=1;i<=a;i++){</p><p> cout<<"請(qǐng)輸入第"<<i<<"位學(xué)生信息:"<<endl;</p&
25、gt;<p> cout<<"請(qǐng)輸入你的學(xué)號(hào)" << endl;</p><p> cin>>temp.num;</p><p> if(temp.num<=0)</p><p><b> {</b></p><p> cout<
26、<"對(duì)不起,輸入有誤!"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p> … 輸入數(shù)據(jù)</p><p>
27、 cin>>temp.cj.yingyu;</p><p> if(p==NULL){ 判斷系統(tǒng)中是否存在數(shù)據(jù)</p><p> p=top= (struct stu*)malloc(sizeof(struct stu)); 分配內(nèi)存空間</p><p> *top=temp;
28、 直接給地址</p><p><b> }</b></p><p><b> else{</b></p><p> p->next=(struct stu*)malloc(sizeof(struct stu)); 增加鏈表</p><p>
29、 *p->next=temp;</p><p> p=p->next;</p><p><b> }</b></p><p><b> }</b></p><p> p->next=NULL;</p><p> cout<<"
30、輸入完成!"<<endl;</p><p> return top;</p><p><b> }</b></p><p> b:查詢學(xué)生信息(struct stu *find(struct stu *top,int numToFind))</p><p> void print(struc
31、t stu *top)</p><p><b> {</b></p><p> struct stu *p;</p><p><b> p=top;</b></p><p> if(p==NULL) 判斷系統(tǒng)中是否有信息存儲(chǔ)</p>
32、<p><b> { </b></p><p> cout<<"現(xiàn)在沒(méi)有學(xué)生信息,請(qǐng)先輸入學(xué)生信息"<<endl; </p><p><b> return;</b></p><p><b> } </b></p><p
33、> while(p!=NULL)</p><p><b> {</b></p><p> …… 完成數(shù)據(jù)輸出</p><p><b> }</b></p><p><b> }</b>&l
34、t;/p><p> c:刪除學(xué)生信息(STU *del(STU*top))</p><p> STU *del(STU*top) </p><p><b> { </b></p><p><b> int num; </b></p><p> STU *p,*q; &l
35、t;/p><p> int flag=0; </p><p> cout<<"請(qǐng)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào):"<<endl; </p><p> cin>>num; </p><p><b> p=top; </b></p><p> q=t
36、op->next; </p><p> if (p ->num == num) 對(duì)應(yīng)學(xué)號(hào)</p><p><b> {</b></p><p> free(p); 直接釋放指針p</p>
37、<p> cout<<"成功刪除"<<endl;</p><p><b> flag=1;</b></p><p><b> return q;</b></p><p><b> }</b></p><p> wh
38、ile(q!=NULL) while循環(huán)</p><p><b> { </b></p><p> if(q->num==num) </p><p><b> { </b></p><p> p->next=q
39、->next; 滿足要?jiǎng)h除的條件就刪除</p><p><b> free(q); </b></p><p> cout<<"成功刪除"<<endl;</p><p><b> flag=1;</b></p><p>
40、; return top; 回首地址,調(diào)用resaveLink()</p><p><b> } </b></p><p> p=p->next; </p><p> q=q->next; 函數(shù)保存</p>&
41、lt;p><b> } </b></p><p> if(!flag) </p><p><b> { </b></p><p> cout<<"不存在該學(xué)號(hào)的學(xué)生"<<endl; </p><p> return top; </p&
42、gt;<p><b> } </b></p><p><b> }</b></p><p> d:修改學(xué)生信息(void ChangeByNumber(STU*top))</p><p> void ChangeByNumber(STU*top) </p><p><b&
43、gt; { </b></p><p><b> STU *p;</b></p><p><b> int num;</b></p><p> char name[10];</p><p><b> int age;</b></p><
44、p> int classid;</p><p> int flag=0; </p><p> int yingyu,shuxue,yuwen; </p><p><b> p=top;</b></p><p> cout<<"請(qǐng)輸入學(xué)生學(xué)號(hào):"<<endl; &
45、lt;/p><p> cin>>num; </p><p><b> while(p) </b></p><p><b> { </b></p><p> if(p->num==num) </p><p><b&g
46、t; { </b></p><p> …… 完成數(shù)據(jù)重新輸入</p><p><b> flag=1;</b></p><p> cout<<"修改成功!你的信息為:"<<endl; </p><p&g
47、t; printone(p);</p><p> resaveLink(top); 儲(chǔ)存數(shù)據(jù)</p><p><b> break; </b></p><p><b> } </b></p><p> p=p->next;
48、 </p><p><b> } </b></p><p> if(!flag) </p><p> cout<<"對(duì)不起,不存在學(xué)生信息"<<endl; </p><p><b> }</b></p><p>
49、e:排序?qū)W生信息(void Compositor(STU *top))</p><p> void Compositor(STU *top) </p><p><b> { </b></p><p> cout<<" 1、按學(xué)號(hào)排序;"<<endl;</p>&l
50、t;p> cout<<" 2、按平均成績(jī)排序; "<<endl;</p><p> cout<<"請(qǐng)選擇: "<<endl;</p><p> STU exchange,*r,*p,*q; int xx;</p><p
51、><b> r=top;</b></p><p> if(r==NULL) </p><p><b> { </b></p><p> cout<<"現(xiàn)在還沒(méi)學(xué)生信息,請(qǐng)先輸入學(xué)生信息"<<endl; </p><p><b>
52、return;</b></p><p><b> } </b></p><p><b> cin>>xx;</b></p><p> if(xx!=1&&xx!=2){</p><p> cout<<"對(duì)不起,請(qǐng)重新輸入!&quo
53、t;<<endl;</p><p><b> return;</b></p><p><b> }</b></p><p> if(xx==1){</p><p> while(r!=NULL) 兩層while循環(huán)實(shí)現(xiàn)排序 </p>
54、;<p><b> { </b></p><p><b> p=r; </b></p><p> q=r->next; </p><p> while(q) 實(shí)現(xiàn)p,q在滿足條件時(shí)數(shù)據(jù)交換</p><p><b> { </
55、b></p><p> if(q->num<p->num) </p><p><b> {</b></p><p> …… 完成數(shù)據(jù)交換</p><p><b> } </b></
56、p><p> q=q->next; </p><p><b> } </b></p><p> r=r->next; </p><p><b> } </b></p><p> cout<<"按學(xué)號(hào)排序后為:"<<
57、endl;</p><p> print(top);</p><p><b> }</b></p><p><b> if(xx==2)</b></p><p><b> {</b></p><p> while(r)
58、 兩層while循環(huán)實(shí)現(xiàn)排序 </p><p><b> { </b></p><p><b> p=r; </b></p><p> q=r->next; </p><p> while(q) 實(shí)現(xiàn)p,q在滿足條件時(shí)數(shù)據(jù)交換&
59、lt;/p><p> { if((q->cj.yuwen+q->cj.shuxue+q->cj.yingyu)/3>(p->cj.yuwen+p->cj.shuxue+p->cj.yingyu)/3) 比較平均分大小</p><p><b> { </b><
60、/p><p> …… 完成數(shù)據(jù)交換</p><p><b> } </b></p><p> q=q->next; </p><p><b> } </b></p><p> r=r
61、->next; </p><p><b> } </b></p><p> cout<<"按平均成績(jī)排序后為:"<<endl;</p><p> print(top);</p><p><b> }</b></p><p
62、><b> }</b></p><p> f:顯示所有學(xué)生信息(print(struct stu *top))</p><p> struct stu *find(struct stu *top,int numToFind)</p><p><b> {</b></p><p> s
63、truct stu *p=top;</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if(p->num==numToFind)</p><p><b> {</b></p><p><b> r
64、eturn p;</b></p><p><b> }</b></p><p> p=p->next;</p><p><b> }</b></p><p> return NULL;</p><p><b> }</b>&l
65、t;/p><p> ?。?)測(cè)試用例(針對(duì)每個(gè)功能設(shè)計(jì)測(cè)試方案,包括輸入數(shù)據(jù)、輸出數(shù)據(jù))</p><p> 針對(duì)每個(gè)功能設(shè)計(jì)一組(最少一個(gè))測(cè)試用例,用來(lái)驗(yàn)證程序的正確性。</p><p> 1: 增加學(xué)生信息(STU *add)</p><p> 2:查詢學(xué)生信息(struct stu *find(struct stu *top,int
66、numToFind))</p><p><b> 查詢1號(hào)數(shù)據(jù):</b></p><p><b> 查詢2號(hào)數(shù)據(jù):</b></p><p><b> 查詢3號(hào)數(shù)據(jù):</b></p><p><b> 查詢4號(hào)數(shù)據(jù):</b></p>&
67、lt;p><b> 查詢5號(hào)數(shù)據(jù):</b></p><p> 3:刪除學(xué)生信息(STU *del(STU*top))</p><p><b> 刪除1號(hào)學(xué)生數(shù)據(jù):</b></p><p> 刪除1號(hào)學(xué)生后所有數(shù)據(jù):</p><p> 4:修改學(xué)生信息(void ChangeByNum
68、ber(STU*top))</p><p><b> 修改1號(hào)數(shù)據(jù):</b></p><p> 修改1號(hào)學(xué)生后數(shù)據(jù):</p><p> 5:排序?qū)W生信息(void Compositor(STU *top))</p><p> 按學(xué)號(hào)由小到大排序:</p><p> 按平均分由大到小排序:
69、</p><p> 6:顯示所有學(xué)生信息(print(struct stu *top)) </p><p> 所有數(shù)據(jù)未經(jīng)修改時(shí):</p><p><b> 數(shù)據(jù)經(jīng)修改后:</b></p><p><b> 課題總結(jié)</b></p><p> 1陳述遇到的問(wèn)題及解決
70、辦法:</p><p> a. 問(wèn)題:學(xué)生信息的增加需要?jiǎng)?chuàng)建鏈表,在創(chuàng)建鏈表時(shí)鏈表多了一個(gè)域,輸入的時(shí)候如果學(xué)號(hào)不滿足條件,不是會(huì)跳出函數(shù)而是會(huì)多保存一條亂碼信息;</p><p> 解決辦法:先構(gòu)建一個(gè)臨時(shí)變量,并進(jìn)行初始化操作,數(shù)據(jù)存入在臨時(shí)變量中,再分配內(nèi)存空間。</p><p> b.問(wèn)題;增加的時(shí)候要以學(xué)號(hào)小于0結(jié)束增加,很不優(yōu)化。</p>
71、;<p> 解決方法:把while(1)死循環(huán)改為for(i=1;i<=a;i++)的循環(huán)可以通過(guò)限定輸入學(xué)生數(shù)來(lái)控制。</p><p> c.問(wèn)題:進(jìn)行刪除和修改后,保存首地址,發(fā)現(xiàn)刪除和修改的信息只是追加在原來(lái)的信息的后面。而之前的信息還存在。</p><p> 解決方法:寫(xiě)一個(gè)resaveLink()函數(shù),把saveLink()函數(shù)中的(PATH, ios:
72、:app|ios::binary)改為(PATH, ofstream::out);明白ios::app|ios::binary的意思是:1、在文件末尾追加記錄;2、以2進(jìn)制保存文件。ofstream::out的意思是:1、如果文件不存在就創(chuàng)建個(gè)文件;2、如果文件存在,則先清空文件內(nèi)容再保存文件。改的主要原因就是要清空文件后保存,以致于滿足每次保存的時(shí)候保存首地址就可以使文件中的學(xué)生信息不重復(fù)。</p><p>
73、 d.問(wèn)題:刪除學(xué)生信息時(shí),刪除不掉,而且如果刪除的是第一個(gè)節(jié)點(diǎn),就會(huì)使返回為空。</p><p> 解決方法:如果是第一個(gè)節(jié)點(diǎn),由于沒(méi)有表頭,不能直接刪除第一個(gè)節(jié)點(diǎn),如果刪除了表頭就丟失了鏈表,所以要先判斷是第一個(gè)節(jié)點(diǎn)的情況。再判斷后面的指針。而且保存的時(shí)候應(yīng)該保存的是新的鏈表。</p><p> e.問(wèn)題:修改信息和排序時(shí)字符型數(shù)組的賦值錯(cuò)誤。</p><p&g
74、t; 解決方法:用strcpy()進(jìn)行賦值。</p><p> f.問(wèn)題:在刪除和修改的時(shí)候,未打印出不存在要修改和刪除的學(xué)生。</p><p> 解決方法;用int flag=0做跟蹤,未執(zhí)行操作flag的值不變,執(zhí)行操作flag=1;那么if(!flag)就可以打印出是否刪除和修改信息的情況。</p><p><b> 2:有何收獲</b
75、></p><p> a.熟悉掌握了鏈表的增加,查找,刪除,以及排序。</p><p> b.糾正對(duì)break用法的錯(cuò)誤理解,break只用在兩個(gè)地方,一個(gè)是case,一個(gè)是循環(huán)的跳出。</p><p> c.熟悉循環(huán)在程序中的應(yīng)用,在增加,查找,排序以及界面的顯示等都用到了循環(huán)。</p><p> d.學(xué)會(huì)應(yīng)用函數(shù)的調(diào)用,以及
76、主函數(shù)中用switch函數(shù)做多分支選擇,使程序簡(jiǎn)潔,改動(dòng)方便。</p><p> e.存在的不足之處: 查找和排序都采用遍歷的方式(缺點(diǎn):耗時(shí)長(zhǎng),時(shí)間復(fù)雜度高達(dá)n的平方)而且在排序的時(shí)候采用了兩層while循環(huán),耗時(shí)及復(fù)雜度高??梢圆捎每焖倥判蚧蚨雅判颉?lt;/p><p><b> 使用說(shuō)明書(shū)</b></p><p> 用Microsoft
77、 Visual Studio 2005 打開(kāi)該程序文件;</p><p><b> 編譯運(yùn)行程序;</b></p><p> 根據(jù)頁(yè)面提示及查詢需要對(duì)應(yīng)選擇操作類型,進(jìn)入子程序操作;</p><p> 注意:如果第一次運(yùn)行程序,應(yīng)先進(jìn)行程序存儲(chǔ)否則程序會(huì)報(bào)錯(cuò);對(duì)不需要的數(shù)據(jù)應(yīng)先進(jìn)行刪除處理,否則在下面的數(shù)據(jù)處理中原數(shù)據(jù)還會(huì)存在系統(tǒng)中。&l
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生成績(jī)查詢系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息顯示與查詢系統(tǒng)設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息顯示與查詢系統(tǒng)設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)報(bào)告
- 管理信息系統(tǒng)課程設(shè)計(jì)報(bào)告---班級(jí)學(xué)生成績(jī)查詢系統(tǒng)
- 學(xué)生信息查詢系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生信息查詢管理系統(tǒng)
- vfp課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)查詢系統(tǒng)
- 學(xué)生信息查詢系統(tǒng)課程設(shè)計(jì)說(shuō)明書(shū)
- 學(xué)生信息課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 《c語(yǔ)言程序設(shè)計(jì)》課程設(shè)計(jì)報(bào)告-招生信息查詢系統(tǒng)
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告 (2)
- 學(xué)生選課信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論