实验代码:学生信息管理 #Java

App 主方法:程序入口

package Test;
public class App{
    public static void main(String[] args) {
        Operate operate=new Operate();
        operate.mainLogic();
    }
}

Menu方法:打印出菜单窗口

package Test;
public class Menu {
    public static void mainMenu(){
        System.out.println("**************************");
        System.out.println("**      0.查看全记录     **");
        System.out.println("**      1.添加记录       **");
        System.out.println("**      2.查找记录       **");
        System.out.println("**      3.修改记录       **");
        System.out.println("**      4.删除记录       **");
        System.out.println("**      5.排序记录       **");
        System.out.println("**      6.一键添加信息    **");
        System.out.println("**      7.退出系统       **");
        System.out.println("**************************");
    }
    public void addMenu (){
        System.out.println("***************************");
        System.out.println("**     1.查看全记录      **");
        System.out.println("**     2.添加新纪录      **");
        System.out.println("**     3.返回上一级      **");
        System.out.println("***************************");
    }
    public void searchMenu (){
        System.out.println("***************************");
        System.out.println("**      1.按姓名查找       **");
        System.out.println("**      2.查看全记录       **");
        System.out.println("**      3.返回上一级       **");
        System.out.println("***************************");
    }
    public void modifyMenu (){
        System.out.println("***************************");
        System.out.println("**      1.修改指定记录     **");
        System.out.println("**      2.返回上一级       **");
        System.out.println("**      3.查看全纪录       **");
        System.out.println("***************************");
    }
    public void subModifyMenu (){
        System.out.println("*************************");
        System.out.println("**      1.修改姓名       **");
        System.out.println("**      2.修改年龄       **");
        System.out.println("**      3.修改性别       **");
        System.out.println("**      4.修改号码       **");
        System.out.println("**      5.修改住址       **");
        System.out.println("*************************");
    } //  修改用户信息子菜单

    public void deleteMenu (){
        System.out.println("***************************");
        System.out.println("**      1.删除指定记录      **");
        System.out.println("**      2.删除全部记录      **");
        System.out.println("**      3.返回上一级       **");
        System.out.println("**      4.查看全纪录       **");
        System.out.println("***************************");
    }
    public void orderMenu (){
        System.out.println("****************************");
        System.out.println("**       1.按姓名排序       **");
        System.out.println("**       2.返回上一级       **");
        System.out.println("**       5.查看全纪录       **");
        System.out.println("****************************");
    }
}

Operate方法:实际执行操作方法

