版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、各專業(yè)全套優(yōu)秀畢業(yè)論文圖紙c/c+程序設(shè)計(jì)課程設(shè)計(jì)課程設(shè)計(jì)題目: 投票程序 系 別: 計(jì)算機(jī)科學(xué)與工程 專 業(yè): 信息管理與信息系統(tǒng) 小組成員: xxx 設(shè) 計(jì) 者: xxx 指導(dǎo)教師: xxx 批語(yǔ):河南城建學(xué)院2014年 12 月 25 日設(shè)計(jì)題目:投票程序1一、設(shè)計(jì)要求和分工11、設(shè)計(jì)要求12、設(shè)計(jì)目標(biāo)2二、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)2數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)描述2三、變量的定義和作用4四、系統(tǒng)各模塊( 函數(shù))的組成,功能61、 輸入模塊:62、 統(tǒng)計(jì)模塊:63、 輸出功能:7五、各功能模塊的算法處理流程圖及相關(guān)說(shuō)明81、 輸入模塊的算法處理流程圖及相關(guān)說(shuō)明:82、統(tǒng)計(jì)模塊的算法處理流程圖及相關(guān)說(shuō)明:82、 輸出
2、模塊的算法處理流程圖及相關(guān)說(shuō)明:9六、程序設(shè)計(jì)過(guò)程中遇到的問(wèn)題及解決過(guò)程101、 問(wèn)題一及解決過(guò)程:102、 問(wèn)題二及解決過(guò)程:103、 問(wèn)題三及解決過(guò)程:11七、 課程設(shè)計(jì)總結(jié)或體會(huì)111、總結(jié)112、體會(huì)12附錄:源程序12參考文獻(xiàn)14設(shè)計(jì)題目:投票程序一、設(shè)計(jì)要求和分工1、設(shè)計(jì)要求要求在設(shè)計(jì)過(guò)程中,充分發(fā)揮自己的獨(dú)立工作能力及創(chuàng)造能力,對(duì)每個(gè)問(wèn)題都應(yīng)進(jìn)行分析、比較,并提出自己的見(jiàn)解,反對(duì)盲從,杜絕抄襲。在設(shè)計(jì)過(guò)程中必須做到:1.隨時(shí)復(fù)習(xí)教科書(shū)、聽(tīng)課筆記及習(xí)題;2.做好準(zhǔn)備工作,充分發(fā)揮自己的主觀能動(dòng)性和創(chuàng)造性,及時(shí)查閱相關(guān)資料;3.認(rèn)真編程;4.按預(yù)定計(jì)劃及時(shí)完成任務(wù)。2、設(shè)計(jì)目標(biāo)設(shè)有代
3、號(hào)為a,b,c的三位亞洲小姐候選人,根據(jù)投票者在選票上對(duì)他們代號(hào)的填寫(xiě)順序分別記分5,3,2。請(qǐng)編程從鍵盤(pán)上輸入投票人數(shù)及投票結(jié)果,統(tǒng)計(jì)他們的得分,并輸出哪位當(dāng)選亞洲小姐。請(qǐng)注意:若同一張票上寫(xiě)有兩個(gè)相同代號(hào),或者投票者在選票上填寫(xiě)的代號(hào)不是a,b,c的三位亞洲小姐候選人的代號(hào),則顯示“此票無(wú)效”;對(duì)候選人按照他們的得分排序,然后比較前兩名候選人得分是否相同。如果相同,則顯示“重新投票”;否則顯示三個(gè)候選者得分并輸出“祝賀x當(dāng)選冠軍”,x為最高分候選者。例如:投票人數(shù):6輸入投票內(nèi)容:abccabcbacaa該票無(wú)效!rca該票無(wú)效!cba三位候選人得分:a:12b:13c:15 “祝賀x當(dāng)選
4、冠軍”,x為最高分候選者。二、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)描述開(kāi)始定義結(jié)構(gòu)體、相關(guān)變量和常量輸入投票人數(shù)和投票內(nèi)容選票代號(hào)是否重復(fù)是否含有其他人ny該票無(wú)效統(tǒng)計(jì)相應(yīng)候選人的票數(shù)并排序輸出投票結(jié)果yn判斷前兩名總票數(shù)是否相等重新投票輸出獲勝者結(jié)束三、變量的定義和作用#include #include /以上兩個(gè)是包含庫(kù)。struct hxr int code; int score; /定義代號(hào)、得分兩個(gè)整型數(shù)據(jù)。 hxr3; /定義一個(gè)結(jié)構(gòu)體存放候選人數(shù)據(jù)。main() /入口函數(shù)。 int i=0,j=0,k,temp=0,end=0; char x,y,z; /定義接收投票的變量。 struct
5、 hxr hxr3; /用hxr定義結(jié)構(gòu)體數(shù)組。 printf(請(qǐng)輸入投票總?cè)藬?shù):n); scanf(%d,&k); /將投票人數(shù)放入標(biāo)量k。 printf(請(qǐng)輸入投票:n); getchar(); /攔截scanf的最后一個(gè)回車。 while(end=0) /while語(yǔ)句進(jìn)行循環(huán)判定,if出現(xiàn)出現(xiàn)前兩名并列第一時(shí),返回while語(yǔ)句重新投票else輸出冠軍結(jié)束程序。 for(i=0;i3;i+) hxri.code=i; hxri.score=0; /初始化結(jié)構(gòu)體數(shù)組。 for(i=1;i=k;i+) scanf(%c%c%c,&x,&y,&z); /將投票按照x,y,z的順序輸入。 ge
6、tchar();/攔截回車,否則最后一個(gè)字符輸入完畢按回車之后,回車的輸入沒(méi)有東西接收,就會(huì)變成下次循環(huán)的第一個(gè)字符scanf就會(huì)接收,那么二次循環(huán)的第一個(gè)字符就智能讀到回車了,所以第一次結(jié)尾用getchar()攔截回車. if(x!=y&x!=z&y!=z)&(x=a| x=b|x=c)&(y=a| y=b|y=c)&(z=a| z=b|z=c) / 只有所投票中3位候選人各出現(xiàn)一次且所投票必須是a,b,c以內(nèi)的字母此票才有效,不符合執(zhí)行if下面的prinft語(yǔ)句。 hxr0.score+=(x=a?5:(y=a?3:2); hxr1.score+=(x=b?5:(y=b?3:2); hxr
7、2.score+=(x=c?5:(y=c?3:2); /三目運(yùn)算判斷三個(gè)投票人一輪投票的結(jié)果,每有人投一次就判斷累加一次。 printf( score: %d %d %dn,hxr0.score,hxr1.score,hxr2.score); / 輸出投入該票后,三個(gè)人累計(jì)得分。 continue; / continue 語(yǔ)句的用法是跳過(guò)continue下面的語(yǔ)句進(jìn)入下一次循環(huán)! printf(此票無(wú)效n); for(i=0;i3;i+) if(temp=hxr2.score) | ( (hxr0.score=hxr2.score)&hxr0.score=hxr1.score) | (hxr1
8、.score=hxr2.score)&hxr1.score=hxr0.score) printf(重新投票n);/ 如果出現(xiàn)前兩名并列第一,則打印“重新投票”。 else printf(祝賀%c當(dāng)選冠軍,%c為最高分候選者。n,j,j); / 否則輸出得分最高者的名字。 end=1; getchar(); / 增加一個(gè)輸入命令,防止程序直接退出看不到結(jié)果。四、系統(tǒng)各模塊( 函數(shù))的組成,功能1、 輸入模塊:main() /入口函數(shù)。 int i=0,j=0,k,temp=0,end=0; char x,y,z; /定義接收投票的變量。 struct hxr hxr3; /用hxr定義結(jié)構(gòu)體數(shù)組
9、。 printf(請(qǐng)輸入投票總?cè)藬?shù):n); scanf(%d,&k); /將投票人數(shù)放入標(biāo)量k。 printf(請(qǐng)輸入投票:n); getchar(); /攔截scanf的最后一個(gè)回車。 while(end=0) /while語(yǔ)句進(jìn)行循環(huán)判定,if出現(xiàn)出現(xiàn)前兩名并列第一時(shí),返回while語(yǔ)句重新投票else輸出冠軍結(jié)束程序。 for(i=0;i3;i+) hxri.code=i; hxri.score=0; /初始化結(jié)構(gòu)體數(shù)組。 for(i=1;i=k;i+) scanf(%c%c%c,&x,&y,&z); /將投票按照x,y,z的順序輸入。 getchar();/攔截回車,否則最后一個(gè)字符輸
10、入完畢按回車之后,回車的輸入沒(méi)有東西接收,就會(huì)變成下次循環(huán)的第一個(gè)字符scanf就會(huì)接收,那么二次循環(huán)的第一個(gè)字符就智能讀到回車了,所以第一次結(jié)尾用getchar()攔截回車.2、 統(tǒng)計(jì)模塊:if(x!=y&x!=z&y!=z)&(x=a|x=b|x=c)&(y=a| y=b|y=c)&(z=a| z=b|z=c) / 只有所投票中3位候選人各出現(xiàn)一次且所投票必須是a,b,c以內(nèi)的字母此票才有效,不符合執(zhí)行if下面的prinft語(yǔ)句。 hxr0.score+=(x=a?5:(y=a?3:2); hxr1.score+=(x=b?5:(y=b?3:2); hxr2.score+=(x=c?5:(
11、y=c?3:2); /三目運(yùn)算判斷三個(gè)投票人一輪投票的結(jié)果,每有人投一次就判斷累加一次。 printf( score: %d %d %dn,hxr0.score,hxr1.score,hxr2.score); / 輸出投入該票后,三個(gè)人累計(jì)得分。 continue; / continue 語(yǔ)句的用法是跳過(guò)continue下面的語(yǔ)句進(jìn)入下一次循環(huán)! printf(此票無(wú)效n); 3、 輸出功能:for(i=0;i3;i+) if(temp=hxr2.score) | ( (hxr0.score=hxr2.score)&hxr0.score=hxr1.score) | (hxr1.score=hx
12、r2.score)&hxr1.score=hxr0.score) printf(重新投票n);/ 如果出現(xiàn)前兩名并列第一,則打印“重新投票”。 else printf(祝賀%c當(dāng)選冠軍,%c為最高分候選者。n,j,j); / 否則輸出得分最高者的名字。 end=1; getchar(); / 增加一個(gè)輸入命令,防止程序直接退出看不到結(jié)果。五、各功能模塊的算法處理流程圖及相關(guān)說(shuō)明1、 輸入模塊的算法處理流程圖及相關(guān)說(shuō)明:開(kāi)始定義結(jié)構(gòu)體、相關(guān)變量和常量輸入投票人數(shù)和投票內(nèi)容圖一,輸入模塊流程圖說(shuō)明:首先定義輸入相關(guān)的變量、常量和結(jié)構(gòu)體,char x,y,z;為接收投票的變量,struct hxr
13、hxr3;hxr為定義的結(jié)構(gòu)體數(shù)組;輸入投票人數(shù)和投票內(nèi)容,投票人數(shù)標(biāo)量為:k。2、統(tǒng)計(jì)模塊的算法處理流程圖及相關(guān)說(shuō)明:開(kāi)始選票代號(hào)是否重復(fù)是否含有其他人ny該票無(wú)效統(tǒng)計(jì)相應(yīng)候選人的票數(shù)并排序圖二,統(tǒng)計(jì)模塊流程圖說(shuō)明:if(x!=y&x!=z&y!=z)&(x=a|x=b|x=c)&(y=a|y=b|y=c)&(z=a| z=b|z=c) / 判斷所投票中3位候選人是否各出現(xiàn)一次且所投票是a,b,c以內(nèi)的字母,若不符合合執(zhí)行if下面的prinft語(yǔ)句,若是,通過(guò)hxri.score+累加執(zhí)行三目運(yùn)算統(tǒng)計(jì)三個(gè)投票人投票的結(jié)果。2、 輸出模塊的算法處理流程圖及相關(guān)說(shuō)明:開(kāi)始yn判斷前兩名總票數(shù)是否
14、相等重新投票輸出獲勝者結(jié)束圖三,輸出模塊流程圖說(shuō)明:首先通過(guò)temp=hxri.score; j=a+i;將得分最高的人,最高得分保存在temp里,并將這個(gè)人的名字(a、b或c)保存在j里。然后用printf(people %c score %dn,a+hxri.code,hxri.score);輸出3個(gè)人各自的得分情況;最后判定前兩名的分?jǐn)?shù)是否相等,若相等輸出重新投票,否則輸出“祝賀x當(dāng)選冠軍,x為最高分候選者?!辈⒔Y(jié)束程序。六、程序設(shè)計(jì)過(guò)程中遇到的問(wèn)題及解決過(guò)程1、 問(wèn)題一及解決過(guò)程: 問(wèn)題一:hxri.code和hxri.score未進(jìn)行初始化,導(dǎo)致程序出錯(cuò)。解決過(guò)程:通過(guò)仔細(xì)檢查,發(fā)現(xiàn)
15、問(wèn)題并對(duì)結(jié)構(gòu)體數(shù)組 hxri.code=i; hxri.score=0; 進(jìn)行初始化。2、 問(wèn)題二及解決過(guò)程: 問(wèn)題二:使用if(x!=y&x!=z&y!=z)進(jìn)行判定時(shí),只對(duì)所投票中3位候選人各出現(xiàn)一次進(jìn)行了判定,但是若輸入的選票不在a,b,c三位候選人以內(nèi)則無(wú)法判定為廢票。解決過(guò)程:通過(guò)在原來(lái)的基礎(chǔ)上增加限定條件進(jìn)行改善,出現(xiàn)的問(wèn)題得到了解決;修改后的代碼如下: if(x!=y&x!=z&y!=z)&(x=a|x=b|x=c)&(y=a|y=b|y=c)&(z=a| z=b|z=c)3、 問(wèn)題三及解決過(guò)程:?jiǎn)栴}三:三位候選人的分?jǐn)?shù)如果用ifelse語(yǔ)句進(jìn)行判斷的話代碼會(huì)很繁瑣,而且不易進(jìn)行
16、累加積分,所以很難計(jì)算三位候選人的分?jǐn)?shù)。解決過(guò)程:通過(guò)查閱書(shū)籍,詢問(wèn)同學(xué)發(fā)現(xiàn)三目運(yùn)算能起到與ifelse語(yǔ)句相的效果而且更為簡(jiǎn)潔明了,代碼如下:hxr0.score+=(x=a?5:(y=a?3:2); hxr1.score+=(x=b?5:(y=b?3:2);hxr2.score+=(x=c?5:(y=c?3:2);7、 課程設(shè)計(jì)總結(jié)或體會(huì)1、總結(jié)剛開(kāi)始聽(tīng)說(shuō)課程設(shè)計(jì)的時(shí)候有些不知所措,然后了解到課程設(shè)計(jì)就是對(duì)我們前一段學(xué)習(xí)的的考察和總結(jié),總之覺(jué)得還是升華了很多。在選定題目的時(shí)候思索了很久,不知道該選哪個(gè)題目好?其實(shí)每個(gè)題目都是有各自的難點(diǎn)的,最后經(jīng)過(guò)思考選擇了投票程序,一開(kāi)始覺(jué)得這個(gè)題目應(yīng)該
17、會(huì)很簡(jiǎn)單,但是隨著深入了解才發(fā)現(xiàn)其實(shí)挺困難的。然后就有些迷茫與失落,想放棄但是還是堅(jiān)持下來(lái)了。剛開(kāi)始的時(shí)候一直摸不著頭腦,不知從哪里寫(xiě)起,如何引用函數(shù),如何定義常量、變量和數(shù)組,用什么語(yǔ)句,怎樣進(jìn)行嵌套,如何構(gòu)造判斷條件等等。所以就從一無(wú)所知開(kāi)始了,然后就一點(diǎn)點(diǎn)的開(kāi)始編寫(xiě),剛開(kāi)始編寫(xiě)的很像偽代碼,越往后寫(xiě)完問(wèn)題越多,頭疼了許久后再鼓起勇氣,終于在經(jīng)過(guò)兩天的努力下總體框架已經(jīng)寫(xiě)好,雖然還是有諸多的問(wèn)題,但是一點(diǎn)點(diǎn)的改進(jìn)總能做好。但是真正的問(wèn)題才剛剛開(kāi)始,因?yàn)槲抑皇峭A粼诰帉?xiě)代碼解決眼前的問(wèn)題上,沒(méi)有把思維放在問(wèn)題后更深的實(shí)質(zhì)和更多的情況上,雖說(shuō)是摸著石頭過(guò)河,但是我堅(jiān)信清晰的思路和嚴(yán)密的邏輯會(huì)帶
18、來(lái)正確的判斷和結(jié)果。在代碼完成總體完成后的昨天我發(fā)現(xiàn)這段代碼并沒(méi)有符合我的要求,我的要求是代碼要簡(jiǎn)潔、有效而不是繁多、冗雜,代碼不能有任何的語(yǔ)義沖突也不能有一點(diǎn)點(diǎn)的疏忽。這些都是靠不斷地提高要求和不斷地檢驗(yàn)才能達(dá)成的。就在今天12月25日,這個(gè)代碼我又改了五次,有很多人說(shuō)其實(shí)湊合就行了,也有很多人說(shuō)太簡(jiǎn)短了(在他們看來(lái)簡(jiǎn)短的代碼就是簡(jiǎn)單的代碼),還有人讓我換一種方法,但是我知道我一點(diǎn)開(kāi)始了就停不下來(lái),我堅(jiān)信我能夠通過(guò)自己的努力把它改成很合理的代碼,雖然我也擔(dān)心自己做不到,但是我的靈魂已經(jīng)被他深深地吸引了,從我見(jiàn)到她的那刻起。2、體會(huì)我知道沒(méi)有哪個(gè)人是完美的,但是我會(huì)努力做到最好,我就是這樣一個(gè)
19、人,不管多苦都會(huì)笑和堅(jiān)持;我知道自己知識(shí)不夠,但是我會(huì)問(wèn)別人不過(guò)他知道多少,也不過(guò)他怎么說(shuō)我,我會(huì)查任何一個(gè)我不懂得代碼、函數(shù)、語(yǔ)句,一次次直到一個(gè)個(gè)弄明白,因?yàn)槲揖褪沁@樣一個(gè)人,盡管此時(shí)渾身疼痛,但是我還是在這里坐著堅(jiān)持,因?yàn)檫@就是我不管多苦只會(huì)笑和堅(jiān)持!、通過(guò)此次的課程設(shè)計(jì)我學(xué)到了很多,比如非格式輸入的作用,三目運(yùn)算,以及復(fù)雜的關(guān)系判斷等等。我很有收獲,我的付出都是值得的。附錄:源程序#include #include /以上兩個(gè)是包含庫(kù)。struct hxr int code; int score; /定義代號(hào)、得分兩個(gè)整型數(shù)據(jù)。 hxr3; /定義一個(gè)結(jié)構(gòu)體存放候選人數(shù)據(jù)。main()
20、 /入口函數(shù)。 int i=0,j=0,k,temp=0,end=0; char x,y,z; /定義接收投票的變量。 struct hxr hxr3; /用hxr定義結(jié)構(gòu)體數(shù)組。 printf(請(qǐng)輸入投票總?cè)藬?shù):n); scanf(%d,&k); /將投票人數(shù)放入標(biāo)量k。 printf(請(qǐng)輸入投票:n); getchar(); /攔截scanf的最后一個(gè)回車。 while(end=0) /while語(yǔ)句進(jìn)行循環(huán)判定,if出現(xiàn)出現(xiàn)前兩名并列第一時(shí),返回while語(yǔ)句重新投票else輸出冠軍結(jié)束程序。 for(i=0;i3;i+) hxri.code=i; hxri.score=0; /初始化結(jié)構(gòu)體數(shù)組。 for(i=1;i=k;i+) scanf(%c%c%c,&x,&y,&z); /將投票按照x,y,z的順序輸入。 getchar();/攔截回車,否則最后一個(gè)字符輸入完畢按回車之后,回車的輸入沒(méi)有東西接收,就會(huì)變成下次循環(huán)的第一個(gè)字符scanf就會(huì)接收,那么二次循環(huán)的第一個(gè)字符就智能讀到回車了,所以第一次結(jié)尾用getchar()攔截回車
溫馨提示
- 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ù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 豐巢柜掃碼取件流程及用戶合同詳解版B版
- 二零二五版辦公家具定制與售后支持協(xié)議3篇
- 二零二五年度跨境離婚協(xié)議書(shū)及財(cái)產(chǎn)轉(zhuǎn)移范本3篇
- 二零二五年度海洋資源開(kāi)發(fā)項(xiàng)目技術(shù)人員聘任協(xié)議3篇
- 二零二五年度KTV加盟店運(yùn)營(yíng)管理及培訓(xùn)合同范本3篇
- 二零二五版公積金個(gè)人提前還款合同3篇
- 西安航空學(xué)院《材料科學(xué)基礎(chǔ)I》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度柑橘產(chǎn)品溯源與食品安全合同3篇
- 烏海職業(yè)技術(shù)學(xué)院《視覺(jué)藝術(shù)賞析與表達(dá)》2023-2024學(xué)年第一學(xué)期期末試卷
- 個(gè)性化桶裝水供應(yīng)服務(wù)協(xié)議2024版版B版
- 2024年關(guān)愛(ài)留守兒童工作總結(jié)
- GB/T 45092-2024電解水制氫用電極性能測(cè)試與評(píng)價(jià)
- 《算術(shù)平方根》課件
- DB32T 4880-2024民用建筑碳排放計(jì)算標(biāo)準(zhǔn)
- 2024-2024年上海市高考英語(yǔ)試題及答案
- 注射泵管理規(guī)范及工作原理
- 山東省濟(jì)南市2023-2024學(xué)年高二上學(xué)期期末考試化學(xué)試題 附答案
- 大唐電廠采購(gòu)合同范例
- GB/T 18724-2024印刷技術(shù)印刷品與印刷油墨耐各種試劑性的測(cè)定
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- 15J403-1-樓梯欄桿欄板(一)
評(píng)論
0/150
提交評(píng)論