




免费预览已结束,剩余14页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
随机点名器15目 录1 课程设计内容11.1 课程设计目的11.2 课程设计要求11.3 课程设计背景12 概要设计22.1程序模块结构图22.2 使用外部包的确定22.3 主界面模块说明22.4 读取学生信息模块说明22.5 随机抽取学生模块说明23 详细设计43.1 主界面模块的实现43.1.1 菜单栏模块43.1.2 拆分窗格模块53.1.3 欢迎标签模块63.1.4 点名按钮模块73.2 读取学生信息模块的实现83.2.1 选择文件对话框模块83.2.2 写入带滚动条表格模块93.3 随机抽取学生模块的实现113.3.1 输入信息对话框模块113.3.2 设置字体颜色模块123.3.3 显示输入错误对话框模块144 问题与解决15小 结16参考文献171 课程设计内容1.1 课程设计目的课程设计题目:随机点名器要求从Excel文件的某个Sheet中读出班级所有同学的名单,然后通过产生一个随机数选中其中一个同学回答问题一个随机数选中其中一个同学回答问题,然后输入回答问题的得分,并将该得分存入Excel表的另外一个Sheet中。1.2 课程设计要求程序要求实现的功能有:(1)选择需要被读取的Excel文件;(2)从Excel读取学生的名单信息;(3)产生一个随机数读取要输入分数的学生;(4)写入被抽到学生的分数;(5)可以对写入信息字体颜色的选择;1.3 课程设计背景在高等院校、职中专、大专学校里,传统的学生考勤以及平时在课堂上的表现,主要是依靠老师在课堂上点名或学生会抽查点名制度,还有上课提问等。学生人数多、考勤不全面、数据不准确、老师麻烦做记录。所以随机点明器就方便了这种情况。随机点名器对学生来说实现了公平性。对老师来说方便地记录了平时学生回答问题而得到的分数。具有一定的实现价值。学习了Java语言后多编写程序,不仅可以实现自己的特别需求,还可以巩固以及提高。在实践中理解面向对象语言的设计方式。2 概要设计2.1 程序模块结构图图2-1 程序结构模块图2.2 使用外部包的确定由于JDK提供的类库没有较好的对Excel文件读写功能,所以需要通过开源项目Excel提供的jxl.jar包。它能方便对Excel读写,能修饰单元格属性等功能,基本上能满足我的需求。还有很好的是它由纯Java写成的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。不过由于是开源项目,又好久没更新过了,所以经常在网上下的jar包会有小bug。通过老师的修改,基本没有什么大问题。2.3 主界面模块说明主界面提供程序运行时出现的界面,此界面必须要有我想要实现功能的组件。具体而言,它需要有菜单,打开文件的菜单项,关闭程序的菜单项,可以选择读入数据颜色的菜单,各个颜色用互斥的单选按钮来选择以及启动随机点名的按钮。还需要考虑好什么样的布局方式和界面美观性。2.4 读取学生信息模块说明这个模块需要弹出一个文件选择对话框,在对话框中选择我们需要的Excel文件。然后对这个Excel文件进行读取操作,把读取到的内容显示在主界面上。还需要考虑好是以怎样的方式显示在主界面上,使得看起来简洁清楚。2.5 随机抽取学生模块说明这个模块是需要弹出一个输入文本对话框,并且需要产生一个随机数来抽取到其中一个学生。收取到学生并且输入分数后还得写入Excel文件,需要写入学生信息、日期、得到的分数以及写入的数据格式,这些都要考虑。还有因为是要输入分数,所以如果输入的不是一个合法的分数就得弹出一个提示错误的对话框。3 详细设计3.1 主界面模块的实现3.1.1 菜单栏的实现创建出菜单栏,在栏上放文件和设置菜单,文件里放打开和关闭菜单项,创建菜单color,并且放上互斥的各个颜色单选按钮,把color作为子菜单放入设置,形成组合菜单。分别为颜色按钮,各打开菜单项添加监听,按钮监听ColorXls事件处理类,打开监听ReadXls事件处理类。以上过程的主要实现代码如下:Class MyFrame extends JFramemenuBar = new JMenuBar(); /设置菜单fileMenu = new JMenu(文件);setMenu = new JMenu(设置);color = new JMenu(写入字体颜色); /带单选按钮的菜单blackItem = new JRadioButtonMenuItem(黑色,true); blueItem = new JRadioButtonMenuItem(蓝色);ButtonGroup grp = new ButtonGroup();grp.add(blackItem);blackItem.addActionListener(new ColorXls(this);/颜色按钮被监听blueItem.addActionListener(new ColorXls(this);goldItem.addActionListener(new ColorXls(this);greenItem.addActionListener(new ColorXls(this);redItem.addActionListener(new ColorXls(this);openItem = new JMenuItem(打开);exitItem = new JMenuItem(退出);fileMenu.add(openItem); /组合菜单fileMenu.addSeparator();fileMenu.add(exitItem);menuBar.add(fileMenu);menuBar.add(setMenu);this.setJMenuBar(menuBar);openItem.addActionListener(new ReadXls(this);/打开菜单项被监听exitItem.addActionListener(new ReadXls(this);menuBar.add(setMenu);this.setJMenuBar(menuBar);菜单界面如下图3-2,图3-3所示:图3-1 菜单项1图3-2 菜单项23.1.2 拆分窗格的实现这里创建拆分窗格的最主要目的是替代了界面布局。创建出拆分窗格,并设置它为框架的中间容器,替代了面板的作用。以上过程主要实现代码如下:public MyFrame(String s)JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT);setContentPane(split);效果如下图3-4所示:图3-3 拆分窗格3.1.3 欢迎标签的实现为了美观性,添加了初始主界面的标签,创建出标签时设置了字体为华文彩云,内容是“欢迎使用”,加粗,80号字体大小,把它放在拆分窗格的上部。并设置拆分窗格的拆分线在Y轴430位置处。以上过程主要实现代码如下:public MyFrame(String s)Font font = new Font(华文彩云,Font.BOLD,80);JLabel lab = new JLabel(欢迎使用,SwingConstants.CENTER);lab.setFont(font);split.add(lab,JSplitPane.LEFT);split.setDividerLocation(430);3.1.4 点名按钮的实现设置个按钮,这是个重要的按钮,所以我设置鼠标箭头指到它时就变为手掌的样子,点击它就可以随机抽取学生,所以为它加上监听,监听ReadXls事件处理类。放按钮在拆分窗格的下部。以上过程主要实现代码如下:public MyFrame(String s)JButton ranBut = new JButton(随机点名);ranBut.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR );split.add(ranBut,JSplitPane.RIGHT);ranBut.addActionListener(new UpdateXls();程序初始运行效果如下图3-4所示图3-4 主界面3.2 读取学生信息模块的实现3.2.1 选择文件对话框的实现创建设置好文件对话框,显示文件对话框,选择Excel文件,以此来获取打开文件的对象引用。以上过程主要实现代码如下:class ReadXls implements ActionListenerPublic void actionPerformed(ActionEvent e)JFileChooser chooser= new JFileChooser();chooser.setCurrentDirectory(new File(.);int result = chooser.showOpenDialog(null);if(result = JFileChooser.APPROVE_OPTION) file = chooser.getSelectedFile();/ 获得被选中的文件文件对话框如下图3-5所示:图3-5 文件选择对话框3.2.2 写入带滚动条表格的实现此模块主要是读取Excel文件上所以学生的信息,并且以读取到的学生内容作为JTable表格的内容创建出带滚动条的表格。得到Excel文件上的信息需要得到先前被选中文件的工作簿对象,再得到该工作簿的第一个表格对象,就可以得到该表格上的内容一共有多少行,可以得到任意的单元格,从单元格上就可以得到内容数据。把这些数据内容放入二维的字符串数组d,用d来作为表格内容。把带滚动条表格添加在拆分窗格的上部,覆盖欢迎标签。以上过程主要实现代码如下:class ReadXls implements ActionListener JTable table; String d; /d为初始化表格的二维字符串数组 static File file; MyFrame f; ReadXls(MyFrame f) this.f=f; Public void actionPerformed(ActionEvent e)Workbook wb = null; try wb = Workbook.getWorkbook(file); /得到工作簿对象 Sheet sheet1 = wb.getSheet(0); int rows = sheet1.getRows(); d=new Stringrows-6; /为d创建第一维的大小/遍历行 for (int j=0;jrows-6;j+) Cell cells = sheet1.getRow(j+6); dj=new Stringcells.length-19; /为d创建第二维的大小/ 遍历单元格 for (int k=0;k(cells.length-19);k+) String cell = cellsk.getContents(); djk=new String(cell); /创建带滚动条的表格,放在框架中间 String columnNames= 序号 , 学号 , 姓名 , 专业 ; table =new JTable(d,columnNames); JScrollPane scrollTable = new JScrollPane(table); f.split.add(scrollTable,JSplitPane.LEFT);效果如下图3-6所示:图3-6 读取文件3.3 随机抽取学生模块的实现3.3.1 输入信息对话框的实现点击随机点名按钮后弹出输入信息对话框,在弹出时产生了一个随机数,用这个随机数来读取Excel中的某一个学生,把此学生信息设置为框内显示文字。要修改Excel文件需要利用已创建的Excel工作薄创建新的可写入的Excel工作薄。点击对话框确定时,学生分数被写入Excel的一个sheet的某一单元格,并且日期、被写入学生信息都被写入单元格。写入数据格式是先设置好字体的格式(用WritableFont类),再用字体格式设置单元格的格式(用WritableCellFormat类),创建标签时就可以用这个设好的格式来创建。把创建出的标签添加进单元格就实现了写入操作。如果点击取消,那么就不写入信息。以上过程主要实现代码如下:public class UpdateXls implements ActionListenerPublic void actionPerformed(ActionEvent k)try Workbook wb = Workbook.getWorkbook(ReadXls.file); WritableWorkbook book =Workbook.createWorkbook(ReadXls.file, wb); /随机抽取到的学生学号和姓名 Sheet sheet1 = wb.getSheet(0); int row = sheet1.getRows(); Random num= new Random(); int n=row-6; int suijishu = num.nextInt(n)+6; Cell cell = sheet1.getCell(1,suijishu); Cell cell2 = sheet1.getCell(2,suijishu);/弹出输入信息对话框String message = 随机抽取到+cell.getContents()+cell2.getContents();String input = JOptionPane.showInputDialog(null,message,请输入学生成绩: ,JOptionPane.QUESTION_MESSAGE);Sheet sheet3 = wb.getSheet(2); int row3 = sheet3.getRows();if(input!=null)tryif(Integer.parseInt(input)=0)/设置字体格式WritableFont font1 = new jxl.write.WritableFont(WritableFont.ARIAL, 12, WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, ColorXls.color); WritableCellFormat format1=new WritableCellFormat(font1);format1.setAlignment(jxl.format.Alignment.CENTRE); format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); /写入数据 ritableSheet sheet = book.getSheet(2);Label lab3= new Label(2,row3,input,format1);Date time = new Date();Label lab2=new Label(1,row3,time.toString(),format1);Label lab1=new Label(0,row3,cell.getContents()+cell2.getContents(),format1);sheet.addCell(lab3);sheet.addCell(lab2);sheet.addCell(lab1);输入对话框如下图3-7所示:图3-7 输入对话框3.3.2 设置字体颜色的实现选择点击设置里的单选按钮项,就能设置成相应的颜色。主要用事件处理类ColorXls实现,按不同颜色项就把相应的颜色赋值给静态变量color,所以在设置字体时就可以引用ColorXls.color来设置颜色。以上过程主要实现如下代码:public class ColorXls implements ActionListener static Colour color = Colour.BLACK ; /声明静态变量color/color是用jxl包提供的Colour声明的 MyFrame m; ColorXls(MyFrame f) m=f; public void actionPerformed(ActionEvent g)if(g.getSource()=m.blackItem)color=Colour.BLACK;elseif(g.getSource()=m.blueItem)color=Colour.BLUE;elseif(g.getSource()=m.goldItem)color=Colour.GOLD;elseif(g.getSource()=m.greenItem)color=Colour.GREEN;elseif(g.getSource()=m.redItem)color=Colour.RED;实验写入结果如下图3-8所示:图3-8 写入结果3.3.3 显示输入错误对话框的实现把输入的字符串转换为int数据,判断整数在0到100之间就可以正常写入,如果不在这个范围内的整数就弹出错误信息对话框。但如果输入的字符串无法转换成int型数据就会产生NumberFormatException异常,可以捕捉到这个异常,然后让程序执行弹出一个错误信息对话框就可以了。以上过程主要实现代码如下:public class UpdateXls implements ActionListener public void actionPerformed(ActionEvent k)if(input!=null)tryif(Integer.parseInt(input)=0)else JOptionPane.showMessageDialog(null,输入必须是0到100之间的整数,提示,JOptionPane.ERROR_MESSAGE); catch(NumberFormatException f) JOptionPane.showMessageDialog(null,输入必须是0到100之间的整数,提示,JOptionPane.ERROR_MESSAGE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人煤矿出售合同范本
- 入学教育心得体会左右大学五篇
- 文化教育合作协议书
- 娱乐游戏活动策划方案
- 商品购销合同的基本要素
- 环境评价公众参与机制在2025年公众参与评价体系构建中的应用报告
- 病历采集试题及答案
- 2025年数学阅读能力题库及答案
- 视唱模拟考试试题及答案
- 2025年食品科学与工程考公务员面试题(附答案+解析)
- 2025版食堂承包合同补充协议模板(含财务管理)
- 大学生家教服务合同范本
- 小学道德与法治教师考试题及答案
- 2025-2026人教版(PEP)一年级上册英语教学计划 (三篇)
- 2025年燃气送气服务人员考试题库及答案
- 2025-2026学年第一学期九年级开学第一课:收心班会课件
- 工程质量管理存在问题及管理措施
- 2025秋湘科版(2024)一年级上册科学教学计划
- 血压基础护理讲解
- Unit1单元复习课件人教版八年级英语上册
- 2025护理岗招聘笔试题库及答案
评论
0/150
提交评论