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

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

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

1、第1章课题概述11.1 课程设计目的11.2 课程设计要求1第2章概要设计22.1 程序模块结构图22.2 使用外部包的确定22.3 主界面模块说明32.4 读取学生信息模块说明32.5 随机抽取学生模块说明3第3章程序功能的实现43.1 主界面模块的实现43.1.1 菜单栏的实现43.1.2 1.2点名按钮的实现43.1.3 窗口的大小和位置43.2 读取学生信息模块的实现53.2.1选择文件对话框的实现53.2.2写入带滚动条表格的实现53.3随机抽取学生模块的实现63.3.1输入信息对话框的实现63.3.2显示输入错误对话框的实现7第4章调试及发现问题的解决9第5章程序测试及分析10第6

2、章总结14参考文献15第1章课题概述1.1课程设计目的课程设计题目:随机点名器程序实现的要点:通过开源项目jExcel或POl提供的Jar包,实现EXCel文件的读写。要求从EXCeI文件的某个Sheet中读出班级所有同学的名单,然后通过产生一个随机数选中其中一个同学回答问题,然后输入回答问题的得分,并将该得分存入EXCel表的另外一个Sheet中。1.2课程设计要求程序要求实现的功能有:(1)选择需要被读取的EXCeI文件;(2)从EXCel读取学生的名单信息;(3)产生一个随机数读取要输入分数的学生;(4)写入被抽到学生的分数;第2章概要设计2.1程序模块结构图随机点名器随机抽取学生模块读

3、取学生信息模块主界面模块图2-1程序结构模块图2.2使用外部包的确定由于JDK提供的类库没有较好的对EXCeI文件读写功能,所以需要通过开源项目EXCeI提供的Pol包。它能方便对EXCel读写,能修饰单元格属性等功能,能满足我当前的需求。经过网上查询使用方法,在随机点名器里需要使用的地方基本可以正确使用。2 .3主界面模块说明主界面提供程序运行时出现的界面,此界面必须要有我想要实现功能的组件。具体而言,它需要有菜单,打开文件的菜单项,关闭程序的菜单项。由于初次设计程序,布局方式和界面美观性考虑的较少。3 .4读取学生信息模块说明这个模块需要弹出一个文件选择对话框,在对话框中选择我们需要的Ex

4、cel文件。然后对这个EXCel文件进行读取操作,把读取到的内容显示在主界面上。还需要考虑好是以怎样的方式显示在主界面上,使得看起来简洁清楚。2. 5随机抽取学生模块说明这个模块是需要弹出一个输入文本对话框,并且需要产生一个随机数来抽取到其中一个学生。收取到学生并且输入分数后还得写入EXCel文件。还有因为是要输入分数,所以如果输入的不是一个合法的分数就得弹出一个提示错误的对话框。第3章程序功能的实现3.1主界面模块的实现3.1.1 菜单栏的实现创建出菜单栏,在栏上放菜单,菜单里放打开和退出菜单项。分别为各打开菜单项添加监听。以上过程的主要实现代码如下:JMenuBarjmb=newJMenU

5、Bar();JMenujm=newJMenU(菜单”);jmb.add(jm);JMenuItemjml=newJMenU工tem(打开);JMenuItemjm2=newJMenU工tem(退出”);jm.add(jml);jm.add(jm2);add(jmbnewBorderLayoutO.NORTH):jb=newJBUtton(开始点名”);jp=newJPanel();jml.addActionListener(newMyMenuMonitorO);jm2.addActionListener(newMyMenuMonitorO);jb.addActionListener(newMy

6、BUttOnMOnitOP();3.1.2 点名按钮的实现设置个按钮,这是个重要的按钮,点击它就可以随机抽取学生,所以为它加上监听,监听事件并处理类。放按钮在拆分窗格的下部。以上过程主要实现代码如下:jb=newJBUttOn(“开始点名”);jb.addActionListener(newMyButtonMonitorO);setVisible(false);Stringarr=getArr(ex.getText();JTablet=newJTable(arr,title);js=newJScrollPane(t);jp=new3Panel();add(js,BorderLayout.CEN

7、TER);add(jb,BorderLayout.SOUTH);setVisible(true);3.1.3 窗口的大小和位置将创建好的窗口设置大小,位置和是否可见。以上过程主要实现代码如下:setSize(600,650);SetDefaultcioseOperation(JFrame.EXIT_0N_CL0SE);SetVisible(true);SetLOCatiOnRelatiVeTo(null);3. 2读取学生信息模块的实现3. 2.1选择文件对话框的实现创建设置好文件对话框,显示文件对话框,选择EXCel文件,以此来获取打开文件的对象引用。以上过程主要实现代码如下:if(Str.

8、equals(“打开“)path=newOpen().getPath();)publicStringgetPath()JFileChooserjfc=newJFileChooser(D:/);jfc.setFileSelectionMode(3FileChooser.FILfS-DLDIRFCORIES);Stringpath=null;intVal=jfc.showOpenDialog(jfc);if(Val=JFileChooser.APPROVE_OPTION)path=jfc.getSelectedFile().getAbsolutePath();)returnpath;)3. 2.2

