c語(yǔ)言課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)含任務(wù)書(shū)_第1頁(yè)
c語(yǔ)言課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)含任務(wù)書(shū)_第2頁(yè)
c語(yǔ)言課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)含任務(wù)書(shū)_第3頁(yè)
c語(yǔ)言課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)含任務(wù)書(shū)_第4頁(yè)
c語(yǔ)言課程設(shè)計(jì)報(bào)告運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)含任務(wù)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、-PAGE . z. / v .課程設(shè)計(jì)目的將理論教學(xué)中涉及到的知識(shí)點(diǎn)貫穿起來(lái),對(duì)不同的數(shù)據(jù)類(lèi)型、程序控制構(gòu)造、數(shù)據(jù)構(gòu)造作一比擬和總結(jié),結(jié)合設(shè)計(jì)題目進(jìn)展綜合性應(yīng)用,對(duì)所學(xué)知識(shí)到達(dá)融會(huì)貫穿的程度。通過(guò)課程設(shè)計(jì),學(xué)生在下述各方面的能力應(yīng)該得到鍛煉:1進(jìn)一步穩(wěn)固、加深學(xué)生所學(xué)專(zhuān)業(yè)課程C語(yǔ)言教程的根本理論知識(shí),理論聯(lián)系實(shí)際,進(jìn)一步培養(yǎng)學(xué)生綜合分析問(wèn)題,解決問(wèn)題的能力。2全面考核學(xué)生所掌握的根本理論知識(shí)及其實(shí)際業(yè)務(wù)能力,從而到達(dá)提高學(xué)生素質(zhì)的最終目的。3利用所學(xué)知識(shí),開(kāi)發(fā)小型應(yīng)用系統(tǒng),掌握運(yùn)用C語(yǔ)言編寫(xiě)調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨(dú)立開(kāi)發(fā)應(yīng)用系統(tǒng),進(jìn)展數(shù)據(jù)處理的綜合能力。4對(duì)于給定的設(shè)計(jì)題目,如何進(jìn)展分析,理

2、清思路,并給出相應(yīng)的數(shù)學(xué)模型。 5掌握自頂而下的設(shè)計(jì)方法,將大問(wèn)題進(jìn)展模塊化,領(lǐng)會(huì)構(gòu)造化程序設(shè)計(jì)的方法。6熟練掌握C語(yǔ)言的根本語(yǔ)法,靈活運(yùn)用各種數(shù)據(jù)類(lèi)型。7進(jìn)一步掌握在集成環(huán)境下如何調(diào)試程序單步調(diào)試,設(shè)置斷點(diǎn)、觀察表達(dá)式,分塊調(diào)試和修改程序。課程設(shè)計(jì)名稱(chēng)及內(nèi)容課程設(shè)計(jì)名稱(chēng):運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng)設(shè)計(jì)內(nèi)容:設(shè)計(jì)一個(gè)運(yùn)動(dòng)會(huì)比賽計(jì)分系統(tǒng),該系統(tǒng)要求對(duì)運(yùn)動(dòng)會(huì)比賽得分進(jìn)展管理和維護(hù)。任務(wù)和要求要求:初始化輸入:N-參賽學(xué)??倲?shù),M-男子競(jìng)賽工程數(shù),W-女子競(jìng)賽工程數(shù)各工程名次取法有如下幾種:取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;取前3名:第一名得分5,第二名得分3

3、,第三名得分2;用戶(hù)自定義:各名次權(quán)值由用戶(hù)指定。設(shè)計(jì)方案提示1界面系統(tǒng)以菜單方式工作2輸入數(shù)據(jù)并存入文件使用到構(gòu)造體變量和動(dòng)態(tài)鏈表,由程序提醒用戶(hù)填寫(xiě)比賽結(jié)果,輸入各工程獲獎(jiǎng)運(yùn)發(fā)動(dòng)信息。對(duì)輸入的信息進(jìn)展合法性判斷,直到輸入正確為止。都輸入完成后,調(diào)用寫(xiě)文件函數(shù)對(duì)指定的文件進(jìn)展寫(xiě)操作,把輸入的信息寫(xiě)入到文件中。3顯示所有記錄將文件中的所有記錄以表格的形式輸出。如果文件未翻開(kāi)會(huì)出現(xiàn)文件翻開(kāi)失敗!按任意鍵返回.,關(guān)閉文件。(4) 查詢(xún)所有信息記錄完畢后,用戶(hù)可以查詢(xún)各個(gè)學(xué)校的比賽成績(jī),生成團(tuán)體總分報(bào)表,查看參賽學(xué)校信息和比賽工程信息等。二:算法設(shè)計(jì):信息輸入模塊、比賽結(jié)果錄入模塊以及查詢(xún)模 題目的

