欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    Java课程设计--随机点名器.docx

    • 资源ID:900991       资源大小:132.26KB        全文页数:15页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java课程设计--随机点名器.docx

    第1章课题概述11.1 课题的目的11.2 课题的要求11.2. 1输入输出的要求11. 2.2程序实现的功能要求1第2章概要设计22.1 整个程序的模块结构及流程22.2 使用外部包的确定22.3 3主界面模块说明22.4 文件选择模块说明32.5 读取名单信息模块说明32.6 6随机抽取学生模块说明32.7 信息写入模块说明3第3章程序功能的实现43.1 主界面模块的实现43 .1.1菜单栏的实现44 .1.2开始点名按钮的实现53.2 文件选择模块的实现53.3读取名单信息模块的实现53.4随机抽取学生模块的实现63.5信息写入模块的实现73.5.1分数输入框的实现73.5.2日期写入的实现73.5.3学生姓名写入的实现83.5.4显示输入错误对话框的实现8第4章调试及发现问题的解决9第5章程序测试及分析10第6章总结13参考文献14第1章课题概述本次java课程设计的题目是利用开源Pol项目从EXCel文件的某个Sheet中读出班级所有同学的名单,然后通过产生一个随机数选中其中一个同学回答问题一个随机数选中其中一个同学回答问题,然后输入回答问题的得分,并将该得分存入EXCeI表的另外一个Sheet中。1.1 课题的目的在高等院校里,传统的学生考勤以及平时在课堂上的表现,主要是依靠老师在课堂上点名或学生会抽查点名制度,还有上课提问等。学生人数多、考勤不全面、数据不准确、老师难以记住所有人,并且记录起来又非常繁琐。所以随机点明器就方便了这种情况。随机点名器既方便了老师上课点名的烦恼,节约了时间,又消除了老师的主观性,不在总是点到相同的同学,对于学生来说也是公平的。具有较为广泛的实用性。1.2 课题的要求1.2.1 输入输出的要求(1)程序运行后应首先输出个主菜单,并让用户自行选择机器中的EXCeI的表格,然后进行相应的操作。(2)选中的名单会显示在窗口上,用于点名。(3)用户每次更新输入成绩后,应能立即将分数和姓名写入EXCel的表格中。(4)运行结果的输出应整齐、清晰,排列在Sheet页上。1.2.2 程序实现的功能要求(1)利用外部的jar包,通过开源项目POl或jxl处理EXCeI文件;(2)选择需要被读取的Excel文件;(3)从EXCeI读取学生的名单信息;(4)产生一个随机数抽取要需要回答问题的学生;(5)写入被抽到学生的分数;第2章概要设计2.1 整个程序的模块结构及流程随机点名器d 信息写入模块-I.随机抽取学生模块-T-读取名单信息模块_!_文件选择模块主界面模块图2-1程序结构模块图2.2 使用外部包的确定由于JDK提供的类库没有较好的对EXCel文件读写功能,所以需要通过开源项目Excel提供的POI.jar包。尽管jxl.jar包较为简单和网上提供的案例较多,但是POI的功能更为强大和全面,开源项目Excel提供的POI.jar包提供了对EXCel文件操作的各种功能,能简单的对EXCeI文件进行读写,对单元格的各种处理方法,满足了对程序的需求。并且可以跨平台使用,具有良好的兼容性。2.3主界面模块说明主界面提供程序运行时出现的窗口界面,此界面必须要实现各种功能的组件。具体而言,它需要有界面,打开文件的菜单项,关闭程序的菜单项,帮助按钮的菜单选项。还需要考虑好什么样的布局方式和界面美观性,使其看起来更美观,简洁。2. 4文件选择模块说明文件选择提供机器中供用户选择的文件,这个模块需要弹出一个文件选择对话框,可以让用户自行选择需要的EXCeI表格,是程序更加具有实用性。2.5读取名单信息模块说明经过文件选择模块选择文件后,对这个EXCel文件进行读取操作,把读取到的内容显示在主界面上。需要考虑好是要用什么方法显示在主界面上,使得看起来简洁、明了。2. 6随机抽取学生模块说明这个模块在名单选定后,需要产生一个随机数来抽取到其中一个学生,并将该学生的信息打印在界面上。3. 7信息写入模块说明这个模块是需要弹出一个输入文本对话框,要求输入分数后还得写入Excel文件,需要写入学生姓名、回答问题时间、得到的分数以及写入的数据格式,这些都要考虑。还有因为是要输入分数,所以如果输入的不是一个合法的分数就得弹出一个提示错误的对话框。第3章程序功能的实现3.1主界面模块的实现3.1.1 菜单栏的实现创建出菜单栏,在栏上放文件和帮助菜单,文件里放打开和退出菜单项,帮助里放帮助菜单栏,为各个按钮设置监听。以上过程的主要实现代码如下:publicclassMVFrameextendsJFramestaticJTextAreajta;staticStringpath;staticJButtonjb;JPaneIjpJPanel是一般轻量级容器MyFrame(Stringstr)super(str);添加菜单按钮JMenuBarjmb=newJMenuBar();JMenujmfile=newJMenU("文件");JMenujmhelp=newJMenU("帮助");jmb.add(jmfile);jmb.add(jmhelp);JMenuItemjmopen=newJMenultem("Tff");JMenuItemjmexit=newJMenUItem("退出");JMenuItemjmaid=newJMenultem("");jmfile.add(jmopen);jmfile.add(jmexit);jmhelp.add(jmaid);add(jmbznewBorderLayout().VORTH);添力口button按钮添加菜单监听器jmopen.addActionListener(newMyMenuMonitor(I);jme×it.addActionListener(newMyMenuMonitorO);jmaid.addActionListener(newMyMenuMonitorO);添加按钮监听器setSize(600z279);SetLocationReIativeTofnuII);SetVisibIeftrue);)3.1.2 开始点名按钮的实现jb=newJButton("开始点名”);jta=newJTextArea(IOzSO);添加一个面板jp=newJPanel();add(jpznewBorderLavoutO.CEVE?);jp.add(t0);3. 2文件选择模块的实现创建设置好文件对话框,显示文件对话框,选择EXCeI文件,以此来获取打开文件的对象引用。以上过程主要实现代码如下:publicStringgetPath()JFiIeChooserjfc=newJFiIeChooserO;jfc.setFileSelectionMode(JFileChooser.F/Z.ES_A/VD_D/REC7O/?/fS);/i5fiJFiIeChooser,以允许用户只选择文件、只选择目录,或者可选择文件和目录。Stringpath=null;指示显示文件和目录intVal=jfc.showOpenDialog(jfc);弹出一个"OpenFile"文件选择器对话框Cif(Val=lheChooser.APPROVE_OPTION)/选择确认(yes、ok)后返回该值。path=jfc.getSelectedFile().getAbsolutePath();返回选中的文件。返回此抽象路径名的绝对路径名字符串。)returnpath;)3.3读取名单信息模块的实现此模块主要是读取Excel文件上所以学生的信息,并且以读取到的学生内容。得到Excel文件上的信息需要得到先前被选中文件的工作簿对象,再得到该工作簿的第一个表格对象,对表格进行遍历,这样就将单元格上内容数据一个一个的读取出来了。把这些数据内容用append方法将内容打印在界面中间的JTextArea上。以上过程主要实现代码如下:classMyMenuMonitorimplementsActionListenerHSSFCeIIhssfcell;publicvoidactionPerformed(ActionEvente)Stringstr=e.getActionCommand();if(str.equals(“打开”)MyFrame.pfh=newOpen().getPath();trFiIeInputStreamfi=newFilelnputStream(MyFrame.pth);POIFSFiIeSystemps=newPOIFSFileSystem(fi);Workbookwb=newHSSFWorkbook(ps);Sheeths=wb.getSheetAt(O);if(hs=null)return;)for(intrownum=O;rownum<=hs.getLastRowNum();rownum+)HSSFRowhssfrow=(HSSFRow)hs.getRow(rownum);if(hssfrow=null)continue;)MyFramet.append("n");for(intcellnum=O;cellnum<=hssfrow.getLastCelINum();cellnum+)hssfcell=hssfrow.getCell(cellnum);if(hssfcell=null)continue;)MyFramet.append(hssfcell.toString()+"");/System.out.print(""+hssfcell+",);/MyFramejta.hssfcell;)System.ot.println("");)3. 4随机抽取学生模块的实现点击开始点名按钮后程序随机产生一个随机数,用这个随机数来读取Excel中的某一个学生,将选取到的学生信息打印在界面中间的JTeXtArea上,并覆盖之前的学生名单。要修改EXCeI文件需要利用已创建的Excel工作薄创建新的可写入的EXCel工作薄。以上过程主要实现代码如下:publicclassOpenstaticStringstr;publicStringgetMessage(Stringpath)throwsExceptionFiIeInputStreamfi=newFilelnputStream(path);POIFSFiIeSystemps=newPOIFSFileSystem(fi);Workbookwb=newHSSFWorkbook(ps);ExceIExtractorex=newExcelExtractor(HSSFWorkbook)wb);Sheeths=wb.getSheetAt(O);introwNum=(int)(Math.rncon()*(hs.getLastRowNum()+1);Rowrow=hs.getRow(rowNum);intCellNUm=row.getLastCellNum();Cellname=row.getCell(0);str=name.getStringCellValue();name.setCellType(CellCELLTyPf_S7R/NG);类型转换Cellsex=row.getCell(l);/获取第2个单元格,sex.setCellType(CellCELLTyPE_S7R/NG);类型转换Cellcoll=row.getCell(2);/获取第3个单元格,COll.setCellType(Cell.CE_7YPU57WNG);类型转换return("随机抽取到:"+name+,+sex+,+coll+,);)4. 5信息写入模块的实现点击开始点名,弹出对话框,输入分数,点击对话框确定时,学生分数被写入Excel的一个sheet的某一单元格,并且日期、被写入学生信息都被写入单元格。把创建出的标签添加进单元格就实现了写入操作。如果点击取消,那么就不写入信息。4.1.1 分数输入框的实现过程主要实现代码如下:classMyButtonMonitorimplementsActionListenerpublicvoidactionPerformed(ActionEvente)throwsNullPointerExceptionStringgetMessage=newOpen().getMessage(MyFrame.pth);MyFrameto.setText(getMessage);Stringss=JOPtiOnPanes力。WMPrtDjaog("请输入成绩:");)4.1.2 日期写入的实现过程主要实现代码如下:classMyButtonMonitorimplementsActionListenerpublicvoidactionPerformed(ActionEvente)throwsNullPointerExceptionCreationHeIperCreationHeIper=wb.getCreationHelper();CeIIStyIecellstyle=wb.createCellStyle();cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat(,yyy-mm-ddhh:mm:ss");.cell2.setCellValue(newDate();cell2.setCellStyle(cellStyle);)4.1.3 学生姓名写入的实现过程主要实现代码如下:classMyButtonMonitorimplementsActionListenerpublicvoidactionPerformed(ActionEvente)throwsNullPointerExceptionFiIeInputStreamfi=newFiIemPUtStream(MyFrame.path);POIFSFiIeSystemps=newPOIFSFileSystem(fi);Workbookwb=newHSSFWorkbook(ps);Sheeths2=wb.getSheetAt(l);introwNum=hs2.getLastRowNum()+1;Rowrowl=hs2.createRow(rowNum);Cellcell=rowl.createCell(0);Cellcelll=rowl.createCell(l);Cellcell2=rowl.createCell(2);cell.setCellValue(newOpen().str);celll.setCellValue(ss);FiIeOutputStreamfileut=newFileOutputStream(MyFrame.path);wb.write(fileut);fileut.close();)3. 5.4显示输入错误对话框的实现过程主要实现代码如下:classMyButtonMonitorimplementsActionListenerpublicvoidactionPerformed(ActionEvente)throwsNullPointerExceptionelseJoPtiOnPane.5howMessgeDjog(null,"输入必须是O到IOo之间的整数,“提示”,JoPtionPane.ERR。/LMESSAG£);第4章调试及发现问题的解决虽然在程序的编写过程中遇到了很多问题,但是通过上网查阅相关资料,与其它同学讨论,询问指导老师等方式,最终都一一解决了,程序实现及调试过程中遇到的主要问题及解决方法如下。1 .如何选择正确的POI.jar包,如何去熟悉该包里的包装的类、方法、变量。从网上下的jar包使用,由于是开源的项目,所以APl参考文档也全是英文的,为了熟悉该包就在网上寻找使用该包的典型例子,比如:读取文件、创建写入文件、更新Excel、设置日期格式等例子。边看APl边翻译学习,这样马上就熟悉起这个jar包。2 .为什么一直在打印的时候总是会将sheet2页也打印出来。解决方法:一开始出现这种错误是因为POl中提取文档的方法,虽然方便,但是会将整个EXCel表格都打印了出来,不能只读取Sheetl页。后来舍弃了这种方法,采用了对表格遍历的方法,虽然较为麻烦,但是成功解决了问题。第5章程序测试及分析运行程序,首先显示程序主菜单,程序初始运行效果如下图5-1所示图5-1主界面打开文件进行文件选择文件对话框如下图5-2所示:图5-2文件选择对话框得到文件,将文件打印打印在界面中间效果如下图5-3所示:图5-3读取名单信息对话框点击开始点名,进行随机点名效果如下图5-4所示:图5-4随机抽取对话框提示输入学生分数效果如下图5-5所示:图5-5成绩输入对话框学生信息写入sheet2中效果如下图5-6所示:11姓名分数提问时间DEABCJrWI三3XS三SS-Micro.34567891011M<毛屹嘉Ioo陈智2015-07-0421:36:09张陈王方祠路诗锦杰尧云杰5498r5F6F9F92015-07-0421:36:192015-07-0421:36:242015-07-0421:36:282015-07-0421:36:33>xSheetiSheet2jGheet3J互/W«I川平均值:42189.90013计数:6求和:84379.80026国'回回100%图5-6写入结果错误提示对话框如下图5-7所示:输入必须是峰MOO之间的整数确定图5-7错误提示对话框第6章总结通过一周的课程设计,终于独立写出了几百行代码的程序,还学会了自己使用开源的包。更重要的是通过这次实践,加深了我对java相关知识的理解。总结起来,主要有以下几点体会:1、要想学好java语言,基础一定要扎实,英语也要好。Java是高级编程语言,通过这次课程设计,由于所选课题的原因,需要导入外部的包,全是英文,认识到英语的重要性,在程序编写的过程中,各种内容的实现都是有基础构成的,所以基础知识非常重要。2、程序的编写过程是一个循环渐进,不断完善直至完美的过程。编写程序,特别是编写功能庞大,且逻辑结构较为复杂的程序,不要妄想一口气将所有的功能都非常完美地实现。一般是先将整个程序的框架先搭建起来,再尝试着按预定的想法,逐步的实现所有的方法。3通过本次课程设计让我进一步熟悉了Java的图形界面编程,对一些常用容器和组件的构造方法,常用方法,以及对怎样做事件处理更加熟悉了。并且基本掌握了通过POI读写Excel的方法。感谢在此过程中帮助过我的指导老师和各位同学!参考文献1宋波,李晋,李妙妍,张悦.Java程序设计M.北京:清华大学出版社,2011.

    注意事项

    本文(Java课程设计--随机点名器.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开