宁波大红鹰学院
课程设计
课程设计名称: Java
学生姓名:
学生学号:
班级名称:
指导教师:
完成日期: 2011/01/7
学生通讯录管理系统实验报告
1、封面;
2、目录;
3、设计任务书;
实验题目:
用Java语言编写一个简单的学生通讯录程序,能实现通讯录的基本功能。
实验目的:
详细设计 :
软件产品布局:
使用了按钮与下拉菜单。一个用来显示文件的文本区,一个用于输出信息的文本框。在下拉菜单中,我选择了用户所需要的一些常用的条件功能:录入和显示。文件显示区我们设置为可编辑,目的是方便用户进行任何形式的修改,在这里我们忽略了它所带来的不安全性。在按钮中我们添加了这几个项:录入和显示。
实现方法(算法分析):
在设计的时候,考虑到由于能力有限,只是使用了一些许的面向对象程序设计的设计方法,在软件的设计与实现的时候更多的是使用面向过程的设计方法,在软件中,我们提供了两个封装的方法函数:public void read() 和public void write().在这两个方法中,都使用了异常处理机制,当用户进行非法操作时,提供相应的异常(主要是显示出错信息)。在两个基本点封装的方法中,并没有要求用户提供具体的参数,而是直接地去调用它们,具体的实现方式对用户来说是不可见的,在write方法中,其功能是获取用户所写入的字符串,并将它写入文件
关键技术的应用:
关键技术
通讯录的设计要点有以下四个。
1、通讯录的存取功能主要是通过利用文件的读入与读出的性质来实现
2、利用JOptionPane产生的对话框、信息框、确认框与用户进行信息交流
3、用数组来存储每个人的信息主要是方便用户在执行查找、删除等较为具体的功能
4、用read()和write()两个函数进行对文件的读取操作,主要是要达到更新快的目的,存储最新的信息,做到流通快
5、利用Array.sort()方法根据元素的自然顺序对指定的对象数组按升序进行排序
通讯录程序源代码:
主体内容:
1) 设计分析;
2) 各模块的功能及程序说明;
3) 源程序;
4) 试验结果
5) 显示界面
输入信息
显示信息
6) 设计体会。
在这次课程设计初步设想是比较好的,但由于个人原因以及能力问题通讯录中的一些预期效果还没有实现比如说对联系人进行分组、排列以及查找联系人中的按电话号码及按地址查找还没有实现,有待进一步加强并完善。
总之,通过此次课程设计,这学期学的 JAVA知识得到巩固和应用,在设计的过程中我遇到了很多问题,但在同学们的帮助以及上网查询相关知识最终在自己的认真思考下还想顺利的完成了此次课设。通过这此课程设计我还懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。
第二篇:Java实验 学生通讯录系统
成绩:
面向对象原理与Java实践课程实验报告
实验1:对象和类
姓 名 _ ___
班 级 _ ___
学 号 _ ___
实验地点 _ ___
实验时间 _ ___
指导教师 _ ___
面向对象原理与Java实践课程实验报告
实验1:对象和类
一、实验目的:
?
?
? 掌握类的定义及应用方法 掌握对象的创建方法,了解实例变量、实例方法和静态字段的特性 体会Java在类和对象的设计中体现的面向对象的思想
二、实验要求:
?
?
?
? 具备Java基础知识(教材第1、2章内容) 掌握Java中对象和类的基本概念和应用方法(教材第3章内容) 设计类时注意保证类的封装性 编写程序完成以下实验内容并上交实验报告(包括电子文档与纸质文档)
三、实验内容:
设计并实现一个“广石化院电信学院学生通信录”系统。系统采用字符界面,在出现的主界面中按提示输入相应字符以选择“增加”、“删除”、“修改”、“查找”等功能进行操作(其中“查找”功能除能够查找某个学生的信息之外,还能够显示所有学生的信息)。记录的存储可采用数组或链表的方式。
四、设计思路:
为了实现该系统,首先要需要两个类;一个类为主界面服务,用于接收用户输入信息以及做出相关反应;一个类为学生信息服务,定义学生通讯录信息的各个字段,以及操作字段的各个方法,考虑到部分字段的属性问题,所以将操作方法都写在学生类中,不再另外放置在其他类中。学生信息将会采用学生类的对象数组来储存。
五、程序源代码:
下面是ZhuJieMian 主界面类
package pkg_TXL;
import java.util.Scanner;
public class ZhuJieMian
{
/**
*
* 该类为通讯录系统的主界面提供主要功能显示,以及负责主菜单与子菜单的正常跳转
*/
public static void main(String[] args)
{
"); // TODO Auto-generated method stub //XueShengXinXi[] Stu=ChuShiHua(); //初始化系统数据 XueShengXinXi[] Stu=new XueShengXinXi[100]; Stu[0]=new XueShengXinXi("专业", "班级", "姓名", "性别", "电话", "家庭住址
Stu[1]=new XueShengXinXi("自动化", "自动化10-1", "张三", "男", "63256", "fnhjfdhsdbh");
Stu[2]=new XueShengXinXi("自动化", "自动化10-2", "李四", "女", "653256", "nfhggdfddhsdbh");
Stu[3]=new XueShengXinXi("电子", "电子10-1", "王五", "男", "6156", "fnhvjbh");
Stu[4]=new XueShengXinXi("电子", "电子10-2", "小红", "女", "63956", "asdfnhjbh");
Stu[5]=new XueShengXinXi("网络", "网络10-1", "小明", "男", "656", "nfgdgfnhjbh");
Stu[6]=new XueShengXinXi("网络", "网络10-2", "小芳", "女", "62215", "nfgdmmmdfhbdsh");
Stu[7]=new XueShengXinXi("计算机", "计算机10-1", "黄龙", "男", "65584", "bbbdddfnhjbh");
Stu[8]=new XueShengXinXi("计算机", "计算机10-2", "陈玲", "女", "666114", "mjgfddddfnhjbh");
Stu[9]=new XueShengXinXi("测控", "测控10-1", "赵小斌", "男", "644814", "fthnrehbkjhjbh");
Stu[10]=new XueShengXinXi("测控", "测控10-2", "钱颖", "女", "63641", "dbfsvnnhjbh");
Stu[11]=new XueShengXinXi("电信", "电信10-1", "孙武", "男", "6321514", "mmhmgvvdfnhjbh");
Stu[12]=new XueShengXinXi("电信", "电信10-2", "李雨", "女", "6314", "43ghffvvdfnhjbh");
for(int x=13;x<Stu.length;x++)
{
Stu[x]=new XueShengXinXi();
}
System.out.println("欢迎使用广石化电信学院通讯录系统!");
ZhuJieMian: for(int exit=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("请选择你要操作的功能序号:");
Scanner scn_input=new Scanner(System.in);
String XuHao=scn_input.next();
System.out.println();
if(XuHao.equals("1")) //二级菜单——查询学生信息
{
select:for(int exit2=0;exit2==0;) //exit为退出二级菜单的指示变量,0
为不退出,非0为退出
{
System.out.println("***************************************************************");
System.out.println("************************二级菜单——查询学生信息************************");
System.out.println("***************************************************************");
System.out.println();
System.out.print("请输入要查找的关键字(包括专业,班级,姓名等等),输入“all”显示全部信息,输入“back”返回主菜单:");
String str_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();
continue select;
}
else if(str_KeyWord.equals("back"))
{
continue ZhuJieMian;
}
else
{
int[] index=XueShengXinXi.Select(str_KeyWord,Stu); if(index[0]==0)
{
System.out.println("抱歉,没有找到关于“"+str_KeyWord+"”的学生信息!");
System.out.println();
continue select;
}
else
{
System.out.println("************************学生通讯录信息************************");
XueShengXinXi.Show(Stu,index);
System.out.println();
System.out.println();
continue select;
}
}
}
}
else if(XuHao.equals("2")) //二级菜单——新增学生信息
{
insert:for(int exit3=0;exit3==0;)
{
System.out.println();
System.out.println("***************************************************************");
System.out.println("************************二级菜单——新增学生信息************************");
System.out.println("***************************************************************");
System.out.println();
System.out.println("请按右边的格式输入新增学生的专业/班级/姓名/性别/电话/地址信息(前3项信息必填),输入“back”返回主菜单:");
String str_Stu=scn_input.next();
if(str_Stu.equals(""))
{
System.out.println("输入有误,请重新输入!");
continue insert;
}
else if(str_Stu.equals("back"))
{
System.out.println();
continue ZhuJieMian;
}
else
{
boolean zuoFei=XueShengXinXi.Insert(Stu, str_Stu);
if(zuoFei==true)
{
System.out.println();
System.out.println("由于学生信息必填项信息缺失,所以新增失败。返回至二级菜单...");
System.out.println();
continue insert;
}
else
{
System.out.println();
System.out.println("新增成功!返回至二级菜单..."); System.out.println();
continue insert;
}
}
//exit3=1;
}
}
else if(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(int exit4=0;exit4==0;) //exit为退出二级菜单的指示变量,0为不退出,非0为退出
{
System.out.println();
System.out.print("请输入要修改的学生前的序号(每次只能输入一个),输入“back”返回主菜单:");
String str_XuHao=scn_input.next();
System.out.println();
if(str_XuHao.equals("back"))
{
System.out.println();
continue ZhuJieMian;
}
else
{
int[] id=XueShengXinXi.Str_Int(Stu,str_XuHao,false); if(id[0]<Stu.length&id[0]!=0)
{
System.out.println();
//int index=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("请按以上格式输入修改后的信息(某一项无修改的话,则不用输入):");
String str_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);
continue update;
}
else
{
System.out.println("输入有误!已返回至二级菜单"); continue update;
}
}
//exit4=1;
}
}
else if(XuHao.equals("4")) //二级菜单——删除学生信息 {
System.out.println("***************************************************************");
System.out.println("************************二级菜单——删除学生信息************************");
System.out.println("***************************************************************");
System.out.println();
System.out.println("************************学生通讯录信息************************");
XueShengXinXi.Show(Stu);
delete:for(int exit5=0;exit5==0;) //exit为退出二级菜单的指示变量,0为不退出,非0为退出
{
System.out.println();
//System.out.println("************二级菜单——删除学生信息************");
System.out.print("请输入要删除的学生信息前的序号(输入多个序号时用/隔开),输入“all”删除全部信息,输入“back”返回主菜单:");
String str_xuHao=scn_input.next();
System.out.println();
if(str_xuHao.equals("back"))
{
System.out.println();
continue ZhuJieMian;
}
else if(str_xuHao.equals("all"))
{
XueShengXinXi.Delete_All(Stu);
System.out.println("全部数据已被删除,已返回主菜单。。。。。。");
//XueShengXinXi.Show(Stu);
continue ZhuJieMian;
}
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);
continue delete;
}
else
{
System.out.println("输入有误!已返回至二级菜单"); continue delete;
}
}
//exit5=1;
}
}
else if(XuHao.equals("5")) //二级菜单——恢复已被删除信息 {
System.out.println("***************************************************************");
System.out.println("**********************二级菜单——恢复已被删除信息***********************");
System.out.println("***************************************************************");
System.out.println();
System.out.println("**************************回收站信息**************************");
boolean bol=XueShengXinXi.Show_Del(Stu);
if(bol==true)
{
System.out.println();
System.out.println("回收站为空,目前没有被删除的信息!已返回至主菜单。。。。。。");
continue ZhuJieMian;
}
else
{
recover:for(int exit6=0;exit6==0;) //exit为退出二级菜单的指示变量,0为不退出,非0为退出
{
System.out.println();
//System.out.println("************二级菜单——删除学生信息************");
System.out.print("请输入要恢复的信息的序号(输入多个序号时用/隔开),输入“all”恢复全部信息,输入“back”返回主菜单:");
String str_xuHao=scn_input.next();
System.out.println();
if(str_xuHao.equals("back"))
{
System.out.println();
continue ZhuJieMian;
}
else if(str_xuHao.equals("all"))
{
XueShengXinXi.Recover_All(Stu);
System.out.println("全部恢复完毕!已返回主菜单。。。。。。");
continue ZhuJieMian;
}
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);
continue recover;
}
else
{
System.out.println("输入有误!已返回至二级菜单");
continue recover;
}
}
}
}
}
else if(XuHao.equals("6"))
{
break ZhuJieMian;
}
else
{
System.out.println("输入有误,已返回主菜单!");
System.out.println();
continue ZhuJieMian;
}
//exit=1;
}
}
}
下面是XueShengXinXi 学生信息类
package pkg_TXL;
public class XueShengXinXi
{
String str_ZhuanYe="";
String str_BanJi="";
//String str_XueHao="";
String str_XingMing="";
String str_XingBie="";
String str_DianHua="";
String str_DiZhi="";
Boolean bol_ZuoFei=true;
//String str_ID="";
int int_ID=0;
XueShengXinXi(){}
//有参构造方法
public XueShengXinXi(String ZhuanYe,String BanJi,String XingMing,String XingBie,String DianHua,String DiZhi)
{
str_ZhuanYe=ZhuanYe;
str_BanJi=BanJi;
str_XingMing=XingMing;
str_XingBie=XingBie;
str_DianHua=DianHua;
str_DiZhi=DiZhi;
bol_ZuoFei=false;
}
//新增学生信息的函数
public static boolean Insert(XueShengXinXi[] stu,String str_stu)
{
int i=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="";
int k=0; for(int j=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); } else if(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); } else if(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); } else if(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); } else if(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); } else if(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; } return stu[i].bol_ZuoFei; } public static void Show(XueShengXinXi[] stu) //格式化的输出全部学生的信息 { int[] col=new int[6]; //定义六个int类型变量,分别存储六列宽度 for(int x=0;x<col.length;x++) { col[x]=0; } for(int j=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(int i=0;i<col.length;i++) //第二步,将最大宽度加上6,得到实际宽度 { col[i]=col[i]+6; } for(int k=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(int l=0;l<col[0]+col[1]+col[2]+col[3]+col[4]+col[5]+5;l++)
//{
//System.out.print("—");
//}
for(int l=0;l<6*4;l++)
{
System.out.print("————");
}
System.out.println("———————");
}
else if(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]));
}
else if(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]));
}
}
}
private static String GetSpace(String str,int len) //根据每个字符不同加制表符 {
/*String space="";
if(len>=str.length())
{
for(int i=0;i<len-str.length();i++)
{
space=space+" ";
}
return str+'\t'+'\t';
}
else
{
return str;
}*/
return str+'\t'+'\t';
}
public static int[] Select(String keyword,XueShengXinXi[] stu) //根据关键字查询学生信息,并返回结果数组的索引值
{
int[] index=new int[stu.length];
int j=0;
for(int i=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;
}
else if(keyword.equals(stu[i].str_XingMing)|keyword.equals(stu[i].str_XingBie)) {
index[j]=i;
j+=1;
}
else if(keyword.equals(stu[i].str_DianHua)|keyword.equals(stu[i].str_DiZhi)) {
index[j]=i;
j+=1;
}
}
return index;
}
public static void Show(XueShengXinXi[] stu,int[] index) //重载show方法,根据int数组的值作为输出数组的索引值
{
int[] col=new int[6]; //定义六个int类型变量,分别存储六列宽度
for(int x=0;x<col.length;x++)
{
col[x]=0;
}
for(int j=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(int i=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(int l=0;l<col[0]+col[1]+col[2]+col[3]+col[4]+col[5]+5;l++)
{
System.out.print("—");
}
System.out.println("————————————————————————");
for(int k=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]));
}
}
}
public static int[] Str_Int(XueShengXinXi[] stu,String str,boolean zuoFei)
{
int[] sign={stu.length+1,0};
String[] xuhao=new String[stu.length]; //第一步,初始化一个string数组,用于暂存将要删除的序号
for(int x=0;x<xuhao.length;x++)
{
xuhao[x]="";
}
int i=0;int index=-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)!='/')
{
return sign;
}
//index+=1;
}
}
if(index==-1)
{
return sign;
}
boolean next=false;int z=0;
for(int y=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=new int[z+1]; //第四步,检查序号合理性,记录下最终的id数组
for(int j=0;j<id.length;j++)
{
int m=Integer.parseInt(xuhao[j]);
//System.out.print("*"+xuhao[j]+"*");
for(int k=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;
}
}
}
} } return id; } public static void Delete_index(XueShengXinXi[] stu,int[] id) { //int id=Integer.parseInt(str_id); int x=0; for(int i=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(); } public static void Update(XueShengXinXi stu,String str_stu) { String[] str=new String[6]; for(int i=0;i<str.length;i++) { str[i]=""; } int k=0; for(int j=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); } else if(k==1) { str[1]=str[1]+str_stu.substring(j-1, j); } else if(k==2) { str[2]=str[2]+str_stu.substring(j-1, j); }
else if(k==3)
{
str[3]=str[3]+str_stu.substring(j-1, j);
}
else if(k==4)
{
str[4]=str[4]+str_stu.substring(j-1, j);
}
else if(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("")==false)
{
stu.str_XingMing=str[2];
}
if(str[3].equals("")==false)
{
stu.str_XingBie=str[3];
}
if(str[4].equals("")==false)
{
stu.str_DianHua=str[4];
}
if(str[5].equals("")==false)
{
stu.str_DiZhi=str[5];
}
}
public static void Delete_All(XueShengXinXi[] stu)
{
for(int i=0;i<stu.length;i++)
{
if(stu[i].str_ZhuanYe.equals("")==false|stu[i].str_BanJi.equals("")==false|stu[i].str_XingMing.equals("")==false)
{
stu[i].bol_ZuoFei=true;
}
}
}
public static boolean Show_Del(XueShengXinXi[] stu)
{
boolean bol=true; //该布尔类型用于指示回收站是否为空
for(int i=0;i<stu.length;i++)
{
stu[i].int_ID=i;
if(i==0)
{
System.out.print("\t"+stu[i].str_ZhuanYe+'\t'+'\t');
System.out.print(stu[i].str_BanJi+'\t'+'\t');
System.out.print(stu[i].str_XingMing+'\t'+'\t');
System.out.print(stu[i].str_XingBie+'\t'+'\t');
System.out.print(stu[i].str_DianHua+'\t'+'\t');
System.out.println(stu[i].str_DiZhi+'\t'+'\t');
for(int l=0;l<6*4;l++)
{
System.out.print("————");
}
System.out.println("———————");
}
else if(i>0&stu[i].bol_ZuoFei==true)
{
if(stu[i].str_ZhuanYe.equals("")==false|stu[i].str_BanJi.equals("")==false|stu[i].str_XingMing.equals("")==false)
{
bol=false;
System.out.print(i+"\t"+stu[i].str_ZhuanYe+'\t'+'\t');
System.out.print(stu[i].str_BanJi+'\t'+'\t');
System.out.print(stu[i].str_XingMing+'\t'+'\t');
System.out.print(stu[i].str_XingBie+'\t'+'\t');
System.out.print(stu[i].str_DianHua+'\t'+'\t');
System.out.println(stu[i].str_DiZhi+'\t'+'\t');
}
}
}
return bol;
}
public static void Recover_All(XueShengXinXi[] stu)
{
for(int i=0;i<stu.length;i++)
{
if(stu[i].str_ZhuanYe.equals("")==false|stu[i].str_BanJi.equals("")==false|stu[i].str_XingMing.equals("")==false)
{
stu[i].bol_ZuoFei=false;
}
}
}
public static void Recover_index(XueShengXinXi[] stu,int[] id)
{
//int id=Integer.parseInt(str_id);
int x=0;
for(int i=0;i<id.length;i++)
{
}
} if(stu[id[i]].bol_ZuoFei==true&id[i]!=0) { stu[id[i]].bol_ZuoFei=false; 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();
六、实验过程中遇到的问题及解决手段:
实验过程中由于对制表符 \t 不熟悉,导致输出的字符界面不美观、絮乱。后来在网上查到了相关信息,找到了解决办法。
七、实验体会(结论):
通过这次实验,使我对java中对象及其数组的使用,有更深的了解;并且对C++与java在编程开发时的区别有了亲身体会。