这周写了个java版的员工管理项目,练习io流的知识点。
io流的实用之处就是把临时信息永久化,内容主要是对于程序中的信息进行分析,归类,储存,也可以把其他文件信息读入程序,是内存与硬盘数据的交互。。。。。
说人话就是,可以读写了,这个项目让我扎实了很多知识点,例如需要保存的员工信息暂时保存在哪里,
我这里直接声明了几个长度为100的数组。`
class InforMation {
public static int i=1;
public static int []sum=new int[100];
public static String []name=new String[100];
public static int [] age=new int[100];
public static String []PhoneNumber=new String[100];
public static String []Address=new String[100];
}
java中只有静态的才是一个,不会变动的,否则就是new一个对象要在堆内存中创建个新的对象了。
注意到我这里是有int数组的,这个int数组后面可麻烦了。。。。如果写入txt文件用字符流需要多很多次转换,就很费事,以这个age数组为例,应该直接用上string数组的,不过用Integer.toString可以转成string写入文件,有人可能会说这不是脱裤子放屁么?。。。。确实是这样的。
同样写入我用的Integer.toString,读入我又得转成int类型了,这里用到的方法是Integer.parseInt方法,可以把string转化成int数据类型。
我每次添加修改员工信息就是,写入到一个临时的文件中,充当保存数据的作用,而读入数据是在系统登录成功后开始读取,避免没登陆上就开始读取浪费性能。
class UserOperation {
public UserOperation() {
try {
BufferedReader bw=new BufferedReader(new FileReader("i.txt"));
try {
InforMation.i=Integer.parseInt(bw.readLine());
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int a=0;
try {
BufferedReader ba=new BufferedReader(new FileReader("Employee information.txt"));
String tempin=null;
while ((tempin= ba.readLine())!=null){
String tempstring[]=tempin.split(",");
InforMation.name[a]=tempstring[0];
InforMation.age[a]=Integer.parseInt(tempstring[1]);
InforMation.PhoneNumber[a]=tempstring[2];
InforMation.Address[a]=tempstring[3];
a++;
}
ba.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("1,修改管理员密码");
System.out.println("2,查询员工");
System.out.println("3,添加员工");
System.out.println("4,导入员工信息(文件.txt)");
System.out.println("5,导出员工信息(文件.txt)");
System.out.println("6,修改员工信息");
System.out.println("7,退出程序");
System.out.println("(本程序切记要正常退出,否则会出现令你匪夷所思的bug)");
Scanner reader = new Scanner(System.in);
int choose = reader.nextInt();
switch (choose) {
case 1:
new SetAdmin();
break;
case 2:
new ChooseMan();
break;
case 3:
new AddMan();
break;
case 4:
new InputTxtMan();
break;
case 5:
new OutputMan();
break;
case 6:
new SetMan();
case 7:
new Esc();
break;
default:
System.out.println("抱歉没有匹配的对象");
break;
}
}
}
总之写的很拉,还有很多进步的空间,尤其是用户输入的内容判断,应该在判断数据符合输入规则后再读入程序,否则胡乱读入的话会使程序的稳定性大大降低,学习之路还有很长,加油吧!!!