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

上传人:李司机 文档编号:6722168 上传时间:2024-01-10 格式:DOCX 页数:15 大小:132.26KB
返回 下载 相关 举报
Java课程设计--随机点名器.docx_第1页
第1页 / 共15页
Java课程设计--随机点名器.docx_第2页
第2页 / 共15页
Java课程设计--随机点名器.docx_第3页
第3页 / 共15页
Java课程设计--随机点名器.docx_第4页
第4页 / 共15页
Java课程设计--随机点名器.docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《Java课程设计--随机点名器.docx》由会员分享,可在线阅读,更多相关《Java课程设计--随机点名器.docx(15页珍藏版)》请在三一办公上搜索。

1、第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日期写入的

2、实现73.5.3学生姓名写入的实现83.5.4显示输入错误对话框的实现8第4章调试及发现问题的解决9第5章程序测试及分析10第6章总结13参考文献14第1章课题概述本次java课程设计的题目是利用开源Pol项目从EXCel文件的某个Sheet中读出班级所有同学的名单,然后通过产生一个随机数选中其中一个同学回答问题一个随机数选中其中一个同学回答问题,然后输入回答问题的得分,并将该得分存入EXCeI表的另外一个Sheet中。1.1 课题的目的在高等院校里,传统的学生考勤以及平时在课堂上的表现,主要是依靠老师在课堂上点名或学生会抽查点名制度,还有上课提问等。学生人数多、考勤不全面、数据不准确、老师难

3、以记住所有人,并且记录起来又非常繁琐。所以随机点明器就方便了这种情况。随机点名器既方便了老师上课点名的烦恼,节约了时间,又消除了老师的主观性,不在总是点到相同的同学,对于学生来说也是公平的。具有较为广泛的实用性。1.2 课题的要求1.2.1 输入输出的要求(1)程序运行后应首先输出个主菜单,并让用户自行选择机器中的EXCeI的表格,然后进行相应的操作。(2)选中的名单会显示在窗口上,用于点名。(3)用户每次更新输入成绩后,应能立即将分数和姓名写入EXCel的表格中。(4)运行结果的输出应整齐、清晰,排列在Sheet页上。1.2.2 程序实现的功能要求(1)利用外部的jar包,通过开源项目POl

4、或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包

5、提供了对EXCel文件操作的各种功能,能简单的对EXCeI文件进行读写,对单元格的各种处理方法,满足了对程序的需求。并且可以跨平台使用,具有良好的兼容性。2.3主界面模块说明主界面提供程序运行时出现的窗口界面,此界面必须要实现各种功能的组件。具体而言,它需要有界面,打开文件的菜单项,关闭程序的菜单项,帮助按钮的菜单选项。还需要考虑好什么样的布局方式和界面美观性,使其看起来更美观,简洁。2. 4文件选择模块说明文件选择提供机器中供用户选择的文件,这个模块需要弹出一个文件选择对话框,可以让用户自行选择需要的EXCeI表格,是程序更加具有实用性。2.5读取名单信息模块说明经过文件选择模块选择文件后,

6、对这个EXCel文件进行读取操作,把读取到的内容显示在主界面上。需要考虑好是要用什么方法显示在主界面上,使得看起来简洁、明了。2. 6随机抽取学生模块说明这个模块在名单选定后,需要产生一个随机数来抽取到其中一个学生,并将该学生的信息打印在界面上。3. 7信息写入模块说明这个模块是需要弹出一个输入文本对话框,要求输入分数后还得写入Excel文件,需要写入学生姓名、回答问题时间、得到的分数以及写入的数据格式,这些都要考虑。还有因为是要输入分数,所以如果输入的不是一个合法的分数就得弹出一个提示错误的对话框。第3章程序功能的实现3.1主界面模块的实现3.1.1 菜单栏的实现创建出菜单栏,在栏上放文件和

