第七届信息技术应用大赛Java组复赛A卷原题答案.docx
- 文档编号:6986164
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:12
- 大小:18.51KB
第七届信息技术应用大赛Java组复赛A卷原题答案.docx
《第七届信息技术应用大赛Java组复赛A卷原题答案.docx》由会员分享,可在线阅读,更多相关《第七届信息技术应用大赛Java组复赛A卷原题答案.docx(12页珍藏版)》请在冰点文库上搜索。
第七届信息技术应用大赛Java组复赛A卷原题答案
资料范本
本资料为word版本,可以直接编辑和打印,感谢您的下载
第七届信息技术应用大赛Java组复赛A卷原题答案
地点:
__________________
时间:
__________________
说明:
本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容
1、定义一个Student类,拥有姓名和托福成绩属性,编写一个程序,完成以下操作:
(1)把下列学生对象存放在一个链表中,姓名和托福成绩如下所示:
姓名:
“张小明”,“刘志强”,“李云环”,“孙志华”,“唐德凯”,“杜天”,“张禹”
托福成绩:
86,91,72,86,84,82,86
(2)输入一个新的学生对象,包含姓名和托福成绩,将新学生的托福成绩与链表对象进行对比,然后输出相同托福成绩的学生姓名,具体显示结果如下所示:
新学生——王琳的托福成绩(86)与下列学生:
张小明(86)
孙志华(86)
张禹(86)
的托福成绩相同
【分数】15分
importjava.util.Iterator;
importjava.util.LinkedList;
publicclassT1{
publicstaticvoidmain(String[]args){
LinkedList
list.add(newStudent("张小明",86));
list.add(newStudent("刘志强",91));
list.add(newStudent("李云环",72));
list.add(newStudent("孙志华",86));
list.add(newStudent("唐德凯",84));
list.add(newStudent("杜天",82));
list.add(newStudent("张属",86));
Studentstudent=newStudent("王琳",86);
Iterator
System.out.println("新学生——"+student.name+"的托福成绩("+student.score+")与下列学生");
while(it.hasNext()){
Studentstu=it.next();
if(stu.score==student.score){
System.out.println(stu.name+"("+stu.score+")");
}
}
System.out.println("的托福成绩相同");
}
}
classStudent{
Stringname;//学生姓名
intscore;//学生托福成绩
publicStudent(Stringname,intscore){
this.name=name;
this.score=score;
}
}
2、使用Java的应用编程接口,编写一个程序,实现显示当前日期和时间,并显示当月日历的效果。
在日历显示中,当前日期后加“*”突出,具体显示结果如下图所示:
【分数】15分
3、假设有一数组,包含12个整数,已经按升序排好。
请编写一个程序,使其能从指定位置开始的n(0 例如: 原数组为5,9,11,15,16,19,21,32,45,48,72,83,要求把从第5个数开始的4个数按逆 序重新排列,则得到的新数组为5,9,11,15,32,21,19,16,? 45,48,72,83。 【分数】15分 publicclassT3{ publicstaticvoidmain(String[]args){ int[]array=newint[]{5,9,11,15,16,19,21,32,45,48,72,83}; System.out.println("原数组为"); for(inti=0;i System.out.print(array[i]+"\t"); intstart=4;//指定位置 intn=5;//多少个数 for(inti=start-1;i for(intj=i+1;j if(array[i] inttemp=array[i]; array[i]=array[j]; array[j]=temp; } } System.out.println("\n得到新数组为"); for(inti=0;i System.out.print(array[i]+"\t"); } } 4、使用RandomAccessFile流,编程统计所给素材文件“NEWSPAPER.txt”中的英文单词出现的几种情况,具体要求如下: (1)统计出现的单词个数; (2)统计互不相同的单词数量; (3)统计每个单词出现的频率,并将这些单词按频率从大到小的顺序显示在一个TextArea中(频率相同的单词显示顺序无要求)。 程序运行效果如下图所示: 【分数】15分 importjava.awt.BorderLayout; importjava.awt.event.ActionEvent; importjava.awt.event.ActionListener; importjava.io.File; importjava.io.FileNotFoundException; importjava.io.IOException; importjava.io.RandomAccessFile; importjava.util.ArrayList; importjava.util.Collections; importjava.util.Comparator; importjava.util.HashMap; importjava.util.Iterator; importjava.util.List; importjava.util.Map; importjava.util.Set; importjavax.swing.JButton; importjavax.swing.JFrame; importjavax.swing.JTextArea; publicclassT4extendsJFrameimplementsActionListener{ Filefile=newFile("NEWSPAPER.txt"); RandomAccessFileraf=null; ArrayList HashMap Stringstr=null;//读取的一行文本 Stringstrs[]=null;//一行中单词数组 JButtonopen=newJButton("OpenFile"); JTextAreainfo=newJTextArea(""); publicT4(){ this.setSize(350,500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); open.addActionListener(this); this.setLocationRelativeTo(null); this.add(open,BorderLayout.NORTH); this.add(info,BorderLayout.CENTER); } publicstaticvoidmain(String[]args){ newT4(); } publicvoidactionPerformed(ActionEvente){ if(e.getSource()==open){ try{ raf=newRandomAccessFile(file,"rw"); while((str=raf.readLine())! =null){ strs=str.split("\\W|\\d"); for(inti=0;i if(strs[i].length()>0){ list.add(strs[i]); if(map.containsKey(strs[i])){ intvalue=map.get(strs[i]); map.put(strs[i],++value); }else{ map.put(strs[i],1); } } } } info.append(file.getPath()+"文本中共有"+list.size()+"个英文单词"); info.append("\n其中有"+map.size()+"个互不相同的单词"); Set Listlists=newArrayList(set); Collections.sort(lists, newComparator publicintcompare(Map.Entry Map.Entry //List returno2.getValue()-o1.getValue(); } }); Iterator while(its.hasNext()){ Map.Entry Stringkey=entry.getKey(); Integercount=entry.getValue(); info.append("\n"+key+": "+count+"/"+list.size() +"="+(float)count/list.size()); } }catch(FileNotFoundExceptionex){ ex.printStackTrace(); }catch(IOExceptionex){ ex.printStackTrace(); } } } } 5、用Socket编程实现客户端读取服务器端对象的交互过程,即客户端将服务器端的文本区(TextArea)对象读取到客户端,并添加到窗口中。 需要编程实现2个程序文件,一个是服务器端程序文件: Server.java,另一个是客户端程序文件: ClientA.java。 服务器端程序编译通过后,创建一个ServerSocket在端口4331监听客户请求,等待客户端呼叫,一旦接收到客户端请求,则启动一个新线程,输出一个文本区对象并发送到客户端,客户端接收服务器端传过来的文本区对象,并显示其内容。 【分数】20分 Client--> importjava.awt.BorderLayout; importjava.awt.TextArea; importjava.io.IOException; importjava.io.InputStream; import.Socket; importjavax.swing.JFrame; publicclassClientAextendsJFrame{ TextAreainfo=newTextArea(""); publicClientA(){ this.setVisible(true); this.setSize(350,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setLocationRelativeTo(null); this.add(info,BorderLayout.CENTER); client(); } publicvoidclient(){ try{ Socketclient=newSocket("127.0.0.1",4331); InputStreamis=client.getInputStream(); byte[]data=newbyte[1024]; while((is.read(data))! =-1){ info.append(newString(data)); } System.out.println("获取成功"); }catch(IOExceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args){ newClientA(); } } Server--> importjava.awt.BorderLayout; importjava.awt.TextArea; importjava.io.IOException; importjava.io.OutputStream; import.ServerSocket; import.Socket; importjavax.swing.JFrame; publicclassServerextendsJFrame{ ServerSocketserver=null; TextAreainfo=newTextArea("等待客户端的请求并把此信息发送给对方"); publicServer(){ this.setVisible(true); this.setSize(350,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setLocationRelativeTo(null); this.add(info,BorderLayout.CENTER); service(); } publicvoidservice(){ try{ server=newServerSocket(4331); while(true){ newSent(server,server.accept(),info.getText()).start(); System.out.println("成功与客户端连接"); } }catch(IOExceptionex){ ex.printStackTrace(); } } publicstaticvoidmain(String[]args){ newServer(); } } classSentextendsThread{ ServerSocketsev; Stringinfo; Socketsocket; publicSent(ServerSocketser,Socketsocket,Stringinfo){ this.sev=ser; this.socket=socket; this.info=info; } publicvoidrun(){ try{ OutputStreamout=socket.getOutputStream(); out.write(info.getBytes()); }catch(IOExceptionex){ ex.printStackTrace(); } } } 6、在Access2003中创建一个新数据库,名为员工库.mdb。 配置ODBC驱动源,连接到员工库上。 编写程序,使用JDBC-ODBC桥驱动程序,在Access数据库中创建员工表,并通过程序向表中插入如下数据。 表的结构和示例数据如下所示: 员工表: 使用Java语言编写程序,在员工库中创建员工表,插入上述3条记录,然后查询表数据并显示。 具体要求如下: (1)使用JDBC-ODBC桥驱动程序; (2)通过程序,在员工库中创建员工表,表结构如上所示; (3)通过程序读取表结构信息并显示; (4)使用PreparedStatement语句来插入3条记录; (5)查询出表中所有记录,并按照主键升序显示。 参考提示代码: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") Connectionconn=DriverManager.getConnection("jdbc: odbc: employees","","") 【分数】20分 importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.PreparedStatement; importjava.sql.ResultSet; importjava.sql.SQLException; importjava.sql.Statement; publicclassT6{ publicstaticConnectionconn; publicstaticvoidmain(String[]args)throwsClassNotFoundException, SQLException{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn=DriverManager.getConnection("jdbc: odbc: employees"); createTable(); Stringsql="insertintoemployeevalues(1001,'Jerry','jerry@',3000,'1982-05-18')"; insert(sql); sql="insertintoemployeevalues(1002,'Mike','Mike@',3400,'1985-08-18')"; insert(sql); sql="insertintoemployeevalues(1003,'John','John@',3200,'1982-09-18')"; insert(sql); sql="select*fromemployeeorderbyemloyee_idasc"; query(sql); } publicstaticvoidcreateTable()throwsSQLException{ Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); Stringsql="createtableemployee(emloyee_idIntegerprimarykey,namevarchar(10)notnull,emailvarchar(30),salaryInteger,dateDate)"; booleanresult=stmt.execute(sql); if(result) System.out.println("成功创建员工表"); else System.out.println("创建员工表失败"); } publicstaticvoidinsert(Stringsql)throwsSQLException{ PreparedStatementps=conn.prepareStatement(sql); intresult=ps.executeUpdate(); if(result>0) System.out.println("插入数据成功"); else System.out.println("插入数据成功"); } publicstaticvoidquery(Stringsql)throwsSQLException{ Statementstmt=conn.createStatement(); ResultSetrs=stmt.executeQuery(sql); System.out.println("员工号\t员工姓名\t员工邮箱\t员工工资\t员工生日"); while(rs.next()){ System.out.println(rs.getInt (1)+"\t"+rs.getString (2)+"\t" +rs.getString(3)+"\t"+rs.getInt(4)+"\t" +rs.getString(5)); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 信息技术 应用 大赛 Java 复赛 卷原题 答案