适合新手练习的 java 小项目
智能电话本
视频连接在下方↓ 包括源码也在下面
不要问我为什么推荐这个,因为我也只是一个新手,这个项目是纯命令行的,
不需要数据库和网页编程知识,做起来很简单,可以帮助新手巩固基础知识。
下面是运行截图
智能电话本视频链接 点这里☜
下面是我自己照着视频写的代码,先不要复制,搞清楚关系在复制,不然会报错!!!
******* App类 *******
package com.bjsxt;/**电话本项目入口类*/
public class App {/**启动电话本项目**/public static void main(String[] args) {App app = new App();app.start();}/**控制主菜单*/public void start(){Menu menu = new Menu();TelNoteRegex regex = new TelNoteRegex();Operate operate = new Operate();while (true){menu.mainMenu();int item = regex.menuItemValidate(1,6);switch (item){case 1: operate.addLogic();break;case 2:operate.searchLogic();break;case 3:operate.modifyLogic();break;case 4:operate.deleteLogic();break;case 5:operate.orderLogic();break;case 6:System.exit(0);}}}
}
******* Menu 类 *******
package com.bjsxt;/*
*生成项目中的所有菜单*/
public class Menu {//主界面public void mainMenu(){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("** 6 退出系统 **");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("** 4 按号码查找 **");System.out.println("** 5 按住址查找 **");System.out.println("** 6 查看记录 **");System.out.println("** 7 返回 **");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("** 6 返回 **");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("** 3 按性别排序 **");System.out.println("** 4 查看记录 **");System.out.println("** 5 返回 **");System.out.println("**************************");}
}
******* Operate类 *******
package com.bjsxt;import java.util.*;/**核心业务类*/
public class Operate {private final List<Person> list;public Operate(){this.list = new ArrayList<>();}/***/public void addLogic(){Menu menu = new Menu();TelNoteRegex telNoteRegex = new TelNoteRegex();while (true){menu.addMenu();int item = telNoteRegex.menuItemValidate(1,3);switch (item){case 1: this.addOperation();break;case 2: this.showAll();break;case 3:return;}}}/***/public void searchLogic(){Menu menu = new Menu();TelNoteRegex telNoteRegex = new TelNoteRegex();while (true){menu.searchMenu();int item = telNoteRegex.menuItemValidate(1,7);switch (item){case 1: this.searchByName();break;case 2: this.searchByAge();break;case 3: this.searchBySex();break;case 4: this.searchByTelNum();break;case 5: this.searchByAdd();break;case 6: this.showAll();break;case 7: return;}}}/***/public void modifyLogic(){Menu menu = new Menu();TelNoteRegex telNoteRegex = new TelNoteRegex();while (true){menu.modifyMenu();int item = telNoteRegex.menuItemValidate(1,3);switch (item){case 1: this.showAll();break;case 2: this.modifyOperation();break;case 3: return;}}}/***/public void deleteLogic(){Menu menu = new Menu();TelNoteRegex telNoteRegex = new TelNoteRegex();while (true){menu.deleteMenu();int item = telNoteRegex.menuItemValidate(1,4);switch (item){case 1: this.showAll();break;case 2: this.deleteOperation();break;case 3: this.deleteALlOperation();break;case 4: return;}}}/***/public void orderLogic(){Menu menu = new Menu();TelNoteRegex telNoteRegex = new TelNoteRegex();while (true){menu.orderMenu();int item = telNoteRegex.menuItemValidate(1,5);switch (item){case 1: this.orderName();break;case 2: this.orderAge();break;case 3: this.orderSex();break;case 4: this.showAll();break;case 5: return;}}}/***/public void addOperation(){TelNoteRegex telNoteRegex = new TelNoteRegex();String name = telNoteRegex.nameValidate();String age = telNoteRegex.ageValidate();String sex = telNoteRegex.sexValidate();String telNum = telNoteRegex.telNumValidate();String address = telNoteRegex.addressValidate();Person person = new Person(name,age,sex,telNum,address);this.list.add(person);person.setId(this.list.size());}/***/public void showAll(){for (int i = 0; i < this.list.size(); i++) {System.out.println(this.list.get(i));}}/***/public void searchByName(){TelNoteRegex telNoteRegex = new TelNoteRegex();String name = telNoteRegex.nameValidate();boolean flag = true;for (int i = 0; i < this.list.size(); i++) {if (name.equals(this.list.get(i).getName())){System.out.println(this.list.get(i));flag = false;}}if (flag){System.out.println("没有此人记录");}}/**/public void searchByAge(){TelNoteRegex telNoteRegex = new TelNoteRegex();String age = telNoteRegex.ageValidate();boolean flag = true;for (int i = 0; i < this.list.size(); i++) {if (age.equals(this.list.get(i).getAge())){System.out.println(this.list.get(i));flag = false;}}if (flag){System.out.println("没有此人记录");}}/**/public void searchBySex(){TelNoteRegex telNoteRegex = new TelNoteRegex();String sex = telNoteRegex.sexValidate();boolean flag = true;for (int i = 0; i < this.list.size(); i++) {if (sex.equals(this.list.get(i).getSex())){System.out.println(this.list.get(i));flag = false;}}if (flag){System.out.println("没有此人记录");}}/**/public void searchByTelNum(){TelNoteRegex telNoteRegex = new TelNoteRegex();String TelNum = telNoteRegex.telNumValidate();boolean flag = true;for (int i = 0; i < this.list.size(); i++) {if (TelNum.equals(this.list.get(i).getTelNum())){System.out.println(this.list.get(i));flag = false;}}if (flag){System.out.println("没有此人记录");}}/**/public void searchByAdd(){TelNoteRegex telNoteRegex = new TelNoteRegex();String Address = telNoteRegex.addressValidate();boolean flag = true;for (int i = 0; i < this.list.size(); i++) {if (Address.equals(this.list.get(i).getAddress())){System.out.println(this.list.get(i));flag = false;}}if (flag){System.out.println("没有此人记录");}}/**/public void modifyOperation(){TelNoteRegex telNoteRegex = new TelNoteRegex();Menu menu = new Menu();//对被修改的记录的序号进行验证System.out.println("请输入记录的序号:");int item = telNoteRegex.menuItemValidate(1,this.list.size());menu.subModifyMenu();int menuItem = telNoteRegex.menuItemValidate(1,6);switch(menuItem){case 1: String name = telNoteRegex.nameValidate();(this.list.get(item - 1)).setName(name);break;case 2: String age = telNoteRegex.ageValidate();(this.list.get(item - 1)).setAge(age);break;case 3: String sex = telNoteRegex.sexValidate();(this.list.get(item - 1)).setSex(sex);break;case 4: String telNum = telNoteRegex.telNumValidate();(this.list.get(item - 1)).setTelNum(telNum);break;case 5: String address = telNoteRegex.addressValidate();(this.list.get(item - 1)).setAddress(address);break;case 6: return;}}/**/public void deleteOperation(){Scanner scanner = new Scanner(System.in);boolean flag = true;while(flag){boolean flag2 = true;System.out.println("请输入序号:");String item = scanner.nextLine();try{Integer haoma = Integer.parseInt(item);int xuhao = haoma;while(flag2){if(xuhao > 0 && xuhao<=this.list.size()){list.remove((xuhao-1));System.out.println("成功删除序号为"+xuhao+"的用户");flag = false;flag2 = false;}else {System.out.println("输入的序号不正确!");flag2 = false;}}for(int i = 0; i < this.list.size(); i++){(this.list.get(i)).setId(i + 1);}}catch(NumberFormatException e){System.out.println(e.getLocalizedMessage());System.out.println("您输入的数字格式不正确,或者不是数字");}}}/**/public void deleteALlOperation(){list.removeAll(list);System.out.println("已删除全部记录。");}/**/public void orderName(){Collections.sort(this.list,new OrderByName());for(int i = 0; i < this.list.size(); i++){(this.list.get(i)).setId(i + 1);}for(Person l : list){System.out.println(l);}}/**/public void orderAge(){Collections.sort(this.list,new OrderByAge());for(int i = 0; i < this.list.size(); i++){(this.list.get(i)).setAge(String.valueOf(i + 1));}for(Person l : list){System.out.println(l);}}/**/public void orderSex(){Collections.sort(this.list,new OrderBySex());for(int i = 0; i < this.list.size(); i++){(this.list.get(i)).setSex(String.valueOf(i + 1));}for(Person l : list){System.out.println(l);}}/**/class OrderByName implements Comparator<Person>{@Overridepublic int compare(Person o1, Person o2) {return o1.getName().compareTo(o2.getName());}}/**/class OrderByAge implements Comparator<Person>{@Overridepublic int compare(Person o1, Person o2) {return o1.getAge().compareTo(o2.getAge());}}/**/class OrderBySex implements Comparator<Person>{@Overridepublic int compare(Person o1, Person o2) {return o1.getSex().compareTo(o2.getSex());}}
}
******* Person类 *******
package com.bjsxt;/*** 实体类*/
public class Person {private int id;private String name;private String age;private String sex;private String telNum;private String address;public Person(){}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;}@Overridepublic String toString(){StringBuffer sb = new StringBuffer();sb.append("序号").append(this.id).append("#").append("\t");sb.append("姓名").append(this.name).append("\t\t");sb.append("年龄").append(this.age).append("\t\t");sb.append("性别").append(this.sex).append("\t\t");sb.append("电话号码").append(this.telNum).append("\t\t");sb.append("住址").append(this.address);return sb.toString();}
}
******* TelNoteRegex类 *******
package com.bjsxt;import java.util.Scanner;/**1. 数据校验类*/
public class TelNoteRegex {/**** @param min* @param max* @return*/public int menuItemValidate(int min,int max){//定义验证菜单项的正则表达式String regex = "[1-9]";//创建键盘输入对象Scanner scanner = new Scanner(System.in);while (true){System.out.println("请输入正确数字,最小是:"+min+"\t"+"最大是:"+max);String input = scanner.nextLine();if (input.matches(regex)){int inputNum = Integer.parseInt(input);if (inputNum >= min && inputNum <= max){return inputNum;}else {System.out.println("您输入的菜单项不符,请重新输入! ! !");}}else {System.out.println("输入数字错误,请检查! ! !");}}}/**** @return*/public String nameValidate(){//验证姓名的正则表达式String regex = "[a-zA-Z]{1,10}";//创建Scanner对象Scanner scanner = new Scanner(System.in);while (true){System.out.println("请输入姓名,格式为:大写或小写之间的字母");String input = scanner.nextLine();if (input.matches(regex)){return input;}else {System.out.println("您当前输入的姓名有误,请重新输入! ! !");}}}/**** @return*/public String ageValidate(){//对年龄验证的正则表达式String regex = "[1-9][0-9]";//创建Scanner对象Scanner scanner = new Scanner(System.in);while (true){System.out.println("请输入年龄,格式为:10-99之间");String input = scanner.nextLine();if (input.matches(regex)){return input;}else {System.out.println("您输入的年龄格式有误,请重新输入! ! !");}}}/***** @return*/public String sexValidate(){//对性别验证的正则表达式String regex ="[mMfF]";//创建Scanner对象Scanner scanner = new Scanner(System.in);while (true){System.out.println("输入性别: (男 m or M) (女 f or F)");String input = scanner.nextLine();if (input.matches(regex)){return input;}else {System.out.println("输入性别格式有误,请重新输入! ! !");}}}/***** @return*/public String telNumValidate(){//对电话号码验证的正则表达式String regex = "(\\d{3,4}-\\d{7,8})|(\\d{6,11})";//创建Scanner对象Scanner scanner = new Scanner(System.in);while (true){System.out.println("请输入电话号码: 可以是座机号或者是手机号");String input = scanner.nextLine();if(input.matches(regex)){return input;}else {System.out.println("您输入的电话号码有误,请重新输入! ! !");}}}/***** @return*/public String addressValidate(){//对地址验证的正则表达式String regex = "\\w{1,50}";//创建Scanner对象Scanner scanner = new Scanner(System.in);while (true){System.out.println("请输入地址: 格式为字母或数字,长度为1-50");String input = scanner.nextLine();if(input.matches(regex)){return input;}else {System.out.println("您输入的地址格式有误,请重新输入! ! !");}}}public static void main(String[] args) {TelNoteRegex regex = new TelNoteRegex();
// String name = regex.nameValidate();String age = regex.ageValidate();System.out.println(age);}
}