Microsoft Word - 第5章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第5章.doc"

Transcription

1 第 5 章 标准化试题训练系统 5.1 设计要求 设计 GUI 界面的标准化试题训练系统 具体要求如下 : 1 使用 Microsoft Excel 工作簿存放标准化试题, 形成题库 2 程序每次从题库随机抽取若干道题目形成一张试卷, 用户可以依次做试卷上的题目, 允许用户向前 向后翻阅试卷上的题目 3 用户每次做完一个题目必须确定该题目的答案, 否则无效 4 有计时功能, 比如指定一张试卷限用时 15 分钟, 时间一到用户再无法答题, 提示用户提交试卷 5 用户一旦提交试卷, 程序将给出试卷的分值 6 为了达到反复训练的目的, 用户提交试卷后可以继续让程序再出一套试卷 程序运行的参考效果图如图 5.1 所示 图 5.1 标准化试题训练系统 注意我们按照 MVC-Model View Control( 模型, 视图, 控制器 ) 的设计思想展开程序的设计和代码的编写 数据模型部分相当于 MVC 中的 Model 角色, 视图设计部分给出的界面部分相当于 MVC 中的 View, 视图设计部分给出的事件监视器相当于 MVC 中的 Control 5.2 数据模型 根据系统设计要求在数据模型部分设计了 Excel 表, 编写了有关的类 创建 Excel 工作簿 103

2 Java 课程设计第 3 版 Problem 类 : 其实例是一道试题 TestPaper 类 : 其实例是一张试卷 GiveTestPaper 接口 : 封装给出试卷方法 RamdomInitTestPaper 类 : 实现 GiveTestPaper 接口, 其实例负责随机从题库抽取题目给出试卷 Teacher 接口 : 封装阅卷方法 TeacherOne 类 : 实现 Teacher 接口, 其实例负责阅卷 数据模型部分涉及的主要类的 UML 图如图 5.2 所示 图 5.2 主要类的 UML 图 1 Excel 工作簿 Excel 工作簿在存储数据方面有着广泛的应用 ( 它不是数据库 ), 其中的 Sheet 表的结构和数据库中的表类似 JDBC 没有提供操作 Excel 工作簿的 API 为了操作 Excel 工作簿, 需要额外下载操作 Excel 的 API 1) 下载 Excel API 用户可以搜索 Excel API 得到一个 Excel API 的下载地址, 比如 : 然后将下载的 jexcelapi_2_6_6.zip( 版本号及名字略有差异, 有些下载网址的下载名称是 jxls-2.3.0) 解压缩到本地, 则根目录下的 jxl.jar 文件就是操作 Excel 所需要的 API 的 JAR 文件 ( 不要解压缩该文件 ), 根目录下的其他文件主要是 Excel API 的帮助文档 将 jxl.jar 复制到 Java 运行环境的扩展中, 即将这个 JAR 文件 jxl.jar 存放在 JDK 安装目录的 \jre\lib\ext 中, 比如 E:\jdk1.8\jre\lib\ext 在安装 JDK 时还额外有一个 JRE, 比如默认安装在 C:\Program Files (x86)\java\ jre1.8.0_45 将 jxl.jar 文件也复制到 C:\Program Files (x86)\java\ jre1.8.0_45\lib\ext 中 注意可以到作者的网盘 下载 jexcelapi_2_6_6.zip 2) 存储试题的 Sheet 表在标准化试题训练系统中, 按照要求需要使用 Excel 工作簿中的 Sheet 表存储试题, 即 Excel 工作簿中的 Sheet 表充当题库的角色 Excel 中 Sheet 表的结构对代码的编写是十分重要 104

3 第 5 章标准化试题训练系统 的, 比如列的数目以及顺序, 因为后续的某些代码依赖于这些结构, 即某些代码会和 Sheet 表的结构形成紧耦合关系, 因此,Sheet 表的结构一旦更改, 必然引起代码的修改 对 Excel 中 Sheet 表的结构要求如下 : Sheet 表一共 7 列 (A B C D E F G), 各列的取值规则如下 ( 不可再改变其取值规则 ) A 列 : 试题内容 例如 这个标志是何含义? B 列 : 正确答案 试题的正确答案只可以是 A B C D 字母的组合 ( 不区分大小写 ), 例如 B ABC C D C 列 : 选择项目 例如 A. 沿左侧车道掉头 D 列 : 选择项目 例如 B. 该路口不能掉头 E 列 : 选择项目 例如 C. 选择中间车道掉头 F 列 : 选择项目 例如 D. 多股铁路与道路相交 G 列 : 题目类型 题目的类型只可以是 p x p# 图像文件名字 或 x# 图像文件名字 ( 字母 p x 不区分大小写 ), 例如 x#hello.jpg p#java001.jpg 类型 p 表示试题类型是判断题, 类型 x 表示试题类型是选择题, 类型 p# 表示试题类型是判断题并带有图像,x# 表示试题类型是选择题并带有图像 Excel 中 Sheet 表的第一行不是试题, 是试题的说明, 说明文字可任意给定 根据设计要求打开 Microsoft Excel 设计了 Excel 工作簿以及其中的第一张 Sheet 表 ( 在 Excel 工作簿中是 Sheet1 表 ) 交通理论.xls,Sheet1 表结构如图 5.3 所示 图 5.3 Excel 中的 Sheet 表的结构 下载的操作 Excel 表的 API 要求 Excel 工作簿必须是扩展名为.xls 的 Excel 文件, 因此在用 Microsoft Excel 保存 Excel 工作簿时需要把保存类型选择为 Excel 工作簿 (*.xls) 3) 题库与图像管理需要建立一个名字是 题库 的文件夹, 存放 Excel 工作簿, 以及名字是 图像管理 的文件夹, 存放所需要的图像文件 文件夹的位置需要和程序在同级目录中 比如, 程序中的包名目录是 ch5\gui, ch5\gui 目录的上一层目录是 D:\, 那么 题库 文件夹和 图像管理 文件夹必须存放在 D:\ 下, 即保持和 ch5 是同级 为了便于软件的管理以及编写, 对于不需要图像的试题, 程序统一用默认的图像, 该默认图像的名字固定为 havenot.jpg 另外, 程序还需要一个名字是 renew.jpg 的图像, 当用户重新选择试卷时用该图像友好地提示用户, 因此必须将 havenot.jpg 和 renew.jpg 图像保存到 图像管理 文件夹中 ( 图像的外观可自己指定 ) havenot.jpg 和 renew.jpg 图像如图 5.4 所示 105

