投票系统设计模板(Java).docx
课程设计(论文)任务书软件学院学院09软件工程建计学,业2班一、课程设计(论文)题目简朴投票管理系统(小应用程序APP1et)二、课程设计(论文)工作自2023年12月20日起至2023年12月24日止。三、课程设计(论文)地点:软件学院实训中心四、课程设计(论文)内容规定:1 .本课程设计的目的<1)掌握JaVa语言的程序设计措施;(2)理论联络实际,深入提高学生的软件开发技术;(3)培养学生分析、处理问题的能力;(4)提高学生实践论文撰写能力。2 .课程设计的任务和规定D课程设计任务:设计一种投票管理系统。2)创新规定:(1)新增背景音乐(2)新增程序的“使用阐明”(3)在输入候选人之前选项框和部分功能键被禁用,防止乱点导致记录成果有误(4)新增保留成果功能(5)新增版权所属标签3)课程设计论文编写规定(1)课程设计任务和规定(2)设计思绪一工作原理、功能规划(3)详细设计-数据分析、算法思绪、类设计、功能实现(含程序流程图、重要代码和注释)、界面等。(4)运行调试与分析讨论-一给出运行屏幕截图,分析运行成果,有何改善想法等。(5)设计体会与小结-设计碰到的问题和处理措施,通过设计学到了哪些新知识,巩固了哪些知识,有哪些提高。(6)参照文献(必须按原则格式列出,可参照教材背面的参照文献格式)(7)汇报按规定排版打印,规定装订平整,否则规定返工;(8)课设汇报的装订次序如下:封面-任务书-一中文摘要一-目录一一正文一-附录(代码和有关图片)(9)严禁抄袭,如有发现,按不和格处理。4)课程设计评分原则:(2)系统设计:20分:(3)编程调试:20分;(4)回答问题:20分;(5)论文撰写:30分。5)参照文献:(D丁振凡.JaVa语言实用教程(第2版)国.北京邮电大学出版社.2023.1(2) 丁振凡.JaVa语言实用教程试验指导(第2版)国.北京邮电大学出版社.2023.1(3)杨树林等.JaVa语言最新实用案例教程(第2版)M.清华大学出版社.2023.76)课程设计进度安排1 .准备阶段(4课时):选择设计题目、理解设计目的规定、查阅有关资料2 .程序模块设计分析阶段(4课时):程序总体设计、详细设计3 .代码编写调试阶段(8课时):程序模块代码编写、调试、测试4 .撰写论文阶段(4课时):总结课程设计任务和设计内容,撰写课程设计论文学生签名:2023年12月20日课程设计(论文)评审意见(1)学习态度(10分):优()、良()、中()、一般()、差();(2)系统设计(20分):优()、良()、中()、一般()、差();(3)编程调试(20分):优()、良()、中()、一般()、差();(4)回答问题(20分):优()、良()、中()、一般()、差();(5)论文撰写(30分):优()、良()、中()、一般()、差();评阅人:职称:讲师2023年12月25日目录一、课程设计任务和规定0一、需求分析错误!未定义书签。三、设计思绪3四、详细设计7五、运行调试与分析讨论20六、设计体会与小结21七、参照文献23一、课程设计任务和规定设计种如图1所示的投票管理系统界面,规定输入候选人名单后,点击确认按钮实现使用选择框代表候选人,计选择框的名字就是候选人的名字。点击取消按钮候选人输入框为空,重新输入候选人名单。选中候选人的选择框时,表达给该候选人投一票。点击确定按钮时表达产生一张选票。点击刷新按钮回到程序的初始界面重新设置候选人。根据选择框的状态变化记录出候选人H勺最终得票数,并可按票选用多少点击排序按钮对候选人进行排序。(其中,最多从候选人中选用3人,假如一张选票选用多于3人,该票就作废票处理。假如一种也没投票,就作弃权处理。程序能显示一共记录了多少选票,并能记录出废票和弃权票的票数。图1二、需求分析本程序重要需要掌握窗口的布局和按钮事件的触发有关知识,所有部件都可以添加到面板Pane1上,显示提醒信息需要用到标签1abe1输入框需要新建TeXtFieId,按钮用BUtton,选票需要新建Checkbox复选框来实现,至于下面那个用来显示各个候选人得票数的要先新建文本框TextFie1d添加到一种小面板上,再新建个SCro11滚动条,将建有文本框的面板添加到SCrO11滚动条上就可以了。为了做出这个界面还需要对各个部件进行摆放,为了到达那个效果,可以将整个界面提成诸多种小块,每一小块都是个面板,最终再拼接起来,每个小块都设置好布局Set1ayout,在这里重要用到网格布局Grid1ayout,流式布局F1ow1ayout和Border1ayoUt方位布局,设置面板W、J颜色可以用SetBackground()来实现。做好界面后,接下来就需要去实现各个功能了。由于各个功能都是通过按钮来实现的,因此要对按钮进行注册监听addActionIiStener(),监听之后就是对按钮事件的处理了actiOnPerformed(ActionEvente)0要一种字符串中的人名,可以用StringTOkeniZer字符串分析器来获取候选人的名字,其中还要用到里面的某些措施,例如nextToken()、HasMoreTokens()、CountTokens()(>尚有SetEnabIed()措施可以设置按钮与否可用,setState(boo1ean)可以设置复选框与否激活,在文本框或文本域中输出和获取信息可以分别用setTextO和getTextO,根据候选人数将多出的复选框去掉,可以让设置多出的为不可见SetVi1ib1e(f1ase)这样就行了。对于附加功能如背景音乐,可以用AUdiOCIiP接口、pub1icvoidp1ay()控制播放、pub1icvoid1oop()实现循环播放、pub1icvoidstopO停止播放目前音乐、使用阐明和保留成果都是需要通过新建FranmC窗体实现的。三、设计思绪拿到这个题目我就构思好了大概的方向,那就是先制作主界面,然后再实现各个按钮的功能。界面设计时,先定义好各个部件:标签1abe1、文本框TeXtFi1ed、按钮BUttorU复选框CheCkbox、SCroI1滚动条,我把整个界面提成诸多种小面板,每一行部件都在一种小面板上面,最终将这些小面板一种个添加上去add(),像流式布局F1OW1ayoUt、方位布局BOrder1ayoUt、网格布局Grid1ayout重要是用到了这三种布局,中间那几块面板通过SetBackgroundO将其背景色改为绿色。通过不停修改测试运行,一种投票系统的主界面就做出来了。接下来就是对各个功能的实现了,定义几种类变量来记录投票有关记录如:TextFie1dpersonvote文本条数组,显示每个人的得票状况intcount记录每个人的得票数inttota1vote=0,总票数intPeop1enumber=O;候选人个数intCount1=O,inva1idatedTicket=O,abstention=0;分别表达选的人数,废票数,弃权票数对各个按钮进行注册监听addAction1iStener()在输入候选人名单时是输入一串名字,因此要从这一串名字中单个的提取出来并记录出候选人个数,在完毕这项功能时要用到StringTokenizer类。Stringg=canditate.getText();获取输入的I候选人StringTokenizerst=newStringTokeniZer(g);字符串分析器peop1enumb1e=st.CountTokensO;记录候选人数inti=0;whiIe(st.hasMoreTokens()candidate1isti=st.nextToken();i+;获取语言符号(候选人名单)点击确认按钮后,根据候选人个数添加单项选择按钮,并以候选人名字作为单项选择按钮的标签名。for(intj=0;j<10;j+)candidatej.Set1abe1(candidate1istj);将候选人名单添加到曳选框里将多出的选框设置为不可见for(intj=peop1enumb1e;j<10;j+)candidatej.setVisib1e(fa1se)点击“取消”的话输入候选人的文本框为空,此时可以重新输入,点击下面“确定”则记录选了多少人并通过这个判断是废票还是弃权,然后分别给候选人增长票数并输出对应的信息:for(intj=0;j<10;j+)if(candidatej.getState()COUntI+;记录选了多少人if(count1=0)abstention+;一种都没选则选票作为弃权if(cont1>3)inva1ida1edTicket+;选的人数超过3个则选票作废if(countK=3&&count1>0)for(intj=0:j<peopIenumb1e;j+)if(candidatej.getState()countj+;记录候选人所得票数out.setText(*已经记录了:"+tota1vote+”张选票,其中弃权票:"+abstention+"作废票:"+inva1idatedTicket);/输出记录成果for(intj=0:j<peop1enumb1e;j+)personvotej.SetTeXt(""+candidate1istj+”得票数*+countj);/输出各个候选人得票数点击“排序”则比较各个候选人的票数由高到低进行排序for(intj=0;j<peop1enumb1e;J+)for(inti=j+1:i<peop1enumb1e;i+)if(countj<counti)m=countj;countj=counti;counti=m;n=candidate1istj;candidate!istj=candidate1istiJcandidate1isti=n;按得票数由多到少进行排序“刷新”按钮通过清空所有文本框中的数据,所有变量变为初始化值;“使用阐明”通过弹出Frame窗体来实现,在该窗体中新建了几种文本框TextFei1d和Scro11滚轮用来显示协助信息。“保留成果”也是通过弹出Franme窗体,窗体里面有个文本域TextArea,用来输出记录的成果,在文本域中,顾客可以梵制里面的内容然后保留在其他文献中。最终说下背景音乐的实现,通过添加AUdioCIiP接口来实现AudioC1ipmusic;/播放音乐music=getAudioC1ip(getCodeBase(),“瘦瘦小J-梁静茹.mid");pub1icvoidStart()循环播放音乐music.IoopO;pub1icvoidStOPo结束播放music,stopO;四、详细设计importjava.io.*;importjava.awt.*;importjava.uti1.*;importjava,app1et.*;importjava.awt.event.*;importjavax.swing.*;pub1icc1ass投票管理系统extendsApp1etimp1ementsAction1istenerfAudioC1ipmusic;播