版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)</b></p><p> 題 目: 學(xué)生成績(jī)管理問題 </p><p> 學(xué) 院: </p><p> 班 級(jí): 數(shù)學(xué)11-1班 </p><p> 學(xué) 生 姓 名:
2、 </p><p> 學(xué) 生 學(xué) 號(hào): </p><p> 指 導(dǎo) 教 師: </p><p> 2012年 12月 5日</p><p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p><b> 摘要</b&
3、gt;</p><p> 針對(duì)學(xué)生成績(jī)管理問題,學(xué)習(xí)了數(shù)據(jù)結(jié)構(gòu)以后,嘗試做了學(xué)生成績(jī)管理系統(tǒng)。學(xué)生成績(jī)管理是學(xué)校教務(wù)管理的重要組成部分,其處理信息量很大,本設(shè)計(jì)是對(duì)學(xué)生的成績(jī)管理做一個(gè)簡(jiǎn)單的模擬。</p><p> 本文將利用數(shù)據(jù)結(jié)構(gòu)所學(xué)知識(shí),對(duì)學(xué)生成績(jī)管理系統(tǒng)做了嘗試,這個(gè)程序的主要功能是輸入學(xué)生的學(xué)號(hào)、姓名對(duì)其進(jìn)行存儲(chǔ),在存儲(chǔ)后可以對(duì)學(xué)生的成績(jī)按學(xué)號(hào)和姓名進(jìn)行查尋。該系統(tǒng)具有存貯學(xué)
4、生數(shù)據(jù),按學(xué)號(hào)、姓名查詢,列出學(xué)生成績(jī)和統(tǒng)計(jì)功能。使用方法:系統(tǒng)輸入數(shù)據(jù)后,將在當(dāng)前目錄中建立一個(gè)名為date文件,用于保存輸入的數(shù)據(jù)。學(xué)號(hào)輸入只能用數(shù)字輸入,并且學(xué)號(hào)只能是10位。姓名輸入符合中國(guó)人的姓名,只能用中文,且最長(zhǎng)為5個(gè)漢字。</p><p> 《學(xué)生成績(jī)管理系統(tǒng)》是對(duì)學(xué)生的成績(jī)進(jìn)行修改和管理,而且方便快速,這個(gè)程序雖然簡(jiǎn)單,但是可以作為老師的輔助軟件,對(duì)學(xué)生的各種成績(jī)進(jìn)行管理。</p>
5、<p> 通過課程設(shè)計(jì)培養(yǎng)了我的動(dòng)手能力以及綜合運(yùn)用所學(xué)的數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)理論,基礎(chǔ)知識(shí),基本技能,進(jìn)行程序分析和程序開發(fā),提高在實(shí)際開發(fā)中解決問題的能力,達(dá)到了能夠利用數(shù)據(jù)結(jié)構(gòu)結(jié)合C++語言進(jìn)行應(yīng)用程序的規(guī)劃,分析,設(shè)計(jì)和實(shí)施,更能進(jìn)一步使我對(duì)這門語言有深刻的理解和更好的得到鞏固,更能對(duì)我所學(xué)的知識(shí)得到檢驗(yàn)。</p><p> 由于是第一次用C++編寫,所以水平有限此系統(tǒng)還有許多不夠完整和嚴(yán)密性,
6、敬請(qǐng)老師指正!</p><p> 關(guān)鍵詞 學(xué)生成績(jī)管理,數(shù)組,單鏈表</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> 1 課程設(shè)計(jì)題目1</p><p><b> 2 需求分析1</b&g
7、t;</p><p><b> 3 概要設(shè)計(jì)1</b></p><p><b> 4 詳細(xì)設(shè)計(jì)1</b></p><p> 5 用戶使用說明20</p><p><b> 6 測(cè)試結(jié)果21</b></p><p><b> 7
8、 總結(jié)23</b></p><p><b> 參考文獻(xiàn)23</b></p><p><b> 學(xué)生成績(jī)管理問題</b></p><p><b> 1. 課程設(shè)計(jì)題目</b></p><p> 學(xué)生成績(jī)管理是學(xué)校教務(wù)管理的重要組成部分,其處理信息量很大,
9、本設(shè)計(jì)是對(duì)學(xué)生的成績(jī)管理做一個(gè)簡(jiǎn)單的模擬,用菜單選擇操作方式完成下列主要功能:</p><p> (1) 登記學(xué)生成績(jī);</p><p> (2) 查詢學(xué)生成績(jī);</p><p> (3) 插入學(xué)生成績(jī);</p><p> (4) 刪除學(xué)生成績(jī); </p><p> 要求對(duì)每個(gè)功能分別用函數(shù)實(shí)現(xiàn)。</p
10、><p><b> 2. 需求分析</b></p><p> (1) 輸入數(shù)據(jù)為整型,學(xué)生信息不超過100條;</p><p> (2) 輸出數(shù)據(jù)為整型;</p><p> (3) 該系統(tǒng)可以實(shí)現(xiàn)學(xué)生信息增加,刪除,查找,排序,保存功能。</p><p> 3. 概要設(shè)計(jì) </p&
11、gt;<p> 為了實(shí)現(xiàn)以上功能,可從3個(gè)方面著手設(shè)計(jì)。</p><p> (1) 主界面設(shè)計(jì),設(shè)計(jì)一個(gè)含有多個(gè)菜單項(xiàng)的主控菜單。</p><p> (2) 存儲(chǔ)單元設(shè)計(jì)</p><p> (3) 系統(tǒng)功能設(shè)計(jì)</p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p>
12、 主要包括各部分函數(shù)功能,說明及流程圖,源程序。</p><p> (1) 主函數(shù)int main()主要顯示主菜單;</p><p> 信息增加模塊void cla::sadd()主要用于學(xué)生成績(jī)的錄入;</p><p> 信息保存模塊void ssave()主要用于學(xué)生成績(jī)的保存;</p><p> 信息刪除模塊void srem
13、ove()主要用于信息刪除;</p><p> 信息排序模塊void staxis(),可根據(jù)不同情況進(jìn)行排序; </p><p> 信息讀取模塊void sload()可以顯示主菜單;</p><p> 信息查詢模塊void ssearch()可根據(jù)學(xué)號(hào)姓名進(jìn)行查找;</p><p> 信息修改模塊void samend()可用于信
14、息修改。</p><p> (2) 成績(jī)管理系統(tǒng)重要函數(shù)調(diào)用調(diào)用關(guān)系如圖所示。</p><p> 其中成績(jī)排序模塊包括學(xué)號(hào)排序及數(shù)學(xué),語文,英語及總成績(jī)排序。 </p><p> 成績(jī)查詢模塊可根據(jù)學(xué)號(hào),姓名查詢。</p><p> (3) 源程序 </p><p> #include<ios
15、tream></p><p> #include<iomanip> </p><p> #include<fstream> </p><p> #include<string> </p><p> using namespace std; </p><p> #de
16、fine max 100; </p><p> class student </p><p><b> { </b></p><p><b> public: </b></p><p> student *next; </p><p><b> publi
17、c: </b></p><p> string name;//姓名 </p><p> long num;//學(xué)號(hào) </p><p> float x,y,z;//數(shù)學(xué),語文,英語 </p><p> float AA;//總分 </p><p> void play()</p>&
18、lt;p> { cout<<name<<"學(xué)生的學(xué)號(hào)是"<<num<<",數(shù)學(xué):"<<x<<",語文:"<<y<<",英 語:"<<z<<",總分:"<<AA<<endl;}; <
19、;/p><p> student(string sname,long snum,int sx,int sy,int sz) </p><p><b> { </b></p><p> name=sname; </p><p> num=snum; </p><p><b> x=s
20、x; </b></p><p><b> y=sy; </b></p><p><b> z=sz; </b></p><p><b> } </b></p><p><b> }; </b></p><p>
21、 class cla </p><p><b> { </b></p><p><b> public: </b></p><p> cla()//構(gòu)造函數(shù) </p><p><b> { </b></p><p><b> stu
22、=0; </b></p><p><b> sload(); </b></p><p><b> } </b></p><p> ~cla()//析構(gòu)函數(shù) </p><p><b> { </b></p><p> student
23、*p; </p><p><b> p=stu; </b></p><p><b> while(p) </b></p><p><b> { </b></p><p> p=p->next; </p><p> delete stu;
24、</p><p><b> stu=p; </b></p><p><b> } </b></p><p><b> stu=0; </b></p><p><b> } </b></p><p> void sadd()
25、; //添加 </p><p> void sremove(); //刪除 </p><p> void samend(); //修改 </p><p> void ssearch(); //查詢 </p><p> void staxis(); //排序 </p><p> void ssave(); //
26、保存 </p><p> void sload(); //讀取 </p><p><b> //排序函數(shù) </b></p><p> void pxh(); //按學(xué)號(hào)排序 </p><p> void psx(); //按數(shù)學(xué)成績(jī)排序 </p><p> void pyw(); //
27、按語文成績(jī)排序 </p><p> void pyy(); //按英語成績(jī)排序 </p><p> void pAA(); //按總成績(jī)排序 </p><p><b> private: </b></p><p> student *stu; //頭接點(diǎn) </p><p><b>
28、; }; </b></p><p> void cla::sadd()//添加 </p><p><b> { </b></p><p> student *q; </p><p> string name1; </p><p> long num1; </p>
29、<p> int x1,y1,z1; </p><p> system("cls"); </p><p> cout<<"\n **增加的學(xué)生** \n"<<endl; </p><p> cout<<"請(qǐng)輸入學(xué)生的(中間用空格間隔) "<&l
30、t;endl; </p><p> cout<<"姓名 學(xué)號(hào) 數(shù)學(xué)成績(jī) 語文成績(jī) 英語成績(jī):"<<endl; </p><p> cin>>name1>>num1>>x1>>y1>>z1; </p><p> q=new student(name1,num1
31、,x1,y1,z1); </p><p> q->next=0; </p><p> q->AA=x1+y1+z1; </p><p><b> if(stu) </b></p><p><b> { </b></p><p> student *t;
32、</p><p><b> t=stu; </b></p><p> if(t->num==num1) </p><p><b> { </b></p><p> cout<<"學(xué)號(hào)已存在,請(qǐng)重新輸入"<<endl; </p>
33、<p><b> return; </b></p><p><b> } </b></p><p> while(t->next) </p><p><b> { </b></p><p> if(t->num==num1) </p>
34、<p><b> { </b></p><p> cout<<"學(xué)號(hào)已存在,請(qǐng)重新輸入"<<endl; </p><p><b> return; </b></p><p><b> } </b></p><p>
35、; t=t->next; </p><p><b> } </b></p><p> t->next=q; </p><p><b> } </b></p><p><b> else </b></p><p><b>
36、 { </b></p><p><b> stu=q; </b></p><p><b> } </b></p><p> cout<<"輸入完畢"<<endl; </p><p><b> } </b></
37、p><p> void cla::sremove()//刪除 </p><p><b> { </b></p><p> system("cls"); </p><p> int num1; </p><p> cout<<"\n** 刪除學(xué)生信息
38、**\n"; </p><p> cout<<"請(qǐng)輸入想要?jiǎng)h除學(xué)生的學(xué)號(hào):"; </p><p> cin>>num1; </p><p> //查找要?jiǎng)h除的結(jié)點(diǎn) </p><p> student *p1,*p2; </p><p><b>
39、p1=stu; </b></p><p> while(p1) </p><p><b> { </b></p><p> if(p1->num==num1) </p><p><b> break; </b></p><p><b>
40、else </b></p><p><b> { </b></p><p><b> p2=p1; </b></p><p> p1=p1->next; </p><p><b> } </b></p><p><b>
41、; } </b></p><p><b> //刪除結(jié)點(diǎn) </b></p><p> if(p1!=NULL)//若找到結(jié)點(diǎn),則刪除 </p><p><b> { </b></p><p> p1->play(); </p><p> cout
42、<<"確定刪除嗎?[Y/N]"<<endl; </p><p> char c;cin>>c; </p><p> if(toupper(c)!='Y') return; </p><p> if(p1==stu) //若要?jiǎng)h除的結(jié)點(diǎn)是第一個(gè)結(jié)點(diǎn) </p><p>
43、<b> { </b></p><p> stu=p1->next; </p><p> delete p1; </p><p><b> } </b></p><p> else //若要?jiǎng)h除的結(jié)點(diǎn)是后續(xù)結(jié)點(diǎn) </p><p><b> { &l
44、t;/b></p><p> p2->next=p1->next; </p><p> delete p1; </p><p><b> } </b></p><p> cout<<"找到學(xué)號(hào)為"<<num1<<"的學(xué)生,并刪除\
45、n"; </p><p><b> } </b></p><p> else //未找到結(jié)點(diǎn) </p><p> cout<<"未找到想要?jiǎng)h除的學(xué)生!\n"; </p><p><b> } </b></p><p> vo
46、id cla::samend()//修改 </p><p><b> { </b></p><p> system("cls"); </p><p> long num1; </p><p> cout<<"\n** 修改學(xué)生信息 **\n"; </p&g
47、t;<p> cout<<"輸入要修改學(xué)生的學(xué)號(hào)"; </p><p> cin>>num1; </p><p> //查找要修改的結(jié)點(diǎn) </p><p> student *p1,*p2; </p><p><b> p1=stu; </b></
48、p><p> while(p1) </p><p><b> { </b></p><p> if(p1->num==num1) </p><p><b> break; </b></p><p><b> else </b></p&g
49、t;<p><b> { </b></p><p><b> p2=p1; </b></p><p> p1=p1->next; </p><p><b> } </b></p><p><b> } </b></p&g
50、t;<p> if(p1!=NULL) </p><p><b> { </b></p><p> cout<<"學(xué)號(hào)是"<<num1<<"的學(xué)生的信息"<<endl; </p><p> cout<<"姓名 &q
51、uot;<<p1->name<<"數(shù)學(xué)"<<p1->x<<"語文"<<p1->y<<"英語"<<p1->z<<endl; </p><p> cout<<"請(qǐng)輸入修改后的信息:姓名 數(shù)學(xué)成績(jī) 語文成績(jī) 英語成績(jī)&
52、quot;<<endl; </p><p> cin>>p1->name>>p1->x>>p1->y>>p1->z; </p><p> p1->AA=p1->x+p1->y+p1->z; </p><p> cout<<"修改成功
53、"<<endl; </p><p><b> } </b></p><p> else //未找到接點(diǎn) </p><p> cout<<"未找到!\n"; </p><p><b> } </b></p><p>
54、 void cla::ssearch()//查詢 </p><p><b> { </b></p><p> system("cls"); </p><p> cout<<"\n** 查詢學(xué)生信息 **\n"<<endl; </p><p> co
55、ut<<"請(qǐng)輸入查詢方式:"<<endl; </p><p> cout<<"1.按學(xué)號(hào)查詢"<<endl; </p><p> cout<<"2.按姓名查詢"<<endl; </p><p> cout<<"
56、;3.返回"<<endl; </p><p> char c; cin>>c; </p><p> switch (c) </p><p><b> { </b></p><p> case '1': </p><p><b>
57、 { </b></p><p> long num1; </p><p> cout<<"要查詢的學(xué)號(hào)"<<endl; </p><p> cin>>num1; </p><p> //查找要查詢的結(jié)點(diǎn) </p><p> student *
58、p1,*p2; </p><p><b> p1=stu; </b></p><p> while(p1) </p><p><b> { </b></p><p> if(p1->num==num1) </p><p><b> break; &l
59、t;/b></p><p><b> else </b></p><p><b> { </b></p><p><b> p2=p1; </b></p><p> p1=p1->next; </p><p><b> }
60、 </b></p><p><b> } </b></p><p> if(p1!=NULL) </p><p><b> { </b></p><p> cout<<"學(xué)號(hào)是"<<num1<<"的學(xué)生的信息&qu
61、ot;<<endl; </p><p> cout<<"姓名:"<<p1->name<<" 數(shù)學(xué):"<<p1->x<<" 語文:"<<p1->y<<" 英語:"<<p1->z<<endl;
62、</p><p> cout<<"查詢完畢..."; </p><p><b> } </b></p><p> else //未找到接點(diǎn) </p><p> cout<<"未找到!\n"; </p><p><b>
63、; break; </b></p><p><b> } </b></p><p> case '2': </p><p><b> { </b></p><p> string name1; </p><p> cout<<
64、;"要查詢的學(xué)生姓名"<<endl; </p><p> cin>>name1; </p><p> //查找要查詢的結(jié)點(diǎn) </p><p> student *p1,*p2; </p><p><b> p1=stu; </b></p><p>
65、; while(p1) </p><p><b> { </b></p><p> if(p1->name==name1) </p><p><b> break; </b></p><p><b> else </b></p><p>
66、<b> { </b></p><p><b> p2=p1; </b></p><p> p1=p1->next; </p><p><b> } </b></p><p><b> } </b></p><p>
67、 if(p1!=NULL) </p><p><b> { </b></p><p> cout<<name1<<"的學(xué)生的信息"<<endl; </p><p> cout<<"學(xué)號(hào):"<<p1->num<<"
68、; 數(shù)學(xué):"<<p1->x<<" 語文:"<<p1->y<<" 英語:"<<p1->z<<endl; </p><p> cout<<"查詢完畢..."; </p><p><b> } </b>
69、;</p><p> else //未找到接點(diǎn) </p><p> cout<<"未找到!\n"; </p><p><b> break; </b></p><p><b> } </b></p><p> case '3&
70、#39;: return; </p><p><b> } </b></p><p><b> } </b></p><p> void cla::pxh() //按學(xué)號(hào)排序 </p><p><b> { </b></p><p> stud
71、ent *p1,*p2; </p><p><b> int n; </b></p><p><b> p1=stu; </b></p><p><b> n=1; </b></p><p> while(p1->next) </p><p&g
72、t;<b> { n++; </b></p><p> p1=p1->next; </p><p><b> } </b></p><p> cout<<"共有"<<n<<"條信息..."<<endl; </p>
73、;<p><b> int i; </b></p><p><b> p1=stu; </b></p><p> for(i=1;i<n;i++) </p><p><b> { </b></p><p><b> p1=stu; <
74、;/b></p><p> if (p1->num>p1->next->num) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 </p><p><b> { </b></p><p> p2=p1->next; </p><p> p1->next=p1->next->ne
75、xt; </p><p> p2->next=p1; //頭結(jié)點(diǎn)交換 </p><p><b> stu=p2; </b></p><p><b> } </b></p><p><b> p1=stu; </b></p><p> wh
76、ile(p1->next->next) //中間的交換 </p><p><b> { </b></p><p><b> p2=p1; </b></p><p> p1=p1->next; </p><p> if(p1->num>p1->next-&g
77、t;num) </p><p><b> { </b></p><p> p2->next=p1->next; </p><p> p1->next=p1->next->next; </p><p> p2->next->next=p1; </p><
78、p> p1=p2->next; //交換 </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p><b> p1=stu; </b></p>
79、<p><b> do </b></p><p><b> { </b></p><p> p1->play(); </p><p> p1=p1->next; </p><p><b> }</b></p><p>
80、 while(p1); </p><p><b> } </b></p><p> void cla::psx()//按數(shù)學(xué)成績(jī)排序 </p><p><b> { </b></p><p> student *p1,*p2; </p><p><b>
81、 int n; </b></p><p><b> p1=stu; </b></p><p><b> n=1; </b></p><p> while(p1->next) </p><p><b> { n++; </b></p>&
82、lt;p> p1=p1->next; </p><p><b> } </b></p><p> cout<<"共有"<<n<<"條信息..."<<endl; </p><p><b> int i; </b><
83、;/p><p><b> p1=stu; </b></p><p> for(i=1;i<n;i++) </p><p> { p1=stu; </p><p> if (p1->x>p1->next->x) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 </p><p> {
84、 p2=p1->next; </p><p> p1->next=p1->next->next; </p><p> p2->next=p1; //頭結(jié)點(diǎn)交換 </p><p><b> stu=p2; </b></p><p><b> } </b></
85、p><p><b> p1=stu; </b></p><p> while(p1->next->next) //中間的交換 </p><p><b> { p2=p1; </b></p><p> p1=p1->next; </p><p> if(
86、p1->x>p1->next->x) </p><p><b> { </b></p><p> p2->next=p1->next; </p><p> p1->next=p1->next->next; </p><p> p2->next->n
87、ext=p1; </p><p> p1=p2->next; //交換 </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><p><b> p1=s
88、tu; </b></p><p><b> do </b></p><p><b> { </b></p><p> p1->play(); </p><p> p1=p1->next; </p><p><b> }</b&
89、gt;</p><p> while(p1); </p><p><b> } </b></p><p> void cla::pyw()//按語文成績(jī)排序 </p><p><b> { </b></p><p> student *p1,*p2; </p&
90、gt;<p><b> int n; </b></p><p><b> p1=stu; </b></p><p><b> n=1; </b></p><p> while(p1->next) </p><p><b> { n++;&
91、lt;/b></p><p> p1=p1->next;</p><p><b> } </b></p><p> cout<<"共有"<<n<<"條信息..."<<endl; </p><p><b>
92、 int i; </b></p><p><b> p1=stu; </b></p><p> for(i=1;i<n;i++) </p><p> { p1=stu; </p><p> if (p1->y>p1->next->y) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 <
93、;/p><p> { p2=p1->next; </p><p> p1->next=p1->next->next; </p><p> p2->next=p1; //頭結(jié)點(diǎn)交換 </p><p><b> stu=p2; </b></p><p><b&g
94、t; } </b></p><p><b> p1=stu; </b></p><p> while(p1->next->next) //中間的交換 </p><p><b> { p2=p1; </b></p><p> p1=p1->next; </
95、p><p> if(p1->y>p1->next->y) </p><p><b> { </b></p><p> p2->next=p1->next; </p><p> p1->next=p1->next->next; </p><p&g
96、t; p2->next->next=p1; </p><p> p1=p2->next; //交換 </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b></p><
97、;p><b> p1=stu; </b></p><p><b> do </b></p><p><b> { </b></p><p> p1->play(); </p><p> p1=p1->next; </p><p&g
98、t;<b> }</b></p><p> while(p1); </p><p><b> } </b></p><p> void cla::pyy()//按英語成績(jī)排序 </p><p><b> { </b></p><p> stu
99、dent *p1,*p2; </p><p><b> int n; </b></p><p><b> p1=stu; </b></p><p><b> n=1; </b></p><p> while(p1->next) </p><p&
100、gt;<b> { </b></p><p> n++; p1=p1->next; } </p><p> cout<<"共有"<<n<<"條信息..."<<endl; </p><p><b> int i; </b>&
101、lt;/p><p><b> p1=stu; </b></p><p> for(i=1;i<n;i++) </p><p><b> { </b></p><p><b> p1=stu; </b></p><p> if (p1->
102、z>p1->next->z) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 </p><p><b> { </b></p><p> p2=p1->next; </p><p> p1->next=p1->next->next; </p><p> p2->next=p1; /
103、/頭結(jié)點(diǎn)交換 </p><p><b> stu=p2; </b></p><p><b> } </b></p><p><b> p1=stu; </b></p><p> while(p1->next->next) //中間的交換 </p>
104、<p><b> { </b></p><p><b> p2=p1; </b></p><p> p1=p1->next; </p><p> if(p1->z>p1->next->z) </p><p><b> { </b&
105、gt;</p><p> p2->next=p1->next; </p><p> p1->next=p1->next->next; </p><p> p2->next->next=p1; </p><p> p1=p2->next; //交換 </p><p>
106、;<b> } </b></p><p><b> } </b></p><p><b> } </b></p><p><b> p1=stu; </b></p><p><b> do </b></p>&
107、lt;p><b> { </b></p><p> p1->play(); </p><p> p1=p1->next; </p><p><b> } </b></p><p> while(p1); </p><p><b> }
108、</b></p><p> void cla::pAA()//按總分排序 </p><p><b> { </b></p><p> student *p1,*p2; </p><p><b> int n; </b></p><p><b>
109、 p1=stu; </b></p><p><b> n=1; </b></p><p> while(p1->next) </p><p><b> { </b></p><p> n++; p1=p1->next; </p><p><
110、;b> } </b></p><p> cout<<"共有"<<n<<"條信息..."<<endl; </p><p><b> int i; </b></p><p><b> p1=stu; </b><
111、;/p><p> for(i=1;i<n;i++) </p><p> { p1=stu; </p><p> if (p1->AA>p1->next->AA) // 如果頭結(jié)點(diǎn)大于第二個(gè)的 </p><p><b> { </b></p><p> p2=p1
112、->next; </p><p> p1->next=p1->next->next; </p><p> p2->next=p1; //頭結(jié)點(diǎn)交換 </p><p><b> stu=p2; </b></p><p><b> } </b></p>
113、<p><b> p1=stu; </b></p><p> while(p1->next->next) //中間的交換 </p><p><b> { </b></p><p><b> p2=p1; </b></p><p> p1=p1-
114、>next; </p><p> if(p1->AA>p1->next->AA) </p><p><b> { </b></p><p> p2->next=p1->next; </p><p> p1->next=p1->next->next; &l
115、t;/p><p> p2->next->next=p1; </p><p> p1=p2->next; //交換 </p><p><b> } </b></p><p><b> } </b></p><p><b> } </b&g
116、t;</p><p><b> p1=stu; </b></p><p><b> do </b></p><p><b> { </b></p><p> p1->play(); </p><p> p1=p1->next; &l
117、t;/p><p><b> }</b></p><p> while(p1); </p><p><b> } </b></p><p> void cla::staxis()//排序 </p><p><b> { </b></p>
118、<p> system("cls"); </p><p><b> char c; </b></p><p> cout<<"請(qǐng)選擇以何種方式排序:"<<endl; </p><p> cout<<"1……以學(xué)號(hào)排序"<&l
119、t;endl; </p><p> cout<<"2……以數(shù)學(xué)成績(jī)排序"<<endl; </p><p> cout<<"3……以語文成績(jī)排序"<<endl; </p><p> cout<<"4……以英語成績(jī)排序"<<endl;
120、 </p><p> cout<<"5……以總分排序"<<endl; </p><p> cout<<"6……返回"<<endl; </p><p> cout<<"請(qǐng)選擇(1-6)"<<endl; </p><
121、;p><b> cin>>c; </b></p><p> switch (c) </p><p><b> { </b></p><p> case '1':pxh(); break; </p><p> case '2':psx();
122、break; </p><p> case '3':pyw(); break; </p><p> case '4':pyy(); break; </p><p> case '5':pAA(); break; </p><p> case '6':return; <
123、;/p><p><b> } </b></p><p><b> } </b></p><p> void cla::ssave() //保存到文件 </p><p><b> { </b></p><p> system("cls&qu
124、ot;); </p><p><b> char c; </b></p><p> cout<<"\n保存學(xué)生信息(將覆蓋原文件),是否繼續(xù)?[Y/N]:"; </p><p><b> cin>>c; </b></p><p> if(toupp
125、er(c)!='Y') return; </p><p> ofstream tfile("date.txt",ios_base::binary); </p><p> student *p=stu; </p><p> while(p)// 寫入文件 </p><p><b> { &l
126、t;/b></p><p> tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z; </p>&l
127、t;p> tfile<<endl; </p><p> p=p->next; </p><p><b> } </b></p><p> tfile.close(); </p><p> cout<<"保存完畢..."<<endl; </
128、p><p><b> } </b></p><p> void cla::sload() //讀取 </p><p><b> { </b></p><p> student *p; </p><p><b> p=stu; </b></p&
129、gt;<p><b> while(p) </b></p><p><b> { </b></p><p> stu=p->next; </p><p> delete p; </p><p><b> p=stu; </b></p>
130、<p><b> } </b></p><p> ifstream tfile("date.txt",ios_base::binary); </p><p> string name1; </p><p> long num1; </p><p> int x1,y1,z1; &
131、lt;/p><p> tfile>>name1>>num1>>x1>>y1>>z1; </p><p> while(tfile.good()) </p><p><b> { </b></p><p><b> //創(chuàng)建學(xué)生接點(diǎn) </b&g
132、t;</p><p> student *s; </p><p><b> s=stu; </b></p><p> s=new student(name1,num1,x1,y1,z1); </p><p> s->next=0; </p><p> s->AA=x1+y1+
133、z1; </p><p> if(stu) //若已經(jīng)存在結(jié)點(diǎn) </p><p><b> { </b></p><p> student *p2; </p><p><b> p2=stu; </b></p><p> while(p2->next) //查
134、找尾結(jié)點(diǎn) </p><p><b> { </b></p><p> p2=p2->next; </p><p><b> } </b></p><p> p2->next=s; //連接 </p><p><b> } </b>&
135、lt;/p><p> else //若不存在結(jié)點(diǎn)(表空) </p><p><b> { </b></p><p> stu=s; //連接 </p><p><b> } </b></p><p> tfile>>name1>>num1>
136、>x1>>y1>>z1; </p><p><b> } </b></p><p> tfile.close(); </p><p> cout<<"\n學(xué)生信息已經(jīng)裝入...\n"; </p><p><b> } </b>&l
137、t;/p><p> int main() </p><p> { system ("color 3f");</p><p> system ("mode con:cols=1000"); </p><p><b> char c; </b></p><p&g
138、t;<b> cla a; </b></p><p><b> do </b></p><p><b> { </b></p><p> cout<<"\n 學(xué) 生 成 績(jī) 管 理 系 統(tǒng) \n"; </p><p> cout<
139、<"**************************************\n"; </p><p> cout<<" 作者:數(shù)學(xué)11-1班2011027040:任樹成\n"; </p><p> cout<<" 1……增加學(xué)生 \n"; </p><p> co
140、ut<<" 2……刪除學(xué)生 \n"; </p><p> cout<<" 3……修改學(xué)生 \n"; </p><p> cout<<" 4……查詢學(xué)生信息 \n"; </p><p> cout<<" 5……排序 \n"; </
141、p><p> cout<<" 6……保存信息 \n"; </p><p> cout<<" 7……讀取信息 \n"; </p><p> cout<<" 8……退出 \n"; </p><p> cout<<"******
142、********************************\n"; </p><p> cout<<"請(qǐng)選擇(1-8):"; </p><p><b> cin>>c; </b></p><p> switch(c) </p><p><b>
143、 { </b></p><p> case '1': a.sadd();break; </p><p> case '2': a.sremove();break; </p><p> case '3': a.samend();break; </p><p> case
144、9;4': a.ssearch();break; </p><p> case '5': a.staxis();break; </p><p> case '6': a.ssave();break; </p><p> case '7': a.sload();break; </p><
145、p><b> } </b></p><p><b> } </b></p><p> while(c!='8'); </p><p><b> return 0;</b></p><p><b> }</b></p&g
146、t;<p><b> 5. 用戶使用說明</b></p><p> 進(jìn)入本系統(tǒng)之后,隨即顯示系統(tǒng)主菜單頁面。用戶可在該界面下輸入各子菜單前對(duì)應(yīng)的數(shù)字并按回車鍵,執(zhí)行相應(yīng)子菜單命令。</p><p> 查詢學(xué)生信息都是通過輸入編號(hào)并按回車鍵實(shí)現(xiàn)的,成績(jī)之間用空格隔開。學(xué)號(hào)輸入只能用數(shù)字輸入,并且學(xué)號(hào)只能是10位。姓名輸入符合中國(guó)人的姓名,只能用中文,
147、且最長(zhǎng)為5個(gè)漢字。</p><p><b> 6.測(cè)試結(jié)果</b></p><p> 系統(tǒng)運(yùn)行主界面如圖1所示。</p><p> 圖1學(xué)生成績(jī)管理系統(tǒng)界面</p><p> 在主菜單下,用戶輸入1后按回車鍵,運(yùn)行結(jié)果如圖2所示。</p><p> 圖2學(xué)生成績(jī)?cè)黾咏缑?lt;/p>
148、;<p> 在主菜單下,用戶輸入6后按回車鍵,運(yùn)行結(jié)果如圖3所示。</p><p> 圖3學(xué)生成績(jī)保存界面</p><p> 在主菜單下,用戶輸入4后按回車鍵,運(yùn)行結(jié)果如圖4所示。</p><p> 圖4學(xué)生成績(jī)查詢界面</p><p> (4) 在主菜單下,用戶輸入5后按回車鍵,運(yùn)行結(jié)果如圖5所示。</p>
149、;<p> 圖5學(xué)生成績(jī)排序界面</p><p> 在主菜單下,用戶輸入3后按回車鍵,運(yùn)行結(jié)果如圖6所示。</p><p> 圖6學(xué)生修改排序界面</p><p> (6) 在主菜單下,用戶輸入2后按回車鍵,運(yùn)行結(jié)果如圖7所示。</p><p> 圖7學(xué)生修改刪除界面</p><p> (7)
150、 在主菜單下,用戶輸入8后按回車鍵,退出。</p><p><b> 7. 總結(jié)</b></p><p> 通過本次的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),讓我學(xué)會(huì)了把書本上的知識(shí)應(yīng)用到了實(shí)際中來。為了能更好的挑戰(zhàn)自己,我還在在完成老師要求的基礎(chǔ)上,增加了保存及用多種方式排序的子程序。雖然這一周中有過挫折和坎坷,有的問題一直到了最后才被解決,但是我認(rèn)為這未必就不是好事,這樣能鍛煉我的
151、意志,磨練我的耐心,失敗是成功之母,這話一點(diǎn)都沒錯(cuò),沒有失敗就沒有成功。</p><p><b> 參考文獻(xiàn)</b></p><p> 1.《C++程序設(shè)計(jì)》 錢能 清華大學(xué)出版社</p><p> 2.《C++程序設(shè)計(jì)試驗(yàn)指導(dǎo)》 錢能 清華大學(xué)出版社</p><p> 3.《C程序設(shè)計(jì)》 譚浩強(qiáng) 清華大學(xué)出版社
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--- 學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告--學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---學(xué)生成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)(部分)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-學(xué)生成績(jī)查詢系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)學(xué)生成績(jī)管理課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--成績(jī)管理
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--學(xué)生成績(jī)管理程序的設(shè)計(jì)與實(shí)現(xiàn)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---成績(jī)管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---學(xué)生搭配問題
評(píng)論
0/150
提交評(píng)論