版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 學(xué)生成績管理系統(tǒng)課程設(shè)計</p><p><b> 一、課程設(shè)計目的:</b></p><p> 本課程設(shè)計為學(xué)生提供了一個既動手又動腦,自學(xué),查資料,獨立實踐的機會。將本學(xué)期課本上的理論知識和實際有機的結(jié)合起來,鍛煉學(xué)生實際分析問題和解決問題的能力,提高學(xué)生適應(yīng)實際、實踐編程的能力,使對C++系統(tǒng)編程有一個大致的了解。</p>
2、<p><b> 二、需求分析:</b></p><p> 本系統(tǒng)設(shè)計者力求根據(jù)學(xué)生成績管理的需要,而建立一個“學(xué)生成績管理系統(tǒng)”,以方便對成績的各項管理操作。開發(fā)目的如:①能對成績進行錄入和輸出;②能根據(jù)學(xué)生的學(xué)號,姓名,成績來查詢該學(xué)生的成績;③能根據(jù)學(xué)號對學(xué)生信息進行修改;④能刪除學(xué)生的信息;⑤能插入學(xué)生信息;⑥能計算每個學(xué)生的總分并排序。</p><
3、;p><b> 三、概要設(shè)計</b></p><p><b> 1、設(shè)計說明</b></p><p> ?。?)定義一個結(jié)構(gòu)體,其中的成員如下:</p><p> ?。?)預(yù)先錄入的數(shù)據(jù)如下表:</p><p> 2、程序流圖(見附圖)</p><p> 3、部
4、分程序及其說明:</p><p> main ():此函數(shù)主要是調(diào)用錄入、統(tǒng)計等函數(shù)對成績表進行處理;通過使用switch函數(shù)判斷用戶所選擇的序號,再進入相應(yīng)的函數(shù)。</p><p> InitList_Sq():用于開辟空間,用來存放數(shù)據(jù)。</p><p> CreateList_Sq():用來錄入學(xué)生信息。</p><p> Ou
5、tputList_Sq():用來輸出所有學(xué)生信息。</p><p> Find():按不同方式進行查詢,當(dāng)無法找到與輸入的學(xué)號相匹配的記錄時顯示出錯信息。</p><p> Modifay():按學(xué)號修改學(xué)生信息。</p><p> DeleteList_Sq ():按學(xué)號進行刪除操作,當(dāng)輸入的學(xué)號不匹配時就顯示出錯信息。</p><p&g
6、t; InsertList_Sq ():此函數(shù)用于插入學(xué)生信息。</p><p> Sort_Sq ():用于對各個學(xué)生的總成績進行排序。</p><p><b> 四、詳細設(shè)計:</b></p><p> #include"iostream"</p><p> using namespac
7、e std;</p><p> #defineLIST_INIT_SIZE 100</p><p> #define LISTINCREMENT 10</p><p> #define OK 1 </p><p> #defineERROR 0</p><p> typedef int Status;&l
8、t;/p><p> typedef struct</p><p><b> {</b></p><p> long num;</p><p> char name[20];</p><p> float computer;</p><p> float
9、math;</p><p> float english;</p><p><b> }Std;</b></p><p> typedef struct</p><p><b> {</b></p><p> Std *elem;</p><p
10、> int length;</p><p> int listsize;</p><p><b> }SqList;</b></p><p> //-----------------------初始化----------------------------</p><p> Status InitList
11、_Sq(SqList &L)</p><p><b> {</b></p><p> L.elem=(Std *)malloc(LIST_INIT_SIZE*sizeof(Std));</p><p> if(!L.elem) return ERROR;</p><p> L.length=0;</
12、p><p> L.listsize=LIST_INIT_SIZE;</p><p> return OK;</p><p><b> }</b></p><p> //---------------------創(chuàng)建---------------------------</p><p> St
13、atus CreateList_Sq(SqList &L,int n)</p><p><b> {</b></p><p> InitList_Sq(L);int i;</p><p> L.length=n;</p><p> cout<<"***學(xué)號*****姓名*****計算
14、機成績*****數(shù)學(xué)成績*****英語成績***"<<endl;</p><p> for(i=0;i<L.length;i++)</p><p><b> {</b></p><p> cin>>L.elem[i].num;</p><p> cin>>L.e
15、lem[i].name;</p><p> cin>>L.elem[i].computer;</p><p> cin>>L.elem[i].math;</p><p> cin>>L.elem[i].english;</p><p><b> }</b></p>
16、<p> return OK;</p><p><b> }</b></p><p> //------------------------輸出-----------------------------</p><p> Status OutputList_Sq(SqList L)</p><p>&
17、lt;b> {</b></p><p><b> int i;</b></p><p> for(i=0;i<L.length;i++)</p><p><b> {</b></p><p> cout<<" "<<L
18、.elem[i].num<<" "<<L.elem[i].name<<" "<<L.elem[i].computer<<" "<<L.elem[i].math<<" "<<L.elem[i].english<<"
19、; "<<endl;</p><p><b> }</b></p><p> return OK;</p><p><b> }</b></p><p> //-----------------按學(xué)號查找學(xué)生信息------------------------<
20、;/p><p> Status Find1(SqList L)</p><p><b> {</b></p><p> long n; int i;</p><p> cout<<"請輸入您要查找的學(xué)號:";</p><p><b> c
21、in>>n;</b></p><p><b> if(n<=0)</b></p><p> cout<<"輸入有誤!請重新輸入"<<endl;</p><p><b> else</b></p><p><b>
22、; {</b></p><p> for(i=0;i<L.length;++i)</p><p><b> {</b></p><p> if(n==L.elem[i].num)</p><p><b> {</b></p><p> cout&
23、lt;<"該同學(xué)信息為:"<<endl;</p><p> cout<<L.elem[i].num<<" "<<L.elem[i].name<<" "<<L.elem[i].computer<<" "<<L.elem[i].math
24、<<" "<<L.elem[i].english<<endl;</p><p> cout<<"按“#”退出查找程序!"<<endl;</p><p> return OK;</p><p><b> break;</b></p>
25、;<p><b> }</b></p><p><b> }</b></p><p> if(i>=L.length)</p><p> cout<<"不存在此學(xué)號!"<<endl;</p><p><b> }&l
26、t;/b></p><p> return OK;</p><p><b> }</b></p><p> //----------------按姓名查找學(xué)生信息------------------------</p><p> Status Find2(SqList L)</p><p
27、><b> {</b></p><p> char newname[20]; int i;</p><p> cout<<"請輸入您要查找的姓名:";</p><p> cin>>newname;</p><p> for(i=0;i<L.lengt
28、h;++i)</p><p><b> {</b></p><p> if(strcmp(newname,L.elem[i].name)==0)</p><p><b> {</b></p><p> cout<<"該同學(xué)信息為:"<<endl;&
29、lt;/p><p> cout<<L.elem[i].num<<" "<<L.elem[i].name<<" "<<L.elem[i].computer<<" "<<L.elem[i].math<<" "<<L.elem[i].e
30、nglish<<endl;</p><p> cout<<"按“#”退出查找程序!"<<endl;</p><p> return OK;</p><p><b> break;</b></p><p><b> }</b></p
31、><p><b> }</b></p><p> if(i>=L.length) </p><p> cout<<"沒有這個姓名"<<endl;</p><p> return OK;</p><p><b> }</b>
32、;</p><p> //----------------按計算機成績查找學(xué)生信息------------------------</p><p> Status Find3(SqList L)</p><p><b> {</b></p><p> float s;int i;</p><p
33、> cout<<"請輸入您要查找的計算機成績:";</p><p><b> cin>>s;</b></p><p> for(i=0;i<L.length;++i)</p><p><b> {</b></p><p> if(s=
34、=L.elem[i].computer)</p><p><b> {</b></p><p> cout<<"該同學(xué)信息為:"<<endl;</p><p> cout<<L.elem[i].num<<" "<<L.elem[i].nam
35、e<<" "<<L.elem[i].computer<<" "<<L.elem[i].math<<" "<<L.elem[i].english<<endl;</p><p> cout<<"按“#”退出查找程序!"<<endl
36、;</p><p> return OK;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(i>=L.length) </p>
37、<p> cout<<"沒有這個成績"<<endl; </p><p> return OK;</p><p><b> }</b></p><p> //----------------------查找------------------------</p>
38、<p> void Find(SqList L)</p><p><b> {</b></p><p><b> char a;</b></p><p> cout<<"****1按學(xué)號查找****"<<endl;</p><p>
39、cout<<"****2按姓名查找****"<<endl;</p><p> cout<<"****3按計算機成績查找****"<<endl;</p><p><b> int t=1;</b></p><p><b> while(t)&l
40、t;/b></p><p><b> {</b></p><p> cout<<"請輸入序號:"<<endl;</p><p><b> cin>>a;</b></p><p><b> switch(a)</b&
41、gt;</p><p><b> {</b></p><p><b> case '1':</b></p><p> Find1(L);break;</p><p><b> case '2':</b></p><p&
42、gt; Find2(L);break;</p><p><b> case '3':</b></p><p> Find3(L);break;</p><p><b> case '#':</b></p><p> t=0;break;</p>
43、<p><b> default:</b></p><p> cout<<"請按照提示輸入正確的序號(#結(jié)束)"<<endl;</p><p><b> }</b></p><p><b> }</b></p><p&
44、gt;<b> }</b></p><p> //-----------------------修改信息-------------------------</p><p> Status modifay(SqList &L)</p><p><b> {</b></p><p>
45、long n,num;int i;char name[20];float computer,math,english;</p><p> cout<<"請輸入要修改的學(xué)號:"<<endl;</p><p><b> cin>>n;</b></p><p> for(i=0;i<
46、L.length;i++)</p><p> if(L.elem[i].num==n)</p><p><b> {</b></p><p> cout<<"請重新輸入該生信息:" <<endl;</p><p><b> cin>>num;<
47、;/b></p><p> cin>>name;</p><p> cin>>computer;</p><p> cin>>math;</p><p> cin>>english;</p><p> L.elem[i].num=num;</p>
48、;<p> strcpy(L.elem[i].name,name);</p><p> L.elem[i].computer=computer;</p><p> L.elem[i].math=math;</p><p> L.elem[i].english=english; </p><p><b> }&
49、lt;/b></p><p> cout<<"修改后班級學(xué)生信息為:"<<endl;</p><p> OutputList_Sq(L);</p><p> return OK;</p><p><b> }</b></p><p> /
50、/--------------------刪除某學(xué)號學(xué)生信息----------------------</p><p> Status DeleteList_Sq(SqList &L)</p><p><b> {</b></p><p><b> int i,j;</b></p><p
51、><b> long num;</b></p><p> cout<<"請輸入要刪除學(xué)生的學(xué)號:";</p><p> cin>>num;</p><p> for(i=0;i<L.length;i++)</p><p> if(num==L.elem[
52、i].num)</p><p><b> {</b></p><p> cout<<"該學(xué)生所有信息為:";</p><p> cout<<L.elem[i].num<<" "<<L.elem[i].name<<" "&
53、lt;<L.elem[i].computer<<" "<<L.elem[i].math<<" "<<L.elem[i].english<<endl;</p><p> for(j=i;j<L.length-1;j++)</p><p><b> {</b>
54、;</p><p> L.elem[j].num=L.elem[j+1].num;</p><p> strcpy(L.elem[j].name,L.elem[j+1].name);</p><p> L.elem[j].computer=L.elem[j+1].computer;</p><p> L.elem[j].math=L.
55、elem[j+1].math;</p><p> L.elem[j].english=L.elem[j+1].english; </p><p><b> }</b></p><p> L.length--;</p><p> cout<<"刪除后班級信息為:"<<en
56、dl;</p><p> OutputList_Sq(L);</p><p> return OK;</p><p><b> }</b></p><p> cout<<"此號不存在!"<<endl;</p><p> return ERROR
57、;</p><p><b> }</b></p><p> //--------------------插入新學(xué)生信息--------------------------</p><p> Status InsertList_Sq(SqList &L)</p><p> { int i,e; long
58、 num; char name[20]; float computer,math,english;</p><p> cout<<"在第e個位置插入新成員:"<<endl;</p><p><b> cin>>e;</b></p><p> for(i=L.length-1;i>
59、;=e-1;i--)</p><p><b> { </b></p><p> L.elem[i+1].num=L.elem[i].num;</p><p> strcpy(L.elem[i+1].name,L.elem[i].name);</p><p> L.elem[i+1].computer=L.el
60、em[i].computer;</p><p> L.elem[i+1].math=L.elem[i].math;</p><p> L.elem[i+1].english=L.elem[i].english; </p><p><b> }</b></p><p> cout<<"新插入同
61、學(xué)信息為:"<<endl;</p><p><b> cin>>num;</b></p><p> L.elem[e-1].num=num;</p><p> cin>>name;</p><p> strcpy(L.elem[e-1].name,name); <
62、;/p><p> cin>>computer;</p><p> L.elem[e-1].computer=computer;</p><p> cin>>math;</p><p> L.elem[e-1].math=math;</p><p> cin>>english;&
63、lt;/p><p> L.elem[e-1].english=english;</p><p> ++L.length;</p><p> cout<<"插入后班級學(xué)生信息為:"<<endl;</p><p> OutputList_Sq(L); </p><p> r
64、eturn OK;</p><p><b> }</b></p><p> //-------------------按總分排序-----------------------</p><p> Status Sort_Sq(SqList L)</p><p><b> {</b></p
65、><p> int i,j,n=L.length;</p><p> float s[100],t;</p><p> for(i=0;i<n;i++)</p><p><b> { </b></p><p><b> s[i]=0;</b></p>
66、<p> s[i]+=L.elem[i].computer;</p><p> s[i]+=L.elem[i].math;</p><p> s[i]+=L.elem[i].english;</p><p><b> }</b></p><p> for(i=0;i<n;i++)</p
67、><p> for(j=0;j<n-i;j++)</p><p> if(s[j]<s[j+1])</p><p><b> {</b></p><p> t=s[j];s[j]=s[j+1];s[j+1]=t;</p><p><b> }</b><
68、/p><p> cout<<"班級總分降序排序結(jié)果為:"<<endl;</p><p> for(i=0;i<n;i++)</p><p><b> {</b></p><p> cout<<s[i]<<" "; <
69、;/p><p><b> }</b></p><p> cout<<"班級最高分為:"<<s[0]<<endl;</p><p> cout<<"班級最低分為:"<<s[n-1]<<endl;</p><p>
70、; return OK;</p><p><b> }</b></p><p> void main()</p><p><b> {</b></p><p> cout<<"**********************************************
71、********"<<endl;</p><p> cout<<"********************學(xué)生成績管理系統(tǒng)******************"<<endl;</p><p> cout<<"**********************************************
72、********"<<endl;</p><p> cout<<"*********************************************歡迎使用!"<<endl;</p><p> cout<<"************************************制作者:**
73、*********"<<endl;</p><p> cout<<"********郝文靜,郭曉燕,安忠武,宋永成,周鵬,侯曉飛*******"<<endl;</p><p> cout<<"******************************************************
74、"<<endl;</p><p> cout<<"0*************************************************提示"<<endl;</p><p> cout<<"1***********************************************
75、**查找"<<endl;</p><p> cout<<"2*************************************************修改"<<endl;</p><p> cout<<"3*******************************************
76、******刪除"<<endl;</p><p> cout<<"4*************************************************插入"<<endl;</p><p> cout<<"5***************************************
77、**********排序"<<endl;</p><p> int n; SqList L; char select;</p><p> cout<<"該班級學(xué)生總數(shù)為:";</p><p><b> cin>>n;</b></p><p>
78、 CreateList_Sq(L,n);</p><p> OutputList_Sq(L);</p><p><b> int t=1;</b></p><p><b> while(t)</b></p><p><b> {</b></p><p
79、> cout<<"請選擇要進行的操作(0—5):"<<endl;</p><p> cin>>select;</p><p> switch(select)</p><p><b> {</b></p><p><b> case '
80、;0':</b></p><p> cout<<"********微型學(xué)生成績管理程序********"<<endl;</p><p> cout<<"**************0 提示**************"<<endl;</p><p>
81、 cout<<"**************1 查找**************"<<endl;</p><p> cout<<"**************2 修改**************"<<endl;</p><p> cout<<"*************
82、*3 刪除**************"<<endl;</p><p> cout<<"**************4 插入**************"<<endl;</p><p> cout<<"**************5 排序**************"<&
83、lt;endl;</p><p><b> break;</b></p><p><b> case '1':</b></p><p> Find(L);break;</p><p><b> case'2':</b></p>
84、<p> modifay(L);break;</p><p> case '3': </p><p> DeleteList_Sq(L);break;</p><p> case '4': </p><p> InsertList_Sq(L);break;</p><
85、p> case '5': </p><p> Sort_Sq(L);break;</p><p><b> case '#':</b></p><p> t=0;break;</p><p><b> default:</b></p>&
86、lt;p> cout<<"請按照提示輸入正確序號(#結(jié)束)"<<endl;</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p>&l
87、t;b> }</b></p><p><b> 五 、調(diào)試分析</b></p><p> 1,剛開始時忽略了一些變量參數(shù)的標識“&”,使調(diào)試程序時費時不少。今后應(yīng)重視確定參數(shù)的變量和賦值屬性的區(qū)分和標識。</p><p> 2,在調(diào)試構(gòu)成中有的地方誤用“break”,使得執(zhí)行時有的結(jié)果沒有輸出。</p&g
88、t;<p> 3,在調(diào)試過程中出現(xiàn)for循環(huán)中跳轉(zhuǎn)次數(shù)不正確,使得執(zhí)行出錯。</p><p> 4,在程序中未寫“return OK”,使得執(zhí)行時執(zhí)行結(jié)果沒有輸出。</p><p> 5,查找程序存在局限性,在編程時未考慮到姓名及計算機成績相同的情況。</p><p><b> 六 、用戶手冊</b></p>
89、<p> 1,本程序的運行環(huán)境為windows系統(tǒng)。</p><p> 2,進入演示程序后,即顯示文本方式的用戶界面,可隨機輸入學(xué)生信息(學(xué)號,姓名,3科成績)。</p><p> 3,輸出學(xué)生信息后,可在0~5中選擇要執(zhí)行的操作(0:輸出提示信息;1:查找;2:修改;3:刪除;4:插入;5:排序)。</p><p> 4,在1(查找)中,可選擇
90、多種查找方式:1:按學(xué)號查找2:按姓名查找3:按計算機成績查找</p><p> 5,輸入‘#’退出程序。</p><p><b> 七、運行結(jié)果圖</b></p><p><b> 八、課程設(shè)計總結(jié)</b></p><p> 通過此次學(xué)生成績管理系統(tǒng)的設(shè)計,使我對C++程序設(shè)計有了深一步的
91、了解,對系統(tǒng)設(shè)計及開發(fā)有了比較全面的思路。首先,通過對系統(tǒng)進行需求分析,確定各個功能函數(shù);然后一個個具體地對他們進行編程,并且仔細檢查看是否有錯;在完成這一步之后才開始構(gòu)造主函數(shù),通過主函數(shù)把各個功能函數(shù)聯(lián)系起來,編譯修改錯誤和不足之處</p><p> 在實際編程過程中會遇到很多不同的錯誤,有時候是一些很明顯很細節(jié)的語法錯誤,這些可以通過編譯來查找錯誤的所在,然而那些并不明顯難以查找的隱性錯誤卻真讓人頭痛,沒
92、有辦法只好利用斷點調(diào)試來一步步檢查代碼中的錯誤,這樣為了找一個錯誤花費了大量的時間,但是找出錯誤之后的感覺卻是非?!八钡?。同時我翻閱了大量的書籍,盡管大部分書都只是翻了一部分頁碼而已,卻給了我一個非常有價值的經(jīng)驗。</p><p> 總之,此次系統(tǒng)設(shè)計給我們提供了一個既動手又動腦、自學(xué)、獨立實踐的機會,使我們養(yǎng)成了勤翻閱各種相關(guān)資料的習(xí)慣,將書本上的理論知識和實際有機地結(jié)合起來,鍛煉了實際分析問題和解決問題的
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生成績管理系統(tǒng)課程設(shè)計報告 (2)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 課程設(shè)計——學(xué)生成績管理系統(tǒng)
- 課程設(shè)計---學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 學(xué)生成績管理系統(tǒng) 課程設(shè)計
- 課程設(shè)計--學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- 課程設(shè)計-- 學(xué)生成績管理系統(tǒng)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計
- c語言課程設(shè)計---學(xué)生成績管理系統(tǒng) (2)
- c語言課程設(shè)計學(xué)生成績管理系統(tǒng) (2)
- c語言課程設(shè)計----學(xué)生成績管理系統(tǒng) (2)
- c語言課程設(shè)計--學(xué)生成績管理系統(tǒng) (2)
- 學(xué)生成績信息管理系統(tǒng) 課程設(shè)計2
- c語言課程設(shè)計--學(xué)生成績管理系統(tǒng) (2)
- 學(xué)生成績管理系統(tǒng)課程設(shè)計9
評論
0/150
提交評論