7、帮助菜单,文件里放打开和退出菜单项,帮助里放帮助菜单栏,为各个按钮设置监听。以上过程的主要实现代码如下:publicclassMVFrameextendsJFramestaticJTextAreajta;staticStringpath;staticJButtonjb;JPaneIjpJPanel是一般轻量级容器MyFrame(Stringstr)super(str);添加菜单按钮JMenuBarjmb=newJMenuBar();JMenujmfile=newJMenU(文件);JMenujmhelp=newJMenU(帮助);jmb.add(jmfile);jmb.add(jmhelp);

8、JMenuItemjmopen=newJMenultem(Tff);JMenuItemjmexit=newJMenUItem(退出);JMenuItemjmaid=newJMenultem();jmfile.add(jmopen);jmfile.add(jmexit);jmhelp.add(jmaid);add(jmbznewBorderLayout().VORTH);添力口button按钮添加菜单监听器jmopen.addActionListener(newMyMenuMonitor(I);jmeit.addActionListener(newMyMenuMonitorO);jmaid.ad

9、dActionListener(newMyMenuMonitorO);添加按钮监听器setSize(600z279);SetLocationReIativeTofnuII);SetVisibIeftrue);)3.1.2 开始点名按钮的实现jb=newJButton(开始点名”);jta=newJTextArea(IOzSO);添加一个面板jp=newJPanel();add(jpznewBorderLavoutO.CEVE?);jp.add(t0);3. 2文件选择模块的实现创建设置好文件对话框,显示文件对话框,选择EXCeI文件,以此来获取打开文件的对象引用。以上过程主要实现代码如下:pu

10、blicStringgetPath()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.

11、getSelectedFile().getAbsolutePath();返回选中的文件。返回此抽象路径名的绝对路径名字符串。)returnpath;)3.3读取名单信息模块的实现此模块主要是读取Excel文件上所以学生的信息,并且以读取到的学生内容。得到Excel文件上的信息需要得到先前被选中文件的工作簿对象,再得到该工作簿的第一个表格对象,对表格进行遍历,这样就将单元格上内容数据一个一个的读取出来了。把这些数据内容用append方法将内容打印在界面中间的JTextArea上。以上过程主要实现代码如下:classMyMenuMonitorimplementsActionListenerHSSF

12、CeIIhssfcell;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

13、;)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()+);/Sy

14、stem.out.print(+hssfcell+,);/MyFramejta.hssfcell;)System.ot.println();)3. 4随机抽取学生模块的实现点击开始点名按钮后程序随机产生一个随机数,用这个随机数来读取Excel中的某一个学生,将选取到的学生信息打印在界面中间的JTeXtArea上,并覆盖之前的学生名单。要修改EXCeI文件需要利用已创建的Excel工作薄创建新的可写入的EXCel工作薄。以上过程主要实现代码如下:publicclassOpenstaticStringstr;publicStringgetMessage(Stringpath)throwsExcep

15、tionFiIeInputStreamfi=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.getLastCellN

16、um();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信息写入模块的实现点击

17、开始点名,弹出对话框,输入分数,点击对话框确定时,学生分数被写入Excel的一个sheet的某一单元格,并且日期、被写入学生信息都被写入单元格。把创建出的标签添加进单元格就实现了写入操作。如果点击取消,那么就不写入信息。4.1.1 分数输入框的实现过程主要实现代码如下:classMyButtonMonitorimplementsActionListenerpublicvoidactionPerformed(ActionEvente)throwsNullPointerExceptionStringgetMessage=newOpen().getMessage(MyFrame.pth);MyFra

18、meto.setText(getMessage);Stringss=JOPtiOnPanes力。WMPrtDjaog(请输入成绩:);)4.1.2 日期写入的实现过程主要实现代码如下:classMyButtonMonitorimplementsActionListenerpublicvoidactionPerformed(ActionEvente)throwsNullPointerExceptionCreationHeIperCreationHeIper=wb.getCreationHelper();CeIIStyIecellstyle=wb.createCellStyle();cellSty