4、總體要求是要建立三個(gè)模塊:信息輸入模塊、 建立三個(gè)模塊 塊。 在建立完之后,要求該程序能夠在用戶(hù)將各種必要的信息記錄之后,用戶(hù)可以查詢(xún)所 有學(xué)校的比賽成績(jī), 而且也可以生成團(tuán)體總分表, 查看參賽學(xué)校信息和比賽工程信息等一切 錄入的信息,為此,要示編程人員能通過(guò)一些具體的程序?qū)⒁陨系墓δ芗右詫?shí)現(xiàn)。 在建立三個(gè)模塊的大前提下,我們將采用構(gòu)造體,循環(huán)體,指針和各種函數(shù)來(lái)實(shí)現(xiàn)這 種功能,在數(shù)據(jù)構(gòu)造體中,要采用構(gòu)造體數(shù)組,其中包括學(xué)校、工程、運(yùn)發(fā)動(dòng)三個(gè)構(gòu)造體。 學(xué)校構(gòu)造體成員包括學(xué)校校名、競(jìng)賽工程、得分工程構(gòu)造體成員包括工程名、權(quán)值。 1在此程序中,包括幾個(gè)頭文件:mainfile.h; dos.h;

5、conio.h; momery.h; 接下來(lái),定義全 局變量,其中包括參賽學(xué)校工程數(shù) N;男子工程數(shù) M;女子工程數(shù) W;參賽學(xué)校g_school; 競(jìng)賽工程 g_sport; 各名次鏈表指針 ptrHead,ptrThis,ptrNew; 總體設(shè)計(jì):系統(tǒng)設(shè)計(jì)為信息輸入模塊、比賽結(jié)果錄入模塊和查詢(xún)模塊三個(gè)模塊。 總體設(shè)計(jì):系統(tǒng)設(shè)計(jì)為信息輸入模塊、比賽結(jié)果錄入模塊和查詢(xún)模塊三個(gè)模塊。 2各種構(gòu)造的分析: 各種構(gòu)造的分析: 靜態(tài)存儲(chǔ)方式: 它是指在程序運(yùn)行期間由系統(tǒng)分配固定的存儲(chǔ)空間的方式, 全局變量全部存 靜態(tài)存儲(chǔ)方式: 放在靜態(tài)存儲(chǔ)區(qū)中,在程序開(kāi)場(chǎng)執(zhí)行時(shí)給全局變量分配存儲(chǔ)區(qū),程序執(zhí)行完畢就釋放

6、,在程 序執(zhí)行過(guò)程中它們占據(jù)固定的存儲(chǔ)單元,而不是動(dòng)態(tài)地進(jìn)展分配和釋放。 用 static 聲明局部變量:使用該變量可以使局部變量的值在函數(shù)調(diào)用完畢后不消失而保存原 值,這即為靜態(tài)局部變量的特點(diǎn)。 靜態(tài)局部變量屬于靜態(tài)存儲(chǔ)類(lèi)別, 在靜態(tài)存儲(chǔ)區(qū)內(nèi)分配存儲(chǔ)單元, 在程序整個(gè)運(yùn)行期間都不 釋放。對(duì)靜態(tài)局部變量是在編譯時(shí)賦初值的,即只賦初值一次,在程序運(yùn)行時(shí)它已有初值, 以后每次調(diào)用函數(shù)時(shí)不再重新賦初值而只是保存上次函數(shù)調(diào)用完畢時(shí)的值。 如在定義局部變 量時(shí)不賦初值的話(huà), 則對(duì)靜態(tài)局部不說(shuō), 編譯時(shí)自動(dòng)賦初值 0 對(duì)數(shù)值型變量 或空字符 總體設(shè)計(jì) 信息輸入模塊 比賽結(jié)果錄入模塊 查詢(xún)模塊 設(shè)置參賽信息

