java实验报告流与文件_第1页
java实验报告流与文件_第2页
java实验报告流与文件_第3页
java实验报告流与文件_第4页
java实验报告流与文件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成绩:面向对象原理与Java实践课程试验汇报试验4:流与文件姓名___班级学号试验地点试验时间指导教师____一、试验目标:熟悉流基本操作掌握文件读写方法二、试验要求:能够对文本流进行读写操作程序中要有适当数据正当性校验编写程序完成以下试验内容并上交试验汇报三、试验内容:1、编写程序,使其能列出用户在命令行参数中指定目录下文件。深入将其改进为能够列出指定目录及其全部子目录下文件。2、在试验1基础上用文件实现统计存放访问。说明:用文件实现统计存放访问方式较多,可考虑用文本文件一行存放统计一个属性或用一行存放一条统计(属性之间用分隔符隔开),也可考虑使用数据文件和读写对象方式存放与访问统计,还可考虑用RandomAccessFile类实现统计存放访问等等,提议多做尝试。附试验1:设计并实现一个“广石化院电信学院学生通信录”系统。系统采取字符界面,在出现主界面中按提醒输入对应字符以选择“增加”、“删除”、“修改”、“查找”等功效进行操作(其中“查找”功效除能够查找某个学生信息之外,还能够显示全部学生信息)。四、设计思绪:在试验1基础上,将原来使用对象数组来存放学生通讯录信息方式改为使用数据文件和读写对象方式存放,其余就跟原本保持一致。五、程序源代码:packagepkg_TXL;importjava.util.Scanner;publicclassZhuJieMian{ /** * *该类为通讯录系统主界面提供主要功效显示,以及负责主菜单与子菜单正常跳转 */ publicstaticvoidmain(String[]args) { //TODOAuto-generatedmethodstub System.out.println("欢迎使用广石化电信学院通讯录系统!"); ZhuJieMian:for(intexit=0;exit==0;)//exit为退出主菜单指示变量,0为不退出,非0为退出 { System.out.println(); System.out.println("************************************"); System.out.println("****************主菜单****************"); System.out.print("1。查询学生信息\t\t"); System.out.println("2。新增学生信息"); System.out.print("3。修改学生信息\t\t"); System.out.println("4。删除学生信息"); System.out.print("5。恢复已被删除信息\t\t"); System.out.println("6。退出"); System.out.println("************************************"); System.out.println("************************************"); System.out.print("请选择你要操作功效序号:"); Scannerscn_input=newScanner(System.in); StringXuHao=scn_input.next(); System.out.println(); if(XuHao.equals("1"))//二级菜单——查询学生信息 { select:for(intexit2=0;exit2==0;)//exit为退出二级菜单指示变量,0为不退出,非0为退出 { System.out.println("***************************************************************"); System.out.println("************************二级菜单——查询学生信息************************"); System.out.println("***************************************************************"); System.out.println(); System.out.print("请输入要查找关键字(包含专业,班级,姓名等等),输入“all”显示全部信息,输入“back”返回主菜单:"); Stringstr_KeyWord=scn_input.next(); System.out.println(); if(str_KeyWord.equals("all")) { System.out.println(); System.out.println("************************学生通讯录信息************************"); XueShengXinXi.Show(Stu); System.out.println(); System.out.println(); continueselect; } elseif(str_KeyWord.equals("back")) { continueZhuJieMian; } else { int[]index=XueShengXinXi.Select(str_KeyWord,Stu); if(index[0]==0) { System.out.println("抱歉,没有找到关于“"+str_KeyWord+"”学生信息!"); System.out.println(); continueselect; } else { System.out.println("************************学生通讯录信息************************"); XueShengXinXi.Show(Stu,index); System.out.println(); System.out.println(); continueselect; } } } } elseif(XuHao.equals("2"))//二级菜单——新增学生信息 { insert:for(intexit3=0;exit3==0;) { System.out.println(); System.out.println("***************************************************************"); System.out.println("************************二级菜单——新增学生信息************************"); System.out.println("***************************************************************"); System.out.println(); System.out.println("请按右边格式输入新增学生专业/班级/姓名/性别/电话/地址信息(前3项信息必填),输入“back”返回主菜单:"); Stringstr_Stu=scn_input.next(); if(str_Stu.equals("")) { System.out.println("输入有误,请重新输入!"); continueinsert; } elseif(str_Stu.equals("back")) { System.out.println(); continueZhuJieMian; } else { booleanzuoFei=XueShengXinXi.Insert(Stu,str_Stu); if(zuoFei==true) { System.out.println(); System.out.println("因为学生信息必填项信息缺失,所以新增失败。返回至二级菜单..."); System.out.println(); continueinsert; } else { System.out.println(); System.out.println("新增成功!返回至二级菜单..."); System.out.println(); continueinsert; } } //exit3=1; } } elseif(XuHao.equals("3"))//二级菜单——修改学生信息 { System.out.println("***************************************************************"); System.out.println("************************二级菜单——修改学生信息************************"); System.out.println("***************************************************************"); System.out.println(); System.out.println("************************学生通讯录信息************************"); XueShengXinXi.Show(Stu); //System.out.println(); update:for(intexit4=0;exit4==0;)//exit为退出二级菜单指示变量,0为不退出,非0为退出 { System.out.println(); System.out.print("请输入要修改学生前序号(每次只能输入一个),输入“back”返回主菜单:"); Stringstr_XuHao=scn_input.next(); System.out.println(); if(str_XuHao.equals("back")) { System.out.println(); continueZhuJieMian; } else { int[]id=XueShengXinXi.Str_Int(Stu,str_XuHao,false); if(id[0]<Stu.length&id[0]!=0) { System.out.println(); //intindex=XueShengXinXi.Select_index(Stu,id[0]); System.out.println("该学生信息以下:"); System.out.print(Stu[id[0]].str_ZhuanYe+"/"+Stu[id[0]].str_BanJi+"/"); System.out.print(Stu[id[0]].str_XingMing+"/"+Stu[id[0]].str_XingBie+"/"); System.out.println(Stu[id[0]].str_DianHua+"/"+Stu[id[0]].str_DiZhi); System.out.println("请按以上格式输入修改后信息(某一项无修改话,则不用输入):"); Stringstr_Stu=scn_input.next(); XueShengXinXi.Update(Stu[id[0]],str_Stu); System.out.println("修改成功!已返回二级菜单"); System.out.println(); System.out.println("***************************************************************"); System.out.println("************************二级菜单——修改学生信息************************"); System.out.println("***************************************************************"); System.out.println(); System.out.println("************************学生通讯录信息************************"); XueShengXinXi.Show(Stu); continueupdate; } else { System.out.println("输入有误!已返回至二级菜单"); continueupdate; } } //exit4=1; } } elseif(XuHao.equals("4"))//二级菜单——删除学生信息 { System.out.println("***************************************************************"); System.out.println("************************二级菜单——删除学生信息************************"); System.out.println("***************************************************************"); System.out.println(); System.out.println("************************学生通讯录信息************************"); XueShengXinXi.Show(Stu); delete:for(intexit5=0;exit5==0;)//exit为退出二级菜单指示变量,0为不退出,非0为退出 { System.out.println(); //System.out.println("************二级菜单——删除学生信息************"); System.out.print("请输入要删除学生信息前序号(输入多个序号时用/隔开),输入“all”删除全部信息,输入“back”返回主菜单:"); Stringstr_xuHao=scn_input.next(); System.out.println(); if(str_xuHao.equals("back")) { System.out.println(); continueZhuJieMian; } elseif(str_xuHao.equals("all")) { XueShengXinXi.Delete_All(Stu); System.out.println("全部数据已被删除,已返回主菜单。。。。。。"); //XueShengXinXi.Show(Stu); continueZhuJieMian; } else { int[]id=XueShengXinXi.Str_Int(Stu,str_xuHao,false); if(id[0]<Stu.length) { //System.out.println(); XueShengXinXi.Delete_index(Stu,id); //System.out.println("删除成功!已返回二级菜单"); System.out.println(); System.out.println("***************************************************************"); System.out.println("************************二级菜单——删除学生信息************************"); System.out.println("***************************************************************"); System.out.println(); System.out.println(); System.out.println("************************学生通讯录信息************************"); XueShengXinXi.Show(Stu); continuedelete; } else { System.out.println("输入有误!已返回至二级菜单"); continuedelete; } } //exit5=1; } } elseif(XuHao.equals("5"))//二级菜单——恢复已被删除信息 { System.out.println("***************************************************************"); System.out.println("**********************二级菜单——恢复已被删除信息***********************"); System.out.println("***************************************************************"); System.out.println(); System.out.println("**************************回收站信息**************************"); booleanbol=XueShengXinXi.Show_Del(Stu); if(bol==true) { System.out.println(); System.out.println("回收站为空,现在没有被删除信息!已返回至主菜单。。。。。。"); continueZhuJieMian; } else { recover:for(intexit6=0;exit6==0;)//exit为退出二级菜单指示变量,0为不退出,非0为退出 { System.out.println(); //System.out.println("************二级菜单——删除学生信息************"); System.out.print("请输入要恢复信息序号(输入多个序号时用/隔开),输入“all”恢复全部信息,输入“back”返回主菜单:"); Stringstr_xuHao=scn_input.next(); System.out.println(); if(str_xuHao.equals("back")) { System.out.println(); continueZhuJieMian; } elseif(str_xuHao.equals("all")) { XueShengXinXi.Recover_All(Stu); System.out.println("全部恢复完成!已返回主菜单。。。。。。"); continueZhuJieMian; } else { int[]id=XueShengXinXi.Str_Int(Stu,str_xuHao,true); if(id[0]<Stu.length) { //System.out.println(); XueShengXinXi.Recover_index(Stu,id); //System.out.println("删除成功!已返回二级菜单"); System.out.println(); System.out.println("***************************************************************"); System.out.println("**********************二级菜单——恢复已被删除信息***********************"); System.out.println("***************************************************************"); System.out.println(); System.out.println(); System.out.println("**************************回收站信息**************************"); XueShengXinXi.Show_Del(Stu); continuerecover; } else { System.out.println("输入有误!已返回至二级菜单"); continuerecover; } } } } } elseif(XuHao.equals("6")) { breakZhuJieMian; } else { System.out.println("输入有误,已返回主菜单!"); System.out.println(); continueZhuJieMian; } //exit=1; } }}packagepkg_TXL;publicclassXueShengXinXi{ Stringstr_ZhuanYe=""; Stringstr_BanJi=""; //Stringstr_XueHao=""; Stringstr_XingMing=""; Stringstr_XingBie=""; Stringstr_DianHua=""; Stringstr_DiZhi=""; Booleanbol_ZuoFei=true; //Stringstr_ID=""; intint_ID=0; XueShengXinXi(){} //有参结构方法 publicXueShengXinXi(StringZhuanYe,StringBanJi,StringXingMing,StringXingBie,StringDianHua,StringDiZhi) { str_ZhuanYe=ZhuanYe; str_BanJi=BanJi; str_XingMing=XingMing; str_XingBie=XingBie; str_DianHua=DianHua; str_DiZhi=DiZhi; bol_ZuoFei=false; } //新增学生信息函数 publicstaticbooleanInsert(XueShengXinXi[]stu,Stringstr_stu) { inti=0; for(;i<stu.length;i++) { if(stu[i].bol_ZuoFei==true) { break; } } stu[i].str_ZhuanYe=""; stu[i].str_BanJi=""; stu[i].str_XingMing=""; stu[i].str_XingBie=""; stu[i].str_DianHua=""; stu[i].str_DiZhi=""; intk=0; for(intj=1;j<=str_stu.length();j++) { if(str_stu.substring(j-1,j).equals("/")) { k+=1; //index=j; } else { //System.out.println(k); if(k==0) { //stu[i].str_ZhuanYe=str_stu.substring(index,j); stu[i].str_ZhuanYe=stu[i].str_ZhuanYe+str_stu.substring(j-1,j); } elseif(k==1) { //stu[i].str_BanJi=str_stu.substring(index,j); stu[i].str_BanJi=stu[i].str_BanJi+str_stu.substring(j-1,j); } elseif(k==2) { //stu[i].str_XingMing=str_stu.substring(index,j); stu[i].str_XingMing=stu[i].str_XingMing+str_stu.substring(j-1,j); } elseif(k==3) { //stu[i].str_XingBie=str_stu.substring(index,j); stu[i].str_XingBie=stu[i].str_XingBie+str_stu.substring(j-1,j); } elseif(k==4) { //stu[i].str_DianHua=str_stu.substring(index,j); stu[i].str_DianHua=stu[i].str_DianHua+str_stu.substring(j-1,j); } elseif(k==5) { //stu[i].str_DiZhi=str_stu.substring(index,j); stu[i].str_DiZhi=stu[i].str_DiZhi+str_stu.substring(j-1,j); } } } if(stu[i].str_ZhuanYe.equals("")|stu[i].str_BanJi.equals("")|stu[i].str_XingMing.equals("")) { stu[i].bol_ZuoFei=true; stu[i].str_ZhuanYe=""; stu[i].str_BanJi=""; stu[i].str_XingMing=""; stu[i].str_XingBie=""; stu[i].str_DianHua=""; stu[i].str_DiZhi=""; } else { stu[i].bol_ZuoFei=false; } returnstu[i].bol_ZuoFei; } publicstaticvoidShow(XueShengXinXi[]stu)//格式化输出全部学生信息 { int[]col=newint[6];//定义六个int类型变量,分别存放六列宽度 for(intx=0;x<col.length;x++) { col[x]=0; } for(intj=0;j<stu.length;j++)//第一步,获取全部列最大宽度 { if(stu[j].str_ZhuanYe.length()>col[0]&stu[j].bol_ZuoFei==false) { col[0]=stu[j].str_ZhuanYe.length(); } if(stu[j].str_BanJi.length()>col[1]&stu[j].bol_ZuoFei==false) { col[1]=stu[j].str_BanJi.length(); } if(stu[j].str_XingMing.length()>col[2]&stu[j].bol_ZuoFei==false) { col[2]=stu[j].str_XingMing.length(); } if(stu[j].str_XingBie.length()>col[3]&stu[j].bol_ZuoFei==false) { col[3]=stu[j].str_XingBie.length(); } if(stu[j].str_DianHua.length()>col[4]&stu[j].bol_ZuoFei==false) { col[4]=stu[j].str_DianHua.length(); } if(stu[j].str_DiZhi.length()>col[5]&stu[j].bol_ZuoFei==false) { col[5]=stu[j].str_DiZhi.length(); } } for(inti=0;i<col.length;i++)//第二步,将最大宽度加上6,得到实际宽度 { col[i]=col[i]+6; } for(intk=0;k<stu.length;k++)//第三步,将实际宽度减去字符长度得到空字符长度 { //stu[k].ID=""+k; //stu[k].str_ID=Integer.toString(k); stu[k].int_ID=k; //System.out.println(stu[k].ID); if(k==0) { System.out.print("\t"+GetSpace(stu[k].str_ZhuanYe,col[0])); System.out.print(GetSpace(stu[k].str_BanJi,col[1])); System.out.print(GetSpace(stu[k].str_XingMing,col[2])); System.out.print(GetSpace(stu[k].str_XingBie,col[3])); System.out.print(GetSpace(stu[k].str_DianHua,col[4])); System.out.println(GetSpace(stu[k].str_DiZhi,col[5])); //for(intl=0;l<col[0]+col[1]+col[2]+col[3]+col[4]+col[5]+5;l++) //{ //System.out.print("—"); //} for(intl=0;l<6*4;l++) { System.out.print("————"); } System.out.println("———————"); } elseif(k>0&k<10&stu[k].bol_ZuoFei==false) { System.out.print(k+"\t"+GetSpace(stu[k].str_ZhuanYe,col[0])); System.out.print(GetSpace(stu[k].str_BanJi,col[1])); System.out.print(GetSpace(stu[k].str_XingMing,col[2])); System.out.print(GetSpace(stu[k].str_XingBie,col[3])); System.out.print(GetSpace(stu[k].str_DianHua,col[4])); System.out.println(GetSpace(stu[k].str_DiZhi,col[5])); } elseif(k>=10&stu[k].bol_ZuoFei==false) { System.out.print(k+"\t"+GetSpace(stu[k].str_ZhuanYe,col[0])); System.out.print(GetSpace(stu[k].str_BanJi,col[1])); System.out.print(GetSpace(stu[k].str_XingMing,col[2])); System.out.print(GetSpace(stu[k].str_XingBie,col[3])); System.out.print(GetSpace(stu[k].str_DianHua,col[4])); System.out.println(GetSpace(stu[k].str_DiZhi,col[5])); } } } privatestaticStringGetSpace(Stringstr,intlen)//依照每个字符不一样加制表符 { /*Stringspace=""; if(len>=str.length()) { for(inti=0;i<len-str.length();i++) { space=space+""; } returnstr+'\t'+'\t'; } else { returnstr; }*/ returnstr+'\t'+'\t'; } publicstaticint[]Select(Stringkeyword,XueShengXinXi[]stu)//依照关键字查询学生信息,并返回结果数组索引值 { int[]index=newint[stu.length]; intj=0; for(inti=1;i<stu.length&stu[i].bol_ZuoFei==false;i++) { if(keyword.equals(stu[i].str_ZhuanYe)|keyword.equals(stu[i].str_BanJi)) { index[j]=i; j+=1; } elseif(keyword.equals(stu[i].str_XingMing)|keyword.equals(stu[i].str_XingBie)) { index[j]=i; j+=1; } elseif(keyword.equals(stu[i].str_DianHua)|keyword.equals(stu[i].str_DiZhi)) { index[j]=i; j+=1; } } returnindex; } publicstaticvoidShow(XueShengXinXi[]stu,int[]index)//重载show方法,依照int数组值作为输出数组索引值 { int[]col=newint[6];//定义六个int类型变量,分别存放六列宽度 for(intx=0;x<col.length;x++) { col[x]=0; } for(intj=0;j<stu.length;j++)//第一步,获取全部列最大宽度 { if(stu[j].str_ZhuanYe.length()>col[0]&stu[j].bol_ZuoFei==false) { col[0]=stu[j].str_ZhuanYe.length(); } if(stu[j].str_BanJi.length()>col[1]&stu[j].bol_ZuoFei==false) { col[1]=stu[j].str_BanJi.length(); } if(stu[j].str_XingMing.length()>col[2]&stu[j].bol_ZuoFei==false) { col[2]=stu[j].str_XingMing.length(); } if(stu[j].str_XingBie.length()>col[3]&stu[j].bol_ZuoFei==false) { col[3]=stu[j].str_XingBie.length(); } if(stu[j].str_DianHua.length()>col[4]&stu[j].bol_ZuoFei==false) { col[4]=stu[j].str_DianHua.length(); } if(stu[j].str_DiZhi.length()>col[5]&stu[j].bol_ZuoFei==false) { col[5]=stu[j].str_DiZhi.length(); } } for(inti=0;i<col.length;i++)//第二步,将最大宽度加上6,得到实际宽度 { col[i]=col[i]+6; } System.out.print("\t"+GetSpace(stu[0].str_ZhuanYe,col[0])); System.out.print(GetSpace(stu[0].str_BanJi,col[1])); System.out.print(GetSpace(stu[0].str_XingMing,col[2])); System.out.print(GetSpace(stu[0].str_XingBie,col[3])); System.out.print(GetSpace(stu[0].str_DianHua,col[4])); System.out.println(GetSpace(stu[0].str_DiZhi,col[5])); for(intl=0;l<col[0]+col[1]+col[2]+col[3]+col[4]+col[5]+5;l++) { System.out.print("—"); } System.out.println("————————————————————————"); for(intk=0;index[k]!=0;k++)//第三步,将实际宽度减去字符长度得到空字符长度 { //if(k==0) //{ //} if(stu[index[k]].bol_ZuoFei==false) { System.out.print(k+"\t"+GetSpace(stu[index[k]].str_ZhuanYe,col[0])); System.out.print(GetSpace(stu[index[k]].str_BanJi,col[1])); System.out.print(GetSpace(stu[index[k]].str_XingMing,col[2])); System.out.print(GetSpace(stu[index[k]].str_XingBie,col[3])); System.out.print(GetSpace(stu[index[k]].str_DianHua,col[4])); System.out.println(GetSpace(stu[index[k]].str_DiZhi,col[5])); } } } publicstaticint[]Str_Int(XueShengXinXi[]stu,Stringstr,booleanzuoFei) { int[]sign={stu.length+1,0}; String[]xuhao=newString[stu.length];//第一步,初始化一个string数组,用于暂存将要删除序号 for(intx=0;x<xuhao.length;x++) { xuhao[x]=""; } inti=0;intindex=-1;//z变量用于表示第一个数字位置 for(;i<str.length();i++)//第二步,检验该字符串是否存在非法字符 { if(str.charAt(i)>='0'&str.charAt(i)<='9') { if(index==-1) { index=i; } } else { if(str.charAt(i)!='/') { returnsign; } //index+=1; } } if(index==-1) { returnsign; } booleannext=false;intz=0; for(inty=index;y<str.length();y++)//第三步,过滤“/”符号,从字符串中提取有效序号,存于string数组 { if(str.charAt(y)=='/') { next=true; } else { if(next==true) { z+=1; } xuhao[z]=xuhao[z]+str.substring(y,y+1); next=false; } } int[]id=newint[z+1];//第四步,检验序号合理性,统计下最终id数组 for(intj=0;j<id.length;j++) { intm=Integer.parseInt(xuhao[j]); //System.out.print("*"+xuhao[j]+"*"); for(intk=1;k<stu.length;k++) { //if() if(m==stu[k].int_ID/*&stu[k].bol_ZuoFei==false*/) { if(stu[k].str_ZhuanYe.equals("")==false|stu[k].str_BanJi.equals("")==false|stu[k].str_XingMing.equals("")==false) { if(stu[k].bol_ZuoFei==zuoFei) { id[j]=k; break; } } } } } returnid; } publicstaticvoidDelete_index(XueShengXinXi[]stu,int[]id) { //intid=Integer.parseInt(str_id); intx=0; for(inti=0;i<id.length;i++) { if(stu[id[i]].bol_ZuoFei==false&id[i]!=0) { stu[id[i]].bol_ZuoFei=true; System.out.println("成功删除第"+stu[id[i]].int_ID+"条信息"); x+=1; } } if(x>0) { System.out.println("操作完成!"); } else { System.out.println("没有需要删除数据!"); } //System.out.println("操作完成!"); //System.out.println(); } publicstaticvoidUpdate(XueShengXinXistu,Stringstr_stu) { String[]str=newString[6]; for(inti=0;i<str.length;i++) { str[i]=""; } intk=0; for(intj=1;j<=str_stu.length();j++) { if(str_stu.substring(j-1,j).equals("/")) { k+=1; } else { if(k==0) { str[0]=str[0]+str_stu.substring(j-1,j); } elseif(k==1) { str[1]=str[1]+str_stu.substring(j-1,j); } elseif(k==2) { str[2]=str[2]+str_stu.substring(j-1,j); } elseif(k==3) { str[3]=str[3]+str_stu.substring(j-1,j); } elseif(k==4) { str[4]=str[4]+str_stu.substring(j-1,j); } elseif(k==5) { str[5]=str[5]+str_stu.substring(j-1,j); } } } if(str[0].equals("")==false) { stu.str_ZhuanYe=str[0]; } if(str[1].equals("")==false) { stu.str_BanJi=str[1]; } if(str[2].equals("")=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论