java基础的综合应用(类的应用,文本拷贝,IO流,数组,集合,文件文件夹的创建)

来源:互联网 发布:网络视频传输套接字 编辑:程序博客网 时间:2024/06/16 06:32
题目:1、设计一个学生类Student (5分)
· 属性:姓名,年龄,性别,成绩(double),学号
· 属性全部私有化,并提供访问方法
· 重写toString()

2、将你拿到的score.txt从桌面上用代码拷贝到工程的根目录下(5分)

3、读取工程根目录的score.txt中的数据,并将数据存入集合 ArrayList<Student> 中 (5分)

4、以学号为键,以姓名为值,存入一个HashMap<String, String>中,并遍历输出这个Map中的所有的元素 (5分)

5、你拿到成绩后,起了点歪心思,想去修改这个集合中的内容 (8分)
5.1 将 “周杰伦” 的姓名改为 “小公举”,并将他的成绩修改为80分
5.2 林志玲的性别是女的
5.3 把所有人的学号中的2都换成6
5.4 把修改后的集合中的内容输出

6、将修改后的集合中的学生按照成绩从高到低进行排序,成绩相同的按照学号从小到大排序(7分)

7、判断项目根目录下有没有result文件夹,如果没有,用代码新建一个文件夹。并将最后的ArrayList<Student>中的内容写入result/score-new.txt中 (5分)

资料

学号:JY2016020,姓名:周杰伦,性别:男,成绩:60.0
学号:JY2016085,姓名:林志玲,性别:男,成绩:75.0
学号:JY2016504,姓名:张全蛋,性别:女,成绩:73.0
学号:JY2016009,姓名:岳云鹏,性别:男,成绩:80.0
学号:JY2016775,姓名:Papi酱,性别:女,成绩:75.0
学号:JY2016325,姓名:刘静,性别:女,成绩:100.0
学号:JY2016560,姓名:尼古拉斯·赵四,性别:男,成绩:90.0
学号:JY2016802,姓名:AngleBaby,性别:女,成绩:85.0



解析:

import java.io.*;
import java.util.*;
/*
 * 设计一个学生类Student (5分)
· 属性:姓名,年龄,性别,成绩(double),学号
· 属性全部私有化,并提供访问方法
· 重写toString()
 */




class Student implements Comparable<Student>
{
private String name;
private int age;
private char gender;
private double grade;
private String id;

public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}

public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}

public void setGender(char gender)
{
this.gender=gender;
}
public char getGender()
{
return gender;
}

public void setGrade(double grade)
{
this.grade=grade;
}
public double getGrade()
{
return grade;
}

public void setId(String id)
{
this.id=id;
}
public String getId()
{
return id;
}
@Override
public String toString() 
{
return "Student [name=" + name +  ", gender=" + gender + ", grade=" + grade + ", id=" + id
+ "]";
}
@Override
public int compareTo(Student o) {
//return 0;
if(o.grade==this.grade)
{
int result=this.id.compareTo(o.id);
return result;
//return this.id-o.id;
}
else if( o.grade>this.grade) return 1;
else return -1; 
}
//public void setGender(String string, String string2) {

//}
public Student next() {
return null;
}

/*
@Override
public int compareTo(Student o) 
{
if(this.grade==o.grade)
{
return this.id-o.id;
}
else if(this.grade > o.grade) return 1;
else return -1; 
}
}
*/
}




public class TestKaoshi 
{
public static void main(String[] args)
{
CopyTools.copy("C:/Users/Administrator/Desktop/考试题/score.txt", "src/Test/score.txt");

/*
 * 读取工程根目录的score.txt中的数据,并将数据存入集合 ArrayList<Student> 中
 */
ArrayList<Student> list=new ArrayList<>();
HashMap<String, String> map= new HashMap<>();
//Student s=new Student();

File file=new File("src/Kaoshi/score.txt");

BufferedReader reader=null;


try
{
reader=new BufferedReader(new FileReader(file));

String str=null;
while((str=reader.readLine())!=null)
{
Student ss=new Student();
String [] str1=str.split(",");
for (int i = 0; i < str1.length; i++)
{
String[] str2=str1[i].split(":");
if ("学号".equals(str2[0]))
{
ss.setId(str2[1]);
}
else if("姓名".equals(str2[0]))
{
ss.setName(str2[1]);
}
else if("性别".equals(str2[0]))
{
ss.setGender(str2[1].charAt(0));
}
else 
{
ss.setGrade(Double.parseDouble(str2[1].substring(0, str2[1].length()-1)));
//s.setgrade(str2[1]);
}
}    
list.add(ss);
//map.put(s.getId(),s.getName());
}


System.out.println(list);
// System.out.println(map);
}


catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}

/*
 * 以学号为键,以姓名为值,存入一个HashMap<String, String>中,并遍历输出这个Map中的所有的元素
 */
//ArrayList<Student> list = new ArrayList<>();