7、 設(shè)置競(jìng)賽工程總數(shù) 主菜單 設(shè)置競(jìng)賽工程信息 設(shè)置工程名次取法 生成報(bào)表 打印競(jìng)賽工程信息 填充參賽信息 請(qǐng)輸入您的選擇 開(kāi)場(chǎng)。而對(duì)自動(dòng)變量來(lái)說(shuō),如果不賦初值則它的值是一個(gè)不確定的值。雖然靜態(tài)局部 變量在函數(shù)調(diào)用完畢后仍然存在,但其他函數(shù)是不能引用它的。 Malloc 函數(shù) 函數(shù)的作用是在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中分配一個(gè)長(zhǎng)度為 size 的連續(xù)空間。此函數(shù)的值 是一個(gè)指向分配域起始地址的指針,如果此函數(shù)未能成功地執(zhí)行,則返回空指針。 鏈表是動(dòng)態(tài)地進(jìn)展存儲(chǔ)分配的一種構(gòu)造, 所謂建立動(dòng)態(tài)鏈表是指在程序執(zhí)行過(guò)程中從無(wú)到有 地建立一個(gè)鏈表,即一個(gè)一個(gè)地開(kāi)辟結(jié)點(diǎn)和輸入各結(jié)點(diǎn)數(shù)據(jù),并建立起前后相鏈的關(guān)系。 循環(huán)

8、構(gòu)造是構(gòu)造程序設(shè)計(jì)的根本構(gòu)造之一,它和順序構(gòu)造、選擇構(gòu)造共同作為各種復(fù) 循環(huán)構(gòu)造 雜程序的根本構(gòu)造單元。通常用 while、dowhile 語(yǔ)句實(shí)現(xiàn)循環(huán),最常用的是 for 語(yǔ)句的循 環(huán),奪循環(huán)中還有循環(huán)的嵌套,它是指一個(gè)循環(huán)體內(nèi)又包含另一個(gè)完整的循環(huán)構(gòu)造。用語(yǔ)句 來(lái)實(shí)現(xiàn)從循環(huán)體內(nèi)跳出來(lái),即提前完畢循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句,但 break 語(yǔ)句不能 用于循環(huán)語(yǔ)句和 swich 語(yǔ)句之外的任何其他語(yǔ)句中。另外一種就是 continue 語(yǔ)句,它的作用 是完畢本次循環(huán), 即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句, 接著進(jìn)展下一次是否執(zhí)行循環(huán)的判 定。 Swich 語(yǔ)句 語(yǔ)句是多分支選擇語(yǔ)句,它后面括號(hào)

9、內(nèi)的表達(dá)式 ,ANSI 標(biāo)準(zhǔn)允許它為任何類(lèi) 型。當(dāng)表達(dá)式的值與一個(gè) case 后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此 case 后面的語(yǔ)句, 假設(shè)所有的 case 中的常量表達(dá)式的值都沒(méi)有與表達(dá)式的值匹配的, 就執(zhí)行 default 后面的語(yǔ)句, 每一個(gè) case 的常量表達(dá)式的值必須都不一樣;否則就會(huì)出現(xiàn)相互矛盾的現(xiàn)象。各個(gè) case 和 default 的出現(xiàn)次序不影響執(zhí)行結(jié)果,執(zhí)行完一個(gè) case 后面的語(yǔ)句后,流程控制轉(zhuǎn)移到下一 個(gè) case 繼續(xù)執(zhí)行。 case 常量表達(dá)式只是起語(yǔ)句標(biāo)號(hào)作用,并不是在該處進(jìn)展條件判斷。 在執(zhí)行 swich 語(yǔ)句時(shí),根據(jù) swich 后面表達(dá)式的值找到匹

10、配的入口標(biāo)號(hào),就從此標(biāo)號(hào)開(kāi)場(chǎng)執(zhí) 行下去,不再進(jìn)展判斷程序流程圖 開(kāi)場(chǎng) 請(qǐng)輸入您的選擇 c s i p q 編號(hào) n=0 i0 4 1 n5 n3 輸出 *MENU1* * 1.enter! 2.record! 3.search! * choice your number:( ) 二、課程設(shè)計(jì)體會(huì) 在此次的 C 語(yǔ)言的課程設(shè)計(jì)中,我不僅 學(xué)到了許多有慶這方面的專(zhuān)業(yè)知識(shí), 更重要的是我學(xué)會(huì)了如何在拿到一個(gè)題目時(shí)進(jìn)展簡(jiǎn)單的 程序分析,并編譯出一些相對(duì)簡(jiǎn)單的程序,當(dāng)然了,對(duì)自己編譯出的不對(duì)的程序,我也能進(jìn) 行一些分析,并對(duì)其進(jìn)展完善。在此次的學(xué)習(xí)過(guò)程中,教師教給了我們很多的東西,從一開(kāi) 始的不懂 VC

