数据管理(作业)
package text2;
import java.util.Arrays;
import java.util.Scanner;
class StudScore {
String name ;
int id;
double score;
public StudScore(String name, int id, double score) {
this.name = name;
this.id = id;
this.score = score;
}
public void setName(String name) {
this.name = name;
}
public void setId(int id) {
this.id = id;
}
public void setScore(double score) {
this.score = score;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
public double getScore() {
return score;
}
public String toString(){
return name +","+id +","+score;
}
}
//118-121
public class ArrStudebtuser{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Arrstudent stud = new Arrstudent();
while (true) {
System.out.println("1添加记录");
System.out.println("2插入记录");
System.out.println("3显示所有记录");
System.out.println("4查询记录");
System.out.println("5进行排名");
System.out.println("7通过姓名删除");
System.out.println("8通过姓名查询");
System.out.println("0退出");
System.out.println("6测试");
switch (sc.nextInt()){
default:
System.out.println("请输入准确数字!!!");
System.out.println("请输入准确数字!!!");
System.out.println("请输入准确数字!!!");
break;
case 1:
//添加记录
System.out.println("name:");
String sname =sc.next();
System.out.println("id");
int sid = sc.nextInt();
System.out.println("score");
double sscore = sc.nextDouble();
StudScore snode = new StudScore(sname,sid,sscore);
stud.add(snode);
break;
case 2:
//插入记录
System.out.println("name:");
String s1name = sc.next();
System.out.println("id");
int s1id = sc.nextInt();
System.out.println("score");
double s1score = sc.nextDouble();
System.out.println("输入插入位置");
int s1index = sc.nextInt();
StudScore s1node = new StudScore(s1name,s1id,s1score);
stud.insert(s1index,s1node);
System.out.println(" ");
break;
case 3:
//显示所有记录
stud.listAll();
System.out.println("======");
break;
case 4:
//查询记录
System.out.println("id");
int index = sc.nextInt();
stud.search(index);
System.out.println(" ");
break;
case 0:
sc.close();
System.exit(0);
break;
case 5:
stud.ranking();
break;
case 6:
StudScore snodetext = new StudScore("张三",1,88);
StudScore snodetext1 = new StudScore("李四",2,67);
StudScore snodetext2 = new StudScore("王二",3,89);
StudScore snodetext4 = new StudScore("王二",5,8.9);
StudScore snodetext3 = new StudScore("罗翔",4,47);
stud.add(snodetext);
stud.add(snodetext1);
stud.add(snodetext2);
stud.add(snodetext3);
stud.add(snodetext4);
break;
case 7:
System.out.println("输入删除人姓名");
String dname = sc.next();
stud.namedeled(dname);
break;
case 8:
System.out.println("输入查询人姓名");
String saname = sc.next();
stud.namesarch(saname);
break;
}
}
}
}
interface studoperation{
void add(StudScore node);
void insert(int index,StudScore node);
void listAll();
void search(int index);
void ranking();
void namedeled(String dname);
void namesarch(String sarchname);
}
class Arrstudent implements studoperation{
StudScore stud[] = new StudScore[50];
StudScore stu1[] ;
StudScore[] transnum = new StudScore[1] ;
int count=0;
public void add(StudScore node){
int i = count;
//判断数组是否存满
if (count==stud.length){
System.out.println("储存环境已满");
}else {
stud[i] =node;
count++;
}
}
public void insert(int index, StudScore node){
if (index<0||index>stud.length){
System.out.println("插入位置出错");
}/**判断储存位置**/
if (count==stud.length){
System.out.println("储存环境已满");
} /**判断储存环境**/
// if (index==stud.length){
// count++;
// stud[count]=node;
// }
for(int i= 0;i>stud.length-index;i++){
stud[stud.length-1-i]=stud[stud.length-2-i];
}
stud[index-1]=node;
count++;
System.out.println("插入成功");
}
public void listAll(){
for (int i = 0;i<count;i++){
System.out.print("学号:"+stud[i].id);
System.out.print("姓名:"+stud[i].name);
System.out.println("成绩:"+stud[i].score);
}
}
public void search(int index){
if(index<=count &&index>0){
System.out.println("信息为:"+stud[index-1]);
}else {
System.out.println("请输入1至"+count+"之间的数字");
}
}
public void namedeled(String dname){
Scanner sc1 = new Scanner(System.in);
int namesum = 0;
int[] namelocationInt =new int[100];
//获取姓名位置
for (int i = 0;i<count;i++){
if (dname.equals(stud[i].name)){
namelocationInt[namesum]=i;
namesum++;
}
// if (stud[i].name==dname){
//
// for (int ii=0;ii<count-i;ii++){
// stud[i+ii]=stud[i+ii+1];
// }
// break;
// }
}
if(namesum>1){
System.out.println("请问删除第几位");
System.out.println("==============");
for (int i =0;i<namesum;i++){
// System.out.println(stud[namelocationInt[i]]);
System.out.print("学号:"+stud[namelocationInt[i]].id);
System.out.print("姓名:"+stud[namelocationInt[i]].name);
System.out.println("成绩:"+stud[namelocationInt[i]].score);
}
System.out.println("=============");
int a=sc1.nextInt();
for (int i =0;i<count-namelocationInt[a];i++){
stud[namelocationInt[a]+i]= stud[namelocationInt[a]+i+1];
}
count--;
}
if(namesum<=0){
System.out.println("未查询到学生");
}
if (namesum==1){
for (int i =0;i<count;i++){
stud[namelocationInt[0]+i]= stud[namelocationInt[0]+i+1];
}
count--;
}
}
public void ranking(){
stu1 = stud;
for(int a=0;a<count-1;a++){
for(int b =0;a<count-b-1;b++){
if(stu1[b].score<stu1[b+1].score){
transnum[0] =stu1[b+1];
stu1[b+1]=stu1[b];
stu1[b]= transnum[0];
}
}
}
for (int i = 0;i<count;i++){
System.out.print("学号:"+stu1[i].id);
System.out.print("姓名:"+stu1[i].name);
System.out.println("成绩:"+stu1[i].score);
}
}
public void namesarch(String sarchname){
for (int i = 0;i<count;i++){
if (sarchname.equals(stud[i].name)){
System.out.print("学号:"+stud[i].id);
System.out.print("姓名:"+stud[i].name);
System.out.println("成绩:"+stud[i].score);
}
}
}
}