package Test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Operate{
    Scanner in=new Scanner(System.in);
    Menu menu=new Menu();
    ArrayList<Person> list=new ArrayList<>();
    TelNoteRegex t=new TelNoteRegex();
    int num=1;
    int s1;
    String a;
    public void addFirst(){
        Person per0=new Person("王新源","19","男","1234567","安阳师范学院");
        Person per1=new Person("张三","19","男","123457","安阳师范学院");
        Person per2=new Person("李四","19","男","234567","安阳师范学院");
        list.add(per0);
        list.add(per1);
        list.add(per2);
        System.out.println("一键添加成功!");
    }
    // 主程序逻辑,包含主菜单
    public void mainLogic(){
        Menu.mainMenu();
        while (true){
            a=in.next();
            a=t.aRegex(a);
            s1= Integer.parseInt(a);
            if(s1>=0&&s1<=7){
                switch (s1) {
                    case 0 :showAll();break;
                    case 1 : addLogic();break;
                    case 2 : searchLogic();break;
                    case 3 : modifyLogic();break;
                    case 4 : deleteLogic();break;
                    case 5 : orderLogic();break;
                    case 6 : addFirst();break;
                    case 7 : System.exit(0);
                }
            }else{
                System.out.println("输入错误!请重新输入:");
            }
        }
    }

    public void addLogic(){
        menu.addMenu();
        while (true){
            a=in.next();
            a=t.aRegex(a);
            s1= Integer.parseInt(a);
            if(s1>0&&s1<4){
                switch (s1) {
                    case 1 : showAll();break;
                    case 2 : addOperation();break;
                    default : mainLogic();break;
                }
            }else{
                System.out.println("输入错误!请重新输入:");
            }
        }
    }

    public void addOperation (){
        System.out.println("请输入您的姓名:(字母、数字或汉字)");
        String name=in.next();
        System.out.println("请输入您的年龄:(0~99)");
        String age=in.next();
        age=t.ageRegex(age);
        System.out.println("请输入您的性别:(男or女)");
        String sex=in.next();
        sex=t.sexRegex(sex);
        System.out.println("请输入您的联系方式:(6~11位数字)");
        String telnum=in.next();
        telnum=t.telNumRegex(telnum);
        System.out.println("请输入您的住址:(字母、数字或汉字)");
        String address=in.next();
        num++;

        Person per=new Person(name,age,sex,telnum,address);
        list.add(per);//将per加入集合
        System.out.println("添加成功!");
        System.out.println("是否继续添加?  是:1  否:0");
        String s=in.next();
        if(s.equals("0")){
            addLogic();
        }else addOperation();
    }

    public void showAll() {// 查询全部用户信息
        Iterator<Person> it =list.iterator();
        if(list.isEmpty()){
            System.out.println("当前系统没有学生信息,请先添加!");
            mainLogic();
        }else{
            int id=1;
            while (it.hasNext()){
                Person person=it.next();
                person.setId(id++);
                System.out.println("序号:"+person.getId()+" 姓名:"+person.getName()+" 年龄:"+person.getAge()+
                        " 性别:"+person.getSex()+" 电话:"+person.getTelNum()+" 住址:"+person.getAddress());
            }
            switch (s1) {
                case 0 : mainLogic();break;
                case 1 : addLogic();break;
                case 2 : searchLogic();break;
                case 3 : modifyLogic();break;
                case 4 : deleteLogic();break;
                case 5 : orderLogic();break;
            }
        }
    }

    public void searchLogic() {
        menu.searchMenu();
        while (true){
            a=in.next();
            a=t.aRegex(a);
            s1= Integer.parseInt(a);
            if(s1>=1&&s1<7){
                switch (s1) {
                    case 1 : searchByName();
                    case 2 : showAll();
                    case 3 : mainLogic();
                }
            }else{
                System.out.println("输入错误!请重新输入:");
            }
        }
    }
    public void searchByName(){
        System.out.println("请输入您要查找的联系人姓名:");
        boolean b=true;
        String na=in.next();
        for (Person p : list) {
            if (na.equals(p.getName())) {
                System.out.println(p);
                b = false;
            }
        }
        if(b){
            System.out.println("您所要查找的联系人不存在!");
        }
        searchLogic();
    }
    public void modifyLogic(){
        menu.modifyMenu();
        while (true){
            a=in.next();
            a=t.aRegex(a);
            s1= Integer.parseInt(a);
            if(s1>0&&s1<4){
                switch (s1) {
                    case 1 : modify();break;
                    case 2 : mainLogic();break;
                    case 3 : showAll();break;
                }
            }else{
                System.out.println("输入错误!请重新输入:");
            }
        }
    }
    public void modify() {
        Iterator<Person> it =list.iterator();
        if(list.isEmpty()){
            System.out.println("当前系统没有学生信息,请先添加!");
            mainLogic();
        }else {
            int id=1;
            while (it.hasNext()){
                Person person=it.next();
                person.setId(id++);
                System.out.println("序号:"+person.getId()+" 姓名:"+person.getName()+" 年龄:"+person.getAge()+
                        " 性别:"+person.getSex()+" 电话:"+person.getTelNum()+" 住址:"+person.getAddress());
            }
            System.out.println("请输入您要修改的联系人序号:");
            String b=in.next();
            b=t.aRegex(b);
            int itemNum= Integer.parseInt(b);
            menu.subModifyMenu();
            System.out.println("请选择操作:");
            while (true){
                a=in.next();
                a=t.aRegex(a);
                int s3= Integer.parseInt(a);
                if(s3>0&&s3<7){
                    switch (s3) {
                        case 1 : {
                            System.out.println("请输入要修改的姓名:");
                            String name = in.next();
                            (this.list.get(itemNum - 1)).setName(name);
                            System.out.println("修改成功!");
                            modifyLogic();break;
                        }
                        case 2 : {
                            System.out.println("请输入要修改的年龄:");
                            String age = in.next();
                            (this.list.get(itemNum - 1)).setAge(age);
                            System.out.println("修改成功!");
                            modifyLogic();break;
                        }
                        case 3 : {
                            System.out.println("请输入要修改的性别:");
                            String sex = in.next();
                            (this.list.get(itemNum - 1)).setSex(sex);
                            System.out.println("修改成功!");
                            modifyLogic();break;
                        }
                        case 4 : {
                            System.out.println("请输入要修改的号码:");
                            String telNum = in.next();
                            (this.list.get(itemNum - 1)).setTelNum(telNum);
                            System.out.println("修改成功!");
                            modifyLogic();break;
                        }
                        case 5 : {
                            System.out.println("请输入要修改的住址:");
                            String address = in.next();
                            (this.list.get(itemNum - 1)).setAddress(address);
                            System.out.println("修改成功!");
                            modifyLogic();break;
                        }
                        case 6 : modifyLogic();break;
                    }
                }else{
                    System.out.println("输入错误!请重新输入:");
                }
            }
        }
    } // 修改指定记录信息

    public void deleteLogic() {
        menu.deleteMenu();
        while (true){
            a=in.next();
            a=t.aRegex(a);
            s1= Integer.parseInt(a);
            if(s1>0&&s1<5){
                switch (s1) {
                    case 1 : delete();break;
                    case 2 : deleteAll();break;
                    case 3 : mainLogic();break;
                    case 4 : showAll();break;
                }
            }else{
                System.out.println("输入错误!请重新输入:");
            }
        }
    }
    public void delete() {

        int id=1;
        Iterator<Person> it1 =list.iterator();
        while (it1.hasNext()){
            Person person=it1.next();
            person.setId(id++);
            System.out.println("序号:"+person.getId()+" 姓名:"+person.getName()+" 年龄:"+person.getAge()+
                    " 性别:"+person.getSex()+" 电话:"+person.getTelNum()+" 住址:"+person.getAddress());
        }
        System.out.println("请输入您要删除的联系人序号:");
        boolean b=true;
        Integer s2=in.nextInt();
        Iterator<Person> it =list.iterator();
        while(it.hasNext()){
            Person p=it.next();
            if(s2.equals(p.getId())){
                it.remove();
                System.out.println("删除成功!");
                b=false;
            }
        }
        if(b){
            System.out.println("您所要删除的联系人不存在!");
        }
        deleteLogic();
    }
    public void deleteAll(){
        this.list.clear();
        System.out.println("删除成功!");
        deleteLogic();
    }

    public void orderLogic(){
        menu.orderMenu();
        while (true){
            a=in.next();
            a=t.aRegex(a);
            s1= Integer.parseInt(a);
            if(s1>0&s1<3|s1==5){
                switch (s1) {
                    case 1 : orderName();break;
                    case 2 : mainLogic();break;
                    case 5 : showAll();break;
                }
            }else{
                System.out.println("输入错误!请重新输入:");
            }
        }
    }
    public void orderName() {
        list.sort(new OrderByName());
        for(int i=0;i<this.list.size();i++){
            (this.list.get(i)).setId(i+1);
        }
        System.out.println("排序成功!");
        showAll();
    }
}

 OrderByName方法:按汉字姓名首字母排序