11、+這種軟件,到最后的我們可以進(jìn)展較熟練的應(yīng)用它,也許在這過(guò)程中,我們 無(wú)論是學(xué)生還是教師都遇到了一些小的困難, 但是在我們師生的共同努力下, 我們最終還是 克制了它,單從這一點(diǎn)來(lái)說(shuō),我們就學(xué)到了許多的東西,比方 teamwork,同學(xué)之間的相互 幫助以及與教師的配合,都證明了這一點(diǎn),我相信這是我此次學(xué)習(xí) C 語(yǔ)言程序的最大收獲。 在我的程序設(shè)計(jì)的過(guò)程中,遇到了很大有難題,特別是在剛拿到我的題目時(shí),頭腦中 根本沒(méi)有頭緒,更不要說(shuō)去編譯程序了,當(dāng)時(shí)真的很擔(dān)憂(yōu)是否可以完成教師布置的任務(wù),但 慢慢的在學(xué)習(xí)的過(guò)程中,我開(kāi)場(chǎng)懂得了一些編譯的方法,就嘗試著去編譯一些程序,結(jié)果還 是很好,最后我編出了我題目的

12、程序,但是在程序的運(yùn)行過(guò)程中,又遇到了新的難題,那就 是我所編的程序中有太多的錯(cuò)誤,根本無(wú)法進(jìn)展運(yùn)行,沒(méi)方法,只好硬著頭皮修改,不過(guò)還好,在教師和同學(xué)們的幫助下,我最終將我的程序成功地進(jìn)展了運(yùn)行,在我自己的程序運(yùn)行 時(shí),心中有一種說(shuō)不出的快樂(lè),是的,自己這幾天的努力總是沒(méi)有白費(fèi)。 五附錄:源代碼:#include#include#include#define n 2#define m 1#define w 1typedef structint top; int range5;int mark5; int itemnum;itemnode;typedef struct int schoolnum

13、; int score; int mscore; int wscore; itemnode cm+w;headnode;headnode hn;void input() int i,j,k,s; for(i=0;in;i+) hi.schoolnum=0; hi.score=0; hi.mscore=0; hi.wscore=0; for(i=0;in;i+) printf(n學(xué) 校 編 號(hào):); scanf(%d,&hi.schoolnum); for(j=0;jm+w;j+) printf(n項(xiàng) 目 編 號(hào):); scanf(%d,&hi.cj.itemnum); printf(n取前3或

14、前5名:); scanf(%d,&hi.cj.top); while(hi.cj.top!=3&hi.cj.top!=5) printf(n輸入錯(cuò)誤,請(qǐng)重新輸入!:); scanf(%d,&hi.cj.top);break; printf(n獲得幾個(gè)名次:); scanf(%d,&k); for(s=0;s5;s+) hi.cj.ranges=0; for(s=0;sk;s+) l: printf(n名 次:); scanf(%d,&hi.cj.ranges); if(hi.cj.top=3) switch(hi.cj.ranges) case 0:hi.cj.marks=0; break;

15、case 1:hi.cj.marks=5; break; case 2:hi.cj.marks=3; break; case 3:hi.cj.marks=2; break;default:puts(輸入錯(cuò)誤!請(qǐng)重新輸入!);goto l; else switch(hi.cj.ranges) case 0:hi.cj.marks=0; break; case 1:hi.cj.marks=7; break; case 2:hi.cj.marks=5; break; case 3:hi.cj.marks=3; break; case 4:hi.cj.marks=2; break; case 5:hi

16、.cj.marks=1; break;default:puts(輸入錯(cuò)誤!請(qǐng)重新輸入!);goto l; hi.score=hi.score+hi.cj.marks; if(j=m-1) hi.mscore=hi.mscore+hi.cj.marks; else hi.wscore=hi.wscore+hi.cj.marks; printf(n); void output() int choice,i,j,t; int an; int sign; do printf(n*1.按學(xué)校編號(hào)輸出*n); printf(*2.按學(xué)??偡州敵?n); printf(*3.按男團(tuán)總分輸出*n); prin

