c語言課程設(shè)計報告運動會比賽計分系統(tǒng)含任務(wù)書_第1頁
c語言課程設(shè)計報告運動會比賽計分系統(tǒng)含任務(wù)書_第2頁
c語言課程設(shè)計報告運動會比賽計分系統(tǒng)含任務(wù)書_第3頁
c語言課程設(shè)計報告運動會比賽計分系統(tǒng)含任務(wù)書_第4頁
c語言課程設(shè)計報告運動會比賽計分系統(tǒng)含任務(wù)書_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

12、程序,但是在程序的運行過程中,又遇到了新的難題,那就 是我所編的程序中有太多的錯誤,根本無法進展運行,沒方法,只好硬著頭皮修改,不過還好,在教師和同學(xué)們的幫助下,我最終將我的程序成功地進展了運行,在我自己的程序運行 時,心中有一種說不出的快樂,是的,自己這幾天的努力總是沒有白費。 五附錄:源代碼:#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é) 校 編 號:); scanf(%d,&hi.schoolnum); for(j=0;jm+w;j+) printf(n項 目 編 號:); 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輸入錯誤,請重新輸入!:); scanf(%d,&hi.cj.top);break; printf(n獲得幾個名次:); 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(輸入錯誤!請重新輸入!);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(輸入錯誤!請重新輸入!);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é)校編號輸出*n); printf(*2.按學(xué)校總分輸出*n); printf(*3.按男團總分輸出*n); prin

17、tf(*4.按女團總分輸出*n); printf(*請根據(jù)提示進展操作!:); scanf(%d,&choice); printf(n); switch(choice) case 1:for(i=0;in;i+) printf(n學(xué)校編號:%dn,hi.schoolnum); printf(學(xué)??偡?%dn,hi.score); printf(男團總分:%dn,hi.mscore); printf(女團總分:%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é)校編號:%dn,hai.schoolnum); printf(*學(xué)??偡?%dn,hai.score); printf(*男團總分:%dn,hai.mscore); printf(*女團總分:%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é)校編號:%dn,hai.schoolnum); printf(*學(xué)??偡?%dn,hai.score); printf(*男團總分:%dn,hai.mscore); printf(*女團總分:%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(*此次運動會沒有這個工程*n)

20、; else printf(這個工程取前 %d名,該學(xué)校的成績?nèi)缦?n, h0.cj-1.top); for(k=0;km+w|s=0) printf(此次運動會不包括這個工程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é)校編號:%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(不能翻開文件n); e*it(1); fputs(學(xué)校編號 學(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(文件不存在,不能翻開文件!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ǐn)?shù)統(tǒng)計系統(tǒng)*#n); printf(nn #1.錄入信息#n); printf(nn #2.讀取信息#n); printf(nn #3.顯示信息#n); printf(nn #4.查詢信息#n); printf(

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論