版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、華東交通大學(xué)課程設(shè)計報告課程設(shè)計(論文)任務(wù)書 軟 件 學(xué) 院 學(xué)院 09軟件工程+會計學(xué) 專業(yè) 2 班 一、課程設(shè)計(論文)題目 簡單投票管理系統(tǒng)(小應(yīng)用程序applet) 二、課程設(shè)計(論文)工作自 2010 年 12 月 20 日起至 2010 年 12 月 24 日止。三、課程設(shè)計(論文) 地點: 軟 件 學(xué) 院 實 訓(xùn) 中 心 四、課程設(shè)計(論文)內(nèi)容要求:1本課程設(shè)計的目的(1)掌握java語言的程序設(shè)計方法; (2)理論聯(lián)系實際,進(jìn)一步提高學(xué)生的軟件開發(fā)技術(shù);(3)培養(yǎng)學(xué)生分析、解決問題的能力;(4)提高學(xué)生實踐論文撰寫能力。2課程設(shè)計的任務(wù)及要求1)課程設(shè)計任務(wù):設(shè)計一個投票管
2、理系統(tǒng)。2)創(chuàng)新要求:(1)新增背景音樂(2)新增程序的“使用說明”(3)在輸入候選人之前選項框和部分功能鍵被禁用,防止亂點導(dǎo)致統(tǒng)計結(jié)果有誤(4)新增保存結(jié)果功能(5)新增版權(quán)所屬標(biāo)簽3)課程設(shè)計論文編寫要求(1)課程設(shè)計任務(wù)及要求(2)設(shè)計思路-工作原理、功能規(guī)劃(3)詳細(xì)設(shè)計-數(shù)據(jù)分析、算法思路、類設(shè)計、功能實現(xiàn)(含程序流程圖、主要代碼及注釋)、界面等。(4)運(yùn)行調(diào)試與分析討論-給出運(yùn)行屏幕截圖,分析運(yùn)行結(jié)果,有何改進(jìn)想法等。(5)設(shè)計體會與小結(jié)-設(shè)計遇到的問題及解決辦法,通過設(shè)計學(xué)到了哪些新知識,鞏固了哪些知識,有哪些提高。(6)參考文獻(xiàn)(必須按標(biāo)準(zhǔn)格式列出,可參考教材后面的參考文獻(xiàn)格式
3、)(7)報告按規(guī)定排版打印,要求裝訂平整,否則要求返工;(8)課設(shè)報告的裝訂順序如下:封面-任務(wù)書-中文摘要-目錄-正文-附錄(代碼及相關(guān)圖片)(9)嚴(yán)禁抄襲,如有發(fā)現(xiàn),按不及格處理。4)課程設(shè)計評分標(biāo)準(zhǔn): (1)學(xué)習(xí)態(tài)度:10分;(2)系統(tǒng)設(shè)計:20分;(3)編程調(diào)試:20分;(4)回答問題:20分;(5)論文撰寫:30分。5)參考文獻(xiàn):(1)丁振凡. java語言實用教程(第2版)m. 北京郵電大學(xué)出版社. 2008.1 (2)丁振凡. java語言實用教程實驗指導(dǎo)(第2版)m. 北京郵電大學(xué)出版社. 2008.1(3)楊樹林等. java語言最新實用案例教程(第2版)m. 清華大學(xué)出版社
4、. 2010.76)課程設(shè)計進(jìn)度安排1準(zhǔn)備階段(4學(xué)時):選擇設(shè)計題目、了解設(shè)計目的要求、查閱相關(guān)資料2程序模塊設(shè)計分析階段(4學(xué)時):程序總體設(shè)計、詳細(xì)設(shè)計3代碼編寫調(diào)試階段(8學(xué)時):程序模塊代碼編寫、調(diào)試、測試4撰寫論文階段(4學(xué)時):總結(jié)課程設(shè)計任務(wù)和設(shè)計內(nèi)容,撰寫課程設(shè)計論文學(xué)生簽名: 2010 年 12 月 20 日課程設(shè)計(論文)評審意見(1)學(xué)習(xí)態(tài)度(10分):優(yōu)()、良()、中()、一般()、差(); (2)系統(tǒng)設(shè)計(20分):優(yōu)( )、良()、中()、一般()、差(); (3)編程調(diào)試(20分):優(yōu)()、良()、中()、一般()、差();(4)回答問題(20分):優(yōu)()、良
5、()、中()、一般()、差();(5)論文撰寫(30分):優(yōu)()、良()、中()、一般()、差(); 評閱人: 職稱: 講師 2010 年 12 月 25 日目錄一、課程設(shè)計任務(wù)及要求1二、需求分析2三、設(shè)計思路3四、詳細(xì)設(shè)計6五、運(yùn)行調(diào)試與分析討論15六、設(shè)計體會與小結(jié)19七、參考文獻(xiàn)20一、課程設(shè)計任務(wù)及要求 設(shè)計一個如圖1所示的投票管理系統(tǒng)界面,要求輸入候選人名單后,點擊確認(rèn)按鈕實現(xiàn)使用選擇框代表候選人,計選擇框的名字就是候選人的名字。點擊取消按鈕候選人輸入框為空,重新輸入候選人名單。選中候選人的選擇框時,表示給該候選人投一票。點擊確定按鈕時表示產(chǎn)生一張選票。點擊刷新按鈕回到程序的初始界
6、面重新設(shè)置候選人。根據(jù)選擇框的狀態(tài)變化統(tǒng)計出候選人的最后得票數(shù),并可按票選取多少點擊排序按鈕對候選人進(jìn)行排序。(其中,最多從候選人中選取3人,如果一張選票選取多于3人,該票就作廢票處理。如果一個也沒投票,就作棄權(quán)處理。程序能顯示一共統(tǒng)計了多少選票,并能統(tǒng)計出廢票和棄權(quán)票的票數(shù)。 圖1 二、需求分析本程序主要需要掌握窗口的布局和按鈕事件的觸發(fā)相關(guān)知識,所有部件都可以添加到面板panel上,顯示提示信息需要用到標(biāo)簽label,輸入框需要新建textfield,按鈕用button,選票需要新建checkbox復(fù)選框來實現(xiàn),至于下面那個用來顯示各個候選人得票數(shù)的要先新建文本框textfield添加到一
7、個小面板上,再新建個scroll滾動條,將建有文本框的面板添加到scroll滾動條上就可以了。為了做出這個界面還需要對各個部件進(jìn)行擺放,為了達(dá)到那個效果,可以將整個界面分成很多個小塊,每一小塊都是個面板,最后再拼接起來,每個小塊都設(shè)置好布局setlayout,在這里主要用到網(wǎng)格布局gridlayout,流式布局flowlayout和borderlayout方位布局,設(shè)置面板的顏色可以用setbackground()來實現(xiàn)。做好界面后,接下來就需要去實現(xiàn)各個功能了。因為各個功能都是通過按鈕來實現(xiàn)的,所以要對按鈕進(jìn)行注冊監(jiān)聽addactionlistener(),監(jiān)聽之后就是對按鈕事件的處理了ac
8、tionperformed(actionevent e)。要一個字符串中的人名,可以用stringtokenizer字符串分析器來獲取候選人的名字,其中還要用到里面的一些方法,比如nexttoken()、hasmoretokens()、counttokens()。還有setenabled()方法可以設(shè)置按鈕是否可用,setstate(boolean)可以設(shè)置復(fù)選框是否激活,在文本框或文本域中輸出和獲取信息可以分別用settext()和gettext(),根據(jù)候選人數(shù)將多余的復(fù)選框去掉,可以讓設(shè)置多余的為不可見setvilible(flase)這樣就行了。對于附加功能如背景音樂,可以用audio
9、clip接口、public void play()控制播放、public void loop()實現(xiàn)循環(huán)播放、public void stop()停止播放當(dāng)前音樂、使用說明和保存結(jié)果都是需要通過新建franme窗體實現(xiàn)的。三、設(shè)計思路一拿到這個題目我就構(gòu)思好了大概的方向,那就是先制作主界面,然后再實現(xiàn)各個按鈕的功能。界面設(shè)計時,先定義好各個部件:標(biāo)簽label、文本框textfiled、按鈕button、復(fù)選框checkbox、scroll滾動條,我把整個界面分成很多個小面板,每一行部件都在一個小面板上面,最后將這些小面板一個個添加上去add(),像流式布局flowlayout、方位布局bor
10、derlayout、網(wǎng)格布局gridlayout主要是用到了這三種布局,中間那幾塊面板通過setbackground()將其背景色改為綠色。經(jīng)過不斷修改測試運(yùn)行,一個投票系統(tǒng)的主界面就做出來了。接下來就是對各個功能的實現(xiàn)了,定義幾個類變量來記錄投票相關(guān)記錄如:checkbox candidate /選擇框數(shù)組,代表候選人textfield personvote /文本條數(shù)組,顯示每個人的得票情況int count /記錄每個人的得票數(shù)int totalvote=0, /總票數(shù)int peoplenumber=0; /候選人個數(shù)int count1=0,invalidatedticket=0,a
11、bstention=0; /分別表示選的人數(shù),廢票數(shù),棄權(quán)票數(shù) 對各個按鈕進(jìn)行注冊監(jiān)聽addactionlistener()在輸入候選人名單時是輸入一串名字,所以要從這一串名字中單個的提取出來并統(tǒng)計出候選人個數(shù),在完成這項功能時要用到stringtokenizer類。 string g=canditate.gettext();/獲取輸入的候選人stringtokenizer st=new stringtokenizer(g);/字符串分析器peoplenumble=st.counttokens();/統(tǒng)計候選人數(shù)int i=0;while(st.hasmoretokens()candidate
12、listi=st.nexttoken();i+;/獲取語言符號(候選人名單)點擊確認(rèn)按鈕后,根據(jù)候選人個數(shù)添加單選按鈕,并以候選人名字作為單選按鈕的標(biāo)簽名。for(int j=0;j10;j+) candidatej.setlabel(candidatelistj);/將候選人名單添加到復(fù)選框里將多余的選框設(shè)置為不可見for(int j=peoplenumble;j10;j+)candidatej.setvisible(false)點擊“取消”的話輸入候選人的文本框為空,此時可以重新輸入,點擊下面“確定”則統(tǒng)計選了多少人并通過這個判斷是廢票還是棄權(quán),然后分別給候選人增加票數(shù)并輸出相應(yīng)的信息;
13、for(int j=0;j3) invalidatedticket+;/選的人數(shù)超過3個則選票作廢if(count10)for(int j=0;jpeoplenumble;j+)if(candidatej.getstate() countj+;/統(tǒng)計候選人所得票數(shù)out.settext(已經(jīng)統(tǒng)計了:+totalvote+張選票,其中棄權(quán)票:+abstention+作廢票:+invalidatedticket);/輸出統(tǒng)計結(jié)果 for(int j=0;jpeoplenumble;j+) personvotej.settext(+candidatelistj+得票數(shù):+countj);/輸出各個候
14、選人得票數(shù)點擊“排序”則比較各個候選人的票數(shù)由高到低進(jìn)行排序for(int j=0;jpeoplenumble;j+)for(int i=j+1;ipeoplenumble;i+)if(countjcounti)m=countj;countj=counti;counti=m;n=candidatelistj;candidatelistj=candidatelisti;candidatelisti=n;/按得票數(shù)由多到少進(jìn)行排序“刷新”按鈕通過清空所有文本框中的數(shù)據(jù),所有變量變?yōu)槌跏蓟担弧笆褂谜f明”通過彈出frame窗體來實現(xiàn),在該窗體中新建了幾個文本框textfeild和scroll滾輪用來
15、顯示幫助信息?!氨4娼Y(jié)果”也是通過彈出franme窗體,窗體里面有個文本域textarea,用來輸出統(tǒng)計的結(jié)果,在文本域中,用戶可以復(fù)制里面的內(nèi)容然后保存在其他文件中。最后說下背景音樂的實現(xiàn),通過添加audioclip接口來實現(xiàn)audioclip music;/播放音樂music=getaudioclip(getcodebase(),瘦瘦的-梁靜茹.mid);public void start()/循環(huán)播放音樂music.loop();public void stop()/結(jié)束播放music.stop();四、詳細(xì)設(shè)計import java.io.*;import java.awt.*;imp
16、ort java.util.*;import java.applet.*;import java.awt.event.*;import javax.swing.*; public class 投票管理系統(tǒng) extends applet implements actionlisteneraudioclip music;/播放音樂label hint,result,notice,banquan;textfield canditate;/輸入候選人文本框textfield out;/顯示選舉結(jié)果的文本框button confirm1,cancle,confirm2,refresh,sort;/分別表
17、示確認(rèn)、取消、確定、刷新、排序button help;/使用說明button save;/保存統(tǒng)計結(jié)果checkbox candidate=new checkbox10;/選擇框數(shù)組,代表候選人textfield t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;textfield personvote=t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;/文本條數(shù)組,顯示每個人的得票情況string candidatelist=new string10;/候選人名單int count=0,0,0,0,0,0,0,0,0,0;/記錄每個人的得票數(shù)int totalvote
18、=0;/總票數(shù)int peoplenumble=0;/候選人個數(shù)int count1=0,invalidatedticket=0,abstention=0; /分別表示選的人數(shù),廢票數(shù),棄權(quán)票數(shù)public void init()music=getaudioclip(getcodebase(),瘦瘦的-梁靜茹.mid);hint=new label(首先輸入候選人的名字(人數(shù)不超過10,名字之間用空格分隔):);notice=new label(用下面的選擇框統(tǒng)計選票(最多選3人):);result=new label(選舉結(jié)果:);banquan=new label(版權(quán)所屬:09軟件工程+
19、會計學(xué)2班 祝捷);canditate=new textfield(50);confirm1=new button(確認(rèn));cancle=new button(取消);confirm2=new button(確定);refresh=new button(刷新);sort=new button(排序);confirm2.setenabled(false);refresh.setenabled(false);sort.setenabled(false);help=new button(使用說明);save=new button(保存結(jié)果);save.setenabled(false);out=ne
20、w textfield(50);for(int i=0;i10;i+)personvotei=new textfield(80);panel p=new panel();panel p1=new panel();panel p2=new panel();panel p3=new panel();panel p4=new panel();panel p5=new panel();panel p6=new panel();panel p7=new panel();panel pa=new panel();panel pb=new panel();panel pc=new panel();setla
21、yout(new borderlayout();pa.setlayout(new gridlayout(7,1);pb.setlayout(new borderlayout();p4.setlayout(new gridlayout(1,5);p5.setlayout(new gridlayout(1,5);p1.add(hint);p2.add(canditate);p2.add(help);p3.add(confirm1);p3.add(cancle);p3.add(notice);p4.setbackground(color.green);p5.setbackground(color.g
22、reen);p6.setbackground(color.green);for(int i=0;i5;i+)/創(chuàng)建候選人選項candidatei=new checkbox(candidatelisti);p4.add(candidatei);for(int i=5;i10;i+)/創(chuàng)建候選人選項candidatei=new checkbox(candidatelisti);p5.add(candidatei);for(int j=0;j10;j+)candidatej.setenabled(false);p6.add(confirm2);p6.add(refresh);p6.add(sort)
23、;p7.add(result);p7.add(out);p7.add(save);pa.add(p1);pa.add(p2);pa.add(p3);pa.add(p4);pa.add(p5);pa.add(p6);pa.add(p7);p.setlayout(new gridlayout(10,1);for(int i=0;i10;i+) p.add(personvotei);scrollpane scroll=new scrollpane();scroll.add(p);pc.add(banquan);pb.add(center,scroll);pb.add(south,pc);add(ce
24、nter,pa);add(south,pb);confirm1.addactionlistener(this);cancle.addactionlistener(this);confirm2.addactionlistener(this);refresh.addactionlistener(this);sort.addactionlistener(this);help.addactionlistener(this);save.addactionlistener(this);/面板的布局public void start()/循環(huán)播放音樂music.loop();public void stop
25、()/結(jié)束播放music.stop();public void actionperformed(actionevent e)/注冊監(jiān)聽string s=e.getactioncommand();if(s.equals(確認(rèn))confirm1.setenabled(false);save.setenabled(true);confirm2.setenabled(true);refresh.setenabled(true);sort.setenabled(true);help.setenabled(true);string g=canditate.gettext();/獲取輸入的候選人string
26、tokenizer st=new stringtokenizer(g);/字符串分析器peoplenumble=st.counttokens();/統(tǒng)計候選人數(shù)int i=0;while(st.hasmoretokens()candidatelisti=st.nexttoken();i+;/獲取語言符號(候選人名單)for(int j=0;j10;j+)candidatej.setlabel(candidatelistj);/將候選人名單添加到復(fù)選框里for(int j=0;jpeoplenumble;j+)candidatej.setenabled(true);for(int j=peopl
27、enumble;j10;j+)candidatej.setvisible(false);/多余的選框設(shè)置為不可見if(s.equals(取消)/重新設(shè)置候選人,進(jìn)行重新投票confirm1.setenabled(true);canditate.settext();if(s.equals(確定)totalvote+;count1=0;sort.setenabled(true); for(int j=0;j3) invalidatedticket+;/選的人數(shù)超過3個則選票作廢 if(count10) for(int j=0;jpeoplenumble;j+) if(candidatej.gets
28、tate() countj+; /統(tǒng)計候選人所得票數(shù)for(int j=0;j10;j+)candidatej.setstate(false);for(int j=0;j10;j+)candidatej.setstate(false);/清空選框中的勾out.settext(已經(jīng)統(tǒng)計了:+totalvote+張選票,其中棄權(quán)票:+abstention+作廢票:+invalidatedticket);/輸出統(tǒng)計結(jié)果 for(int j=0;jpeoplenumble;j+) personvotej.settext(+candidatelistj+得票數(shù):+countj);/輸出各個候選人得票數(shù)
29、if(s.equals(刷新)confirm1.setenabled(true);confirm2.setenabled(false);refresh.setenabled(false);sort.setenabled(false);save.setenabled(false);totalvote=0; peoplenumble=0; count1=0;invalidatedticket=0;abstention=0;canditate.settext();out.settext();for(int j=0;j10;j+)candidatej.setstate(false);for(int j
30、=peoplenumble;j10;j+)candidatej.setvisible(true);for(int j=0;j10;j+)candidatelistj=;for(int j=0;j10;j+)countj=0;for(int j=0;j10;j+)candidatej.setlabel(candidatelistj);for(int j=0;j10;j+)personvotej.settext();if(s.equals(排序)sort.setenabled(false);int m;string n;for(int j=0;jpeoplenumble;j+)for(int i=
31、j+1;ipeoplenumble;i+)if(countjcounti)m=countj;countj=counti;counti=m;n=candidatelistj;candidatelistj=candidatelisti;candidatelisti=n;/按得票數(shù)由多到少進(jìn)行排序for(int j=0;jpeoplenumble;j+)personvotej.settext(+candidatelistj+得票數(shù):+countj);/輸出排序后各候選人的票數(shù)if(s.equals(使用說明)new help();if(s.equals(保存結(jié)果)new save();class h
32、elp extends frame/“使用說明”的彈出窗體panel p=new panel();textfield help=new textfield6;help()super(使用說明);p.setlayout(new gridlayout(6,1);for(int i=0;i6;i+)helpi=new textfield(10);for(int i=0;i6;i+) p.add(helpi);scrollpane scroll=new scrollpane();scroll.add(p);add(scroll); help0.settext(使用說明:); help1.settext
33、(1:在文本框中輸入候選人名單,點擊“確認(rèn)”以完成候選人的設(shè)置,點擊“取消”可以重新設(shè)置候選人。); help2.settext(2:對候選人進(jìn)行投票,點擊下面的“確定”以確認(rèn)選票。(注意:每點一次確定將產(chǎn)生一張選票!); help3.settext(3:確定選票后,會自動統(tǒng)計結(jié)果,點擊“排序”可以對候選人所得的票數(shù)由高到低進(jìn)行排序。); help4.settext(4:點擊“刷新”可以重新設(shè)置候選人,并開始新的一輪投票); help5.settext(5:在任何時候可以點擊“使用說明”來查看幫助,點擊“保存結(jié)果”,可以將統(tǒng)計以文本的形式顯示出來。);setsize(600,200);setv
34、isible(true);addwindowlistener(new closewin();class closewin extends windowadapterpublic void windowclosing(windowevent e)window w=e.getwindow();w.dispose();class save extends frame/“保存結(jié)果”的彈出窗體textarea save;save()super(統(tǒng)計結(jié)果);save=new textarea(11,1);add(save);save.settext(out.gettext()+n+personvote0.gettext()+n+personvote1.gettext()+n+personvote2.gettext()+n+personvote3.gettext()+n+personvote4.gettext()+n+personvote5.gettext()+n+personvote6.gettext()+n+personvote7.gettext()+n+personvote8.gettext()+n+personvote9.gettext()+n);setsize(300,300);setvisible(t
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年項目策劃共同開發(fā)合同3篇
- 2024年:跨境電商平臺建設(shè)與運(yùn)營合同
- 2025年度智能交通系統(tǒng)研發(fā)與應(yīng)用合同6篇
- 2024年游樂場地租賃合同附場地設(shè)施租賃及運(yùn)營協(xié)議
- 2024年物業(yè)監(jiān)管下業(yè)主裝修合作合同版
- 2024銷售人員勞動合同書
- 2024年物業(yè)管理服務(wù)外包合同
- 2025年度餐飲企業(yè)冷鏈物流倉儲租賃合同3篇
- 醫(yī)院安全管理應(yīng)急預(yù)案
- 2024防水工程設(shè)計委托協(xié)議3篇
- 【APP違規(guī)收集個人信息的法律問題分析9800字(論文)】
- 商品房預(yù)售合同簽約證明和預(yù)告登記申請書
- 質(zhì)量管理體系成熟度評估表
- 國際疾病分類腫瘤學(xué)專輯第3版應(yīng)用課件
- 單體調(diào)試及試運(yùn)方案
- 2023-2024學(xué)年浙江省杭州市城區(qū)數(shù)學(xué)四年級第一學(xué)期期末學(xué)業(yè)水平測試試題含答案
- 五星級酒店市場調(diào)研報告
- 車輛剮蹭私下解決協(xié)議書(3篇)
- 網(wǎng)球技術(shù)與戰(zhàn)術(shù)-華東師范大學(xué)中國大學(xué)mooc課后章節(jié)答案期末考試題庫2023年
- 2022-2023學(xué)年衡水市深州市小升初數(shù)學(xué)高頻考點檢測卷含答案
- 現(xiàn)代科學(xué)技術(shù)概論知到章節(jié)答案智慧樹2023年成都師范學(xué)院
評論
0/150
提交評論