17、tf(*4.按女團(tuán)總分輸出*n); printf(*請(qǐng)根據(jù)提示進(jìn)展操作!:); scanf(%d,&choice); printf(n); switch(choice) case 1:for(i=0;in;i+) printf(n學(xué)校編號(hào):%dn,hi.schoolnum); printf(學(xué)??偡?%dn,hi.score); printf(男團(tuán)總分:%dn,hi.mscore); printf(女團(tuán)總分:%dn,hi.wscore); printf(n); break; case 2:for(i=0;in;i+) ai=i; for(i=0;in;i+) for(j=i+1;jn;j+)

18、if(hai.scorehj.score) t=ai; ai=aj; aj=t; for(i=0;in;i+) printf(n學(xué)校編號(hào):%dn,hai.schoolnum); printf(*學(xué)??偡?%dn,hai.score); printf(*男團(tuán)總分:%dn,hai.mscore); printf(*女團(tuán)總分:%dn,hai.wscore);printf(n); break; case 3:for(i=0;in;i+) ai=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hai.mscorehj.mscore) t=ai; ai=aj; aj=t; fo

19、r(i=0;in;i+) printf(n學(xué)校編號(hào):%dn,hai.schoolnum); printf(*學(xué)??偡?%dn,hai.score); printf(*男團(tuán)總分:%dn,hai.mscore); printf(*女團(tuán)總分:%dn,hai.wscore); printf(n); break; case 4:for(i=0;in;i+) ai=i; for(i=0;in;i+) for(j=i+1;jn;j+) if(hi.wscorehj.wscore) t=ai; ai=aj; aj=t; for(i=0;in)|(im+w|j=0) printf(*此次運(yùn)動(dòng)會(huì)沒(méi)有這個(gè)工程*n)

20、; else printf(這個(gè)工程取前 %d名,該學(xué)校的成績(jī)?nèi)缦?n, h0.cj-1.top); for(k=0;km+w|s=0) printf(此次運(yùn)動(dòng)會(huì)不包括這個(gè)工程n); else printf(該工程取前 %d名,取得名次的學(xué)校n,h0.cs-1.top); for(i=0; in;i+) for(j=0;j5;j+) if(hi.cs-1.rangej!=0) printf(學(xué)校編號(hào):%d,名次:%dn,hi.schoolnum,hi.cs-1.rangej); printf(是否繼續(xù)操作1/0:); scanf(%d,&i); printf(n); while(i=1); b

21、reak; void write() int i,j,s; FILE *fp; if(fp=fopen(sportsdata結(jié)果.t*t,a+)=NULL) printf(不能翻開(kāi)文件n); e*it(1); fputs(學(xué)校編號(hào) 學(xué)??偡?男子總分 女子總分 ,fp);fputs(n,fp); for(i=0;in;i+) fprintf(fp,%2dtt ,hi.schoolnum); fprintf(fp,%2dtt,hi.score); fprintf(fp,%2dtt,hi.mscore); fprintf(fp,%2d ,hi.wscore); fputs(n,fp); fclos

22、e(fp); void read() FILE *fp; int i,j,s; if(fp=fopen(sportsdata.t*t,r)=NULL) printf(文件不存在,不能翻開(kāi)文件!n); e*it(1); for(i=0;in;i+) fscanf(fp,%d,&hi.schoolnum); / for(j=0;jm+w;j+) / fscanf(fp,%d,&hi.cj.itemnum); fscanf(fp,%d,&hi.cj.top); / for(s=0;s5;s+) / fscanf(fp,%d,&hi.cj.ranges); / / fclose(fp); int main() FILE *fp; int choice; int flag1=1,flag2=1; system(cls); do printf(n#*歡送使用程序*#n); printf(n#*校級(jí)運(yùn)動(dòng)會(huì)分?jǐn)?shù)統(tǒng)計(jì)系統(tǒng)*#n); printf(nn #1.錄入信息#n); printf(nn #2.讀取信息#n); printf(nn #3.顯示信息#n); printf(nn #4.查詢(xún)信息#n); printf(

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論