9、写入带滚动条表格的实现此模块主要是读取EXCeI文件上所以学生的信息,并且以读取到的学生内容作为JTabIe表格的内容创建出带滚动条的表格。得到Excel文件上的信息需要得到先前被选中文件的工作簿对象,再得到该工作簿的第一个表格对象,就可以得到该表格上的内容一共有多少行,可以得到任意的单元格,从单元格上就可以得到内容数据。把这些数据内容放入二维的字符串数组str,用Str来作为表格内容。把带滚动条表格添加在拆分窗格的上部。以上过程主要实现代码如下:classMyFrameextendsJFrame/staticJTextAreajta;privatestaticfinallongSeriaLV

10、ersionUID=-6827523187297569439L;static3TabletabLe;staticStringpath;JButtonjb;JPaneljp;Stringtitle=“姓名”,“性别二”学号、“班级”;Stringtitlel=vv,性VV别“,“学V号Jvvvv班级”;JScrollPanejs;staticStringstr;publicStringgetClassNum(Stringpath)throwsExceptionFileInputStreamfi=newFileInputStream(path);POIFSFileSystemps=newPOIFS

11、FileSystem(fi);WorkbookWb=newHSSFWorkbook(ps);ExcelExtractorex=newExcelEtractor(HSSFWorkbook)wb);Sheeths=wb.getSheetAt(0);introwNum=(int)(Math.random()*(hs.getLastRowNum()+1);Rowrow=hs.getRow(rowNum);Cellname=row.getCell(0);str=name.getStringCellValue();name.setCellType(Cell.CELL_TYPE_STRING);Cellse

12、x=row.getCell(l);sex.SetCellType(Cell.CELL_TYPE_STRI/VG);Cellcoll=row.getCell(2);coll.setCellType(Cell.CELL_TYPE_STRING);CellClassNum=row.getCell(3);coll.setCellType(Cell.CELL_TYPE_STRING);return(“随机抽取到:+name+”,+sex+*,+coll+classNum);publicStringgetArr(Strings)Stringstr=newString484;Stringt=s.split(

13、,n);for(inti=l;it.length;i+)Stringt2=ti.split(f);for(intj=0jjt2.length;j+)stri-lj=t2j;)returnstr;3. 3随机抽取学生模块的实现3. 3.1输入信息对话框的实现点击随机点名按钮后弹出输入信息对话框,在弹出时产生了一个随机数,用这个随机数来读取EXCel中的某一个学生,把此学生信息设置为框内显示文字。要修改EXCeI文件需要利用已创建的Excel工作薄创建新的可写入的Excel工作薄。点击对话框确定时,学生分数被写入EXCeI的一个Sheet的某一单元格,并且将学生姓名一起都被写入单元格。如果点名成功

14、后不输入任何分数关闭,则不写入任何数据。以上过程主要实现代码如下:if(ss!=null)ss=ss.trim();tryintscore=Integer.parselnt(ss);if(score=0)FileInputStreamfi=neMFileInputStream(pth);POIFSFileSystemps=newPOIFSFileSystem(fi);WorkbookWb=newHSSFWorkbook(ps);Sheeths2=wb.getSheetAt(1);introwNum=hs2.getLastRowNum()+1;Rowrowl=hs2.createRow(rowN

15、um);Cellcell0=rowl.createCell(0);Cellcelll=rowl.CreateCell(I);cell0.SetCellValue(Open.str);celll.SetCellValue(ss);/将成绩写入指定文件中去FileOutputStreamfileut=newFileOutputStream(pth);wb.write(fileut);fileOut.close();3. 3.2显示输入错误对话框的实现把输入的字符串转换为int数据,判断整数在0到100之间就可以正常写入,如果不在这个范围内的整数就弹出错误信息对话框。但如果输入的字符串无法转换成in

16、t型数据就会产生NuniberFormatException异常,可以捕捉到这个异常,然后让程序执行弹出一个错误信息对话框就可以了。以上过程主要实现代码如下:if(ss!=null)ss=ss.trim();tryintscore=Integer.parselnt(ss);if(score=0)elseJOPtiOnPane.shoWMeSSageDiaLog(nullJ输入必须是。到100之间的整数二“提示,JOptionPane.ERR0R_MESSAGE);catch(NumberFormatExceptionf)JOptionPane.ShowMessageDiaLog(null,输入

17、必须是0到100之间的整数“J提示:DOptionPane.ERROR_MESSAGEy);)第4章调试及发现问题的解决程序在编写以及调试过程中遇到了一些问题,现将这些问题及其解决方法列举如下:(1)如何选择正确的POLjar包,如何去熟悉该包里的包装的类、方法、变量。一开始没从网上下的jar包使用,读文件中的中文字符总有问题,会出现乱码。后来使用网上下载的jar包,才能正确操作。要熟悉该包就在网上寻找使用该包的典型例子,比如:读取文件、创建写入文件、更新Excel、等例子。边看APl边学习,这样马上就熟悉起这个jar包。(2)将名单现实的时候不能显示表格而是将数据直接堆积在显示框内。第一开始

