




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、隼去衣通次号课程设计(论文)任务书软件学院学院09软件工程+会计学专业2班一、课程设计(论文)题目简单投票治理系统(小应用程序 Applet)二、课程设计(论文)工作自 2021 年 12 月 20 日起至 2021 年 12 月 24 日止.三、课程设计(论文)地点:软件学院实训中央四、课程设计(论文)内容要求:1 1 . .本课程设计的目的(1)掌握 Java(2)理论联系实际,进一步提升学生的软件开发技术;(3)培养学生分析、解决问题的水平;(4)提升学生实践论文撰写水平.2 2 . .课程设计的任务及要求1)1)课程设计任务:设计一个投票治理系统.2)2)创新要求:(1)新增背景音乐(
2、2)新增程序的“使用说明(3)在输入候选人之前选项框和局部功能键被禁用,预防乱点导致统计结果有误(4)新增保存结果功能(5)新增版权所属标签3)3)课程设计论文编写要求(1)课程设计任务及要求(2)设计思路-工作原理、功能规划(3)详细设计-数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注释)、界面等.(4)运行调试与分析讨论-给出运行屏幕截图,分析运行结果,有何改良想法等.(5)设计体会与小结-设计遇到的问题及解决方法,通过设计学到了哪些新知识,稳固了哪些知识,有哪些提升.(6)参考文献(必须按标准格式列出,可参考教材后面的参考文献格式)(7)报告按规定排版打印,要求装订平整
3、,否那么要求返工;8课设报告的装订顺序如下:封面-任务书-中文摘要-目录正文-附录代码及相关图片9严禁抄袭,如有发现,按不及格处理.4 4课程设计评分标准:1学习态度:10 分;2系统设计:20 分;3编程调试:20 分;4答复下列问题:20 分;5论文撰写:30 分.5 5参考文献:(1)丁振凡.Java 语言实用教程第 2 版M.北京邮电大学出版社.2021.1(2)丁振凡.Java 语言实用教程实验指导第 2 版M.北京邮电大学出版社.2021.13杨树林等.Java 语言最新实用案例教程第 2 版M.清华大学出版社.2021.76 6课程设计进度安排1 .准备阶段4 学时:选择设计题目
4、、了解设计目的要求、查阅相关资料2 .程序模块设计分析阶段4 学时:程序总体设计、详细设计3 .代码编写调试阶段8 学时:程序模块代码编写、调试、测试4 .撰写论文阶段4 学时:总结课程设计任务和设计内容,撰写课程设计论文学生签名:2021 年 12 月 20 日课程设计论文评审意见110:优 (、良、中、 T(、差;2系统设计20 分:优 (、良、中、 T(、差;3编程调试20 分:优 (、良、中、 T(、差;4答复下列问题20分:优 (、良、中、 T(、差;5论文撰写30:优 ()T()评阅人:职称:讲师2021 年 12 月 25 日一、课程设计任务及要求1二、需求分析3三、设计思路4四
5、、详细设计7五、运行调试与分析讨论16六、设计体会与小结20七、参考文献21、课程设计任务及要求设计一个如图1所示的投票治理系统界面,要求输入候选人名单后,点击确认按钮实现使用选择框代表候选人,计选择框的名字就是候选人的名字.点击取消按钮候选人输入框为空,重新输入候选人名单.选中候选人的选择框时,表示给该候选人投一票.点击确定按钮时表示产生一张选票.点击刷新按钮回到程序的初始界面重新设置候选人.根据选择框的状态变化统计出候选人的最后得票数,并可按票选取多少点击排序按钮对候选人进行排序.其中,最多从候选人中选取3人,如果一张选票选取多于3人,该票就作废票处理.如果一个也没投票,就作弃权处理.程序
6、能显示一共统计了多少选票,并能统计出废票和弃权票的票数.图1二小程序 35 石 VotcStat.classApplet首先输入候选人的名字人数不那210,名字之同用定格分幅|张三王二李四然五如六黄:七万八确认|取消|用下面的选挎椎统计选票:,三.壬二.李四.银五孙六黄七万人?am 选卒结果:巳经烧计了:I1张选3!,苴中弃权南:q作废25:2壬四月步期:2黄七湍堂幻:2-T*!JCU!*|小程序巳启动.二、需求分析本程序主要需要掌握窗口的布局和按钮事件的触发相关知识,所有部件都可以添加到面板Panel上,显示提示信息需要用到标签Label,输入框需要新建TextField,按钮用Button
7、,选票需要新建Checkbox复选框来实现,至于下面那个用来显示各个候选人得票数的要先新建文本框TextField添加到一个小面板上,再新建个Scroll滚动条,将建有文本框的面板添加到Scroll滚动条上就可以了.为了做出这个界面还需要对各个部件进行摆放,为了到达那个效果,可以将整个界面分成很多个小块,每一小块都是个面板,最后再拼接起来,每个小块都设置好布局setLayout,在这里主要用到网格布局GridLayout,流式布局FlowLayout和BorderLayout方位布局,设置面板的颜色可以用setBackground()来实现.做好界面后,接下来就需要去实现各个功能了.由于各个功
8、能都是通过按钮来实现的,所以要对按钮进行注册监听addActionlistener(),监听之后就是对按钮事件的处理了actionPerformed(ActionEvente).要一个字符串中的人名,可以用StringTokenizer字符串分析器来获取候选人的名字,其中还要用到里面的一些方法,比方nextToken()、hasMoreTokens()、countTokens().还有setEnabled()方法可以设置按钮是否可用,setState(boolean)可以设置复选框是否激活,在文本框或文本域中输出和获取信息可以分别用setText()和getText(),根据候选人数将多余的复
9、选框去掉,可以让设置多余的为不可见setVilible(flase)这样就行了.对于附加功能如背景音乐,可以用AudioClip接口、publicvoidplay()限制播放、publicvoidloop()实现循环播放、publicvoidstop()停止播放当前音乐、使用说明和保存结果都是需要通过新建Franme窗体实现的.三、设计思路一拿到这个题目我就构思好了大概的方向,那就是先制作主界面,然后再实现各个按钮的功能.界面设计时,先定义好各个部件:标签Label、文本框TextFiled、按钮Button复选框Checkbox、Scroll滚动条,我把整个界面分成很多个小面板,每一行部件都
10、在一个小面板上面,最后将这些小面板一个个添加上去add(),像流式布局FlowLayout、方位布局BorderLayout、网格布局GridLayout主要是用到了这三种布局,中间那几块面板通过setBackground()将其背景色改为绿色.经过不断修改测试运行,一个投票系统的主界面就做出来了.接下来就是对各个功能的实现了,定义几个类变量来记录投票相关记录如:Checkboxcandidate/选择框数组,代表候选人TextFieldpersonvote口/文本条数组,显示每个人的得票情况intcount/记录每个人的得票数inttotalvote=0,/总票数intpeoplenumbe
11、r=0;/候选人个数intcount1=0,invalidatedTicket=0,abstention=0;/分别表示选的人数,废票数,弃权票数对各个按钮进行注册监听addActionListener()在输入候选人名单时是输入一串名字,所以要从这一串名字中单个的提取出来并统计出候选人个数,在完成这项功能时要用到StringTokenizer类Stringg=canditate.getText();/获取输入的候选人StringTokenizerst=newStringTokenizer(g);/字符串分析器peoplenumble=st.countTokens();/统计候选人数inti=
12、0;while(st.hasMoreTokens()candidatelisti=st.nextToken();i+;/获取语言符号(候选人名单)点击确认按钮后,根据候选人个数添加单项选择按钮,并以候选人名字作为单选按钮的标签名.for(intj=0;j10;j+)candidatej.setLabel(candidatelistj);/将候选人名单添加到复选框里将多余的选框设置为不可见for(intj=peoplenumble;j10;j+)candidatej.setVisible(false)点击“取消的话输入候选人的文本框为空,此时可以重新输入,点击下面“确定那么统计选了多少人并通过这
13、个判断是废票还是弃权,然后分别给候选人增加票数并输出相应的信息;for(intj=0;j3)invalidatedTicket+;/选的人数超过3个那么选票作废if(count10)for(intj=0;jpeoplenumble;j+)if(candidatej.getState()countj+;/统计候选人所得票数out.setText(已经统计了:+totalvote+张选票,其中弃权票:+abstention+作废票:+invalidatedTicket);/输出统计结果for(intj=0;jpeoplenumble;j+)personvotej.setText(+candidat
14、elistj+得票数:+countj);/输出各个候选人得票数点击“排序那么比拟各个候选人的票数由高到低进行排序for(intj=0;jpeoplenumble;j+)for(inti=j+1;ipeoplenumble;i+)if(countjcounti)m=countj;countj=counti;counti=m;n=candidatelistj;candidatelistj=candidatelisti;candidatelisti=n;/按得票数由多到少进行排序“刷新按钮通过清空所有文本框中的数据,所有变量变为初始化值;“使用说明通过弹出Frame窗体来实现,在该窗体中新建了几个文
15、本框TextFeild和Scroll滚轮用来显示帮助信息.“保存结果也是通过弹出Franme窗体,窗体里面有个文本域TextArea,用来输出统计的结果,在文本域中,用户可以复制里面的内容然后保存在其他文件中.最后说下背景音乐的实现,通过添加AudioClip接口来实现AudioClipmusic;/播放音乐music=getAudioClip(getCodeBase(),瘦瘦的-梁静茹.mid);publicvoidstart()/循环播放音乐music.loop();publicvoidstop()/结束播放music.stop();四、详细设计importjava.io.*;import
16、java.awt.*;importjava.util.*;importjava.applet.*;importjava.awt.event.*;importjavax.swing.*;publicclass投票治理系统extendsAppletimplementsActionListenerAudioClipmusic;播放音乐Labelhint,result,notice,banquan;TextFieldcanditate;/#俞入候选人文本框TextFieldout;/显示选举结果的文本框Buttonconfirm1,cancle,confirm2,refresh,sort;/价另U表示
17、确认、取消、确定、刷新、排序Buttonhelp;/使用说明Buttonsave;/寐存统计结果Checkboxcandidate=newCheckbox10;/破择框数组,代表候选人TextFieldt1,t2,t3,t4,t5,t6,t7,t8,t9,t10;TextFieldpersonvote=t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;文本条数组,显示每个人的得票情况Stringcandidatelist=newString10;候选人名单intcount=0,0,0,0,0,0,0,0,0,0;/记录每个人的得票数inttotalvote=0;总票数intpeop
18、lenumble=0;/炭选人个数intcount1=0,invalidatedTicket=0,abstention=0;/分另1J表示选的人数,废票数,弃权票数publicvoidinit()music=getAudioClip(getCodeBase(),瘦瘦的-梁静茹.mid);hint=newLabel(首先输入候选人的名字(人数不超过10,名字之间用空格分隔):);notice=newLabel(用下面的选择框统计选票(最多项选择3人):);result=newLabel(选举结果:);banquan=newLabel(版权所属:09软件工程+会计学2班祝捷)canditate=n
19、ewTextField(50);confirm1=newButton(确认);cancle=newButton(取消);confirm2=newButton(确定);refresh=newButton(刷新);sort=newButton(排序);confirm2.setEnabled(false);refresh.setEnabled(false);sort.setEnabled(false);help=newButton(使用说明);save=newButton(保存结果);save.setEnabled(false);out=newTextField(50);for(inti=0;i10
20、;i+)personvotei=newTextField(80);Panelp=newPanel();Panelp1=newPanel();Panelp2=newPanel();Panelp3=newPanel();Panelp4=newPanel();Panelp5=newPanel();Panelp6=newPanel();Panelp7=newPanel();Panelpa=newPanel();Panelpb=newPanel();Panelpc=newPanel();setLayout(newBorderLayout();pa.setLayout(newGridLayout(7,1)
21、;pb.setLayout(newBorderLayout();p4.setLayout(newGridLayout(1,5);p5.setLayout(newGridLayout(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.green);p6.setBackground(Color.green);for(inti=0;i5;i+)/创立候选人
22、选项candidatei=newCheckbox(candidatelisti);p4.add(candidatei);for(inti=5;i10;i+)/创立候选人选项candidatei=newCheckbox(candidatelisti);p5.add(candidatei);for(intj=0;j10;j+)candidatej.setEnabled(false);p6.add(confirm2);p6.add(refresh);p6.add(sort);p7.add(result);p7.add(out);p7.add(save);pa.add(p1);pa.add(p2);p
23、a.add(p3);pa.add(p4);pa.add(p5);pa.add(p6);pa.add(p7);p.setLayout(newGridLayout(10,1);for(inti=0;i10;i+)p.add(personvotei);ScrollPanescroll=newScrollPane();scroll.add(p);pc.add(banquan);pb.add(Center,scroll);pb.add(South,pc);add(Center,pa);add(South,pb);confirml.addActionListener(this);cancle.addAct
24、ionListener(this);confirm2.addActionListener(this);refresh.addActionListener(this);sort.addActionListener(this);help.addActionListener(this);save.addActionListener(this);/面板的布局publicvoidstart()/循环播放音乐music.loop();publicvoidstop()/结束播放music.stop();publicvoidactionPerformed(ActionEvente)/注册监听Strings=e
25、.getActionCommand();if(s.equals(确认)confirm1.setEnabled(false);save.setEnabled(true);confirm2.setEnabled(true);refresh.setEnabled(true);sort.setEnabled(true);help.setEnabled(true);Stringg=canditate.getText();/欧取输入的候选人StringTokenizerst=newStringTokenizer(g);/字符串分析器peoplenumble=st.countTokens();毓计候选人数i
26、nti=0;while(st.hasMoreTokens()candidatelisti=st.nextToken();i+;/获取语言符号(候选人名单)for(intj=0;j10;j+)candidatej.setLabel(candidatelistj);/将候选人名单添加到复选框里for(intj=0;jpeoplenumble;j+)candidatej.setEnabled(true);for(intj=peoplenumble;j10;j+)candidatej.setVisible(false);/多余的选框设置为不可见if(s.equals(取消)/重新设置候选人,进行重新投
27、票confirm1.setEnabled(true);canditate.setText();if(s.equals(确定)totalvote+;count1=0;sort.setEnabled(true);for(intj=0;j3)invalidatedTicket+;/选的人数超过3个那么选票作废if(count10)for(intj=0;jpeoplenumble;j+)if(candidatej.getState()countj+;统计候选人所得票数for(intj=0;j10;j+)candidatej.setState(false);for(intj=0;j10;j+)candi
28、datej.setState(false);清空选框中的勾out.setText( 已 经 统 计 了:+totalvote+ 张 选 票 , 其 中 弃 权票:+abstention+作废票:+invalidatedTicket);输出统计结果for(intj=0;jpeoplenumble;j+)personvotej.setText(+candidatelistj+得数:+countj);/输出各个候选人得票数)if(s.equals(刷新)confirm1.setEnabled(true);confirm2.setEnabled(false);refresh.setEnabled(fa
29、lse);sort.setEnabled(false);save.setEnabled(false);totalvote=0;peoplenumble=0;count1=0;invalidatedTicket=0;abstention=0;canditate.setText();out.setText();for(intj=0;j10;j+)candidatej.setState(false);for(intj=peoplenumble;j10;j+)candidatej.setVisible(true);for(intj=0;j10;j+)candidatelistj=;for(intj=0
30、;j10;j+)countj=0;for(intj=0;j10;j+)candidatej.setLabel(candidatelistj);for(intj=0;j10;j+)personvotej.setText();)if(s.equals(排序)sort.setEnabled(false);intm;Stringn;for(intj=0;jpeoplenumble;j+)for(inti=j+1;ipeoplenumble;i+)if(countjcounti)m=countj;countj=counti;counti=m;n=candidatelistj;candidatelistj
31、=candidatelisti;candidatelisti=n; 按得票数由多到少进行排序for(intj=0;jpeoplenumble;j+)personvotej.setText(+candidatelistj+得数:+countj);/输出排序后各候选人的票数if(s.equals(使用说明)newHelp();if(s.equals(保存结果)newSave();classHelpextendsFrame/“使用说明的弹出窗体Panelp=newPanel();TextFieldhelp=newTextField6;Help()super(使用说明);p.setLayout(new
32、GridLayout(6,1);for(inti=0;i6;i+)helpi=newTextField(10);for(inti=0;i6;i+)p.add(helpi);ScrollPanescroll=newScrollPane();scroll.add(p);add(scroll);help0.setText(使用说明:);help1.setText(1:在文本框中输入候选人名单,点击“确认以完成候选人的设置,点击“取消可以重新设置候选人.);help2.setText(2:对候选人进行投票,点击下面的“确定以确认选票.(注意:每点一次确定将产生一张选票!);help3.setText(
33、3:确定选票后,会自动统计结果,点击“排序可以对候选人所得的票数由高到低进行排序.);help4.setText(4:点击“刷新可以重新设置候选人,并开始新的一轮投票);help5.setText(5:在任何时候可以点击“使用说明来查看帮助,点击“保存结果,可以将统计以文本的形式显示出来.);setSize(600,200);setVisible(true);addWindowListener(newcloseWin();classcloseWinextendsWindowAdapterpublicvoidwindowClosing(WindowEvente)Windoww=e.getWind
34、ow();w.dispose();classSaveextendsFrame/保存结果的弹出窗体TextAreasave;Save()super.统计结果);save=newTextArea(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.get
35、Text()+n+personvote7.getText()+n+personvote8.getText()+n+personvote9.getText()+n);setSize(300,300);setVisible(true);addWindowListener(newcloseWin();classcloseWinextendsWindowAdapterpublicvoidwindowClosing(WindowEvente)Windoww=e.getWindow();w.dispose();五、运行调试与分析讨论二J瞿于4看也去京管建去轨.UI小程序苜先能入候选人的名字人数不超过10,
36、名字之间用空格分隔了使用说明Iau|取消|用下面的选搽框缢计这里最参选认:选举结果:版权斯属:.敞件工程+会计学2W壬祝捷小程序已启动.运行后的主界面背景音乐响起局部按钮已禁用点击“使用说明后弹出的帮助文档囱J器寻考4注大妻节性系此人一尸小程序首先输入催选人的名字工人毅不超过10,名字之间用空格分幅张三王二李钱五卧天黄七月又使用一明IIa;I用下面的选择框虢计选票儡多项选择队二送率结果保旺密果I版权斫属:口函件工程诒计学明壬祝捶小程序已启动.输入候选人点击“确认后,候选人出现在选票上,之前多余的选框没有显示出来.画J布屈冬看冷效萦节网条缸AM回不程庠首先输入候选大的名字f人数不超过10, ,自
37、字乙间用空格分隔?:张三王二李四钱五亦六黄七万天使用说明确认|即消|用下面的选择他统计选票最多项选择3At王二四战五六王二四战五六黄七I万八刷新回序选举结果:已轻统计了:6张选票,其中洋权票:口作廉票,0保存结果张三得票数.3得票数:1季四得票数线五得票敕版权斫属:0瞰件工程+会计学2WE祝捷1小程序已启动.选择候选人,点击“确定后自动统计出结果,并清空上一次选框中的勾图J器由售4器报妻节附上比人J 巨*&51入程序首先稳人候选人的名字f人数不超过名字之闾用空格分隔;张三王二李四骷加兴黄七HA使用说明万人得票效:5:钱五得票数;4|三承三得票效工王二得票数厘版权所属:口瞰件工程供计学曲壬祝捷小程序已自幼 u点击“排序后,候选人根据票数由高到低排列首先辎入候选人的名字人数不超过10,名字之间用空格分咻万八得票颊:5钱五得票数:4张三得票数:王二信覃效率小程序已启动.点击“保存结果弹出一个统计结果的窗体可以对其进行复制,方便保存张三王二李四线五孙六黄七J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东杏林科技职业学院《建筑设计A(五)》2023-2024学年第一学期期末试卷
- 中国矿业大学徐海学院《医学免疫学E》2023-2024学年第二学期期末试卷
- 山东省聊城市重点达标名校2024-2025学年初三期中考试物理试题(A卷)试题含解析
- 浙江省两校2025年高三第二次调研测试历史试题理试题含解析
- 上海市崇明区2025届初三5月中考模拟考试(一)英语试题含答案
- 吉林省辽源市重点名校2025届初三中考适应性月考(一)英语试题含答案
- 永州职业技术学院《管理学前沿专题》2023-2024学年第二学期期末试卷
- 磷肥生产工艺与控制考核试卷
- 有色金属矿山资源勘查新技术与应用考核试卷
- 电动汽车用无线充电系统的电磁场分析考核试卷
- 2022年江苏安东控股集团有限公司招聘笔试题库及答案解析
- 不锈钢304焊接工艺评定报告PQR(全氩弧)
- 《专利法》课程思政教学案例(一等奖)
- 安全事故案例图片合集事故警示
- 互联网+智慧校园解决方案(最新详细方案)
- CPK基本知识及实例
- 工程建筑给排水外文文献翻译1
- 200句话搞定上海中考单词(精华版)
- 船舶辅锅炉的自动控制系统分析
- 防伪包装技术
- 49000DWT江海直达成品油船设计
评论
0/150
提交评论