版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 課程設(shè)計(jì)(論文)任務(wù)書</p><p> 軟 件 學(xué) 院 學(xué) 院 09軟件工程+會(huì)計(jì)學(xué) ?! I(yè) 2 班 </p><p> 一、課程設(shè)計(jì)(論文)題目 簡單投票管理系統(tǒng)(小應(yīng)用程序Applet) </p><p> 二、課程設(shè)計(jì)(論文)工作自 2010 年 12
2、 月 20 日起至 2010 年 12 月 24 日止。</p><p> 三、課程設(shè)計(jì)(論文) 地點(diǎn): 軟 件 學(xué) 院 實(shí) 訓(xùn) 中 心 </p><p> 四、課程設(shè)計(jì)(論文)內(nèi)容要求:</p><p> 1.本課程設(shè)計(jì)的目的</p><p> ?。?)掌握J(rèn)ava語言的
3、程序設(shè)計(jì)方法; </p><p> ?。?)理論聯(lián)系實(shí)際,進(jìn)一步提高學(xué)生的軟件開發(fā)技術(shù);</p><p> ?。?)培養(yǎng)學(xué)生分析、解決問題的能力;</p><p> (4)提高學(xué)生實(shí)踐論文撰寫能力。</p><p> 2.課程設(shè)計(jì)的任務(wù)及要求</p><p><b> 1)課程設(shè)計(jì)任務(wù):</b&g
4、t;</p><p> 設(shè)計(jì)一個(gè)投票管理系統(tǒng)。</p><p><b> 2)創(chuàng)新要求:</b></p><p><b> ?。?)新增背景音樂</b></p><p> ?。?)新增程序的“使用說明”</p><p> ?。?)在輸入候選人之前選項(xiàng)框和部分功能鍵被禁用,
5、防止亂點(diǎn)導(dǎo)致統(tǒng)計(jì)結(jié)果有誤</p><p> ?。?)新增保存結(jié)果功能</p><p> (5)新增版權(quán)所屬標(biāo)簽</p><p> 3)課程設(shè)計(jì)論文編寫要求</p><p> ?。?)課程設(shè)計(jì)任務(wù)及要求</p><p> ?。?)設(shè)計(jì)思路--工作原理、功能規(guī)劃</p><p> ?。?)詳細(xì)設(shè)
6、計(jì)---數(shù)據(jù)分析、算法思路、類設(shè)計(jì)、功能實(shí)現(xiàn)(含程序流程圖、主要代</p><p> 碼及注釋)、界面等。</p><p> ?。?)運(yùn)行調(diào)試與分析討論---給出運(yùn)行屏幕截圖,分析運(yùn)行結(jié)果,有何改進(jìn)想法等。</p><p> ?。?)設(shè)計(jì)體會(huì)與小結(jié)---設(shè)計(jì)遇到的問題及解決辦法,通過設(shè)計(jì)學(xué)到了哪些新知識(shí),</p><p> 鞏固了哪些知識(shí)
7、,有哪些提高。</p><p> ?。?)參考文獻(xiàn)(必須按標(biāo)準(zhǔn)格式列出,可參考教材后面的參考文獻(xiàn)格式)</p><p> (7)報(bào)告按規(guī)定排版打印,要求裝訂平整,否則要求返工;</p><p> (8)課設(shè)報(bào)告的裝訂順序如下:封面---任務(wù)書---中文摘要---目錄----正文---附錄</p><p><b> (代碼及相關(guān)
8、圖片)</b></p><p> ?。?)嚴(yán)禁抄襲,如有發(fā)現(xiàn),按不及格處理。</p><p> 4)課程設(shè)計(jì)評(píng)分標(biāo)準(zhǔn): </p><p> (1)學(xué)習(xí)態(tài)度:10分;</p><p> (2)系統(tǒng)設(shè)計(jì):20分;</p><p> ?。?)編程調(diào)試:20分;</p><p> ?。?/p>
9、4)回答問題:20分;</p><p> (5)論文撰寫:30分。</p><p><b> 5)參考文獻(xiàn):</b></p><p> ?。?)丁振凡. Java語言實(shí)用教程(第2版)[M]. 北京郵電大學(xué)出版社. 2008.1 </p><p> ?。?)丁振凡. Java語言實(shí)用教程實(shí)驗(yàn)指導(dǎo)(第2版)[M]. 北
10、京郵電大學(xué)出版社. 2008.1</p><p> (3)楊樹林等. Java語言最新實(shí)用案例教程(第2版)[M]. 清華大學(xué)出版社. 2010.7</p><p> 6)課程設(shè)計(jì)進(jìn)度安排</p><p> 1.準(zhǔn)備階段(4學(xué)時(shí)):選擇設(shè)計(jì)題目、了解設(shè)計(jì)目的要求、查閱相關(guān)資料</p><p> 2.程序模塊設(shè)計(jì)分析階段(4學(xué)時(shí)):程序
11、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)</p><p> 3.代碼編寫調(diào)試階段(8學(xué)時(shí)):程序模塊代碼編寫、調(diào)試、測(cè)試</p><p> 4.撰寫論文階段(4學(xué)時(shí)):總結(jié)課程設(shè)計(jì)任務(wù)和設(shè)計(jì)內(nèi)容,撰寫課程設(shè)計(jì)論文</p><p> 學(xué)生簽名: </p><p> 2010 年 12 月 20 日</p>
12、<p> 課程設(shè)計(jì)(論文)評(píng)審意見</p><p> ?。?)學(xué)習(xí)態(tài)度(10分):優(yōu)(?。?、良(?。?、中(?。?、一般( )、差(?。?; </p><p> (2)系統(tǒng)設(shè)計(jì)(20分):優(yōu)( )、良(?。⒅校ā。⒁话悖ā。?、差(?。?; </p><p> ?。?)編程調(diào)試(20分):優(yōu)( )、良(?。?、中( )、一般(?。?、差(?。?;</p&g
13、t;<p> (4)回答問題(20分):優(yōu)(?。?、良(?。?、中(?。?、一般(?。?、差(?。?;</p><p> (5)論文撰寫(30分):優(yōu)(?。⒘迹ā。⒅校ā。⒁话悖ā。?、差(?。?; </p><p> 評(píng)閱人: 職稱: 講師 </p><p> 2010 年 12 月 25 日</p&
14、gt;<p><b> 目 錄</b></p><p> 一、課程設(shè)計(jì)任務(wù)及要求1</p><p><b> 二、需求分析2</b></p><p><b> 三、設(shè)計(jì)思路3</b></p><p><b> 四、詳細(xì)設(shè)計(jì)6</b
15、></p><p> 五、運(yùn)行調(diào)試與分析討論15</p><p> 六、設(shè)計(jì)體會(huì)與小結(jié)19</p><p><b> 七、參考文獻(xiàn)20</b></p><p> 一、課程設(shè)計(jì)任務(wù)及要求</p><p> 設(shè)計(jì)一個(gè)如圖1所示的投票管理系統(tǒng)界面,要求輸入候選人名單后,點(diǎn)擊確認(rèn)按鈕
16、實(shí)現(xiàn)使用選擇框代表候選人,計(jì)選擇框的名字就是候選人的名字。點(diǎn)擊取消按鈕候選人輸入框?yàn)榭?,重新輸入候選人名單。選中候選人的選擇框時(shí),表示給該候選人投一票。點(diǎn)擊確定按鈕時(shí)表示產(chǎn)生一張選票。點(diǎn)擊刷新按鈕回到程序的初始界面重新設(shè)置候選人。根據(jù)選擇框的狀態(tài)變化統(tǒng)計(jì)出候選人的最后得票數(shù),并可按票選取多少點(diǎn)擊排序按鈕對(duì)候選人進(jìn)行排序。(其中,最多從候選人中選取3人,如果一張選票選取多于3人,該票就作廢票處理。如果一個(gè)也沒投票,就作棄權(quán)處理。程序能顯示
17、一共統(tǒng)計(jì)了多少選票,并能統(tǒng)計(jì)出廢票和棄權(quán)票的票數(shù)。</p><p><b> 圖1 </b></p><p><b> 二、需求分析</b></p><p> 本程序主要需要掌握窗口的布局和按鈕事件的觸發(fā)相關(guān)知識(shí),所有部件都可以添加到面板Panel上,顯示提示信息需要用到標(biāo)簽Label,輸入框需要新建TextFie
18、ld,按鈕用Button,選票需要新建Checkbox復(fù)選框來實(shí)現(xiàn),至于下面那個(gè)用來顯示各個(gè)候選人得票數(shù)的要先新建文本框TextField添加到一個(gè)小面板上,再新建個(gè)Scroll滾動(dòng)條,將建有文本框的面板添加到Scroll滾動(dòng)條上就可以了。為了做出這個(gè)界面還需要對(duì)各個(gè)部件進(jìn)行擺放,為了達(dá)到那個(gè)效果,可以將整個(gè)界面分成很多個(gè)小塊,每一小塊都是個(gè)面板,最后再拼接起來,每個(gè)小塊都設(shè)置好布局setLayout,在這里主要用到網(wǎng)格布局GridLa
19、yout,流式布局FlowLayout和BorderLayout方位布局,設(shè)置面板的顏色可以用setBackground()來實(shí)現(xiàn)。</p><p> 做好界面后,接下來就需要去實(shí)現(xiàn)各個(gè)功能了。因?yàn)楦鱾€(gè)功能都是通過按鈕來實(shí)現(xiàn)的,所以要對(duì)按鈕進(jìn)行注冊(cè)監(jiān)聽addActionlistener(),監(jiān)聽之后就是對(duì)按鈕事件的處理了actionPerformed(ActionEvent e)。要一個(gè)字符串中的人名,可以用S
20、tringTokenizer字符串分析器來獲取候選人的名字,其中還要用到里面的一些方法,比如nextToken()、hasMoreTokens()、countTokens()。還有setEnabled()方法可以設(shè)置按鈕是否可用,setState(boolean)可以設(shè)置復(fù)選框是否激活,在文本框或文本域中輸出和獲取信息可以分別用setText()和getText(),根據(jù)候選人數(shù)將多余的復(fù)選框去掉,可以讓設(shè)置多余的為不可見setVili
21、ble(flase)這樣就行了。對(duì)于附加功能如背景音樂,可以用AudioClip接口、public void play()控制播放、public void loop()實(shí)現(xiàn)循環(huán)播放、public void stop()停止播放當(dāng)前音樂、使用說明和保存結(jié)果都是需要通過新建Franme窗體實(shí)現(xiàn)的。</p><p><b> 三、設(shè)計(jì)思路</b></p><p> 一拿
22、到這個(gè)題目我就構(gòu)思好了大概的方向,那就是先制作主界面,然后再實(shí)現(xiàn)各個(gè)按鈕的功能。界面設(shè)計(jì)時(shí),先定義好各個(gè)部件:標(biāo)簽Label、文本框TextFiled、按鈕Button、復(fù)選框Checkbox、Scroll滾動(dòng)條,我把整個(gè)界面分成很多個(gè)小面板,每一行部件都在一個(gè)小面板上面,最后將這些小面板一個(gè)個(gè)添加上去add(),像流式布局FlowLayout、方位布局BorderLayout、網(wǎng)格布局GridLayout主要是用到了這三種布局,中間那
23、幾塊面板通過setBackground()將其背景色改為綠色。經(jīng)過不斷修改測(cè)試運(yùn)行,一個(gè)投票系統(tǒng)的主界面就做出來了。</p><p> 接下來就是對(duì)各個(gè)功能的實(shí)現(xiàn)了,定義幾個(gè)類變量來記錄投票相關(guān)記錄如:</p><p> Checkbox candidate[] //選擇框數(shù)組,代表候選人</p><p> TextField pe
24、rsonvote[] //文本條數(shù)組,顯示每個(gè)人的得票情況</p><p> int count[] //記錄每個(gè)人的得票數(shù)</p><p> int totalvote=0, //總票數(shù)</p><p> int peoplenumber=0
25、; //候選人個(gè)數(shù)</p><p> int count1=0,invalidatedTicket=0,abstention=0; //分別表示選的人數(shù),廢票數(shù),棄權(quán)票數(shù) </p><p> 對(duì)各個(gè)按鈕進(jìn)行注冊(cè)監(jiān)聽addActionListener()</p><p> 在輸入候選人名單時(shí)是輸入一串名字,所以要從
26、這一串名字中單個(gè)的提取出來并統(tǒng)計(jì)出候選人個(gè)數(shù),在完成這項(xiàng)功能時(shí)要用到StringTokenizer類。 </p><p> String g=canditate.getText();//獲取輸入的候選人</p><p> StringTokenizer st=new StringTokenizer(g);//字符串分析器</p><p> peoplenum
27、ble=st.countTokens();//統(tǒng)計(jì)候選人數(shù)</p><p><b> int i=0;</b></p><p> while(st.hasMoreTokens()){</p><p> candidatelist[i]=st.nextToken();</p><p> i++;}//獲取語言符號(hào)(
28、候選人名單)</p><p> 點(diǎn)擊確認(rèn)按鈕后,根據(jù)候選人個(gè)數(shù)添加單選按鈕,并以候選人名字作為單選按鈕的標(biāo)簽名。</p><p> for(int j=0;j<10;j++) candidate[j].setLabel(candidatelist[j]);</p><p> //將候選人名單添加到復(fù)選框里</p><p> 將
29、多余的選框設(shè)置為不可見</p><p> for(int j=peoplenumble;j<10;j++)</p><p> candidate[j].setVisible(false)</p><p> 點(diǎn)擊“取消”的話輸入候選人的文本框?yàn)榭眨藭r(shí)可以重新輸入,點(diǎn)擊下面“確定”則統(tǒng)計(jì)選了多少人并通過這個(gè)判斷是廢票還是棄權(quán),然后分別給候選人增加票數(shù)并輸出
30、相應(yīng)的信息;</p><p> for(int j=0;j<10;j++){</p><p> if(candidate[j].getState())</p><p> count1++;}//統(tǒng)計(jì)選了多少人</p><p> if(count1==0) abstention++;//一個(gè)都沒選則選票作為棄權(quán)</p>
31、<p> if(count1>3) invalidatedTicket++;//選的人數(shù)超過3個(gè)則選票作廢</p><p> if(count1<=3&&count1>0){</p><p> for(int j=0;j<peoplenumble;j++)</p><p> if(candidate[j]
32、.getState())</p><p> count[j]++;}//統(tǒng)計(jì)候選人所得票數(shù)</p><p> out.setText("已經(jīng)統(tǒng)計(jì)了:"+totalvote+"張選票,其中棄權(quán)票:"+abstention+"作廢票:"+invalidatedTicket);//輸出統(tǒng)計(jì)結(jié)果</p><p>
33、; for(int j=0;j<peoplenumble;j++)</p><p> personvote[j].setText(""+candidatelist[j]+"得票數(shù):"+count[j]);//輸出各個(gè)候選人得票數(shù)</p><p> 點(diǎn)擊“排序”則比較各個(gè)候選人的票數(shù)由高到低進(jìn)行排序</p><p>
34、 for(int j=0;j<peoplenumble;j++)</p><p> for(int i=j+1;i<peoplenumble;i++)</p><p> if(count[j]<count[i]){</p><p> m=count[j];count[j]=count[i];count[i]=m;</p>&l
35、t;p> n=candidatelist[j];candidatelist[j]=candidatelist[i];candidatelist[i]=n;</p><p> }//按得票數(shù)由多到少進(jìn)行排序</p><p> “刷新”按鈕通過清空所有文本框中的數(shù)據(jù),所有變量變?yōu)槌跏蓟担?lt;/p><p> “使用說明”通過彈出Frame窗體來實(shí)現(xiàn),在該窗
36、體中新建了幾個(gè)文本框TextFeild和Scroll滾輪用來顯示幫助信息。</p><p> “保存結(jié)果”也是通過彈出Franme窗體,窗體里面有個(gè)文本域TextArea,用來輸出統(tǒng)計(jì)的結(jié)果,在文本域中,用戶可以復(fù)制里面的內(nèi)容然后保存在其他文件中。</p><p> 最后說下背景音樂的實(shí)現(xiàn),通過添加AudioClip接口來實(shí)現(xiàn)</p><p> AudioCl
37、ip music;//播放音樂</p><p> music=getAudioClip(getCodeBase(),"瘦瘦的-梁靜茹.mid");</p><p> public void start(){//循環(huán)播放音樂</p><p> music.loop();}</p><p> public void s
38、top(){//結(jié)束播放</p><p> music.stop();}</p><p><b> 四、詳細(xì)設(shè)計(jì)</b></p><p> import java.io.*;</p><p> import java.awt.*;</p><p> import java.util.*;
39、</p><p> import java.applet.*;</p><p> import java.awt.event.*;</p><p> import javax.swing.*; </p><p> public class 投票管理系統(tǒng) extends Applet implements ActionListener{
40、</p><p> AudioClip music;//播放音樂</p><p> Label hint,result,notice,banquan;</p><p> TextField canditate;//輸入候選人文本框</p><p> TextField out;//顯示選舉結(jié)果的文本框</p><p
41、> Button confirm1,cancle,confirm2,refresh,sort;//分別表示確認(rèn)、取消、確定、刷新、排序</p><p> Button help;//使用說明</p><p> Button save;//保存統(tǒng)計(jì)結(jié)果</p><p> Checkbox candidate[]=new Checkbox[10];//選擇
42、框數(shù)組,代表候選人</p><p> TextField t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;</p><p> TextField personvote[]={t1,t2,t3,t4,t5,t6,t7,t8,t9,t10};//文本條數(shù)組,顯示每個(gè)人的得票情況</p><p> String candidatelist[]=new
43、String[10];//候選人名單</p><p> int count[]={0,0,0,0,0,0,0,0,0,0};//記錄每個(gè)人的得票數(shù)</p><p> int totalvote=0;//總票數(shù)</p><p> int peoplenumble=0;//候選人個(gè)數(shù)</p><p> int count1=0,inval
44、idatedTicket=0,abstention=0; //分別表示選的人數(shù),廢票數(shù),棄權(quán)票數(shù)</p><p> public void init(){</p><p> music=getAudioClip(getCodeBase(),"瘦瘦的-梁靜茹.mid");</p><p> hint=new Label("首先輸入候
45、選人的名字(人數(shù)不超過10,名字之間用空格分隔):");</p><p> notice=new Label("用下面的選擇框統(tǒng)計(jì)選票(最多選3人):");</p><p> result=new Label("選舉結(jié)果:");</p><p> banquan=new Label("版權(quán)所屬:09軟
46、件工程+會(huì)計(jì)學(xué)2班 祝捷");</p><p> canditate=new TextField(50);</p><p> confirm1=new Button("確認(rèn)");cancle=new Button("取消");confirm2=new Button("確定");refresh=new Button(&
47、quot;刷新");sort=new Button("排序");</p><p> confirm2.setEnabled(false);refresh.setEnabled(false);sort.setEnabled(false);</p><p> help=new Button("使用說明");save=new Button(&
48、quot;保存結(jié)果");save.setEnabled(false);</p><p> out=new TextField(50);</p><p> for(int i=0;i<10;i++)</p><p> personvote[i]=new TextField(80);</p><p> Panel p=ne
49、w Panel();</p><p> Panel p1=new Panel();</p><p> Panel p2=new Panel();</p><p> Panel p3=new Panel();</p><p> Panel p4=new Panel();</p><p> Panel p5=ne
50、w Panel();</p><p> Panel p6=new Panel();</p><p> Panel p7=new Panel();</p><p> Panel pa=new Panel();</p><p> Panel pb=new Panel();</p><p> Panel pc=ne
51、w Panel();</p><p> setLayout(new BorderLayout());</p><p> pa.setLayout(new GridLayout(7,1));</p><p> pb.setLayout(new BorderLayout());</p><p> p4.setLayout(new Grid
52、Layout(1,5));</p><p> p5.setLayout(new GridLayout(1,5));</p><p> p1.add(hint);p2.add(canditate);p2.add(help);</p><p> p3.add(confirm1);p3.add(cancle);p3.add(notice);</p>&
53、lt;p> p4.setBackground(Color.green);</p><p> p5.setBackground(Color.green);</p><p> p6.setBackground(Color.green);</p><p> for(int i=0;i<5;i++){//創(chuàng)建候選人選項(xiàng)</p><p&
54、gt; candidate[i]=new Checkbox(candidatelist[i]);</p><p> p4.add(candidate[i]);</p><p><b> }</b></p><p> for(int i=5;i<10;i++){//創(chuàng)建候選人選項(xiàng)</p><p> cand
55、idate[i]=new Checkbox(candidatelist[i]);</p><p> p5.add(candidate[i]);</p><p><b> }</b></p><p> for(int j=0;j<10;j++){</p><p> candidate[j].setEnable
56、d(false);</p><p><b> }</b></p><p> p6.add(confirm2);p6.add(refresh);p6.add(sort);</p><p> p7.add(result);p7.add(out);p7.add(save);</p><p> pa.add(p1);pa
57、.add(p2);pa.add(p3);pa.add(p4);pa.add(p5);pa.add(p6);pa.add(p7);</p><p> p.setLayout(new GridLayout(10,1));</p><p> for(int i=0;i<10;i++){ </p><p> p.add(personvote[i]);</p
58、><p><b> }</b></p><p> ScrollPane scroll=new ScrollPane();</p><p> scroll.add(p);</p><p> pc.add(banquan);</p><p> pb.add("Center",
59、scroll);</p><p> pb.add("South",pc);</p><p> add("Center",pa);</p><p> add("South",pb);</p><p> confirm1.addActionListener(this);</
60、p><p> cancle.addActionListener(this);</p><p> confirm2.addActionListener(this);</p><p> refresh.addActionListener(this);</p><p> sort.addActionListener(this);</p&g
61、t;<p> help.addActionListener(this);</p><p> save.addActionListener(this);</p><p><b> }//面板的布局</b></p><p> public void start(){//循環(huán)播放音樂</p><p>
62、music.loop();}</p><p> public void stop(){//結(jié)束播放</p><p> music.stop();}</p><p> public void actionPerformed(ActionEvent e){//注冊(cè)監(jiān)聽</p><p> String s=e.getActionComman
63、d();</p><p> if(s.equals("確認(rèn)")){</p><p> confirm1.setEnabled(false);save.setEnabled(true);</p><p> confirm2.setEnabled(true);refresh.setEnabled(true);sort.setEnabled(tr
64、ue);help.setEnabled(true);</p><p> String g=canditate.getText();//獲取輸入的候選人</p><p> StringTokenizer st=new StringTokenizer(g);//字符串分析器</p><p> peoplenumble=st.countTokens();//統(tǒng)計(jì)候選
65、人數(shù)</p><p><b> int i=0;</b></p><p> while(st.hasMoreTokens()){</p><p> candidatelist[i]=st.nextToken();</p><p> i++;}//獲取語言符號(hào)(候選人名單)</p><p>
66、 for(int j=0;j<10;j++)</p><p> candidate[j].setLabel(candidatelist[j]);//將候選人名單添加到復(fù)選框里</p><p> for(int j=0;j<peoplenumble;j++)</p><p> candidate[j].setEnabled(true);</p
67、><p> for(int j=peoplenumble;j<10;j++)</p><p> candidate[j].setVisible(false);//多余的選框設(shè)置為不可見</p><p><b> }</b></p><p> if(s.equals("取消")){//重新設(shè)置
68、候選人,進(jìn)行重新投票</p><p> confirm1.setEnabled(true);</p><p> canditate.setText("");</p><p><b> }</b></p><p> if(s.equals("確定")){</p>
69、<p> totalvote++;count1=0;</p><p> sort.setEnabled(true);</p><p> for(int j=0;j<10;j++){</p><p> if(candidate[j].getState())</p><p> count1++;}//統(tǒng)計(jì)選了多少人&l
70、t;/p><p> if(count1==0) abstention++;//一個(gè)都沒選則選票作為棄權(quán)</p><p> if(count1>3) invalidatedTicket++;//選的人數(shù)超過3個(gè)則選票作廢</p><p> if(count1<=3&&count1>0){</p><p>
71、for(int j=0;j<peoplenumble;j++)</p><p> if(candidate[j].getState())</p><p> count[j]++;</p><p> }//統(tǒng)計(jì)候選人所得票數(shù)</p><p> for(int j=0;j<10;j++)</p><p>
72、; candidate[j].setState(false);</p><p> for(int j=0;j<10;j++){</p><p> candidate[j].setState(false);</p><p> }//清空選框中的勾</p><p> out.setText("已經(jīng)統(tǒng)計(jì)了:"+t
73、otalvote+"張選票,其中棄權(quán)票:"+abstention+"作廢票:"+invalidatedTicket);//輸出統(tǒng)計(jì)結(jié)果</p><p> for(int j=0;j<peoplenumble;j++)</p><p> personvote[j].setText(""+candidatelist[j]+&
74、quot;得票數(shù):"+count[j]);//輸出各個(gè)候選人得票數(shù)</p><p><b> }</b></p><p> if(s.equals("刷新")){</p><p> confirm1.setEnabled(true);</p><p> confirm2.setEna
75、bled(false);refresh.setEnabled(false);sort.setEnabled(false);save.setEnabled(false);</p><p> totalvote=0;</p><p> peoplenumble=0;</p><p> count1=0;invalidatedTicket=0;abstention=
76、0;</p><p> canditate.setText("");</p><p> out.setText("");</p><p> for(int j=0;j<10;j++){</p><p> candidate[j].setState(false);</p>&l
77、t;p><b> }</b></p><p> for(int j=peoplenumble;j<10;j++)</p><p> candidate[j].setVisible(true);</p><p> for(int j=0;j<10;j++)</p><p> candidatel
78、ist[j]="";</p><p> for(int j=0;j<10;j++)</p><p> count[j]=0;</p><p> for(int j=0;j<10;j++)</p><p> candidate[j].setLabel(candidatelist[j]);</p>
79、;<p> for(int j=0;j<10;j++)</p><p> personvote[j].setText("");</p><p><b> }</b></p><p> if(s.equals("排序")){</p><p> sort.
80、setEnabled(false);</p><p> int m;String n;</p><p> for(int j=0;j<peoplenumble;j++)</p><p> for(int i=j+1;i<peoplenumble;i++)</p><p> if(count[j]<count[i]){
81、</p><p> m=count[j];count[j]=count[i];count[i]=m;</p><p> n=candidatelist[j];candidatelist[j]=candidatelist[i];candidatelist[i]=n;</p><p> }//按得票數(shù)由多到少進(jìn)行排序</p><p> f
82、or(int j=0;j<peoplenumble;j++)</p><p> personvote[j].setText(""+candidatelist[j]+"得票數(shù):"+count[j]);//輸出排序后各候選人的票數(shù)</p><p><b> }</b></p><p> if(s.
83、equals("使用說明")){</p><p> new Help();</p><p><b> }</b></p><p> if(s.equals("保存結(jié)果")){</p><p> new Save();</p><p><b&
84、gt; }</b></p><p><b> }</b></p><p> class Help extends Frame{//“使用說明”的彈出窗體</p><p> Panel p=new Panel();</p><p> TextField help[]=new TextField[6];
85、</p><p><b> Help(){</b></p><p> super("使用說明");</p><p> p.setLayout(new GridLayout(6,1));</p><p> for(int i=0;i<6;i++)</p><p>
86、 help[i]=new TextField(10);</p><p> for(int i=0;i<6;i++){ </p><p> p.add(help[i]);</p><p><b> }</b></p><p> ScrollPane scroll=new ScrollPane();</p
87、><p> scroll.add(p);</p><p> add(scroll);</p><p> help[0].setText("使用說明:");</p><p> help[1].setText("1:在文本框中輸入候選人名單,點(diǎn)擊“確認(rèn)”以完成候選人的設(shè)置,點(diǎn)擊“取消”可以重新設(shè)置候選人。&quo
88、t;);</p><p> help[2].setText("2:對(duì)候選人進(jìn)行投票,點(diǎn)擊下面的“確定”以確認(rèn)選票。(注意:每點(diǎn)一次確定將產(chǎn)生一張選票!)");</p><p> help[3].setText("3:確定選票后,會(huì)自動(dòng)統(tǒng)計(jì)結(jié)果,點(diǎn)擊“排序”可以對(duì)候選人所得的票數(shù)由高到低進(jìn)行排序。");</p><p>
89、help[4].setText("4:點(diǎn)擊“刷新”可以重新設(shè)置候選人,并開始新的一輪投票");</p><p> help[5].setText("5:在任何時(shí)候可以點(diǎn)擊“使用說明”來查看幫助,點(diǎn)擊“保存結(jié)果”,可以將統(tǒng)計(jì)以文本的形式顯示出來。");</p><p> setSize(600,200);</p><p>
90、 setVisible(true);</p><p> addWindowListener(new closeWin());</p><p><b> }</b></p><p> class closeWin extends WindowAdapter{</p><p> public void windowC
91、losing(WindowEvent e){</p><p> Window w=e.getWindow();</p><p> w.dispose();</p><p><b> }</b></p><p><b> }</b></p><p><b>
92、 }</b></p><p> class Save extends Frame{//“保存結(jié)果”的彈出窗體</p><p> TextArea save;</p><p><b> Save(){</b></p><p> super("統(tǒng)計(jì)結(jié)果");</p>&l
93、t;p> save=new TextArea(11,1);</p><p> add(save);</p><p> save.setText(out.getText()+'\n'+personvote[0].getText()+'\n'+personvote[1].getText()+'\n'+</p><p
94、> personvote[2].getText()+'\n'+personvote[3].getText()+'\n'</p><p> +personvote[4].getText()+'\n'+personvote[5].getText()+'\n'</p><p> +personvote[6].getTex
95、t()+'\n'+personvote[7].getText()+'\n'</p><p> +personvote[8].getText()+'\n'+personvote[9].getText()+'\n');</p><p> setSize(300,300);</p><p> setVi
96、sible(true);</p><p> addWindowListener(new closeWin());</p><p><b> }</b></p><p> class closeWin extends WindowAdapter{</p><p> public void windowClosing
97、(WindowEvent e){</p><p> Window w=e.getWindow();</p><p> w.dispose();</p><p><b> }</b></p><p><b> }</b></p><p><b> }<
98、/b></p><p><b> }</b></p><p> 五、運(yùn)行調(diào)試與分析討論</p><p> 運(yùn)行后的主界面(背景音樂響起)部分按鈕已禁用</p><p> 點(diǎn)擊“使用說明”后彈出的幫助文檔</p><p> 輸入候選人點(diǎn)擊“確認(rèn)”后,候選人出現(xiàn)在選票上,之前多余的選框
99、沒有顯示出來</p><p> 選擇候選人,點(diǎn)擊“確定”后自動(dòng)統(tǒng)計(jì)出結(jié)果,并清空上一次選框中的勾</p><p> 點(diǎn)擊“排序”后,候選人根據(jù)票數(shù)由高到低排列</p><p> 點(diǎn)擊“保存結(jié)果”彈出一個(gè)統(tǒng)計(jì)結(jié)果的窗體可以對(duì)其進(jìn)行復(fù)制,方便保存</p><p> 點(diǎn)擊“刷新”所有數(shù)據(jù)清空回到主界面,此時(shí)可以進(jìn)行下一輪投票</p&g
100、t;<p><b> 設(shè)計(jì)體會(huì)與小結(jié)</b></p><p> 做這個(gè)課程設(shè)計(jì)我最大的體會(huì)就是不僅熟練地掌握了書本上的知識(shí),還學(xué)到了很多書本上沒有的知識(shí)。雖然在很早以前就把這個(gè)程序?qū)懞昧耍矊?shí)現(xiàn)了基本功能,但老師每次看完之后都能夠給我一些改進(jìn)的建議,按照老師的建議,我不厭其煩的把程序改了又改,從老師那我了解到,一個(gè)好的程序,應(yīng)該能讓別人容易讀懂,所以變量名盡量用英文單詞而不
101、要用單個(gè)字母表示,還有代碼中應(yīng)該要有足夠多的注釋。當(dāng)遇到某個(gè)功能無法實(shí)現(xiàn)時(shí),我會(huì)上網(wǎng)先百度,看看網(wǎng)上有沒有好的解決方案,實(shí)在找不到的話就去問老師,通過老師提供的接口、類之類的,然后查詢那個(gè)幫助文檔。</p><p> 我想一個(gè)人只有到了緊要關(guān)頭才會(huì)奮力一搏吧,通過課程設(shè)計(jì),更加深入的了解了java,想當(dāng)初剛學(xué)java的時(shí)候,輸出Hello Word!都能讓自己激動(dòng)半天,我想我們?cè)趯W(xué)東西的時(shí)候,興趣真的很重要,以
102、前學(xué)java時(shí)還感覺不到它的趣味性,可是學(xué)到后面GUI時(shí),才發(fā)現(xiàn)java很有趣,自己照著書上把代碼打上去運(yùn)行,幾乎每個(gè)例題都有在電腦上試驗(yàn)過吧,所以每次做上機(jī)實(shí)驗(yàn)時(shí)就仿照書上的寫,我想,學(xué)計(jì)算機(jī)語言最大的喜悅就是當(dāng)一個(gè)程序按照自己所想要的結(jié)果運(yùn)行出來吧!我覺得幫助別人也是一種學(xué)習(xí),當(dāng)有朋友讓我?guī)兔r(shí),我會(huì)很樂意,因?yàn)樵趲椭鷦e人的同時(shí),會(huì)迫使自己去學(xué)習(xí)新的東西。</p><p> 通過做這個(gè)投票管理系統(tǒng),讓我對(duì)于
103、Applet更加深入的了解了,還有部件的布局也更熟練了。我想,學(xué)習(xí)是個(gè)不間斷的過程,如果真正想學(xué)好一門語言的話,光靠課程設(shè)計(jì)這段時(shí)間是遠(yuǎn)遠(yuǎn)不夠的,所以凡事還是貴在堅(jiān)持,我看過有些同學(xué)過兩天就換一個(gè)課設(shè)題目,我問他為什么,他說還有幾個(gè)錯(cuò)誤怎么都找不出來,于是就換題了。</p><p> 能順利的完成這次課設(shè),我非常感謝我的java老師***,是她給予了我很多幫助,教會(huì)了我很多東西,謝謝!</p>&
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)---簡單學(xué)生管理系統(tǒng)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告---簡單的職工管理系統(tǒng)
- c++課程設(shè)計(jì)--簡單成績管理系統(tǒng)
- java課程設(shè)計(jì)簡單的班級(jí)管理系統(tǒng)
- 簡單的文件管理系統(tǒng)-c課程設(shè)計(jì)
- 簡單畫圖程序課程設(shè)計(jì)報(bào)告
- 簡單畫圖程序課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)---簡單高校圖書管理系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)報(bào)告--投票統(tǒng)計(jì)器
- c語言課程設(shè)計(jì)報(bào)告-- 簡單圖形處理系統(tǒng)
- 簡單計(jì)算器課程設(shè)計(jì)報(bào)告
- 簡單頻率計(jì)課程設(shè)計(jì)報(bào)告
- 簡單計(jì)算器課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)--簡單的員工管理系統(tǒng)
- 簡單的通信管理系統(tǒng)--課程設(shè)計(jì)c++
- 倉庫管理系統(tǒng)--課程設(shè)計(jì)報(bào)告報(bào)告
- 宿舍管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 倉儲(chǔ)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--倉庫管理系統(tǒng)
- 學(xué)籍管理系統(tǒng)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論