        for (Student student:list ) 
        {
            map.put(student.getId(),student.getName());
        }
        Set<Map.Entry<String, String>> set = map.entrySet();
        for (Map.Entry<String, String> entry: set) 
{
//String key = entry.getKey();
//String value = entry.getValue();
//System.out.println(key + " = " + value);
System.out.println(entry.getKey()+","+entry.getValue());
}

/*
 * 你拿到成绩后,起了点歪心思,想去修改这个集合中的内容 (8分)
5.1 将 “周杰伦” 的姓名改为 “小公举”,并将他的成绩修改为80分
5.2 林志玲的性别是女的
5.3 把所有人的学号中的2都换成6
5.4 把修改后的集合中的内容输出
 */
        
        ListIterator<Student> it=list.listIterator();
Student s1=new Student();
        while (it.hasNext()) {
                s1= it.next();
                if ("周杰伦".equals(s1.getName())) {
                    s1.setName("小公举");
                    s1.setGrade(80);
                }
                if ("林志玲".equals(s1.getName())) {
                    s1.setGender('女');
                }
                if (s1.getId().contains("2")) {
                    s1.setId(s1.getId().replace("2", "6"));
                }
                System.out.println(s1.toString());
        }

/*
 * 将修改后的集合中的学生按照成绩从高到低进行排序,成绩相同的按照学号从小到大排序
 */
        TreeSet<Student> tmp = new TreeSet<>();
tmp.addAll(list);

list.clear();

list.addAll(tmp);

System.out.println(list);
        
        
        
        
/*
 * 判断项目根目录下有没有result文件夹,如果没有,用代码新建一个文件夹。并将最后的ArrayList<Student>中的内容写入result/score-new.txt中 (5分)
 */
        
        File f= new File("result");
        if (!(f.exists())) 
        {
            f.mkdir();
        }
        File file2 =new File("src/Test/score-new.txt");
        BufferedWriter writer=null;
try 
{
writer = new BufferedWriter(new FileWriter(file2));
for(Student sss:list) 
        {
        writer.write("学号:"+sss.getId());
        writer.write(",");
       
        writer.write("姓名:"+sss.getName());
        writer.write(",");
       
        writer.write("性别:"+sss.getGender());
        writer.write(",");
        writer.write("成绩:"+sss.getGrade());
        writer.newLine();
        writer.flush();
        }
System.out.println("书写完成");


catch (IOException e) 
{
e.printStackTrace();
}
finally
{
try 
{
writer.close();

catch (IOException e) 
{
e.printStackTrace();
}

}
       
        
        
        




}

}
/*
 * 将你拿到的score.txt从桌面上用代码拷贝到工程的根目录下
 */
class CopyTools 
{
static void copy(String source, String target)
{
BufferedInputStream in=null;
BufferedOutputStream out=null;
File sourcefile=new File(source);
File targetfile=new File(target);

try
{
in=new BufferedInputStream(new FileInputStream(sourcefile));
out=new BufferedOutputStream(new FileOutputStream(targetfile));

byte[] contents=new byte[1024];
int length=0;
while((length=in.read(contents))!=-1)
{

out.write(contents,0,length);
out.flush();

}

System.out.println("拷贝完成");


}
catch(FileNotFoundException e)
{
e.printStackTrace();

catch (IOException e) 
{
e.printStackTrace();
}
finally
{
try 
{
in.close();
out.close();

catch (IOException e) 
{
e.printStackTrace();
}
}
}
}

0 0
原创粉丝点击