版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1 需求分析1</b></p><p> 1.1問題描述1</p><p> 1.2輸入數(shù)據(jù)要求1</p><p> 1.3輸出數(shù)據(jù)要求2</p><p> 1.4開發(fā)環(huán)境和工具
2、2</p><p> 1.5成員分工2</p><p><b> 2總體設(shè)計(jì)3</b></p><p> 2.1總體設(shè)計(jì)思路3</p><p> 2.2模塊結(jié)構(gòu)圖3</p><p><b> 2.3模塊說明4</b></p><p&
3、gt;<b> 3詳細(xì)設(shè)計(jì)6</b></p><p> 3.1數(shù)據(jù)類型定義6</p><p> 3.2Scan模塊實(shí)現(xiàn)6</p><p> 3.3Save以及Read模塊實(shí)現(xiàn)8</p><p> 3.4Count模塊實(shí)現(xiàn)9</p><p> 4 測試結(jié)果與分析11</
4、p><p> 4.1.輸入數(shù)據(jù)計(jì)算結(jié)果11</p><p> 4.2數(shù)據(jù)的文件保存12</p><p> 4.3從文件讀入數(shù)據(jù)并計(jì)算結(jié)果12</p><p><b> 5個(gè)人總結(jié)14</b></p><p><b> 6 附 錄15</b></p>
5、<p><b> 6.1源代碼15</b></p><p><b> 1 需求分析</b></p><p><b> 問題描述 </b></p><p> 從鍵盤讀入比賽數(shù)據(jù);從文件讀入比賽數(shù)據(jù);將從鍵盤輸入的比賽數(shù)據(jù)存入文件(一個(gè)文件可存放多局比賽的數(shù)據(jù))。將比賽數(shù)據(jù)顯示在屏
6、幕上計(jì)算比賽結(jié)果及統(tǒng)計(jì)數(shù)據(jù),并顯示在屏幕上。</p><p> 一局(GAME)保齡球分為10格,每格里有兩次投球機(jī)會(huì),如在第一次投球時(shí)全中,就不需要投第二球。每一格可能出現(xiàn)三種情況:</p><p> 1.失球(MISS)</p><p> 無論何種情況,在一格的兩次投球時(shí),未能擊倒10個(gè)瓶,此格的分?jǐn)?shù)為擊倒的瓶數(shù),未擊中用一個(gè)(-)符號(hào)表示。</p&
7、gt;<p> 2.補(bǔ)中(SPARE)</p><p> 當(dāng)?shù)诙瓮肚驌舻乖摳竦谝磺蛴嘞碌娜科孔?稱為補(bǔ)中,用一個(gè)(/)符號(hào)表示。補(bǔ)中的記分是10分加上下一次投球擊倒的瓶數(shù)。</p><p> 3.全中(STRIKE)</p><p> 當(dāng)每一格的第一次投球擊倒全部豎立的十個(gè)瓶時(shí),稱為全中,用一個(gè)(×)符號(hào)表示。全中的記分是10分(
8、擊倒的瓶)加該球員下兩次投球擊倒的瓶數(shù)。</p><p> 但在第十格中情況比較特殊:</p><p> (1)如第二次投球未補(bǔ)中,則第十格得分為第九格得分加上第十格所擊倒瓶數(shù)。</p><p> (2)如第二次投球補(bǔ)中,則追加一次投球機(jī)會(huì),第十格得分為第九格得他加上10加上追加一次投球擊倒瓶數(shù)。</p><p> (3)如第一球?yàn)槿?/p>
9、中,則追上加二次投球機(jī)會(huì),第十格得分為第九格得分加上10加追加二次投球擊倒的瓶數(shù)。因此從第一格到第十格的兩次追加投球,都為全中,則為12個(gè)全中,得分為滿分300分。</p><p><b> 輸入數(shù)據(jù)要求</b></p><p> 第一格第一次擊倒瓶數(shù):</p><p> 第一格第二次擊倒瓶數(shù):</p><p>
10、 第二格第一次擊倒瓶數(shù):</p><p> 第二格第二次擊倒瓶數(shù):</p><p> …………………………</p><p><b> 輸出數(shù)據(jù)要求</b></p><p><b> 輸入數(shù)據(jù)顯示格式:</b></p><p><b> 積分</b&g
11、t;</p><p> 輸出數(shù)據(jù)顯示格式: </p><p><b> 開發(fā)環(huán)境和工具</b></p><p> 開發(fā)環(huán)境:Windows 7</p><p> 開發(fā)工具:Visual C++ 6.0</p><p><b> 成員分工</b></p>
12、;<p> 熊宇堂:計(jì)分模塊、數(shù)據(jù)輸入模塊、文件讀寫模塊、選擇模塊、系統(tǒng)測試</p><p> 張 嵩:數(shù)組結(jié)構(gòu)體轉(zhuǎn)換模塊、數(shù)據(jù)輸出模塊、屏幕顯示模塊、系統(tǒng)測試</p><p><b> 2總體設(shè)計(jì)</b></p><p><b> 2.1總體設(shè)計(jì)思路</b></p><p>
13、;<b> 設(shè)計(jì)思路</b></p><p> 因?yàn)檫@是一個(gè)計(jì)分系統(tǒng),所以在主函數(shù)中采用switch結(jié)構(gòu)來達(dá)到輸入數(shù)字來進(jìn)行選項(xiàng)操作。然后通過定義大量的函數(shù),然后在swtich中來一個(gè)個(gè)調(diào)用函數(shù),來進(jìn)行運(yùn)算和處理。</p><p> 由于要使得系統(tǒng)能一次輸入多局比賽并保存,讀寫文件時(shí),先把每局?jǐn)?shù)據(jù)存入一個(gè)最多能存10局比賽數(shù)據(jù)的結(jié)構(gòu)體中,然后將整個(gè)結(jié)構(gòu)體存入文件
14、,讀取文件時(shí),可以自由選擇載入保存比賽數(shù)據(jù)的文件,并自行選擇需要顯示和計(jì)算的比賽局?jǐn)?shù),然后進(jìn)行顯示,讀寫文件一律采用二進(jìn)制方式讀寫。</p><p> 輸入比賽數(shù)據(jù)以及輸出比賽數(shù)據(jù)時(shí),利用循環(huán)語句依次輸出;對(duì)于保齡球第十格擊球的特殊性,再加入if語句判斷,然后根據(jù)不同情況進(jìn)行輸入或者計(jì)算。</p><p> 顯示部分先定義count函數(shù)用來在得到比賽數(shù)據(jù)后進(jìn)行計(jì)算積分,然后一種顯示是輸
15、入數(shù)據(jù)后直接計(jì)算顯示;還有一種是讀取文件中比賽數(shù)據(jù),然后再進(jìn)行積分運(yùn)算,再顯示結(jié)果。</p><p> 在現(xiàn)實(shí)中,充分運(yùn)用清屏函數(shù),使程序顯得直觀簡潔。</p><p><b> 數(shù)據(jù)存儲(chǔ)</b></p><p> 在不退出程序的時(shí)候,如不進(jìn)行將比賽數(shù)據(jù)存入文件的選項(xiàng),每局比賽都存在個(gè)最多包含10局比賽數(shù)據(jù)的結(jié)構(gòu)體中,然后可以選擇是否把整
16、個(gè)結(jié)構(gòu)體讀入文件并存儲(chǔ)以便下次直接讀取并計(jì)算顯示。</p><p><b> 2.2模塊結(jié)構(gòu)圖</b></p><p> 根據(jù)需求將系統(tǒng)劃分為兩個(gè)個(gè)功能模塊,函數(shù)之間的調(diào)用關(guān)系如圖1.1所示。</p><p> 圖1.1 保齡球計(jì)分系統(tǒng)模塊結(jié)構(gòu)圖</p><p> 1)Scan:初始化比賽,輸入比賽數(shù)據(jù)。<
17、/p><p> 2)Save: 將比賽數(shù)據(jù)讀入文件(只保存每局比賽擊倒瓶數(shù)而不保存積分?jǐn)?shù)據(jù))。</p><p> 3)Count:通過計(jì)算得到比賽積分。</p><p> 4)Print: 調(diào)用Count計(jì)算后得到比賽積分結(jié)果并輸出。</p><p> 5)Read: 讀取存儲(chǔ)了比賽數(shù)據(jù)的文件。</p><p>
18、 Changein: 將比賽數(shù)據(jù)由數(shù)組存入結(jié)構(gòu)體,便于讀入文件。</p><p> Changeout: 將結(jié)構(gòu)體中數(shù)據(jù)賦值給數(shù)組,方便讀取文件得到數(shù)據(jù)后的計(jì)算、處理。</p><p><b> 2.3模塊說明</b></p><p><b> Scan模塊</b></p><p> 函數(shù)
19、原型:void scan();</p><p> 功 能:提示輸入局?jǐn)?shù)以及每格擊倒球數(shù),即輸入比賽數(shù)據(jù)。</p><p> 輸入?yún)?shù):a[11][4],二維數(shù)組,存放比賽數(shù)據(jù)。</p><p> 輸出參數(shù):a[11][4],已經(jīng)賦值了的二維數(shù)組,存有一局比賽數(shù)據(jù)。</p><p><b> Save模塊</b&g
20、t;</p><p> 函數(shù)原型:void save();</p><p> 功 能:將小于等于十局?jǐn)?shù)量的比賽數(shù)據(jù)存入自己命名的文件。</p><p> 輸入?yún)?shù):char ch,infile[15],字符串?dāng)?shù)組,輸入文件名字。</p><p> 輸出參數(shù):char ch,infile[15],字符串?dāng)?shù)組,已經(jīng)輸入的文件名字。&
21、lt;/p><p><b> Count模塊</b></p><p> 函數(shù)原型:void count(int p[ ][4],int n);</p><p> 功 能:按保齡球比賽規(guī)則計(jì)算比賽積分。</p><p> 輸入?yún)?shù):int p[][4],已經(jīng)賦值了二維數(shù)組,包含比賽數(shù)據(jù)。</p>&
22、lt;p> 輸出參數(shù):int p[][4],已經(jīng)賦值了二維數(shù)組,包含比賽數(shù)據(jù)以及每格所得分?jǐn)?shù)。</p><p><b> Print模塊</b></p><p> 函數(shù)原型:void print();</p><p> 功 能:按格式輸出比賽數(shù)據(jù)并加和總分并按格式顯示積分結(jié)果;</p><p> 輸
23、入?yún)?shù):int a[11][4],已經(jīng)賦值了二維數(shù)組,包含比賽數(shù)據(jù)以及每格所得分?jǐn)?shù)。</p><p> 輸出參數(shù):int a[11][4],已經(jīng)賦值了二維數(shù)組,包含比賽數(shù)據(jù)以及每格所得分?jǐn)?shù)以及總分。</p><p> 5.Read模塊函數(shù)原型:void read();功 能:讀取存在文件中的比賽數(shù)據(jù);輸入?yún)?shù):outfile,字符串,需要讀取的文件名;
24、 t,整形變量,需要讀取的比賽的局?jǐn)?shù)。輸出參數(shù):game[t],結(jié)構(gòu)體,包含所需比賽的數(shù)據(jù)。</p><p> 6.Changein模塊函數(shù)原型:void changein();功 能:將二維數(shù)組轉(zhuǎn)化為結(jié)構(gòu)體;輸入?yún)?shù):int a[11][4],已經(jīng)賦值了二維數(shù)組,包含比賽數(shù)據(jù)以及每格所得分?jǐn)?shù)。輸出參數(shù):game[10].turn[11][2],結(jié)構(gòu)體,包含比賽數(shù)據(jù)以及每格所得分?jǐn)?shù)。</
25、p><p> 7.Changeout模塊函數(shù)原型:void changeout();功 能:將結(jié)構(gòu)體轉(zhuǎn)化為二維數(shù)組;輸入?yún)?shù):game[10].turn[11][2],結(jié)構(gòu)體,包含比賽數(shù)據(jù)以及每格所得分?jǐn)?shù)。輸出參數(shù):int a[11][4],已經(jīng)賦值了二維數(shù)組,包含比賽數(shù)據(jù)以及每格所得分?jǐn)?shù)。</p><p><b> 3詳細(xì)設(shè)計(jì)</b></p&g
26、t;<p> 3.1數(shù)據(jù)類型定義 </p><p><b> 1. 數(shù)據(jù)類型定義</b></p><p> char ch,infile[15],outfile[15]; /*定義兩個(gè)字符數(shù)組,用來輸入存儲(chǔ)以及讀取的文件名*/ </p><p> struct game_number </p>
27、<p> { int turn[11][2];</p><p> } game[10]; /*定義結(jié)構(gòu)體,最多包含10局比賽數(shù)據(jù)*/</p><p> int a[11][4];</p><p> int t; /*定義兩個(gè)全局變量,分別用于進(jìn)行數(shù)據(jù)輸入以及計(jì)算和輸入選擇比賽局?jǐn)?shù)*/</p><
28、;p> 3.2Scan模塊實(shí)現(xiàn)</p><p><b> 算法思想</b></p><p> 用for循環(huán)來給數(shù)組賦值;用if 以及 do while語句同進(jìn)行,來進(jìn)行輸入判斷,避免輸入錯(cuò)誤;在第十格用if語句判斷接下來的擊球情況。</p><p><b> 具體實(shí)現(xiàn)</b></p><p
29、> for(i=0;i<=8;i++) /* 用for循環(huán)來給數(shù)組賦值 */</p><p><b> {</b></p><p> printf("請(qǐng)輸入第%d格第一次擊倒瓶數(shù):",i+1);</p><p> scanf(&quo
30、t;%d",&a[i][0]);</p><p><b> do</b></p><p><b> { </b></p><p> if( a[i][0]>10 || a[i][0]<0 ) </p><p><b> { </
31、b></p><p><b> m=0;</b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[i][0]);</p><p><b> } </b></p>
32、<p><b> else m=1;</b></p><p> } while(m==0); /*用if、do-while來避免輸入錯(cuò)誤*/</p><p><b> }</b></p><p> printf("請(qǐng)輸入第十格第一次擊倒瓶數(shù):&
33、quot;);</p><p> scanf("%d",&a[9][0]);</p><p><b> do</b></p><p><b> { </b></p><p> if( a[9][0]>10 || a[9][0]<0 )
34、 </p><p><b> { </b></p><p><b> m=0; </b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[9][0]);</p>
35、<p><b> } </b></p><p> else m=1;</p><p> } while(m==0);</p><p> if(a[9][0]==10) </p><p><b> {</b></p><p>
36、 printf("請(qǐng)輸入追加第一次擊倒瓶數(shù):"); </p><p> scanf("%d",&a[10][0]); </p><p><b> do</b></p><p><b> {</b></p><p> if( a[10
37、][0]>10 || a[10][0]<0 )</p><p><b> { </b></p><p><b> m=0; </b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d"
38、;,&a[10][0]);</p><p><b> } </b></p><p> else m=1;</p><p> } while(m==0);</p><p> printf("請(qǐng)輸入追加第二次擊倒瓶數(shù):");</p><p>
39、 scanf("%d",&a[10][1]);</p><p><b> do</b></p><p><b> { </b></p><p> if( a[10][1]>10 || a[10][1]<0 ) </p><p><
40、b> { </b></p><p><b> m=0;</b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[10][1]);</p><p><b> } <
41、;/b></p><p><b> else m=1;</b></p><p> } while(m==0);</p><p><b> }</b></p><p><b> else </b></p><p><b&
42、gt; { </b></p><p> printf("請(qǐng)輸入第十格第二次擊倒瓶數(shù):");</p><p> scanf("%d",&a[9][1]);</p><p><b> do</b></p><p><b> {</b
43、></p><p> if( a[9][1]>10 || a[9][1]<0 || a[9][0]+a[9][1]>10 || a[9][0]+a[9][1]<0 )</p><p><b> { </b></p><p><b> m=0;</b></p><p&
44、gt; printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[9][1]);</p><p><b> } </b></p><p> else m=1;</p><p> } while(m==0);&l
45、t;/p><p> if(a[9][0]+a[9][1]==10) </p><p><b> {</b></p><p> printf("請(qǐng)輸入追加一次擊倒瓶數(shù):");</p><p> scanf("%d",&a[10][0]); </p>
46、<p><b> do</b></p><p><b> { </b></p><p> if( a[10][0]>10 || a[10][0]<0 ) </p><p><b> { </b></p><p><b
47、> m=0; </b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[10][0]);</p><p><b> } </b></p><p> else m=
48、1;</p><p> } while(m==0);</p><p><b> } </b></p><p> } /*用if和do-while語句按照比賽規(guī)則判斷第十格第一次擊球后所有輸入情況*/</p><p> 3.3Save以及Read模塊實(shí)現(xiàn)</p><
49、p><b> 1.算法思想</b></p><p> 定義兩個(gè)字符串組以及一個(gè)包含10個(gè)二維數(shù)組的結(jié)構(gòu)體,前者用來輸入文件名,后者用來包含10局以內(nèi)數(shù)量的比賽數(shù)據(jù),然后通過二進(jìn)制讀寫方式,將整個(gè)結(jié)構(gòu)體存儲(chǔ)進(jìn)自己命名的文件中;讀取文件時(shí)也采用二進(jìn)制將整個(gè)結(jié)構(gòu)體讀取。</p><p> 讀入、讀取文件時(shí)采用for循環(huán)方式全部讀入、讀寫。</p>
50、<p> 注意:Save模塊保存的只是比賽數(shù)據(jù),即幾局比賽每局每格擊倒的瓶數(shù);并不是直接保存比賽積分結(jié)果;所以Read模塊讀取后,還要再將數(shù)據(jù)進(jìn)行計(jì)算然后得出積分結(jié)果。</p><p><b> 2.具體實(shí)現(xiàn)</b></p><p> struct game_number</p><p> { int turn[11][2
51、];</p><p> } game[10];</p><p> char ch,infile[15],outfile[15]; </p><p> void save()</p><p><b> { </b></p><p> FILE *fp1;</p><
52、;p><b> int i;</b></p><p> printf("請(qǐng)輸入保存比賽數(shù)據(jù)的文件名:"); /*自己命名保存數(shù)據(jù)的文件名*/</p><p> scanf("%s",infile);</p><p> if((fp1=fopen(infile,"w
53、b+"))==NULL)</p><p> { printf("cannot open file\n");</p><p> return; </p><p><b> }</b></p><p> for(i=0;i<=9;i++)</p><p&
54、gt; fwrite(&game[i],sizeof(struct game_number),1,fp1);</p><p> fclose(fp1);</p><p><b> }</b></p><p> void read()</p><p><b> {</b></p
55、><p> FILE *fp2;</p><p><b> int i;</b></p><p> printf("請(qǐng)輸入讀取比賽數(shù)據(jù)的文件名:"); /*輸入比賽數(shù)據(jù)所在文件命以讀取數(shù)據(jù)*/</p><p> scanf("%s",outfile);printf(&qu
56、ot;\n");</p><p> printf("請(qǐng)輸入要查詢的比賽局?jǐn)?shù):");</p><p> scanf("%d",&t);</p><p> if((fp2=fopen(outfile,"rb+"))==NULL)</p><p> { p
57、rintf("cannot open file\n");</p><p><b> }</b></p><p> for(i=0;i<=9;i++)</p><p> fread(&game[i],sizeof(struct game_number),1,fp2); /*用for循環(huán)讀取整個(gè)結(jié)構(gòu)體的數(shù)據(jù)
58、*/</p><p><b> }</b></p><p> 3.4Count模塊實(shí)現(xiàn)</p><p><b> 1.算法思想</b></p><p> 根據(jù)題目要求的積分格式,在Count模塊中,我只算出每輪所得分?jǐn)?shù),然后供Print模塊調(diào)用,Print模塊再用for循環(huán)即可加和求總積分,
59、所以Count模塊中我只利用if else語句判斷擊球情況來根據(jù)規(guī)則積分。</p><p><b> 2.具體實(shí)現(xiàn)</b></p><p> void count(int p[ ][4],int n) /*定義形式參數(shù),方便已經(jīng)賦值的二維數(shù)組進(jìn)行計(jì)算*/</p><p><b> {</b><
60、;/p><p> if(n==9) /*由于比賽規(guī)則特殊性,所以從第9格后的積分算法要專門判斷計(jì)算*/</p><p> p[n][2]=p[n][0]+p[n][1]+p[n+1][0]+p[n+1][1]; /*將每輪分?jǐn)?shù)賦值到p[][2]中去*/</p><p><b> else </b></p
61、><p><b> {</b></p><p> if(p[n][0]==10) </p><p><b> {</b></p><p> if(p[n+1][0]!=10)</p><p> p[n][2]=10+p[n+1][0]+p[n+1][1];</p&
62、gt;<p><b> else</b></p><p> p[n][2]=10+p[n+1][0]+p[n+2][0];</p><p><b> }</b></p><p> else if(p[n][0]+p[n][1]==10)</p><p> p[n][2]=10
63、+p[n+1][0];</p><p> else if(p[n][0]+p[n][1]<10)</p><p> p[n][2]=p[n][0]+p[n][1]; </p><p><b> } </b></p><p><b> }</b></p>
64、<p><b> 4 測試結(jié)果與分析</b></p><p> 4.1.輸入數(shù)據(jù)計(jì)算結(jié)果</p><p> 主頁面,按照提示,測試輸入數(shù)據(jù)計(jì)算結(jié)果這一項(xiàng)。</p><p> 看到如果輸入有誤會(huì)立即提示并重新輸入</p><p> 這次輸入數(shù)據(jù)后計(jì)算出的結(jié)果,并且按照要求格式輸出;</p>
65、<p> 4.2數(shù)據(jù)的文件保存</p><p> 接下來測試能否保存文件。</p><p> 再繼續(xù)又輸入一局比賽數(shù)據(jù)后,將兩句的比賽數(shù)據(jù)一起保存進(jìn)了名為“2game”的文件中:</p><p> 4.3從文件讀入數(shù)據(jù)并計(jì)算結(jié)果</p><p> 現(xiàn)在繼續(xù)測試是否能選擇讀取文件數(shù)據(jù),然后同樣計(jì)算得積分。</p&g
66、t;<p> 選擇載入2game.dat這個(gè)文件,要查詢的是第二局比賽的數(shù)據(jù):</p><p> 可以看到得到的是之前輸入的第二局比賽的數(shù)據(jù),然后系統(tǒng)再次運(yùn)算得出了相同的積分結(jié)果。</p><p><b> 5個(gè)人總結(jié)</b></p><p> 雖然能在輸入數(shù)據(jù)時(shí)報(bào)錯(cuò),但是由于定義的輸入數(shù)據(jù)為int型,所以如果輸入字母等其
67、他的話,就會(huì)有錯(cuò)誤,所以還要繼續(xù)改進(jìn)。</p><p> 定義太多全局變量,而且定義結(jié)構(gòu)體有些多余,完全可以通過定義三維數(shù)組達(dá)到。</p><p> 有些界面不能直接返回主界面,所以還需在一些數(shù)據(jù)輸入的界面上加上這一選項(xiàng)。</p><p><b> 6 附 錄</b></p><p><b> 6.1源
68、代碼</b></p><p> #include<stdio.h></p><p> #include<stdlib.h></p><p> struct game_number</p><p> { int turn[11][2];</p><p> } game[
69、10];</p><p> int a[11][4];</p><p><b> int t;</b></p><p> char ch,infile[15],outfile[15]; </p><p> void scan()</p><p><b> {
70、</b></p><p><b> int i,m;</b></p><p> printf("請(qǐng)輸入比賽局?jǐn)?shù):");</p><p> scanf("%d",&t);</p><p> for(i=0;i<=8;i++) </p>
71、<p><b> {</b></p><p> printf("請(qǐng)輸入第%d格第一次擊倒瓶數(shù):",i+1);</p><p> scanf("%d",&a[i][0]);</p><p><b> do</b></p><p><
72、;b> {</b></p><p> if( a[i][0]>10 || a[i][0]<0 )</p><p><b> { </b></p><p><b> m=0;</b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?")
73、;</p><p> scanf("%d",&a[i][0]);</p><p><b> } </b></p><p><b> else m=1;</b></p><p> } while(m==0);</p><p>
74、 printf("請(qǐng)輸入第%d格第二次擊倒瓶數(shù):",i+1);</p><p> scanf("%d",&a[i][1]);</p><p><b> do</b></p><p><b> {</b></p><p> if( a[i][1]
75、>10 || a[i][1]<0 || a[i][0]+a[i][1]>10 || a[i][0]+a[i][1]<0 )</p><p><b> { </b></p><p><b> m=0;</b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");<
76、;/p><p> scanf("%d",&a[i][1]);</p><p><b> } </b></p><p><b> else m=1;</b></p><p> } while(m==0);</p><p><b&
77、gt; }</b></p><p> printf("請(qǐng)輸入第十格第一次擊倒瓶數(shù):");</p><p> scanf("%d",&a[9][0]);</p><p> do{ </p><p> if( a[9][0]>10 || a[9][0]<
78、;0 )</p><p><b> { </b></p><p><b> m=0;</b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[9][0]);</p>&l
79、t;p><b> } </b></p><p><b> else m=1;</b></p><p> } while(m==0);</p><p> if(a[9][0]==10) </p><p><b> {</b></p>&l
80、t;p> printf("請(qǐng)輸入追加第一次擊倒瓶數(shù):");</p><p> scanf("%d",&a[10][0]);</p><p><b> do</b></p><p><b> {</b></p><p> if( a[10
81、][0]>10 || a[10][0]<0 )</p><p><b> { </b></p><p><b> m=0;</b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&am
82、p;a[10][0]);</p><p><b> } </b></p><p><b> else m=1;</b></p><p> } while(m==0);</p><p> printf("請(qǐng)輸入追加第二次擊倒瓶數(shù):");</p>&
83、lt;p> scanf("%d",&a[10][1]);</p><p><b> do</b></p><p><b> {</b></p><p> if( a[10][1]>10 || a[10][1]<0 )</p><p><b&
84、gt; { </b></p><p><b> m=0;</b></p><p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[10][1]);</p><p><b> } </b&g
85、t;</p><p><b> else m=1;</b></p><p> } while(m==0);</p><p><b> }</b></p><p><b> else </b></p><p><b> {<
86、;/b></p><p> printf("請(qǐng)輸入第十格第二次擊倒瓶數(shù):");</p><p> scanf("%d",&a[9][1]);</p><p><b> do</b></p><p><b> {</b></p>
87、<p> if( a[9][1]>10 || a[9][1]<0 || a[9][0]+a[9][1]>10 || a[9][0]+a[9][1]<0 )</p><p><b> { </b></p><p><b> m=0;</b></p><p> printf(&q
88、uot;錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[9][1]);</p><p><b> } </b></p><p><b> else m=1;</b></p><p> } while(m==0);<
89、;/p><p> if(a[9][0]+a[9][1]==10)</p><p><b> {</b></p><p> printf("請(qǐng)輸入追加一次擊倒瓶數(shù):");</p><p> scanf("%d",&a[10][0]);</p><p&g
90、t;<b> do</b></p><p><b> {</b></p><p> if( a[10][0]>10 || a[10][0]<0 )</p><p> { </p><p><b> m=0;</b></p&g
91、t;<p> printf("錯(cuò)誤,請(qǐng)?jiān)俅屋斎?");</p><p> scanf("%d",&a[10][0]);</p><p><b> } </b></p><p><b> else m=1;</b></p><p>
92、 } while(m==0);</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> void changein()</p><p> { int h
93、;</p><p> for(h=0;h<=10;h++)</p><p> { game[t].turn[h][0]=a[h][0];</p><p> game[t].turn[h][1]=a[h][1];</p><p><b> }</b></p><p><b&g
94、t; }</b></p><p> void changeout()</p><p> { int h;</p><p> for(h=0;h<=10;h++)</p><p> { a[h][0]=game[t].turn[h][0];</p><p> a[h][1]=gam
95、e[t].turn[h][1];</p><p><b> }</b></p><p><b> }</b></p><p> void save()</p><p><b> { </b></p><p> FILE *fp1;</p
96、><p><b> int i;</b></p><p> printf("請(qǐng)輸入保存比賽數(shù)據(jù)的文件名:");</p><p> scanf("%s",infile);</p><p> if((fp1=fopen(infile,"wb+"))==NULL)
97、</p><p> { printf("cannot open file\n");</p><p><b> return;</b></p><p><b> }</b></p><p> for(i=0;i<=9;i++)</p><p&g
98、t; fwrite(&game[i],sizeof(struct game_number),1,fp1);</p><p> fclose(fp1);</p><p><b> }</b></p><p> void read()</p><p><b> {</b></p&
99、gt;<p> FILE *fp2;</p><p><b> int i;</b></p><p> printf("請(qǐng)輸入讀取比賽數(shù)據(jù)的文件名:");</p><p> scanf("%s",outfile);printf("\n");</p>
100、<p> printf("請(qǐng)輸入要查詢的比賽局?jǐn)?shù):");</p><p> scanf("%d",&t);</p><p> if((fp2=fopen(outfile,"rb+"))==NULL)</p><p> { printf("cannot open fil
101、e\n");</p><p><b> }</b></p><p> for(i=0;i<=9;i++)</p><p> fread(&game[i],sizeof(struct game_number),1,fp2);</p><p><b> }</b><
102、/p><p> void count(int p[ ][4],int n)</p><p><b> {</b></p><p><b> if(n==9)</b></p><p> p[n][2]=p[n][0]+p[n][1]+p[n+1][0]+p[n+1][1];</p>
103、<p><b> else</b></p><p><b> {</b></p><p> if(p[n][0]==10)</p><p><b> {</b></p><p> if(p[n+1][0]!=10)</p><p>
104、 p[n][2]=10+p[n+1][0]+p[n+1][1];</p><p><b> else</b></p><p> p[n][2]=10+p[n+1][0]+p[n+2][0];</p><p><b> }</b></p><p> else if(p[n][0]+p[n][1
105、]==10)</p><p> p[n][2]=10+p[n+1][0];</p><p> else if(p[n][0]+p[n][1]<10)</p><p> p[n][2]=p[n][0]+p[n][1]; </p><p><b> } </b></p><
106、;p><b> }</b></p><p> void print()</p><p><b> {</b></p><p><b> int i,k;</b></p><p> printf("第%d局比賽數(shù)據(jù)及結(jié)果:\n",t);prin
107、tf("\n");printf("\n");printf("\n");</p><p> printf("輪 數(shù): "); </p><p> for(i=0;i<10;i++)</p><p> printf("%6d&q
108、uot;,(i+1)); printf("\n");</p><p> printf("擊倒瓶數(shù): ");</p><p> for(k=0;k<=10;k++)</p><p><b> {</b></p><p><b> if(k<=9)<
109、;/b></p><p><b> {</b></p><p> printf("%4d|%d",a[k][0],a[k][1]);</p><p><b> }</b></p><p> else if(a[9][0]==10)</p><p&
110、gt; printf("|%d|%d\n",a[k][0],a[k][1]);</p><p> else if(a[9][0]+a[9][1]==10)</p><p> printf("|%d \n",a[k][0]);</p><p> else printf("\n");</p>
111、<p><b> }</b></p><p> printf("\n\n\n");</p><p> for(i=9;i>=0;i--)</p><p> count(a,i);</p><p> for(i=0;i<10;i++)</p><p
112、><b> {</b></p><p><b> if(i==0)</b></p><p> a[i][3]=a[i][2];</p><p><b> else</b></p><p> a[i][3]=a[i-1][3]+a[i][2]; </p>
113、;<p><b> }</b></p><p> printf("輪 數(shù): "); </p><p> for(i=0;i<10;i++)</p><p> printf("%6d",(i+1)); printf("\n&qu
114、ot;);</p><p> printf(" ");</p><p> for(k=0;k<=10;k++)</p><p><b> {</b></p><p><b> if(k<=9)</b></p><p>
115、;<b> {</b></p><p> if(a[k][0]==10)</p><p> if(k==9)printf(" ×");</p><p> else printf(" ×| ");</p><p><b> else<
116、/b></p><p> if(a[k][0]+a[k][1]==10)</p><p> printf("%4d|/",a[k][0]);</p><p><b> else</b></p><p> if(a[k][0]==0)</p><p> if(a[
117、k][1]==0)</p><p> printf(" -|-");</p><p><b> else</b></p><p> printf(" -|%d",a[k][1]);</p><p><b> else</b></p>
118、<p> if(a[k][1]==0)</p><p> printf("%4d|-",a[k][0]);</p><p><b> else</b></p><p> printf("%4d|%d",a[k][0],a[k][1]);</p><p><
119、;b> }</b></p><p> else if(a[9][0]==10)</p><p> if(a[10][0]==0)</p><p> if(a[10][1]==0)</p><p> printf("|-|-\n");</p><p><b>
120、else</b></p><p> printf("|-|%d\n",a[10][1]);</p><p><b> else</b></p><p> if(a[10][1]==0)</p><p> printf("|%d|-\n",a[10][0]);&l
121、t;/p><p><b> else</b></p><p> if(a[10][0]==10)</p><p> if(a[10][1]==10)</p><p> printf("|×|×\n");</p><p><b> else&l
122、t;/b></p><p> printf("|×|%d\n",a[10][1]);</p><p><b> else</b></p><p> if(a[10][1]==10)</p><p> printf("|%d|×\n",a[10][0
123、]);</p><p><b> else</b></p><p> printf("|%d|%d\n",a[k][0],a[k][1]);</p><p><b> else </b></p><p> if(a[9][0]+a[9][1]==10)</p>
124、<p> if(a[10][0]==0)</p><p> printf("|-\n");</p><p> else if(a[10][0]==10)printf("|×\n");</p><p> else printf("|%d \n",a[k][0]);</p&
125、gt;<p> else printf("\n");</p><p><b> }</b></p><p> printf("總計(jì)得分: "); </p><p> for(i=0;i<10;i++)</p><p> printf("%6d
126、",a[i][3]); printf("\n");printf("\n");printf("\n");printf("\n");</p><p><b> }</b></p><p> void main()</p><p><b> {&
127、lt;/b></p><p> int x,y,z;</p><p><b> do</b></p><p><b> {</b></p><p> system("cls");</p><p> printf("-------
128、------------------------------------------------------------------------\n");</p><p> printf(" 歡迎使用保齡球計(jì)分系統(tǒng)\n");</p><p> printf("------------------
129、-------------------------------------------------------------\n");</p><p> printf(" ******* *** * * * *** * * **** \n");</p><p> printf(&q
130、uot; * * * * * * * * * * * * * * \n");</p><p> printf(" **** * * * * * * * * * * * * *** \n");</p><p&
131、gt; printf(" * * * * * * * * * * * * * * * \n");</p><p> printf(" ******* *** * * ** *** * ** **** Counter V1.0 \n\n
132、\n");</p><p> printf(" Supported by 數(shù)學(xué)與計(jì)量經(jīng)濟(jì)學(xué)院\n");</p><p> printf(" 數(shù)學(xué)與應(yīng)用
133、數(shù)學(xué)一班\n");</p><p> printf(" Created by 熊宇堂 20101010122\n");</p><p> printf("
134、 張 嵩 20101010129\n");</p><p> printf("\n\n\n");</p><p> printf("操作選項(xiàng):\n\n");</p><p> printf("1.輸入數(shù)據(jù)計(jì)分 ");printf("2.讀取數(shù)據(jù)計(jì)分
135、 ");printf("3.退出系統(tǒng)\n\n\n");</p><p> printf("(提示:本系統(tǒng)進(jìn)行輸入、操作時(shí),統(tǒng)一使用 數(shù)字+回車 形式)\n");</p><p> printf("操作:");</p><p> scanf("%d",&x);&
136、lt;/p><p><b> do</b></p><p><b> {</b></p><p> if(x==1 || x==2 || x==3 )</p><p><b> { y=1;</b></p><p><b> switc
137、h(x)</b></p><p><b> {</b></p><p> case 1: do</p><p><b> {</b></p><p> system("cls");scan();changein();system("cls"
138、);print();</p><p> printf("輸入1以輸入下一局比賽數(shù)據(jù)\n");</p><p> printf("輸入2以保存已輸入局?jǐn)?shù)比賽數(shù)據(jù)并返回主界面\n");</p><p> printf("請(qǐng)輸入:");scanf("%d",&z);</p&
139、gt;<p><b> if(z==2) </b></p><p><b> { save();</b></p><p> printf("成功,所有局?jǐn)?shù)比賽數(shù)據(jù)已保存在%s文件中",infile);</p><p> printf("輸入2以返回主頁面");s
140、canf("%d",&z);</p><p><b> }</b></p><p> } while(z==1);</p><p><b> break;</b></p><p> case 2:system("cls");read();cha
141、ngeout();system("cls");</p><p> printf("成功,已讀取%s文件中第%d局比賽數(shù)據(jù),比賽數(shù)據(jù)以及結(jié)果為:\n",outfile,t);printf("\n");printf("\n");printf("\n");</p><p><b>
142、print();</b></p><p> printf("輸入2以返回主界面\n");</p><p> printf("請(qǐng)輸入:");scanf("%d",&z);</p><p><b> break;</b></p><p>
143、 case 3: system("cls");exit(0);</p><p><b> }</b></p><p><b> }</b></p><p><b> else </b></p><p><b> { y=0;</b&g
144、t;</p><p> printf("錯(cuò)誤,請(qǐng)重新輸入:");</p><p> scanf("%d",&x);</p><p><b> }</b></p><p> } while(y==0);</p><p> } while(z=
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保齡球計(jì)分系統(tǒng)c語言課程設(shè)計(jì) (2)
- c語言課程設(shè)計(jì)-保齡球積分
- c語言課程設(shè)計(jì)之評(píng)分系統(tǒng)
- c語言課程設(shè)計(jì)--比賽評(píng)分系統(tǒng)的設(shè)計(jì)
- 運(yùn)動(dòng)會(huì)計(jì)分系統(tǒng)課程設(shè)計(jì)--運(yùn)動(dòng)會(huì)計(jì)分系統(tǒng)
- c語言程序設(shè)計(jì)課程設(shè)計(jì)---設(shè)計(jì)比賽評(píng)分系統(tǒng)
- 課程設(shè)計(jì)報(bào)告----運(yùn)動(dòng)分?jǐn)?shù)計(jì)分系統(tǒng)
- 運(yùn)動(dòng)會(huì)計(jì)分系統(tǒng)課程設(shè)計(jì)
- 運(yùn)動(dòng)會(huì)計(jì)分系統(tǒng)課程設(shè)計(jì)
- c語言課程設(shè)計(jì)報(bào)告—歌星大獎(jiǎng)賽評(píng)分系統(tǒng)
- c語言課程設(shè)計(jì)報(bào)告—歌星大獎(jiǎng)賽評(píng)分系統(tǒng)
- 管網(wǎng)造價(jià)設(shè)計(jì)分析c語言課程設(shè)計(jì)
- 嵌入式比賽計(jì)分系統(tǒng)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--搶答計(jì)分系統(tǒng)
- 2021運(yùn)動(dòng)會(huì)計(jì)分系統(tǒng)課程設(shè)計(jì)報(bào)告
- 【課程設(shè)計(jì)】c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)
- c語言課程設(shè)計(jì)招生查詢系統(tǒng)
評(píng)論
0/150
提交評(píng)論