《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.getLastCellNum();Cellname=row.getCell(0);str=