4 Java 课程设计第 3 版 图 5.4 havenot.jpg 和 renew.jpg 2 试题与试卷 1)Problem 类 Sheet 表中的一行数据是一道试题 用 Problem 类来封装 Sheet 表的基本结构, 即试题, 这对于后续代码的设计是非常有利的 下列 Problem 类封装表结构, 其实例是一道试题 Problem.java package ch5.data; public class Problem { boolean ischoice; // 是否为选择题 boolean isjudge; // 是否为判断题 String content; // 题目内容 String givechoicea,givechoiceb,givechoicec,givechoiced;// 提供选择 String imagename; // 题目所带的图像文件的名字 String correctanswer="qweq@#$@!@#1qweq"; // 题目的正确答案 // 用户回答的初始答案和 correctanswer 不同, 防止出题人忘记给正确答案 String useranswer ="" ; // 初始值必须是不含任何字符的串 public boolean getischoice() { return ischoice; public void setischoice(boolean b) { ischoice = b; public boolean getisjudge() { return isjudge; public void setisjudge(boolean b) { isjudge = b; public void setcontent(string c) { content = c; public String getcontent() { return content; public void setcorrectanswer(string a) { correctanswer = a; public String getcorrectanswer() { 106

5 第 5 章标准化试题训练系统 return correctanswer; public void setuseranswer(string u) { useranswer = u; public String getuseranswer() { return useranswer; public void setgivechoicea(string a) { givechoicea = a; public String getgivechoicea() { return givechoicea; public void setgivechoiceb(string b) { givechoiceb = b; public String getgivechoiceb() { return givechoiceb; public void setgivechoicec(string c) { givechoicec = c; public String getgivechoicec() { return givechoicec; public void setgivechoiced(string d) { givechoiced = d; public String getgivechoiced() { return givechoiced; public void setimagename(string c) { imagename = c; public String getimagename() { return imagename; 2)TestPaper 类训练时需要从题库获得若干个试题, 即用若干个试题组成一张试卷, 这里用 TestPaper 类封装试卷, 即该类的实例就是一张试卷 TestPaper.java package ch5.data; 107

6 Java 课程设计第 3 版 public class TestPaper { // 试卷 private Problem [] problem=null;// 数组的每个单元存放一道试题 ( 一个 Problem 对象 ) int index = -1; String problemsource ; // 试卷的题库 public void setproblem(problem [] problem){ this.problem = problem; public Problem getproblem(int i) { if(problem == null) { return null; if(problem.length==0){ return null; if(i>=problem.length i<0) { return null; return problem[i]; public Problem nextproblem() { index++; if(problem == null) { return null; if(problem.length==0){ return null; if(index==problem.length) { index = problem.length-1; // 到最后一个题目停止 return problem[index]; public Problem previousproblem() { index--; if(problem == null) { return null; if(problem.length==0){ return null; if(index<0) { index =0; // 到第一个题目停止 return problem[index]; public Problem [] getallproblem(){ 108

7 第 5 章标准化试题训练系统 if(problem == null) { return null; if(problem.length==0){ return null; return problem; public int getprolemamount(){ if(problem == null) { return 0; return problem.length; public void setproblemsource(string source){ problemsource = source; public String getproblemsource(){ return problemsource; public void acceptteacher(teacher teacher) { // 让老师来批卷 ( 访问者模式 ) teacher.givetestpaparscore(this); //teacher 批卷 3 阅卷试卷本身不能给出自己的分数, 需要其他对象访问试卷, 根据试卷中的数据给出相应的评判 为了便于系统的后期扩展, 这里将评判试卷的方法封装在 Teacher 接口中 : public void givetestpaparscore(testpaper testpaper) Teacher.java package ch5.data; public interface Teacher { public void givetestpaparscore(testpaper testpaper); 下列 TeacherOne 类实现 Teacher 接口, 给出了一种评卷方式 ( 只给出正确率 ) TeacherOne.java package ch5.data; import javax.swing.*; public class TeacherOne implements Teacher { public void givetestpaparscore(testpaper testpaper){ int correctamount=0; // 百分比计分 if(testpaper==null){ JOptionPane.showMessageDialog (null," 没答题 "," 消息对话框 ",JOptionPane.WARNING_MESSAGE); 109

8 Java 课程设计第 3 版 return; Problem p[] = testpaper.getallproblem(); if(p==null p.length==0){ JOptionPane.showMessageDialog (null," 没答题 "," 消息对话框 ",JOptionPane.WARNING_MESSAGE); return; for(int i=0;i<p.length;i++){ boolean b = compare(p[i].getuseranswer(),p[i].getcorrectanswer()); if(b) { correctamount++; double result = (double)correctamount/(double)p.length; int r =(int)(result*100); String s = " 共有 :"+p.length+" 道题."+ " 您做对了 "+correctamount+" 题,"+" 正确率大约 "+r+"%"; JLabel mess = new JLabel(s); JOptionPane.showMessageDialog(null,mess," 成绩 ",JOptionPane.PLAIN_ MESSAGE ); private boolean compare(string s,string t) { boolean istrue = true; for(int i=0;i<s.length();i++) { String temp = ""+s.charat(i); if(!(t.contains(temp))) istrue = false; for(int i=0;i<t.length();i++) { String temp = ""+t.charat(i); if(!(s.contains(temp))) istrue = false; return istrue; 4 抽取试题为了便于系统的后期扩展, 这里将抽取试题形成试卷的方法封装在 GiveTestPaper 接口中 : public TestPaper gettestpaper(string excelfilename,int amount) GiveTestPaper.java package ch5.data; 110

9 第 5 章标准化试题训练系统 public interface GiveTestPaper { public TestPaper gettestpaper(string excelfilename,int amount); 下列 RamdomInitTestPaper 类实现 GiveTestPaper 接口, 其实例负责给出试卷 ( 随机从题库中抽取若干道试题形成一张试卷 ) RamdomInitTestPaper.java package ch5.data; import java.io.*; import jxl.*; import java.util.*; import javax.swing.joptionpane; public class RamdomInitTestPaper implements GiveTestPaper { // 将试题放入试卷 ( 出卷 ) TestPaper testpaper ; // 试卷 File fileexcel; Problem [] problem; // 组成试卷的一套题 (problem 的单元存放一道试题, 即一个 Problem 对象 ) InputStream in = null; Workbook wb = null; // 封装 Excel,Workbook 是 jxl 包中的类 Sheet sheet = null; // 封装 Excel 中的 sheet,sheet 是 jxl 包中的类 LinkedList<Integer> list; // 随机抽取试题时用 public RamdomInitTestPaper() { testpaper = new TestPaper(); list = new LinkedList<Integer>(); public TestPaper gettestpaper(string excelfilename,int amount) { boolean b =setexcel(excelfilename); // 设置用户存放试题的电子表格 if(b) { try { randomgiveproblem(amount); // 随机给出 amount 道试题, 见类后面的 random GiveProblem 方法 catch(arrayindexoutofboundsexception e){ System.out.println(" 试题必须有类型, 请检查题库 "); System.exit(0); testpaper.setproblem(problem); // 试卷上设置的一套试题是 problem return testpaper; // 返回试卷 else { JOptionPane.showMessageDialog (null," 没有预备题库 "," 消息对话框 ",JOptionPane.WARNING_MESSAGE); return null; 111

10 Java 课程设计第 3 版 private boolean setexcel(string excelfilename){ boolean b =true; try { fileexcel =new File(excelFileName); in =new FileInputStream(fileExcel); testpaper.setproblemsource(fileexcel.getabsolutepath()); // 试卷设置题库来源 catch(ioexception exp){ JOptionPane.showMessageDialog (null," 没有预备题库 Excel"," 消息对话框 ",JOptionPane.WARNING_MESSAGE); b = false; try { wb=workbook.getworkbook(in); in.close(); catch(exception exp){ b = false; return b; private void randomgiveproblem(int amount) { // 随机给出 amount 道试题放入 problem 数组中 list.clear(); if(wb==null) { JOptionPane.showMessageDialog (null," 没有预备题库 Excel"," 消息对话框 ",JOptionPane.WARNING_MESSAGE); return ; sheet = wb.getsheet(0); // 得到 Excel 中的第一个 sheet( 索引从 0 开始 ) int rowsamount = sheet.getrows(); // 得到 sheet 的总行数 // 注意原始 Excel 表中 sheet 中的第 0 行不是试题, 是用户输入的说明 int realamount = Math.min(amount,rowsAmount-1);// 实际抽取的试题数量 problem = new Problem[realAmount]; // 用于存放试题的数组 problem for(int i=0;i<rowsamount-1;i++){ // 将 1~rowsAmount-1 放入链表 list.add(i+1); Random random=new Random(); for(int i=0;i<problem.length;i++) { int m = random.nextint(list.size());//[0,list.size()) 中的一个随机数 int index =list.remove(m);// 删除 list 的第 m 个节点, 同时得到节点数字 Cell [] cell = sheet.getrow(index); // 返回 sheet 中的第 index 行 // 注意原始 Excel 表中 sheet 中的第 0 行不是试题, 是用户输入的说明 //cell 的第 0 列是试题内容, 索引从 0 开始 problem[i] = new Problem(); 112

11 第 5 章标准化试题训练系统 int number = i+1; problem[i].setcontent(" 第 "+number+" 题."+cell[0].getContents()); // 试题的内容 problem[i].setcorrectanswer(cell[1].getcontents().trim());// 试题的答案 problem[i].setgivechoicea(cell[2].getcontents().trim());// 试题的 A 选择 problem[i].setgivechoiceb(cell[3].getcontents().trim());// 试题的 B 选择 problem[i].setgivechoicec(cell[4].getcontents().trim());// 试题的 C 选择 problem[i].setgivechoiced(cell[5].getcontents().trim());// 试题的 D 答案 String typestr = cell[6].getcontents().trim();// 试题的类型 ( 判断或选择 ) // 因为试题有图像, 所以 typestr 有 4 种, 即 p p# x x# if(typestr.equalsignorecase("p")){ problem[i].setisjudge(true); problem[i].setischoice(false); problem[i].setimagename("havenot.jpg"); if(typestr.equalsignorecase("x")) { problem[i].setisjudge(false); problem[i].setischoice(true); problem[i].setimagename("havenot.jpg"); if(typestr.startswith("p#") typestr.startswith("p#")) { problem[i].setisjudge(true); problem[i].setischoice(false); String imagename = typestr.substring(typestr.indexof("#")+1); problem[i].setimagename(imagename); if(typestr.startswith("x#") typestr.startswith("x#")) { problem[i].setisjudge(false); problem[i].setischoice(true); String imagename = typestr.substring(typestr.indexof("#")+1); problem[i].setimagename(imagename); 5.3 简单测试 按照源文件中的包语句将相关的 Java 源文件保存到以下目录中 : D:\ch5\data 编译各个源文件, 例如 : D:\>javac ch5/data/problem.java 也可以如下编译全部源文件 : 113

12 Java 课程设计第 3 版 D:\>javac ch5/data/*.java 将 题库 的文件夹 ( 存放 Excel 工作簿 ), 以及 图像管理 文件夹存放在包名目录的父目录中 ( 这里需要保存在 D:\ 中 ) 把 5.2 节给出的类看作一个小框架, 下面用框架中的类编写一个简单的应用程序, 测试标准化试题训练, 即在命令行表述对象的行为过程, 如果表述成功 ( 如果表述困难, 说明数据模型不是很合理 ), 那么就为以后的 GUI 程序设计提供了很好的对象功能测试, 在后续的 GUI 设计中, 重要的工作仅仅是为某些对象提供视图界面, 并处理相应的界面事件而已 将 AppTest.java 源文件按照包名保存到以下目录中 : D:\ch5\test 编译源文件 : D:\>javac ch5/test/apptest.java 运行 AppTest 类 ( 运行效果如图 5.5 所示 ): D:\>java ch5.test.apptest 图 5.5 简单测试 AppTest.java package ch5.test; import ch5.data.*; public class AppTest { public static void main(string []args) { GiveTestPaper inittestpaper = new RamdomInitTestPaper();// 创建初始试卷对象 TestPaper testpaper= inittestpaper.gettestpaper(" 题库 / 交通理论.xls",5); // 得到有 5 个题目的试卷 Problem [] problem = testpaper.getallproblem(); // 得到试卷中的全部试题 for(int i = 0;i<problem.length;i++ ) { int m = i+1; System.out.println(" 第 "+m+" 题."); System.out.println(problem[i].getContent()); if(problem[i].getisjudge()){ inputone(problem[i]); else if(problem[i].getischoice()){ 114

13 第 5 章标准化试题训练系统 inputtwo(problem[i]); System.out.println(); // 模拟用户答题 problem[0].setuseranswer("b"); // 模拟用户给的答案是 B problem[1].setuseranswer("a"); problem[2].setuseranswer("c"); problem[3].setuseranswer("a"); problem[0].setuseranswer("b"); problem[1].setuseranswer("d"); testpaper.acceptteacher(new TeacherOne()); // 让老师批卷 static void inputone(problem problem){ System.out.printf("%s\t%s\n",problem.getGiveChoiceA(),problem.getGiveChoiceB()); System.out.println(" 图像的名字 "+problem.getimagename()); System.out.println(" 正确答案 :"+problem.getcorrectanswer()); static void inputtwo(problem problem){ System.out.printf("%s\t%s\n",problem.getGiveChoiceA(),problem.getGiveChoiceB()); System.out.printf("%s\t%s\n",problem.getGiveChoiceC(),problem.getGiveChoiceD()); System.out.println(" 图像的名字 "+problem.getimagename()); System.out.println(" 正确答案 :"+problem.getcorrectanswer()); 5.4 视图设计 设计 GUI 程序除了使用 5.2 节给出的类以外, 需要使用 javax.swing 包提供的视图 ( 也称 Java Swing 框架 ) 以及处理视图上触发的界面事件 与 5.3 节中简单的测试相比,GUI 程序可以提供更好的用户界面, 完成 5.1 节提出的设计要求 GUI 部分设计的类如下 ( 主要类的 UML 图如图 5.6 所示 ) 图 5.6 主要类的 UML 图 TestPaperView 类 : 其实例为试卷提供视图 ImageJPanel 类 : 其实例为试题的图像提供面板视图 115

14 Java 课程设计第 3 版 ShowImageDialog 类 : 其实例为试题的图像提供对话框视图 IntegrationView 类 : 其实例将其他视图集成为一个视图 HandleTestPaper 类 : 其实例负责处理 TestPaperView 视图上的界面事件 1 视图相关类 1)TestPaperView TestPaperView 类是 JPanel 类的子类, 其实例提供了试卷的视图, 用户可以在该视图看见试卷的内容并进行答题操作 ( 如图 5.7 所示 ) 该视图使用 javax.swing.timer 类, 根据试卷的时间要求进行计时 图 5.7 试卷视图 TestPaperView.java package ch5.view; import javax.swing.*; import java.awt.*; import java.awt.event.*; import ch5.data.*; public class TestPaperView extends JPanel implements ActionListener{ TestPaper testpaper; // 本视图需要显示的试卷 public Teacher teacher ; // 批卷老师 public JTextArea showcontent; // 显示试题内容 public ImageJPanel showimage; // 显示试题的图像 public JCheckBox choicea,choiceb,choicec,choiced;// 显示选项内容 public JButton nextproblem,previousproblem;// 选择 上一题目 下一题目 的按钮 public JButton aproblemsubmit; // 确认某道题的回答或选择 public JButton renewjbutton; // 重新开始 public JButton submit; // 交卷 HandleTestPaper handletestpaper; // 负责处理 testpaper 试卷中的数据 public int totaltime = 0; // 考试用时 ( 单位 : 分 ) public int usedtime = totaltime; public javax.swing.timer time; // 考试计时器 public JLabel showusedtime ; // 显示用时 JLabel testname ; // 显示考试名称 public TestPaperView() { time = new Timer(60*1000,this); // 每隔 1 分钟计时一次 ( 触发 ActionEvent), 本容器作为其监视器 116

15 第 5 章标准化试题训练系统 initview(); registerlistener(); public void setteacher(teacher teacher){ this.teacher = teacher; public void initview() { setlayout(new BorderLayout()); showimage = new ImageJPanel(); showcontent = new JTextArea(12,12); showcontent.settooltiptext(" 如果题中有图像, 在图上单击鼠标可调整观看 "); showcontent.setforeground(color.blue); showcontent.setwrapstyleword(true); showcontent.setlinewrap(true); // 回行自动 showcontent.setfont(new Font(" 宋体 ",Font.BOLD,18)); choicea = new JCheckBox("A"); choiceb = new JCheckBox("B"); choicec = new JCheckBox("C"); choiced = new JCheckBox("D"); choicea.setvisible(false); choiceb.setvisible(false); choicec.setvisible(false); choiced.setvisible(false); nextproblem = new JButton(" 下一题目 "); previousproblem = new JButton(" 上一题目 "); aproblemsubmit = new JButton(" 确认 "); aproblemsubmit.setvisible(false); renewjbutton = new JButton(" 再来一次 "); renewjbutton.setvisible(false); submit = new JButton(" 交卷 "); JPanel pnorth = new JPanel(); pnorth.setbackground(color.cyan) ; showusedtime = new JLabel(); testname = new JLabel(); testname.setfont(new Font(" 楷体 ",Font.BOLD,18)); pnorth.add(testname); pnorth.add(new JLabel(" 单击下一题或上一题按钮开始考试 ")); pnorth.add(submit); pnorth.add(renewjbutton); pnorth.add(showusedtime); add(pnorth,borderlayout.north); JPanel pcenter = new JPanel(); pcenter.setlayout(new GridLayout(1,2)); pcenter.add(new JScrollPane(showContent)); pcenter.add(showimage); add(pcenter,borderlayout.center); 117

16 Java 课程设计第 3 版 JPanel psouth = new JPanel(); psouth.setlayout(new GridLayout(2,1)); JPanel oneinpsouth = new JPanel(); JPanel twoinpsouth = new JPanel(); oneinpsouth.setbackground(color.green) ; oneinpsouth.setbackground(color.pink) ; oneinpsouth.add(choicea); oneinpsouth.add(choiceb); oneinpsouth.add(choicec); oneinpsouth.add(choiced); oneinpsouth.add(aproblemsubmit); twoinpsouth.add(nextproblem); twoinpsouth.add(previousproblem); psouth.add(oneinpsouth); psouth.add(twoinpsouth); add(psouth,borderlayout.south); validate(); public void registerlistener(){ handletestpaper = new HandleTestPaper(); nextproblem.addactionlistener(handletestpaper); previousproblem.addactionlistener(handletestpaper); aproblemsubmit.addactionlistener(handletestpaper); submit.addactionlistener(handletestpaper); renewjbutton.addactionlistener(handletestpaper); handletestpaper.setview(this); public void settestpaper(testpaper testpaper) { this.testpaper = testpaper; handletestpaper.settestpaper(testpaper); public void actionperformed(actionevent e){ showusedtime.settext(" 考试剩余时间 :"+usedtime); if(usedtime == 0){ time.stop(); showusedtime.settext(" 请交卷 "); nextproblem.setvisible(false); previousproblem.setvisible(false); usedtime--; public void settestname(string name){ testname.settext(" "+name+" "); public void settotaltime(int n) { totaltime = n; 118

17 第 5 章标准化试题训练系统 usedtime = n; showusedtime.settext(" 考试剩余时间 :"+usedtime); 2)ImageJPanel ImageJPanel 类是 JPanel 类的子类, 其实例显示试题中的图像, 用户可以在该视图中看见图像 ( 如图 5.8 所示 ), 如果需要, 用户可以单击图像, 弹出一个可以仔细观察图像的对话框 图 5.8 显示图像的面板 ImageJPanel.java package ch5.view; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ImageJPanel extends JPanel implements MouseListener { Image image; ImageJPanel() { setopaque(false); setborder(null); settooltiptext(" 单击图像单独调整观看 "); addmouselistener(this); public void setimage(image img){ image = img; public void paintcomponent(graphics g ) { super.paintcomponent(g); g.drawimage(image,0,0,getbounds().width,getbounds().height,this); public void mousepressed(mouseevent e) { ShowImageDialog showimagedialog = new ShowImageDialog(image); showimagedialog.setvisible(true); public void mousereleased(mouseevent e){ 119

18 Java 课程设计第 3 版 public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e){ public void mouseclicked(mouseevent e) { 3)ShowImageDialog ShowImageDialog 类是 JDialog 类的子类, 其实例用对话框视图显示试题中的图像, 以方便用户仔细地观察图像 ( 如图 5.9 所示 ) 图 5.9 显示图像对话框 ShowImageDialog.java package ch5.view; import java.awt.*; import javax.swing.*; public class ShowImageDialog extends JDialog { Image img; ShowImageDialog(Image img) { // 构造方法 settitle(" 显示图像对话框 "); this.img = img; setsize(500,470); GiveImage image = new GiveImage(); add(image); setmodal(true); setdefaultcloseoperation(jframe.dispose_on_close); class GiveImage extends JPanel { // 内部类, 专门为该对话框提供图片 public void paintcomponent(graphics g ) { super.paintcomponent(g); g.drawimage(img,0,0,getbounds().width,getbounds().height,this); 4)IntegrationView IntegrationView 类是 JFrame 类的子类, 其实例使用 JTabbedPane 将各个视图集成到当前 120

19 第 5 章标准化试题训练系统 IntegrationView 窗体中 ( 如图 5.10 所示 ) 图 5.10 集成视图的窗体 IntegrationView.java package ch5.view; import java.awt.borderlayout; import javax.swing.jframe; import javax.swing.jtabbedpane; public class IntegrationView extends JFrame{ JTabbedPane tabbedpane; // 用选项卡集成 TestPaperView 视图 public IntegrationView(){ tabbedpane= new JTabbedPane(JTabbedPane.LEFT);// 卡在左侧 tabbedpane.validate(); add(tabbedpane,borderlayout.center); setbounds(100,100,1200,560); setdefaultcloseoperation(jframe.dispose_on_close); setvisible(true); public void addtestpaperview(string cardname,testpaperview view){ tabbedpane.add(cardname,view); validate(); 2 事件监视器事件监视器负责处理视图上触发的用户界面事件, 以便完成相应的任务 HandleTestPaper 类的实例负责监视 TestPaperView 视图上的事件, 比如负责停止计时器 负责处理用户提交的答案 负责让老师批卷等 HandleTestPaper 类实现了 ActionListener 接口, 其实例负责处理用户单击按钮触发的 ActionEvent 事件 当用户单击下一题或上一题按钮时让视图显示相应的试题, 当用户单击确认某题目答案的按钮时, 将用户的答案保存到相应的 Problem 对象中, 当用户单击 交卷 按钮时, 让 Teacher 对象阅卷 HandleTestPaper.java package ch5.view; 121

20 Java 课程设计第 3 版 import javax.swing.*; import java.awt.*; import java.awt.event.*; import ch5.data.*; public class HandleTestPaper implements ActionListener{ TestPaperView view; TestPaper testpaper; // 需要处理的试卷 Problem problem; // 当前的题目 Toolkit tool; // 处理图像 public HandleTestPaper(){ tool = Toolkit.getDefaultToolkit(); public void setview(testpaperview view) { this.view = view; public void settestpaper(testpaper testpaper) { this.testpaper = testpaper; public void actionperformed(actionevent e) { if(e.getsource()==view.nextproblem){ view.time.start(); // 开始计时 if(testpaper!=null){ problem = testpaper.nextproblem(); handleproblem(problem); else { JOptionPane.showMessageDialog (view," 没有试题 "," 消息对话框 ",JOptionPane.WARNING_MESSAGE); if(e.getsource()==view.previousproblem){ view.time.start(); // 开始计时 if(testpaper!=null){ problem = testpaper.previousproblem(); handleproblem(problem); else { JOptionPane.showMessageDialog (view," 没有试题 "," 消息对话框 ",JOptionPane.WARNING_MESSAGE); if(e.getsource()==view.aproblemsubmit){ // 确认一道题目的答案 String answer =""; if(view.choicea.isselected()){ answer = answer+"a"; 122

21 第 5 章标准化试题训练系统 if(view.choiceb.isselected()){ answer = answer+"b"; if(view.choicec.isselected()){ answer = answer+"c"; if(view.choiced.isselected()){ answer = answer+"d"; if(problem==null) { JOptionPane.showMessageDialog (view," 没有试题 "," 消息对话框 ",JOptionPane.WARNING_MESSAGE); return; view.choicea.setvisible(false); view.choiceb.setvisible(false); view.choicec.setvisible(false); view.choiced.setvisible(false); view.aproblemsubmit.setvisible(false); problem.setuseranswer(answer); if(e.getsource()==view.submit){ testpaper.acceptteacher(view.teacher); // 试卷让老师批阅 view.renewjbutton.setvisible(true); view.submit.setvisible(false); view.time.stop(); view.showusedtime.settext(" 交卷了 "); if(e.getsource()==view.renewjbutton) { // 再来一套题目 view.showusedtime.settext(""); view.usedtime = view.totaltime; view.showusedtime.settext(" 考试剩余时间 :"+view.totaltime); view.showcontent.settext(null); Image img = tool.getimage(" 图像管理 /renew.jpg"); handleimage(img); view.showimage.repaint(); view.nextproblem.setvisible(true); view.previousproblem.setvisible(true); String problemsource= testpaper.getproblemsource(); // 得到原始题库 GiveTestPaper inittestpaper = new RamdomInitTestPaper(); testpaper=inittestpaper.gettestpaper(problemsource,testpaper. getprolemamount()); view.renewjbutton.setvisible(false); view.submit.setvisible(true); 123

22 Java 课程设计第 3 版 view.choicea.setselected(false); view.choiceb.setselected(false); view.choicec.setselected(false); view.choiced.setselected(false); private void handleproblem(problem problem) { if(problem==null) { JOptionPane.showMessageDialog (view," 没有试题 "," 消息对话框 ",JOptionPane.WARNING_MESSAGE); else { view.aproblemsubmit.setvisible(true); view.showcontent.settext(problem.getcontent()); view.showcontent.setvisible(true); if(problem.getischoice()) { handelchoice(); else if(problem.getisjudge()) { handeljudge(); String imagename = problem.getimagename(); // 用户必须把图像存放到 图像管理 文件夹 Image img = tool.getimage(" 图像管理 /"+imagename); handleimage(img); private void handeljudge() { view.choicea.settext(problem.getgivechoicea()); view.choiceb.settext(problem.getgivechoiceb()); view.choicea.setvisible(true); view.choiceb.setvisible(true); view.choicec.setvisible(false); view.choiced.setvisible(false); private void handelchoice() { view.choicea.settext(problem.getgivechoicea()); view.choiceb.settext(problem.getgivechoiceb()); view.choicec.settext(problem.getgivechoicec()); view.choiced.settext(problem.getgivechoiced()); view.choicea.setvisible(true); view.choiceb.setvisible(true); view.choicec.setvisible(true); view.choiced.setvisible(true); private void handleimage(image image) { view.showimage.setimage(image); 124

23 第 5 章标准化试题训练系统 view.showimage.repaint(); 5.5 GUI 程序 按照源文件中的包语句将 5.4 节中相关的源文件保存到以下目录中 : D:\ch5\view\ 编译各个源文件, 例如 : D:\>javac ch5/view/integrationview.java 也可以如下编译全部源文件 : D:\>javac ch5/view/*.java 根据代码的结构需要把 题库 的文件夹 ( 存放 Excel 工作簿 ) 以及 图像管理 文件夹 ( 存放所需要的图像文件 ) 存放在 D:\ 下, 即保持和 ch5 是同级 把 5.2 节和 5.4 节给出的类看作一个小框架, 下面用框架中的类编写 GUI 应用程序, 完成 5.1 节给出的设计要求 将 AppWindow.java 源文件按照包名保存到以下目录中 : D:\ch5/gui 编译源文件 : D:\>javac ch5/gui/appwindow.java 运行 AppWindow 类 ( 运行效果如本章开始给出的图 5.1): D:\>java ch5.gui.appwindow AppWindow.java package ch5.gui; import ch5.data.givetestpaper; import ch5.data.ramdominittestpaper; import ch5.data.testpaper; import ch5.data.teacherone; import ch5.view.testpaperview; import ch5.view.integrationview; public class AppWindow { public static void main(string []args) { String testname=""; IntegrationView integrationview = new IntegrationView(); GiveTestPaper inittestpaper = new RamdomInitTestPaper(); 125

24 Java 课程设计第 3 版 // 创建初始试卷对象 TestPaper testpaper= inittestpaper.gettestpaper(" 题库 / 交通理论.xls",5); // 得到有 5 个题目的试卷 TestPaperView testview = new TestPaperView(); testview.settestpaper(testpaper); // 设置试卷 testview.setteacher(new TeacherOne()); // 设置阅卷老师 testname = " 交通法训练 "; testview.settestname(testname); testview.settotaltime(15); // 考试时间 15 分钟 integrationview.addtestpaperview(testname,testview); inittestpaper = new RamdomInitTestPaper(); // 创建初始试卷对象 testpaper= inittestpaper.gettestpaper(" 题库 /java 基础.xls",6); testview = new TestPaperView(); testview.settestpaper(testpaper); testview.setteacher(new TeacherOne()); testname = "Java 训练 "; testview.settestname(testname); testview.settotaltime(10); integrationview.addtestpaperview(testname,testview); 5.6 程序发布 用户可以使用 jar.exe 命令制作 JAR 文件来发布软件 1 清单文件 编写以下清单文件 ( 用记事本保存时需要将保存类型选择为 所有文件 (*.*) ): ch5.mf Manifest-Version: 1.0 Main-Class: ch5.gui.appwindow Created-By: 1.8 将 ch5.mf 保存到 D\:, 即保存在包名所代表的目录的上一层目录中 注意清单中的 Manifest-Version 和 1.0 之间 Main-Class 和主类 ch5.gui.appwindow 之间以及 Created-By 和 1.8 之间必须有且只有一个空格 2 用批处理文件发布程序 使用 jar 命令创建.jar 文件 : D:\>jar cfm TestTrain.jar ch5.mf ch5/data/*.class ch5/view/*.class ch5/gui/*.class 其中, 参数 c 表示要生成一个新的 JAR 文件,f 表示要生成的 JAR 文件的名字,m 表示 126

25 第 5 章标准化试题训练系统 清单文件的名字 如果没有任何错误提示, 在 D:\ 下将产生一个名字是 TestTrain.jar 的文件 编写以下 train.bat, 用记事本保存该文件时需要将保存类型选择为 所有文件 (*.*) train.bat path.\jre\bin pause javaw -jar TestTrian.jar 将该文件保存到自己命名的某个文件夹中, 例如名字是 2000 的文件夹中 然后将 TestTrain.jar 题库 和 图像管理 文件夹以及 JRE( 并保证 jxl.jar 文件 : 操作 Excel 所需要的 API 的 JAR 文件也在 JRE\lib\ext 中 ) 复制到 2000 文件夹中 在 2000 文件夹中再保存一个软件运行说明书, 提示双击 train.bat 即可运行程序 可以将 2000 文件夹作为软件发布, 也可以用压缩工具将 2000 文件夹下的所有文件压缩成.zip 或.jar 文件发布 用户解压后双击 train.bat 即可运行程序 如果客户计算机上肯定有 JRE, 可以不把 JRE 复制到 2000 文件夹中, 同时去除.bat 文件中的 path.\jre\bin 内容, 并提示用户将操作 Excel 所需要的 API 复制到 JRE 的扩展中 mineclearance.bat echo 将操作 Excel 所需要的 API 复制到 JRE 的扩展中 pause javaw -jar MineClearance.jar 5.7 课设题目 1 标准化试题训练系统 在学习本章代码的基础上可以为程序增加任何合理的并有能力完成的功能, 但至少要增加下列 1~4(5 可独立进行 ) 所要求的功能 1 编写几个实现 Teacher 接口的类, 使得 AppWindow 可以使用这些类的实例评判试卷 2 编写几个实现 GiveTestPaper 接口的类, 使得 AppWindow 可以使用这些类的实例得到试卷 ( 比如按顺序从题库中获得若干试题, 或抽取题库中题号能被 3 除尽的试题等 ) 3 当考试剩余时间不多时 ( 比如剩余时间少于全部用时的 5%) 将弹出一个警示对话框警示用户 4 增加用户查看试题正确答案的功能 当用户回答某试题答案后可以看见一个按钮, 单击该按钮可以查看该试题的正确答案, 然后该按钮又变得不可见 5 将题库更改为某种数据库, 同时增加 1~4 所要求的功能 2 自定义题目 通过老师指导或自己查找资料自创一个题目 127

Swing-02.pdf

Swing-02.pdf 2 J B u t t o n J T e x t F i e l d J L i s t B u t t o n T e x t F i e l d L i s t J F r a m e 21 2 2 Swing C a n v a s C o m p o n e n t J B u t t o n AWT // ToolbarFrame1.java // java.awt.button //

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

PowerPoint 簡報

PowerPoint 簡報 Paint 繪圖板 JAVA 程式設計 指導老師 : 鄞宗賢 組員 : 4A3G0901 劉彥佐 4A3G0907 韓偉志 畫面預覽 匯入參數 package paint; import java.awt.*; import java.awt.event.*; import javax.swing.*; 主程式 public class paint{ public static void main(string[]

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 语 言 程 序 设 计 郑 莉 胡 家 威 编 著 清 华 大 学 逸 夫 图 书 馆 北 京 内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌 握 语

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

Microsoft Word - Broker.doc

Microsoft Word - Broker.doc Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

untitled

untitled OGRE http://antsam.blogone.net AntsamCGD@hotmail.com OGRE OGRE listener listener target listener target Dispatcher Processor Input Reader Event class view Event Class view Input Event ctrlaltshift ascoll

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes What is a JavaBean? JavaBean Java JavaBean Java JavaBean JComponent tooltiptext font background foreground doublebuffered border preferredsize minimumsize maximumsize JButton. Swing JButton JButton() JButton(String

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

D C 93 2

D C 93 2 D9223468 3C 93 2 Java Java -- Java UML Java API UML MVC Eclipse API JavadocUML Omendo PSPPersonal Software Programming [6] 56 8 2587 56% Java 1 epaper(2005 ) Java C C (function) C (reusability) eat(chess1,

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

ZW1.PDF

ZW1.PDF C. A. R. Hoare, The Emperor s Old Clothes Java C++ Objective C Eiffel Smalltalk Mesa Lisp Java Java Java C++ Java 10 Item 1 Item 2 String.equals() == 1 1 Item 3 Java C++ Java Item 4 Java Item 5 Java Item

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y 拼图游戏 任务说明 本实例实现了拼图游戏的开发 运行程序, 单击 开始 按钮将打乱图片的位置, 效果如图 1 所示, 然后通过鼠标单击图片进行移动, 直到将所有图片都移动到正确位置, 游戏过关, 过关后的效果如图 2 所示 图 1 打乱图片位置的效果图 2 图片移动到正确位置的效果 关键技术 本程序主要通过 Swing 与枚举类实现, 程序将一幅完整的图片平均分成 9 部分, 每一部分为一个正方形,

More information

[Short Essay:] 1. (5 points) Use state-of-memory diagram to describe the differences between x and y declared as follows: double[] x = new double[4];

[Short Essay:] 1. (5 points) Use state-of-memory diagram to describe the differences between x and y declared as follows: double[] x = new double[4]; Introduction to Programming (II) Spring 2008, Final Exam Name: ID Number: [True/False:] (5 points each) If your answer is "false", you have to provide correct reasons. Otherwise, no points will be given.

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

chp11.ppt

chp11.ppt Java 软 件 设 计 基 础 Applet 程 序 1.Applet 概 念 Applet 与 Application Application 是 能 独 立 运 行 的 程 序 单 位 ; Applet 程 序 不 能 独 立 运 行, 必 须 依 附 在 网 页 上, 借 助 于 浏 览 器 才 能 运 行 通 常 置 于 服 务 器 端, 当 用 户 连 接 到 该 网 页,Applet

More information

图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充

图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充 图形学 Project 2 要求 任意两个多边形, 求出其相交的区域 使用说明 例 1 第一步, 与 Project 1 画多边形的方法相同, 画一个多边形 ; 第二步, 单击 INTERSECT WITH, 随后画出第二个多边形 ; 第三步, 单击 FILL 进行填充 例 2 单击 CLEAR, 重新回到初始状态, 下面让我们看一下自交多边形的情况 当单击数次后, 出现左图的情况, 之后我们单击

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

利用Java技术编写桌面软件基础

利用Java技术编写桌面软件基础 利 用 Java 技 术 编 写 桌 面 软 件 基 础 在 学 习 Java 编 程 语 言 的 细 节 和 语 法 时, 我 们 会 碰 到 这 样 一 个 问 题 : 开 发 桌 面 应 用 软 件 需 要 使 用 哪 些 Java 技 术, 应 当 引 入 哪 些 package? 这 一 问 题 的 答 案 取 决 于 开 发 的 应 用 软 件 类 型 和 它 的 作 用 这 篇 文 章

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

ebook42-13

ebook42-13 13 Excel E x c e l 13 Excel 133 E x c e l 13.1 1 E x c e l 2 X Y y x 12 1 7 1 3 134 Excel 2000 13-1 13-2 13-1 13-2 4 E x c e l 1) E x c e l 3 2) E x c e l 13 Excel 135 3) 1 13-3 Microsoft Excel 4) 13-3

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

Java 1 Java String Date

Java 1 Java String Date JAVA SCJP Java 1 Java String Date 1Java 01 Java Java 1995 Java Java 21 Java Java 5 1-1 Java Java 1990 12 Patrick Naughton C++ C (Application Programming Interface API Library) Patrick Naughton NeXT Stealth

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

壹 前言 一 研究動機 現今社會大眾近視比例逐年增加, 原因在於電腦不當且過度使用, 說其根本便是因為並無注意時間因此導致眼睛無法負荷, 然而使用者並非要使用如此長的時間, 或者家長規定小孩的電腦使用限制時間, 但卻沒有輔助的工具來提醒休息時間, 因此我們想了這個程式來幫助改善這個問題 二 研究目的

壹 前言 一 研究動機 現今社會大眾近視比例逐年增加, 原因在於電腦不當且過度使用, 說其根本便是因為並無注意時間因此導致眼睛無法負荷, 然而使用者並非要使用如此長的時間, 或者家長規定小孩的電腦使用限制時間, 但卻沒有輔助的工具來提醒休息時間, 因此我們想了這個程式來幫助改善這個問題 二 研究目的 投稿類別 : 工程技術類 篇名 : 作息提醒時鐘之製作 作者 : 林聖崴 台北市立松山工農 日間部電子科三年級仁班 徐小剛 台北市立松山工農 日間部電子科三年級仁班 指導老師 : 柯秉鈞老師 壹 前言 一 研究動機 現今社會大眾近視比例逐年增加, 原因在於電腦不當且過度使用, 說其根本便是因為並無注意時間因此導致眼睛無法負荷, 然而使用者並非要使用如此長的時間, 或者家長規定小孩的電腦使用限制時間,

More information

基于JAVA的连连看游戏设计

基于JAVA的连连看游戏设计 基 于 JAVA 的 连 连 看 游 戏 设 计 摘 要 :1978 年 第 一 款 PC 游 戏 冒 险 岛 在 美 国 问 世 至 今, 随 着 硬 件 和 软 件 水 平 的 不 断 进 步, 出 现 许 许 多 多 的 游 戏, 其 中 连 连 看 就 非 常 经 典 连 连 看 -- 在 一 个 画 好 的 格 局 内, 排 列 着 一 些 不 同 的 图 片, 选 中 两 张 一 样 的

More information

FileMaker 15 ODBC 和 JDBC 指南

FileMaker 15 ODBC 和 JDBC 指南 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. / FileMaker WebDirect FileMaker, Inc. FileMaker

More information

Topic

Topic 二 级 JAVA 上 机 试 题 汇 编 第 01 套 : 1. 基 本 操 作 (1 小 题, 计 30 分 ) 在 考 生 文 件 夹 中 存 有 文 件 名 为 Java_1.java 的 文 件, 该 程 序 是 不 完 整 的, 请 在 注 释 行 //**********Found********** 下 一 行 语 句 的 下 划 线 地 方 填 入 正 确 内 容, 然 后 删 除

More information

Microsoft PowerPoint - course2.ppt

Microsoft PowerPoint - course2.ppt Java 程 式 設 計 基 礎 班 (2) 莊 坤 達 台 大 電 信 所 網 路 資 料 庫 研 究 室 Email: doug@arbor.ee.ntu.edu.tw Class 2 1 回 顧 Eclipse 使 用 入 門 Class 2 2 Lesson 2 Java 程 式 語 言 介 紹 Class 2 3 Java 基 本 知 識 介 紹 大 小 寫 有 差 (Case Sensitive)

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

FileMaker 16 ODBC 和 JDBC 指南

FileMaker 16 ODBC 和 JDBC 指南 FileMaker 16 ODBC JDBC 2004-2017 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. FileMaker WebDirect FileMaker Cloud FileMaker,

More information

untitled

untitled 1 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object 參 類 都 object 參 object Boxing 參 boxing

More information

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7.

Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes 包管理理 工具 Helm 蔺礼强 Kubenetes 系列列公开课 2 每周四晚 8 点档 1. Kubernetes 初探 2. 上 手 Kubernetes 3. Kubernetes 的资源调度 4. Kubernetes 的运 行行时 5. Kubernetes 的 网络管理理 6. Kubernetes 的存储管理理 7. Kubernetes

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

输入 project name 选择完成

输入 project name 选择完成 JAVA 程序访问 HighGo DB 的环境准备 山东瀚高科技有限公司版权所有仅允许不作任何修改的转载和转发 Hibernate 的配置 MyEclipse 中创建新项目 : 选择菜单栏 file---new---project 选择 web project 进行下一步 输入 project name 选择完成 4. 单击 " 添加 JAR/ 文件夹 ", 会如下图出现 JDBC 下载 Hibernate

More information

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / / 4 AMI AMI AMI SC345604 89 4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / / 91 41-90 41 AMI - AMI - - API MQI MQSeries MQI AMI IBM 91 MQSeries REPOSITORY AMI AMI AMI XML Windows AMI

More information

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指

内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 内 容 提 要 将 JAVA 开 发 环 境 迁 移 到 Linux 系 统 上 是 现 在 很 多 公 司 的 现 实 想 法, 而 在 Linux 上 配 置 JAVA 开 发 环 境 是 步 入 Linux 下 JAVA 程 序 开 发 的 第 一 步, 本 文 图 文 并 茂 地 全 程 指 导 你 搭 建 Linux 平 台 下 的 JAVA 开 发 环 境, 包 括 JDK 以 及 集

More information

附录J:Eclipse教程

附录J:Eclipse教程 附 录 J:Eclipse 教 程 By Y.Daniel Liang 该 帮 助 文 档 包 括 以 下 内 容 : Eclipse 入 门 选 择 透 视 图 创 建 项 目 创 建 Java 程 序 编 译 和 运 行 Java 程 序 从 命 令 行 运 行 Java Application 在 Eclipse 中 调 试 提 示 : 在 学 习 完 第 一 章 后 使 用 本 教 程 第

More information

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF>

<4D6963726F736F667420576F7264202D20C8EDC9E82DCFC2CEE7CCE22D3039C9CF> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 考 试 2009 年 上 半 年 软 件 设 计 师 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 请 按 下 述 要 求 正 确 填 写 答 题 纸 1. 在 答 题 纸 的 指 定 位 置 填 写 你 所 在 的 省 自 治 区 直 辖 市 计 划 单 列 市 的 名 称 2. 在 答

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

1.3 最终效果图 : 2 内部布局代码 2.1 按键按钮代码 // 初始化计算器上键的按钮, 将键放在一个画板内 JPanel keypanel = new JPanel(); // 用网格布局器,4 行,5 列的网格, 网格之间的水平方向间隔为 3 个象素, 垂直方向间隔为 3 个象素 keyp

1.3 最终效果图 : 2 内部布局代码 2.1 按键按钮代码 // 初始化计算器上键的按钮, 将键放在一个画板内 JPanel keypanel = new JPanel(); // 用网格布局器,4 行,5 列的网格, 网格之间的水平方向间隔为 3 个象素, 垂直方向间隔为 3 个象素 keyp 计算器 1. 计算器上的键的显示名字 1.0 继承 JFrame 类 public class Calculate extends JFrame { 1.1 定义常量 计算器上的键的显示名字 public final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x",

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes (Swing) AWTEvent Font LayoutManager 1 Classes in the javax.swing package Heavyweight FontMetrics Object Color Panel Applet JApplet Graphics Component Container Window Frame JFrame * Dialog JDialog JComponent

More information

untitled

untitled 1 Outline ArrayList 類 列類 串類 類 類 例 理 MSDN Library MSDN Library 量 例 參 列 [ 說 ] [] [ 索 ] [] 來 MSDN Library 了 類 類 利 F1 http://msdn.microsoft.com/library/ http://msdn.microsoft.com/library/cht/ Object object

More information

Stateless Session Beans(无状态bean)的学习

Stateless Session Beans(无状态bean)的学习 一 Stateless Session Beans( 无状态 bean) 的学习 第一步 : 要定义一个会话 Bean, 首先需要定义一个包含他所有业务方法的接口 这个接口不需要任何注释, 就像普通的 java 接口那样定义 调用 EJB 的客户端通过使用这个接口引用从 EJB 容器得到的会话 Bean 对象 stub 接口的定义如下: HelloWorld.java package com.foshanshop.ejb3;

More information

手册 doc

手册 doc 1. 2. 3. 3.1 3.2 3.3 SD 3.4 3.5 SD 3.6 3.7 4. 4.1 4.2 4.3 SD 4.4 5. 5.1 5.2 5.3 SD 6. 1. 1~3 ( ) 320x240~704x288 66 (2G SD 320x2401FPS ) 32M~2G SD SD SD SD 24V DC 3W( ) -10~70 10~90% 154x44x144mm 2. DVR106

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

Struts2自定义类型转换.doc

Struts2自定义类型转换.doc Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter,

More information

2009年9月全国计算机等级考试二级Java真题及答案

2009年9月全国计算机等级考试二级Java真题及答案 2009 年 9 月 全 国 计 算 机 等 级 考 试 二 级 Java 真 题 及 答 案 [ 录 入 者 :NCRE100 时 间 :2009-10-08 19:41:34 作 者 : 来 源 :NCRE100.com 浏 览 :1421 次 ] 2009 年 9 月 全 国 计 算 机 等 级 考 试 二 级 笔 试 试 卷 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟,

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard

More information

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检

(6) 要 求 付 款 管 理 员 从 预 订 表 中 查 询 距 预 订 的 会 议 时 间 两 周 内 的 预 定, 根 据 客 户 记 录 给 满 足 条 件 的 客 户 发 送 支 付 余 款 要 求 (7) 支 付 余 款 管 理 员 收 到 客 户 余 款 支 付 的 通 知 后, 检 2016 年 上 半 年 软 件 设 计 师 考 试 真 题 ( 下 午 题 ) 下 午 试 题 试 题 一 ( 共 15 分 ) 阅 读 下 列 说 明 和 图, 回 答 问 题 1 至 问 题 4, 将 解 答 填 入 答 题 纸 的 对 应 栏 内 说 明 某 会 议 中 心 提 供 举 办 会 议 的 场 地 设 施 和 各 种 设 备, 供 公 司 与 各 类 组 织 机 构 租 用 场

More information

三种方法实现Hadoop(MapReduce)全局排序(1)

三种方法实现Hadoop(MapReduce)全局排序(1) 三种方法实现 Hadoop(MapReduce) 全局排序 () 三种方法实现 Hadoop(MapReduce) 全局排序 () 我们可能会有些需求要求 MapReduce 的输出全局有序, 这里说的有序是指 Key 全局有序 但是我们知道,MapReduce 默认只是保证同一个分区内的 Key 是有序的, 但是不保证全局有序 基于此, 本文提供三种方法来对 MapReduce 的输出进行全局排序

More information

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464>

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464> 第 1 章 进入 Photoshop 的全新世界 本章导读 Photoshop 1 1.1 Photoshop CS6 Photoshop Photoshop 1.1.1 Photoshop POP 1-1 图 1-1 平面广告效果 1.1.2 Photoshop 1-2 Photoshop CS6 Photoshop CS6 Photoshop CS6 Extended 3D 3 Photoshop

More information

IoC容器和Dependency Injection模式.doc

IoC容器和Dependency Injection模式.doc IoC Dependency Injection /Martin Fowler / Java Inversion of Control IoC Dependency Injection Service Locator Java J2EE open source J2EE J2EE web PicoContainer Spring Java Java OO.NET service component

More information

Microsoft PowerPoint - ch02

Microsoft PowerPoint - ch02 第 一 篇 基 礎 圖 文 動 畫 (Basic Graphics / Animation) 2 1 簡 介 2 2 Frame Class 2 3 執 行 緒 繪 圖 流 程 2 4 Font Class 2 5 Color Class 2 6 中 文 處 理 2 7 習 題 (Exercises) 第 二 章 文 字 繪 製 (Words) 2 1 簡 介 本 書 探 討 的 是 動 畫 遊 戲,

More information

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc

Microsoft Word - 在VMWare-5.5+RedHat-9下建立本机QTopia-2.1.1虚拟平台a.doc 在 VMWare-5.5+RedHat-9 下建立 本机 QTopia-2.1.1 虚拟平台 张大海 2008-5-9 一 资源下载 1. 需要以下安装包 : tmake-1.13.tar.gz qtopia-free-source-2.1.1.tar.gz qt-embedded-2.3.10-free.tar.gz qt-x11-2.3.2.tar.gz qt-x11-free-3.3.4.tar.gz

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

Learning Java

Learning Java Java Introduction to Java Programming (Third Edition) Prentice-Hall,Inc. Y.Daniel Liang 2001 Java 2002.2 Java2 2001.10 Java2 Philip Heller & Simon Roberts 1999.4 Java2 2001.3 Java2 21 2002.4 Java UML 2002.10

More information

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型

没 有 多 余 的 Contruol 或 Action 了 原 来 Domain 层 被 服 务 层 Service layer 遮 挡, 在 右 边 图 中, 则 Domain 层 直 接 暴 露 给 前 台 了, 没 有 被 遮 挡, 裸 露 了 这 样 一 步 到 位 实 现 领 域 模 型 文 章 编 号 :1007-757X(2012)1-0036-04 领 域 驱 动 模 型 的 WEB 软 件 系 统 设 计 研 究 摘 要 : J2EE 3 JDK1.7 Tomcat WEB 关 键 词 : 中 图 分 类 号 :TP311 文 献 标 志 码 :A 0 引 言 Web 软 件 系 统 的 分 层 结 构 典 型 的 J2EE 软 件 系 统 开 发 方 法 分 为 三 层 结

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information

图形学 Project 1 要求 多边形区域填充 ( 算法不限 ) 使用说明 例 1 第一步, 鼠标随意在界面中的画布上点击两次, 则两点间连一条直线 ; 第二步, 画第三个顶点时, 自动连结成为三角形 ; 第三步, 按顺序依次点击, 则按点击顺序形成多边形, 每次多边形变化时, 第一个点和最后

图形学 Project 1 要求 多边形区域填充 ( 算法不限 ) 使用说明 例 1 第一步, 鼠标随意在界面中的画布上点击两次, 则两点间连一条直线 ; 第二步, 画第三个顶点时, 自动连结成为三角形 ; 第三步, 按顺序依次点击, 则按点击顺序形成多边形, 每次多边形变化时, 第一个点和最后 图形学 Project 1 要求 多边形区域填充 ( 算法不限 ) 使用说明 例 1 第一步, 鼠标随意在界面中的画布上点击两次, 则两点间连一条直线 ; 第二步, 画第三个顶点时, 自动连结成为三角形 ; 第三步, 按顺序依次点击, 则按点击顺序形成多边形, 每次多边形变化时, 第一个点和最后 一个点自动连接起来 ; 第四步, 当感觉满意时, 单击 FILL, 则多边形内部就被填充了 例 2 单击

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

( 二 ) 具 体 目 标 课 程 教 学 目 标 具 体 体 现 为 专 业 技 能 专 业 素 质 和 专 业 知 识 三 方 面 的 目 标 (1) 专 业 技 能 目 标 1 能 运 用 面 向 对 象 程 序 设 计 的 思 想 分 析 和 设 计 类 ; 会 定 义 接 口, 并 能 有

( 二 ) 具 体 目 标 课 程 教 学 目 标 具 体 体 现 为 专 业 技 能 专 业 素 质 和 专 业 知 识 三 方 面 的 目 标 (1) 专 业 技 能 目 标 1 能 运 用 面 向 对 象 程 序 设 计 的 思 想 分 析 和 设 计 类 ; 会 定 义 接 口, 并 能 有 JAVA 程 序 设 计 课 程 标 准 课 程 代 码 0830110 课 程 性 质 适 用 专 业 软 件 技 术 中 软 软 件 职 业 专 项 能 力 必 修 课 建 议 学 时 10 建 议 教 学 实 施 方 式 教 学 做 一 体 化 教 学 制 定 单 位 学 校 常 州 信 息 职 业 技 术 学 院 制 定 日 期 013.3.0 执 笔 JAVA 课 程 组 企 业 常 州

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

Microsoft Word - 正文.doc

Microsoft Word - 正文.doc 第一部分基本实验 31 contentpane.add(p); setjmenubar(mb); // 将菜单项注册给事件监听者 File_Open.addActionListener(this); File_Close.addActionListener(this); File_Exit.addActionListener(this); Edit_Copy.addActionListener(this);

More information