第七届信息技术应用大赛Java组复赛A卷原题答案Word格式文档下载.docx
《第七届信息技术应用大赛Java组复赛A卷原题答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《第七届信息技术应用大赛Java组复赛A卷原题答案Word格式文档下载.docx(12页珍藏版)》请在冰点文库上搜索。
![第七届信息技术应用大赛Java组复赛A卷原题答案Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/10/f8eb6679-e99c-4025-ac07-72f02d82ee6a/f8eb6679-e99c-4025-ac07-72f02d82ee6a1.gif)
刘志强"
91));
李云环"
72));
孙志华"
唐德凯"
84));
杜天"
82));
张属"
Studentstudent=newStudent("
王琳"
86);
Iterator<
it=list.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+"
)"
}
的托福成绩相同"
classStudent{
Stringname;
//学生姓名
intscore;
//学生托福成绩
publicStudent(Stringname,intscore){
this.name=name;
this.score=score;
2、使用Java的应用编程接口,编写一个程序,实现显示当前日期和时间,并显示当月日历的效果。
在日历显示中,当前日期后加“*”突出,具体显示结果如下图所示:
3、假设有一数组,包含12个整数,已经按升序排好。
请编写一个程序,使其能从指定位置开始的n(0<
n<
12)个数按逆序重新排列并输出新的完整数组。
例如:
原数组为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。
publicclassT3{
publicstaticvoidmain(String[]args){
int[]array=newint[]{5,9,11,15,16,19,21,32,45,48,72,83};
原数组为"
for(inti=0;
i<
array.length;
i++)
System.out.print(array[i]+"
\t"
intstart=4;
//指定位置
intn=5;
//多少个数
for(inti=start-1;
start+n-1;
for(intj=i+1;
j<
j++){
if(array[i]<
array[j]){
inttemp=array[i];
array[i]=array[j];
array[j]=temp;
\n得到新数组为"
4、使用RandomAccessFile流,编程统计所给素材文件“NEWSPAPER.txt”中的英文单词出现的几种情况,具体要求如下:
(1)统计出现的单词个数;
(2)统计互不相同的单词数量;
(3)统计每个单词出现的频率,并将这些单词按频率从大到小的顺序显示在一个TextArea中(频率相同的单词显示顺序无要求)。
程序运行效果如下图所示:
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.List;
importjava.util.Map;
importjava.util.Set;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JTextArea;
publicclassT4extendsJFrameimplementsActionListener{
Filefile=newFile("
NEWSPAPER.txt"
RandomAccessFileraf=null;
ArrayList<
String>
list=newArrayList<
HashMap<
String,Integer>
map=newHashMap<
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);
newT4();
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==open){
try{
raf=newRandomAccessFile(file,"
rw"
while((str=raf.readLine())!
=null){
strs=str.split("
\\W|\\d"
strs.length;
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<
Map.Entry<
>
set=map.entrySet();
Listlists=newArrayList(set);
Collections.sort(lists,
newComparator<
(){
publicintcompare(Map.Entry<
o1,
o2){
//List
returno2.getValue()-o1.getValue();
});
its=lists.iterator();
while(its.hasNext()){
entry=its.next();
Stringkey=entry.getKey();
Integercount=entry.getValue();
\n"
+key+"
:
+count+"
/"
+list.size()
+"
="
+(float)count/list.size());
}catch(FileNotFoundExceptionex){
ex.printStackTrace();
}catch(IOExceptionex){
5、用Socket编程实现客户端读取服务器端对象的交互过程,即客户端将服务器端的文本区(TextArea)对象读取到客户端,并添加到窗口中。
需要编程实现2个程序文件,一个是服务器端程序文件:
Server.java,另一个是客户端程序文件:
ClientA.java。
服务器端程序编译通过后,创建一个ServerSocket在端口4331监听客户请求,等待客户端呼叫,一旦接收到客户端请求,则启动一个新线程,输出一个文本区对象并发送到客户端,客户端接收服务器端传过来的文本区对象,并显示其内容。
【分数】20分
Client-->
importjava.awt.TextArea;
importjava.io.InputStream;
import.Socket;
publicclassClientAextendsJFrame{
TextAreainfo=newTextArea("
publicClientA(){
this.setSize(350,300);
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));
获取成功"
}catch(IOExceptione){
e.printStackTrace();
publicstaticvoidmain(String[]args){
newClientA();
Server-->
importjava.io.OutputStream;
import.ServerSocket;
publicclassServerextendsJFrame{
ServerSocketserver=null;
TextAreainfo=newTextArea("
等待客户端的请求并把此信息发送给对方"
publicServer(){
service();
publicvoidservice(){
server=newServerSocket(4331);
while(true){
newSent(server,server.accept(),info.getText()).start();
成功与客户端连接"
newServer();
classSentextendsThread{
ServerSocketsev;
Stringinfo;
Socketsocket;
publicSent(ServerSocketser,Socketsocket,Stringinfo){
this.sev=ser;
this.socket=socket;
this.info=info;
publicvoidrun(){
OutputStreamout=socket.getOutputStream();
out.write(info.getBytes());
}catch(IOExceptionex){
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"
"
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{
conn=DriverManager.getConnection("
createTable();
Stringsql="
insertintoemployeevalues(1001,'
Jerry'
'
jerry@'
3000,'
1982-05-18'
;
insert(sql);
sql="
insertintoemployeevalues(1002,'
Mike'
Mike@'
3400,'
1985-08-18'
insertintoemployeevalues(1003,'
John'
John@'
3200,'
1982-09-18'
select*fromemployeeorderbyemloyee_idasc"
query(sql);
publicstaticvoidcreateTable()throwsSQLException{
Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
createtableemployee(emloyee_idIntegerprimarykey,namevarchar(10)notnull,emailvarchar(30),salaryInteger,dateDate)"
booleanresult=stmt.execute(sql);
if(result)
成功创建员工表"
else
创建员工表失败"
publicstaticvoidinsert(Stringsql)throwsSQLException{
PreparedStatementps=conn.prepareStatement(sql);
intresult=ps.executeUpdate();
if(result>
0)
插入数据成功"
publicstaticvoidquery(Stringsql)throwsSQLException{
Statementstmt=conn.createStatement();
ResultSetrs=stmt.executeQuery(sql);
员工号\t员工姓名\t员工邮箱\t员工工资\t员工生日"
while(rs.next()){
System.out.println(rs.getInt
(1)+"
+rs.getString
(2)+"
+rs.getString(3)+"
+rs.getInt(4)+"
+rs.getString(5));