版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì) 目錄</p><p> 需求分析------------------------------------------------------2 </p><p> 1.1問(wèn)題描述-----------------------------------------------------------2
2、</p><p> 1.2基本任務(wù)-----------------------------------------------------------2</p><p> 概要設(shè)計(jì)------------------------------------------------------2</p><p> 2.1主界面設(shè)計(jì)-----------------
3、----------------------------------------2</p><p> 2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)-------------------------------------------------------3</p><p> 2.3系統(tǒng)功能設(shè)計(jì)-------------------------------------------------------3<
4、;/p><p> 模塊設(shè)計(jì)------------------------------------------------------3</p><p> 3.1模塊設(shè)計(jì)-----------------------------------------------------------3</p><p> 3.2系統(tǒng)子模塊及功能設(shè)計(jì)---------------
5、--------------------------------4</p><p> 3.3系統(tǒng)模塊之間的調(diào)用關(guān)系---------------------------------------------4</p><p> 詳要設(shè)計(jì)------------------------------------------------------5</p><p>
6、 4.1數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)-------------------------------------------------------5</p><p> 4.2系統(tǒng)主要模塊設(shè)計(jì)---------------------------------------------------6</p><p> 調(diào)試分析-----------------------------------------
7、-------------8</p><p> 5.1創(chuàng)建學(xué)校鏈表-------------------------------------------------------8</p><p> 5.2添加獲獎(jiǎng)學(xué)生-------------------------------------------------------8</p><p> 5.3按項(xiàng)目查
8、學(xué)校成績(jī)---------------------------------------------------11</p><p> 5.4按學(xué)校編號(hào)查參加項(xiàng)目-----------------------------------------------14</p><p> 用戶使用說(shuō)明-------------------------------------------------
9、-15</p><p> 參考文獻(xiàn)------------------------------------------------------15</p><p> 對(duì)軟件自我評(píng)價(jià)------------------------------------------------15</p><p> 程序設(shè)計(jì)源代碼------------------------
10、------------------------16</p><p> 心得體會(huì)-----------------------------------------------------22</p><p><b> 一.需求分析</b></p><p><b> 1.1 問(wèn)題描述</b></p>&l
11、t;p> 課程設(shè)計(jì)題目:運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)。</p><p><b> 任務(wù):</b></p><p> 加運(yùn)動(dòng)會(huì)有n個(gè)學(xué)校,學(xué)校編號(hào)為1……n。比賽分成m個(gè)男子項(xiàng)目,和w個(gè)女子項(xiàng)目。項(xiàng)目編號(hào)為男子1……m,女子m+1……m+w。不同的項(xiàng)目取前五名或前三名積分;取前五名的積分分別為:7、5、3、2、1,前三名的積分分別為:5、3、2;哪些取前五名或前三名由學(xué)生
12、自己設(shè)定。(m<=20,n<=20)</p><p><b> 問(wèn)題分析:</b></p><p> 1)、每個(gè)學(xué)校有運(yùn)動(dòng)員要參加運(yùn)動(dòng)項(xiàng)目,故存儲(chǔ)結(jié)構(gòu)要有三個(gè),項(xiàng)目結(jié)構(gòu)體,學(xué)生信息結(jié)構(gòu)體和學(xué)校鏈表。每個(gè)結(jié)點(diǎn)存儲(chǔ)一個(gè)學(xué)校,每個(gè)學(xué)校可以有多名運(yùn)動(dòng)員參加運(yùn)動(dòng)項(xiàng)目。由此,存儲(chǔ)結(jié)構(gòu)就建立了。</p><p> 2)、要求不同的項(xiàng)目根據(jù)具
13、體情況取去前五名或前三名積分,則可以設(shè)定標(biāo)準(zhǔn),即當(dāng)參加某項(xiàng)目的運(yùn)動(dòng)員數(shù)等于或多于五人時(shí),就取該項(xiàng)目的前五名進(jìn)行積分,取前五名的積分分別為:7,5,3,2,1。當(dāng)參加某一項(xiàng)目的人數(shù)少于五人時(shí),則去該項(xiàng)目的前三名進(jìn)行積分,去取前三名的積分分別為:5,3,2。</p><p> 3)、要求能統(tǒng)計(jì)學(xué)校的總分,并可以按學(xué)校編號(hào)輸出每個(gè)學(xué)校的參賽信息及每個(gè)學(xué)校每個(gè)運(yùn)動(dòng)員的信息和所有運(yùn)動(dòng)項(xiàng)目清單。以上這些功能可以通過(guò)遍歷學(xué)校
14、鏈表來(lái)實(shí)現(xiàn)。</p><p> 4)、要求可以學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況,用戶輸入學(xué)校編號(hào)和項(xiàng)目編號(hào),通過(guò)遍歷學(xué)校鏈表即可實(shí)現(xiàn)。</p><p> 5)、要求可以按編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校,用戶輸入要查詢的項(xiàng)目的編號(hào),通過(guò)遍歷學(xué)校鏈表即可實(shí)現(xiàn)。</p><p> 6)、設(shè)置菜單函數(shù)menu(),產(chǎn)生用戶界面。</p><p>
15、<b> 規(guī)定:</b></p><p> 輸入數(shù)據(jù)形式和范圍:可以輸入學(xué)校的名稱,運(yùn)動(dòng)項(xiàng)目的名稱 </p><p> 輸出形式:有中文提示,各學(xué)校分?jǐn)?shù)為整形 界面要求:有合理的提示,每個(gè)功能可以設(shè)立菜單,根據(jù)提示,可以完成相關(guān)的功能要求。</p><p> 存儲(chǔ)結(jié)構(gòu):學(xué)生自己根據(jù)系統(tǒng)功能要求自己設(shè)計(jì),但是要求運(yùn)動(dòng)會(huì)的相關(guān)數(shù)據(jù)要存
16、儲(chǔ)在數(shù)據(jù)文件中。</p><p> 測(cè)試數(shù)據(jù):要求使用1、全部合法數(shù)據(jù);2、整體非法數(shù)據(jù);3、局部非法數(shù)據(jù)。進(jìn)行程序測(cè)試,以保證程序的穩(wěn)定。</p><p><b> 1.2 基本任務(wù)</b></p><p> 通過(guò)用戶調(diào)查分析及實(shí)際需求,系統(tǒng)需要實(shí)現(xiàn)如下基本任務(wù):</p><p> .輸入各個(gè)項(xiàng)目的前三名或前五
17、名的成績(jī);</p><p> .統(tǒng)計(jì)各學(xué)??偡? 3).按學(xué)校編號(hào)或名稱、男女團(tuán)體總分排序輸出; 4).按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目的情況;可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。數(shù)據(jù)存入文件并能隨時(shí)查詢。</p><p><b> 二.概要設(shè)計(jì)</b></p><p> 為了完成需求分析的基本任務(wù),主要從以下3個(gè)方面進(jìn)行設(shè)計(jì):&
18、lt;/p><p><b> 2.1 主界面設(shè)計(jì)</b></p><p> 為了實(shí)現(xiàn)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)的各項(xiàng)功能,設(shè)計(jì)了一個(gè)含有多個(gè)菜單項(xiàng)的主控菜單模塊以鏈接系統(tǒng)的各項(xiàng)功能,以方便用戶使用系統(tǒng)。系統(tǒng)主控菜單運(yùn)行界面如圖1所示:</p><p> 圖1 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)主菜單</p><p> 2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</
19、p><p> 系統(tǒng)采用數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)定義:運(yùn)動(dòng)項(xiàng)目結(jié)構(gòu)體、 運(yùn)動(dòng)員信息結(jié)構(gòu)體、學(xué)校鏈表</p><p> 此外,還定義了一些全局變量:學(xué)??倲?shù)SchoolCount、男生項(xiàng)目總數(shù)BoyProject、女生項(xiàng)目總數(shù)GirlProject、項(xiàng)目總數(shù)TotalProject、項(xiàng)目表Project_T[41]。</p><p> 2.3 系統(tǒng)功能設(shè)計(jì)</p>
20、<p> ?、牛畡?chuàng)建學(xué)校的鏈表:</p><p> void CreatSchoolLink(School &head);</p><p><b> ?、疲砑荧@獎(jiǎng)學(xué)生:</b></p><p> void AddStudentLink(School &head);</p><p> ⑶
21、.按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p> void Find_Project_ID(School &head,int Project_ID);</p><p> ?、龋磳W(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目。</p><p> void Find_School_Project(School &head,int School_ID,int P
22、roject_ID);</p><p><b> ?、桑煽?jī)統(tǒng)計(jì):</b></p><p> void ScoreCount(School &head);</p><p><b> ?、剩敵鰠①惤Y(jié)果:</b></p><p> void OutPut_Link(School head)
23、;</p><p><b> .添加學(xué)生數(shù)據(jù):</b></p><p> void AddStudent(School &head);</p><p><b> (8).菜單函數(shù):</b></p><p> int menu();</p><p><b&
24、gt; (9).主函數(shù):</b></p><p> int main();</p><p><b> 三.模塊設(shè)計(jì)</b></p><p><b> 3.1 模塊設(shè)計(jì)</b></p><p> 系統(tǒng)主要包含主程序模塊和其它鏈表操作模塊。其調(diào)用關(guān)系如圖2所示。</p>
25、<p> 圖2 模塊調(diào)用示意圖</p><p> 3.2 系統(tǒng)子模塊及其功能設(shè)計(jì)</p><p> 系統(tǒng)設(shè)計(jì)了8個(gè)子功能模塊,8個(gè)子功能模塊的描述如下:</p><p> ?、牛畡?chuàng)建學(xué)校的鏈表:</p><p> void CreatSchoolLink(School &head);</p><
26、;p><b> ?、疲砑荧@獎(jiǎng)學(xué)生:</b></p><p> void AddStudentLink(School &head);</p><p> ?、牵错?xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p> void Find_Project_ID(School &head,int Project_ID);&l
27、t;/p><p> ?、龋磳W(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目。</p><p> void Find_School_Project(School &head,int School_ID,int Project_ID);</p><p><b> ?、桑煽?jī)統(tǒng)計(jì):</b></p><p> void ScoreCount(
28、School &head);</p><p><b> ?、剩敵鰠①惤Y(jié)果:</b></p><p> void OutPut_Link(School head);</p><p><b> .添加學(xué)生數(shù)據(jù):</b></p><p> void AddStudent(School &a
29、mp;head);</p><p><b> (8).菜單函數(shù):</b></p><p> int menu();</p><p> 3.3 系統(tǒng)模塊之間的調(diào)用關(guān)系</p><p> 系統(tǒng)的10個(gè)子模塊之間的主要調(diào)用關(guān)系如圖3所示:</p><p> 圖3 系統(tǒng)函數(shù)調(diào)用關(guān)系圖</p
30、><p><b> 四.詳細(xì)設(shè)計(jì)</b></p><p> 4.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</p><p> 系統(tǒng)采用線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)存儲(chǔ)學(xué)校信息。結(jié)點(diǎn)定義如下:</p><p> typedef struct SchoolNode</p><p> {int number;//學(xué)校編號(hào)</
31、p><p> char name[10];</p><p> int count;//運(yùn)動(dòng)員人數(shù)</p><p> int boyscore;//男子團(tuán)體總分</p><p> int girlscore;//女子團(tuán)體總分</p><p> int totalscore;//團(tuán)體總分</p><
32、;p> int jifen;//積分</p><p> Student students[20];//參賽學(xué)生</p><p> struct SchoolNode *next;</p><p> }SchoolNode,*School;</p><p> 4.2 系統(tǒng)主要模塊設(shè)計(jì)</p><p>
33、創(chuàng)建學(xué)校鏈表算法思想及程序代碼:</p><p> void CreatSchoolLink(School &head)</p><p> {//創(chuàng)建學(xué)校的鏈表</p><p><b> School p;</b></p><p><b> int i;</b></p>
34、<p> head=p=(School)malloc(sizeof(SchoolNode));</p><p> for(i=1;i<=SchoolCount;i++)</p><p> { p=p->next=(School)malloc(sizeof(SchoolNode));</p><p> printf("請(qǐng)輸入編
35、號(hào)為%d的學(xué)校的名稱:\n",i);</p><p> scanf("%s",p->name);</p><p> p->number=i;</p><p> p->count=0;</p><p> p->boyscore=0;</p><p> p-&
36、gt;girlscore=0;</p><p> p->totalscore=0;</p><p> p->jifen=0;</p><p><b> }</b></p><p> p->next=NULL;//使指針指向空</p><p> head=head->
37、;next;//頭指針后移</p><p><b> }</b></p><p> 添加獲獎(jiǎng)學(xué)生函數(shù)程序代碼:</p><p> void AddStudentLink(School &head)</p><p><b> {//添加獲獎(jiǎng)學(xué)生</b></p><p
38、> School L,p;</p><p> int School_ID; //學(xué)校編號(hào)</p><p> char StudentName[20]; //學(xué)生姓名</p><p> int sex;//性別</p><p> int Project_ID; //項(xiàng)目編號(hào)</p><p> int
39、 score; //成績(jī)</p><p> int ranking; //名次</p><p> printf("請(qǐng)輸入學(xué)生的姓名:\n");</p><p> scanf("%s",StudentName);</p><p> printf("請(qǐng)輸入該學(xué)生所在學(xué)校的編號(hào):\n&
40、quot;);</p><p> scanf("%d",&School_ID);</p><p> printf("請(qǐng)輸入該學(xué)生的性別(0--女,--男):\n");</p><p> scanf("%d",&sex);</p><p> printf(&qu
41、ot;請(qǐng)輸入該學(xué)生參加的項(xiàng)目編號(hào):\n");</p><p> scanf("%d",&Project_ID);</p><p> if(sex==0) GirlProject=Project_ID;</p><p> if(sex==1) BoyProject=Project_ID;</p><p&g
42、t; printf("請(qǐng)輸入該學(xué)生該項(xiàng)目的得分:\n");</p><p> scanf("%d",&score);</p><p> printf("請(qǐng)輸入該學(xué)生在該項(xiàng)目中的名次:\n");</p><p> scanf("%d",&ranking);</
43、p><p><b> L=head;</b></p><p><b> while(L)</b></p><p> { if(L->number==School_ID)</p><p><b> { p=L;</b></p><p> p
44、->count=p->count+1; //運(yùn)動(dòng)員數(shù)+1</p><p> strcpy(p->students[p->count].name, StudentName); //學(xué)生姓名</p><p> p->students[p->count].Project=Project_ID ;//得分項(xiàng)目</p><p> P
45、roject_T[Project_ID].count=Project_T[Project_ID].count+1; //該項(xiàng)目得分人數(shù)+1</p><p> p->students[p->count].ranking=ranking;//得分名次</p><p> p->students[p->count].score=score;//得分</p>
46、<p> p->students[p->count].sex=sex; //性別</p><p><b> break;</b></p><p><b> }</b></p><p> else L=L->next;</p><p><b> }
47、</b></p><p><b> }</b></p><p> 按學(xué)校項(xiàng)目查詢前三名和前五名學(xué)校函數(shù)程序代碼:</p><p> void Find_Project_ID(School &head,int Project_ID){ //按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p>
48、 School h,p;</p><p> p=h=head; //保存鏈表頭指針</p><p><b> int i;</b></p><p> printf("查詢結(jié)果如下:\n");</p><p><b> while(h){</b></p>&
49、lt;p> for(i=1;i<=h->count;i++)</p><p> { if(h->students[i].Project==Project_ID)</p><p> { printf("學(xué)校:%s 姓名:%s 名次:%d\n",h->name,h->students[i].name,h->stu
50、dents[i].ranking);</p><p> printf("\n--------------------------------------\n");</p><p><b> }</b></p><p><b> }</b></p><p> h=h->
51、;next;</p><p><b> }</b></p><p><b> }</b></p><p> 按學(xué)校編號(hào)查詢學(xué)校的某個(gè)項(xiàng)目程序代碼:</p><p> void Find_School_Project(School &head,int School_ID,int Pro
52、ject_ID){//按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目</p><p> School h,p;</p><p> int Project_i=0;</p><p><b> int i;</b></p><p> p=h=head; //保存鏈表頭指針</p><p><b>
53、while(h){</b></p><p> if(h->number==School_ID){p=h;break;}</p><p> h=h->next;</p><p><b> }</b></p><p> for(i=1;i<=p->count;i++)</p&
54、gt;<p> { if(p->students[i].Project==Project_ID){</p><p> printf("查詢結(jié)果如下:\n");</p><p> printf("姓名:%s\n",p->students[i].name);</p><p> Project_
55、i=p->students[i].Project;</p><p> if(p->students[i].sex==0){</p><p> printf("性別:女\n");</p><p> Project_i=Project_i+20;</p><p><b> }</b>&
56、lt;/p><p><b> else {</b></p><p> printf("性別:男\(zhòng)n");</p><p><b> }</b></p><p> printf("項(xiàng)目編號(hào):%d 項(xiàng)目名稱%s 該項(xiàng)目得分%d 名次:%d\n
57、",p->students[i].Project,Project_T[Project_i].name,p->students[i].score,p->students[i].ranking);</p><p><b> }</b></p><p><b> }</b></p><p><
58、;b> }</b></p><p><b> 五.調(diào)試分析</b></p><p> 各子功能測(cè)試運(yùn)行結(jié)果如下:</p><p> 5.1創(chuàng)建學(xué)校鏈表運(yùn)行結(jié)果:</p><p> 創(chuàng)建5個(gè)學(xué)校,分別為重慶工商大學(xué)、重慶郵電大學(xué)、重慶交通大學(xué)、重慶師范大學(xué)、重慶大學(xué)</p><
59、;p> 5.2添加獲獎(jiǎng)學(xué)生運(yùn)行結(jié)果:</p><p> 詳細(xì)添加學(xué)生人數(shù),我們組徐維維已截圖,總共輸入重慶工商大學(xué)9人,其中項(xiàng)目2有5人,項(xiàng)目1、3、4、5各一人,重慶郵電大學(xué)1人參加項(xiàng)目5,重慶交通大學(xué)2人,,參加項(xiàng)目2、5各一人。</p><p> 5.3按項(xiàng)目查找前三名或前五名學(xué)校運(yùn)行結(jié)果:</p><p> 由運(yùn)行結(jié)果可以知道,當(dāng)每個(gè)項(xiàng)目人數(shù)大
60、于等于5時(shí),按第一種積分計(jì)算,第一名取7分,當(dāng)每個(gè)項(xiàng)目總數(shù)小于5時(shí),按第二種積分計(jì)算,第一名取得是5分。其次還計(jì)算了每個(gè)學(xué)校女子團(tuán)體總分、男子團(tuán)體總分、學(xué)校總分。</p><p> 5.4按學(xué)校編號(hào)查找某個(gè)項(xiàng)目參加人數(shù)函數(shù)運(yùn)行結(jié)果:</p><p><b> 六.用戶使用說(shuō)明</b></p><p> 該運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)程序用C語(yǔ)言編寫(xiě),實(shí)
61、現(xiàn)了所要求的大部分功能。</p><p> (1)按數(shù)字鍵1,使用前首先要進(jìn)行參數(shù)統(tǒng)計(jì),包括參賽學(xué)校數(shù)(不多余20個(gè)),男生項(xiàng)目數(shù)(不多于20個(gè))和女生項(xiàng)目數(shù)(不多于20個(gè))。設(shè)置時(shí)同時(shí)輸入學(xué)校及項(xiàng)目的名稱,要求輸入英文字符。</p><p> ?。?)按數(shù)字鍵2用戶可以添加獲獎(jiǎng)學(xué)習(xí)信息,包括所在學(xué)校編號(hào),性別,參賽項(xiàng)目編號(hào),成績(jī)和名次。</p><p> ?。?
62、)按數(shù)字鍵3,可以按學(xué)校編號(hào)輸出學(xué)校參賽的信息,包括學(xué)校的編號(hào)名稱,男子團(tuán)體總分,女子團(tuán)體總分,團(tuán)體總分,積分??梢暂敵雒總€(gè)學(xué)校的每個(gè)運(yùn)動(dòng)員的信息,包括姓名,性別,得分項(xiàng)目名稱,成績(jī),名次。可以輸出所有的運(yùn)動(dòng)項(xiàng)目。</p><p> ?。?)按數(shù)字鍵4,可以查詢某個(gè)學(xué)校某個(gè)項(xiàng)目的信息。</p><p> (5)按數(shù)字鍵5,可以按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p>
63、<p> ?。?)按1—5之外的數(shù)字鍵可以退出程序。</p><p><b> 七.參考文獻(xiàn)</b></p><p> 在編程過(guò)程中所參考的文獻(xiàn):數(shù)據(jù)結(jié)構(gòu)第三版、C語(yǔ)言教程</p><p> 八.對(duì)所設(shè)計(jì)的軟件進(jìn)行自我評(píng)價(jià)</p><p> 此源程序代碼還存在兩點(diǎn)點(diǎn)沒(méi)有解決的問(wèn)題,第一學(xué)??偡殖煽?jī)排序沒(méi)
64、有編寫(xiě)代碼,第二男女生參加項(xiàng)目人數(shù)沒(méi)有統(tǒng)計(jì),其他的相關(guān)要求基本上達(dá)到。在實(shí)驗(yàn)過(guò)程中出現(xiàn)以下幾點(diǎn)問(wèn)題:第一,在創(chuàng)建鏈表時(shí),忽略了不帶頭結(jié)點(diǎn)的指針頭指針需要向后移,是由于長(zhǎng)期的定式思維,頭指針是不能發(fā)生改變導(dǎo)致;第二,對(duì)鏈表的掌握不是足夠的扎實(shí),因此在處理相關(guān)問(wèn)題的時(shí)候,存在很大的障礙,譬如對(duì)遍歷鏈表,表頭指針的后移;第三,在處理每個(gè)項(xiàng)目的前三名和前五名積分是花費(fèi)了一段時(shí)間去理解。</p><p><b>
65、 九.程序源代碼:</b></p><p> #include"stdio.h"</p><p> #include"malloc.h"</p><p> #include"stdlib.h"</p><p> #include"string.h&qu
66、ot;</p><p> typedef struct Project</p><p> {int number;//項(xiàng)目編號(hào)</p><p> char name[10];//項(xiàng)目名稱</p><p> int count;//該項(xiàng)目得分人數(shù)</p><p> }Project_Table;</p&g
67、t;<p> typedef struct Student</p><p> {char name[10];</p><p><b> int sex;</b></p><p> int Project;//參加的項(xiàng)目</p><p> int score;//成績(jī)</p><
68、p> int ranking;//名次</p><p><b> }Student;</b></p><p> typedef struct SchoolNode</p><p> {int number;//學(xué)校編號(hào)</p><p> char name[10];</p><p>
69、; int count;//運(yùn)動(dòng)員人數(shù)</p><p> int boyscore;//男子團(tuán)體總分</p><p> int girlscore;//女子團(tuán)體總分</p><p> int totalscore;//團(tuán)體總分</p><p> int jifen;//積分</p><p> Student
70、 students[20];//參賽學(xué)生</p><p> struct SchoolNode *next;</p><p> }SchoolNode,*School;</p><p> int SchoolCount=0;//學(xué)??倲?shù)</p><p> int BoyProject=0;//男生項(xiàng)目總數(shù)</p><
71、;p> int GirlProject=0;//女生項(xiàng)目總數(shù)</p><p> int TotalProject=0; //項(xiàng)目總數(shù)</p><p> Project_Table Project_T[41];//項(xiàng)目表</p><p> void CreatSchoolLink(School &head)</p><p>
72、; {//創(chuàng)建學(xué)校的鏈表</p><p><b> School p;</b></p><p><b> int i;</b></p><p> head=p=(School)malloc(sizeof(SchoolNode));</p><p> for(i=1;i<=School
73、Count;i++)</p><p> { p=p->next=(School)malloc(sizeof(SchoolNode));</p><p> printf("請(qǐng)輸入編號(hào)為%d的學(xué)校的名稱:\n",i);</p><p> scanf("%s",p->name);</p><p&
74、gt; p->number=i;</p><p> p->count=0;</p><p> p->boyscore=0;</p><p> p->girlscore=0;</p><p> p->totalscore=0;</p><p> p->jifen=0;<
75、;/p><p><b> }</b></p><p> p->next=NULL;//使指針指向空</p><p> head=head->next;//頭指針后移</p><p><b> }</b></p><p> void AddStudentLin
76、k(School &head)</p><p><b> {//添加獲獎(jiǎng)學(xué)生</b></p><p> School L,p;</p><p> int School_ID; //學(xué)校編號(hào)</p><p> char StudentName[20]; //學(xué)生姓名</p><p&g
77、t; int sex;//性別</p><p> int Project_ID; //項(xiàng)目編號(hào)</p><p> int score; //成績(jī)</p><p> int ranking; //名次</p><p> printf("請(qǐng)輸入學(xué)生的姓名:\n");</p><p>
78、scanf("%s",StudentName);</p><p> printf("請(qǐng)輸入該學(xué)生所在學(xué)校的編號(hào):\n");</p><p> scanf("%d",&School_ID);</p><p> printf("請(qǐng)輸入該學(xué)生的性別(0--女,--男):\n");
79、</p><p> scanf("%d",&sex);</p><p> printf("請(qǐng)輸入該學(xué)生參加的項(xiàng)目編號(hào):\n");</p><p> scanf("%d",&Project_ID);</p><p> if(sex==0) GirlProject
80、=Project_ID;</p><p> if(sex==1) BoyProject=Project_ID;</p><p> printf("請(qǐng)輸入該學(xué)生該項(xiàng)目的得分:\n");</p><p> scanf("%d",&score);</p><p> printf("請(qǐng)
81、輸入該學(xué)生在該項(xiàng)目中的名次:\n");</p><p> scanf("%d",&ranking);</p><p><b> L=head;</b></p><p><b> while(L)</b></p><p> { if(L->numbe
82、r==School_ID)</p><p><b> { p=L;</b></p><p> p->count=p->count+1; //運(yùn)動(dòng)員數(shù)+1</p><p> strcpy(p->students[p->count].name, StudentName); //學(xué)生姓名</p>&l
83、t;p> p->students[p->count].Project=Project_ID ;//得分項(xiàng)目</p><p> Project_T[Project_ID].count=Project_T[Project_ID].count+1; //該項(xiàng)目得分人數(shù)+1</p><p> p->students[p->count].ranking=rank
84、ing;//得分名次</p><p> p->students[p->count].score=score;//得分</p><p> p->students[p->count].sex=sex; //性別</p><p><b> break;</b></p><p><b>
85、 }</b></p><p> else L=L->next;</p><p><b> }</b></p><p><b> }</b></p><p> void Find_Project_ID(School &head,int Project_ID){ //
86、按項(xiàng)目編號(hào)查詢?nèi)〉们叭蚯拔迕膶W(xué)校。</p><p> School h,p;</p><p> p=h=head; //保存鏈表頭指針</p><p><b> int i;</b></p><p> printf("查詢結(jié)果如下:\n");</p><p>&l
87、t;b> while(h){</b></p><p> for(i=1;i<=h->count;i++)</p><p> { if(h->students[i].Project==Project_ID)</p><p> { printf("學(xué)校:%s 姓名:%s 名次:%d\n",h-
88、>name,h->students[i].name,h->students[i].ranking);</p><p> printf("\n--------------------------------------\n");</p><p><b> }</b></p><p><b>
89、}</b></p><p> h=h->next;</p><p><b> }</b></p><p><b> }</b></p><p> void Find_School_Project(School &head,int School_ID,int Proj
90、ect_ID){//按學(xué)校編號(hào)查詢學(xué)校某個(gè)項(xiàng)目</p><p> School h,p;</p><p> int Project_i=0;</p><p><b> int i;</b></p><p> p=h=head; //保存鏈表頭指針</p><p><b> w
91、hile(h){</b></p><p> if(h->number==School_ID){p=h;break;}</p><p> h=h->next;</p><p><b> }</b></p><p> for(i=1;i<=p->count;i++)</p&g
92、t;<p> { if(p->students[i].Project==Project_ID){</p><p> printf("查詢結(jié)果如下:\n");</p><p> printf("姓名:%s\n",p->students[i].name);</p><p> Project_i
93、=p->students[i].Project;</p><p> if(p->students[i].sex==0){</p><p> printf("性別:女\n");</p><p> Project_i=Project_i+20;</p><p><b> }</b>&l
94、t;/p><p><b> else {</b></p><p> printf("性別:男\(zhòng)n");</p><p><b> }</b></p><p> printf("項(xiàng)目編號(hào):%d 項(xiàng)目名稱%s 該項(xiàng)目得分%d 名次:%d\n&
95、quot;,p->students[i].Project,Project_T[Project_i].name,p->students[i].score,p->students[i].ranking);</p><p><b> }</b></p><p><b> }</b></p><p><
96、b> }</b></p><p> void OutPut_Link(School head)</p><p> { //向屏幕輸出數(shù)據(jù)</p><p><b> School h;</b></p><p><b> h=head;</b></p><
97、;p><b> int i;</b></p><p> int Project_ID;</p><p> int Project_count_i;</p><p><b> while(h)</b></p><p><b> { //遍歷學(xué)校</b></p
98、><p> printf("學(xué)校編號(hào):%d\n",h->number);</p><p> printf("學(xué)校名稱:%s\n",h->name);</p><p> printf("本次運(yùn)動(dòng)會(huì)積分%d\n",h->jifen);</p><p> printf
99、("男子團(tuán)體總分:%d\n",h->boyscore);</p><p> printf("女子團(tuán)體總分:%d\n",h->girlscore);</p><p> printf("總分:%d\n",h->totalscore);</p><p> printf("運(yùn)動(dòng)員數(shù)
100、:%d\n",h->count);</p><p> for(i=1;i<=h->count;i++)</p><p> {//輸出該校學(xué)生運(yùn)動(dòng)員情況</p><p> printf("運(yùn)動(dòng)員姓名:%s\n",h->students[i].name);</p><p> if(h-
101、>students[i].sex==0)printf("性別:女\n");</p><p> else printf("性別:男\(zhòng)n");</p><p> Project_ID=h->students[i].Project;</p><p> if(h->students[i].sex==0)Proj
102、ect_ID=Project_ID+20; //如果是女生則項(xiàng)目表向后移動(dòng)</p><p> printf("得分項(xiàng)目:%s\n",Project_T[Project_ID].name);</p><p> printf("得分:%d\n",h->students[i].score);</p><p> print
103、f("得分名次:%d\n",h->students[i].ranking);</p><p><b> }</b></p><p> printf("\n--------------------------------------\n");</p><p> h=h->next; //指
104、針向后移動(dòng)</p><p><b> }</b></p><p> printf("\n--------------------------------------\n");</p><p><b> }</b></p><p> void ScoreCount(Scho
105、ol &head)</p><p><b> {//成績(jī)統(tǒng)計(jì)</b></p><p><b> School p;</b></p><p> p=head; //保存鏈表頭指針</p><p> int boyscore=0; //男子團(tuán)體總分<
106、/p><p> int girlscore=0; //女子團(tuán)體總分</p><p> int totalscore=0; //團(tuán)體總分</p><p><b> int i;</b></p><p> int Project_i=0;</p><
107、p> int jifen=0;//積分</p><p><b> while(p)</b></p><p> { for(i=1;i<=p->count;i++)</p><p><b> {//計(jì)算分?jǐn)?shù)</b></p><p> totalscore=totalsco
108、re+p->students[i].score; //計(jì)算總分</p><p> if(p->students[i].sex==0) girlscore=girlscore+p->students[i].score;////女子團(tuán)體總分</p><p> else boyscore=boyscore+p->students[i].score;//男子團(tuán)體總分
109、</p><p><b> //計(jì)算積分</b></p><p> Project_i=p->students[i].Project;</p><p> if(Project_T[Project_i].count>=5)</p><p><b> {//取前名</b></p
110、><p> if(p->students[i].ranking==1)jifen=jifen+7;</p><p> else if(p->students[i].ranking==2)jifen=jifen+5;</p><p> else if(p->students[i].ranking==3)jifen=jifen+3;</p>
111、;<p> else if(p->students[i].ranking==4)jifen=jifen+2;</p><p> else if(p->students[i].ranking==5)jifen=jifen+1;</p><p><b> }</b></p><p> if(Project_T[Pr
112、oject_i].count<5)</p><p><b> {//取前名</b></p><p> if(p->students[i].ranking==1)jifen=jifen+5;</p><p> else if(p->students[i].ranking==2)jifen=jifen+3;</p>
113、;<p> else if(p->students[i].ranking==3)jifen=jifen+2;</p><p><b> }</b></p><p><b> }//for</b></p><p> p->jifen=jifen; //計(jì)算積分</p><
114、p> p->girlscore=girlscore;//保存女子總分</p><p> p->boyscore=boyscore;//保存男子總分</p><p> p->totalscore=totalscore;//保存總分</p><p><b> jifen=0;</b></p><p
115、> boyscore=0; //男子團(tuán)體總分</p><p> girlscore=0; //女子團(tuán)體總分</p><p> totalscore=0; //總分</p><p> p=p->next; //向后移動(dòng)指針</p><p><b> }//while</b></p>
116、<p><b> }</b></p><p> void AddStudent(School &head)</p><p> { //添加學(xué)生數(shù)據(jù)</p><p><b> int i=1;</b></p><p><b> while(i)</b&g
117、t;</p><p> { AddStudentLink(head); //添加學(xué)生數(shù)據(jù)</p><p> printf("\n是否繼續(xù)添加學(xué)生數(shù)據(jù)?[No=0 Yes=1]\n");</p><p> scanf("%d",&i);</p><p><b> }</
118、b></p><p><b> }</b></p><p> int menu() /*菜單函數(shù)*/</p><p><b> {int d;</b></p><p> printf("\n數(shù)據(jù)結(jié)構(gòu)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)\n");</p><p
119、> printf("\n1--參數(shù)設(shè)置 2--添加學(xué)生\n");</p><p> printf("\n3--統(tǒng)計(jì) 4--學(xué)校查詢\n");</p><p> printf("\n5--項(xiàng)目查詢 按其他鍵退出\n");</p><p> scanf("%d",
120、&d);</p><p> return(d);</p><p><b> }</b></p><p> int main()</p><p> {School head;</p><p> int i,flag=1;</p><p> int a,b,
121、c;</p><p> while(flag)</p><p> {switch(menu())</p><p><b> {case 1:{</b></p><p> printf("請(qǐng)輸入?yún)①悓W(xué)校數(shù)(n>=2)\nn=");</p><p> scanf(&
122、quot;%d",&SchoolCount);</p><p> printf("\n請(qǐng)輸男生項(xiàng)目總數(shù)(0<n<=20)\nm=");</p><p> scanf("%d",&BoyProject);</p><p> printf("\n請(qǐng)輸女生項(xiàng)目總數(shù)(0<n&
123、lt;=20)\nw=");</p><p> scanf("%d",&GirlProject);</p><p> TotalProject=BoyProject+GirlProject;</p><p> printf("\n請(qǐng)輸入男生項(xiàng)目信息\n");</p><p>
124、for(i=1;i<=BoyProject;i++)</p><p><b> {</b></p><p> Project_T[i].number=i; //項(xiàng)目編號(hào)</p><p> Project_T[i].count=0;</p><p> printf("項(xiàng)目編號(hào):%d\n"
125、,i);</p><p> printf("請(qǐng)輸入項(xiàng)目名稱:\n");</p><p> scanf("%s",Project_T[i].name); //項(xiàng)目名稱</p><p><b> }</b></p><p> printf("\n請(qǐng)輸入女生項(xiàng)目信息\n
126、");</p><p> for(i=1;i<=GirlProject;i++)</p><p><b> {</b></p><p> Project_T[20+i].number=i;</p><p> printf("項(xiàng)目編號(hào):%d\n",i); //項(xiàng)目編號(hào)</p
127、><p> printf("請(qǐng)輸入項(xiàng)目名稱:\n");</p><p> scanf("%s",Project_T[20+i].name); //項(xiàng)目名稱</p><p><b> }</b></p><p> CreatSchoolLink(head);</p>
128、<p><b> break;</b></p><p><b> }</b></p><p> case 2:AddStudent(head);break;</p><p> case 3:{ScoreCount(head);</p><p> OutPut_Link(hea
129、d);</p><p><b> break;</b></p><p><b> }</b></p><p> case 4:{ printf("\n請(qǐng)輸入學(xué)校編號(hào):");</p><p> scanf("%d",&a);</p>
130、<p> printf("\n請(qǐng)輸入項(xiàng)目編號(hào):");</p><p> scanf("%d",&b);</p><p> Find_School_Project(head,a,b);</p><p><b> break;</b></p><p>&l
131、t;b> }</b></p><p> case 5:{ printf("\n請(qǐng)輸入項(xiàng)目編號(hào):");</p><p> scanf("%d",&c);</p><p> Find_Project_ID(head,c);</p><p><b> break
132、;</b></p><p><b> }</b></p><p> default:flag=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>
133、;</p><p><b> 十.心得體會(huì) </b></p><p> 通過(guò)這次的課程設(shè)計(jì),感覺(jué)自己又學(xué)習(xí)了很多知識(shí),收獲很大,之前上課不懂得相關(guān)內(nèi)容也逐漸的認(rèn)識(shí)和掌握,對(duì)這么課的學(xué)習(xí)更有興趣,覺(jué)得自己學(xué)習(xí)這門(mén)專業(yè)還是很可觀的,當(dāng)遇到困難時(shí),不能退縮,要迎難而上!要提高自己的編程能力,就必須親自去體驗(yàn)、去設(shè)計(jì)、編輯、編譯、調(diào)試、運(yùn)行。之前自己感覺(jué)c語(yǔ)言學(xué)的還是可以
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)——運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)課程設(shè)計(jì)
- 《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)報(bào)告--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)論文
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)-數(shù)據(jù)結(jié)構(gòu)與算法課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)(c語(yǔ)言版)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)(含源代碼)
- 運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論