18、用的是TextArea,经过多次尝试后无法将表格放置入TextArea,所以就直接将数据放入,答辩时老师询问为何不用表格的形式来显示数据,我询问老师后,老师说不要用TeXtArea,将TeXtArea更改为JTabIe,经过我的更改和同学的帮助,成功将表格打印出来。(3)将表格成功打印后,无法将数据整齐的放入表格。一开始将数据遍历后放入JTable中,格式不整齐,显得不美观,后经询问张扬松同学,张杨松教我可以将遍历的数据存入到一个二维数组里,再将二维数组的数据放入到表格里时可以正确放入。第5章程序测试及分析运行程序,显示程序主界面,程序运行结果如图5T所示:图5-1程序主界面点击菜单下的打开,

19、显示文件选择界面,程序运行结果如图5-2所示:圉打开IbqhI后本地睢盘(D:)查找(1): 360DownloadsE3 360安全浏览器不我口 BaiduYunDownIoad口 DEJEA-PCe FavoriteVideos GouWoGames4 IIll文件名做):文件类型0:口 javaa KwDownIoad口 Iol口 Ldashi2口 MyDrivers口 Program Files (x86)fflgs QLDownloa( 口 QQMusicCa 口 SHDownloa( 口 Tddownlo口 WarCraft3 口 WDJDownIo斫有文件打开取消图5-2文件选择

20、界面选择文件,将所选文件打印在主界面上,程序运行结果如图5-3所示:j随机点名器菜单姓名性别学号班级王诗云141003330201软件1412班徐榕141003330202软件1412班周悦女141003330203软件1412班陈曦141003330204软件1412班徐琴141003330205软件1412班余玲141003330206软件1412妍庄振娴141003330207软件1412班许承欣141003330208软件1412妍付世雄141003330209软件1412班潘嘉炜141003330210软件1412妍陈思臣141003330211软件1412班张杨松141003330

21、212软件1412抗周梦帆里141003330213物件1412班赵营超W141003330214软件1412班却依飞141003330215软件1412班崔翔冲141003330216软件1412班王旻悦141003330217软件1412班郁恒伟141003330218软件1412班张祠杰141003330219软件1412妍谢俊毅141003330220软件1412班沈思程141003330221软件1412妍郭旺141003330222软件1412班韩靖威141003330223软件1412妍杜江龙141003330224软件1412班赵东141003330225软件1412抗毛蛇嘉男

22、141003330226软件1412班黄凌俊男141003330227软件1412班王明浩里141003330228软件1412班徐良男141003330229软件1412捱胡建松里141003330230软件1412班廖昌宇里141003330231软件1412班胡国龙男141003330232软件1412班蔡汝斌T1_里14100333023344彳CCCCCCCC4软件141缎HZM.AACYJr开蛤点名图5-3所选文件打印在主界面上进行点名,并显示成绩输入窗口,程序运行结果如图5-4所示:媾入图5-4点名结果及成绩输入器窗口将点名成绩及学生信息写入sheet2中,程序运行结果如图5-5

23、所示:(Dio TJmt对开6式双院单元3 翦贴板 GAQ 常方 名单廉容模式】M. ,n I回,区 插)弼公5级亩段视隹 浦GG(=国次文件字体谈.I回回凹 IiIElO A图5-5点名成绩及学生信息写入sheet2错误提示对话框,程序运行结果如图5-6所示:瞬HSHX输入必须是峰IIlOO之间的整数确定图5-6错误提示对话框第6章总结一周的课程设计过的很快,在临近结尾我顺利完成了程序和报告。尽管程序感觉有点简陋,但作为一个JaVa初学者,要求不能太高,得一步一步来。我从本次课程设计学到了不少东西。不管是做程序,还是做实验报告,都让我学到了以前所不会的东西。比如学到了对EXCel文件的读写,写报告的格式等。在本次设计程序的过程中,并不是一帆风顺的,特别是有一些错误ECIiPSe不会显示出来,又让我难以发现时,特别让人感觉烦躁。我是通过自己和同学共同仔细的、细心的尝试在感觉有错误的地方修改代码,最后程序得以运行。通过本次课程设计让我再一次熟悉了JaVa的图形界面编程,对一些常用容器和组件的构造方法,常用方法,以及对怎样做事件处理更加熟悉了。课程设计不仅让我付出了汗水与辛苦,也让我得到了收获的喜悦。参考文献LlJ宋波,李晋,李妙妍,张悦.Java程序设计M.北京:清华大学出版社,2011.

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号