package Test;
import java.text.Collator;
import java.util.Comparator;
public class OrderByName implements Comparator<Person> {
    public int compare(Person o1,Person o2){
        Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
        //return o2.getName().compareTo(o1.getName());
        return com.compare(o1.getName(), o2.getName());
    }
}

 Person方法:传入参数

package Test;

public class Person{
    private int id;
    private String name;
    private String age;
    private String sex;
    private String telNum;
    private String address;

    public Person(String name, String age, String sex, String telNum, String address){
        this.name=name;
        this.age = age;
        this.sex = sex;
        this.telNum = telNum;
        this.address = address;
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String getTelNum() {
        return telNum;
    }
    public void setTelNum(String telNum) {
        this.telNum = telNum;
    }
    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
    public String toString(){
        return "序号:"+id+" 姓名:"+name+" 年龄:"+age+" 性别:"+sex+" 电话:"+telNum+" 住址:"+address;
    }
}

 TelNoteRegx方法:用正则表达式对用户输入的操作选项和内容进行验证

 

package Test;
import java.util.Scanner;
public class TelNoteRegex{
    Scanner in=new Scanner(System.in);
    public String ageRegex (String age){
        String regex="[0-9]{1,2}";
        while (true){
            if(age.matches(regex)){
                break;
            }else {
                System.out.println("输入错误!请重新输入:");
                age=in.next();
            }
        }
        return age;
    }
    public String sexRegex (String sex){
        String regex="[男女]";
        while (true){
            if(sex.matches(regex)){

                break;
            }else {
                System.out.println("输入错误!请重新输入:");
                sex=in.next();
            }
        }
        return sex;
    }
    public String telNumRegex (String telnum){
        String regex="[0-9]{6,11}";
        while(true){
            if(telnum.matches(regex)){
                break;
            }else{
                System.out.println("输入错误!请重新输入:");
                telnum=in.next();
            }
        }
        return telnum;
    }
    public String aRegex(String a){
        String regex="[0-9]";
        while (true){
            if(a.matches(regex)){
                break;
            }else {
                System.out.println("输入错误!请重新输入:");
                a=in.next();
            }
        }
        return a;
    }
}

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值