19、le.setDataFormat(creationHelper.createDataFormat().getFormat(,yyy-mm-ddhh:mm:ss);.cell2.setCellValue(newDate();cell2.setCellStyle(cellStyle);)4.1.3 学生姓名写入的实现过程主要实现代码如下:classMyButtonMonitorimplementsActionListenerpublicvoidactionPerformed(ActionEvente)throwsNullPointerExceptionFiIeInputStreamfi=newFi

20、IemPUtStream(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()

21、.str);celll.setCellValue(ss);FiIeOutputStreamfileut=newFileOutputStream(MyFrame.path);wb.write(fileut);fileut.close();)3. 5.4显示输入错误对话框的实现过程主要实现代码如下:classMyButtonMonitorimplementsActionListenerpublicvoidactionPerformed(ActionEvente)throwsNullPointerExceptionelseJoPtiOnPane.5howMessgeDjog(null,输入必须是O到

22、IOo之间的整数,“提示”,JoPtionPane.ERR。/LMESSAG);第4章调试及发现问题的解决虽然在程序的编写过程中遇到了很多问题,但是通过上网查阅相关资料,与其它同学讨论,询问指导老师等方式,最终都一一解决了,程序实现及调试过程中遇到的主要问题及解决方法如下。1 .如何选择正确的POI.jar包,如何去熟悉该包里的包装的类、方法、变量。从网上下的jar包使用,由于是开源的项目,所以APl参考文档也全是英文的,为了熟悉该包就在网上寻找使用该包的典型例子,比如:读取文件、创建写入文件、更新Excel、设置日期格式等例子。边看APl边翻译学习,这样马上就熟悉起这个jar包。2 .为什么

23、一直在打印的时候总是会将sheet2页也打印出来。解决方法:一开始出现这种错误是因为POl中提取文档的方法,虽然方便,但是会将整个EXCel表格都打印了出来,不能只读取Sheetl页。后来舍弃了这种方法,采用了对表格遍历的方法,虽然较为麻烦,但是成功解决了问题。第5章程序测试及分析运行程序,首先显示程序主菜单,程序初始运行效果如下图5-1所示图5-1主界面打开文件进行文件选择文件对话框如下图5-2所示:图5-2文件选择对话框得到文件,将文件打印打印在界面中间效果如下图5-3所示:图5-3读取名单信息对话框点击开始点名,进行随机点名效果如下图5-4所示:图5-4随机抽取对话框提示输入学生分数效果

24、如下图5-5所示:图5-5成绩输入对话框学生信息写入sheet2中效果如下图5-6所示:11姓名分数提问时间DEABCJrWI三3XS三SS-Micro.34567891011MxSheetiSheet2jGheet3J互/WI川平均值:42189.90013计数:6求和:84379.80026国回回100%图5-6写入结果错误提示对话框如下图5-7所示:输入必须是峰MOO之间的整数确定图5-7错误提示对话框第6章总结通过一周的课程设计,终于独立写出了几百行代码的程序,还学会了自己使用开源的包。更重要的是通过这次实践,加深了我对java相关知识的理解。总结起来,主要有以下几点体会:1、要想学好

25、java语言,基础一定要扎实,英语也要好。Java是高级编程语言,通过这次课程设计,由于所选课题的原因,需要导入外部的包,全是英文,认识到英语的重要性,在程序编写的过程中,各种内容的实现都是有基础构成的,所以基础知识非常重要。2、程序的编写过程是一个循环渐进,不断完善直至完美的过程。编写程序,特别是编写功能庞大,且逻辑结构较为复杂的程序,不要妄想一口气将所有的功能都非常完美地实现。一般是先将整个程序的框架先搭建起来,再尝试着按预定的想法,逐步的实现所有的方法。3通过本次课程设计让我进一步熟悉了Java的图形界面编程,对一些常用容器和组件的构造方法,常用方法,以及对怎样做事件处理更加熟悉了。并且基本掌握了通过POI读写Excel的方法。感谢在此过程中帮助过我的指导老师和各位同学!参考文献1宋波,李晋,李妙妍,张悦.Java程序设计M.北京:清华大学出版社,2011.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号