目录
1.创建项目
2.创建类
2.1创建入口类
package com.rome.www;
/**
* 电话本项目入口类
*/
public class App {
/**
* 启动电话本项目
* @param args
*/
public static void main(String[] args) {
}
/**
* 控制主菜单
*/
public void start(){
}
}
2.2创建菜单类
package com.rome.www;
/**
* 生成项目中的所有菜单
*/
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("****************************************");
}
}
2.3创建实体类
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;
}
@Override
public 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();
}
}
2.4创建核心业务类
package com.rome.www;
import java.util.ArrayList;
import java.util.List;
/**
* 核心业务类
*/
public class Operate {
private List<Person> list;
public Operate() {
this.list = new ArrayList<>();
}
/**
* 用户添加记录的逻辑控制
*/
public void addLogic() {
}
/**
* 用户查询记录
*/
public void searchLogic() {
}
/**
* 修改记录的逻辑
*/
public void modifyLogic() {
}
/**
* 删除记录逻辑
*/
public void deleteLogic() {
}
/**
* 控制排序二级子菜单
*/
public void orderLogic() {
}
/**
* 添加新纪录信息
*/
public void addOperation() {
}
/**
* 查询全部记录
*/
public void showAll() {
}
/**
* 按姓名查询记录
*/
public void searchByName() {
}
/**
* 按年龄查询记录
*/
public void searchByAge() {
}
/**
* 按性别查询记录
*/
public void searchBySex() {
}
/**
* 按电话查询记录
*/
public void searchByTelNum() {
}
/**
* 按地址查询记录
*/
public void searchByAdd() {
}
/**
* 修改指定记录
*/
public void modifyOpeartion() {
}
/**
* 删除指定记录
*/
public void deleteOpeartion() {
}
/**
* 删除全部记录
*/
public void deleteAllOpeartion() {
}
/**
* 按姓名排序
*/
public void orderName() {
}
/**
* 按年龄排序
*/
public void orderAge() {
}
/**
* 按性别排序
*/
public void orderSex() {
}
}
2.5创建数据校验类
package com.rome.www;
/**
* 数据校验类
*/
public class TelNoteRegex {
/**
* 对菜单输入选项的验证
*/
public int menuItemValidate(int min, int max) {
return 0;
}
/**
* 对输入姓名的验证
*
* @return
*/
public String nameValidate() {
return null;
}
/**
* 对年龄验证
*
* @return
*/
public String ageValidate() {
return null;
}
/**
* 对性别进行验证
*
* @return
*/
public String sexValidate() {
return null;
}
/**
* 对电话号码验证
*
* @return
*/
public String telNumValidate() {
return null;
}
/**
* 对地址进行验证
*
* @return
*/
public String addressValidate() {
return null;
}
}
2.6创建比较器类
排序器只能对电话本中存储的记录进行排序,不具备通用性,所以定义成Operate的内部类
/**
* 按姓名排序的比较器类
*/
class OrderByName implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
/**
* 按年龄排序的比较器
*/
class OrderByAge implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
/**
* 按性别排序的比较器
*/
class OrderBySex implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
3. 数据校验类
3.1 实现菜单项的验证方法
public int menuItemValidate(int min, int max){
//定义验证菜单的正则表达式
String regex = "[1-9]{1}";
//创建键盘输入对象
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("输入数字错误!");
}
}
}
3.2实现姓名验证方法
public String nameValidate(){
//验证姓名的正则表达式
String regex = "[a-zA-Z]{1,10}";
//创建Scanner对象
Scanner scanner = new Scanner(System.in);
while(true){
System.out.println("请输入姓名,格式为1-10之间的大写或小写字母");
String input = scanner.nextLine();
if (input.matches(regex)){
return input;
}else{
System.out.println("输入的姓名有误,请重新输入");
}
}
}
3.3实现年龄验证方法
public String ageValidate(){
//对年龄校验的正则表达式
String regex = "[1-9]{1}[0-9]{1}";
//创建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("您输入的年龄格式有误,请重新输入");
}
}
}
3.4 实现性别的验证方法
public String sexValidate(){
//对性别验证的正则表达式
String regex = "[m|M|f|F]{1}";
//创建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("输入的性别格式有误,重新输入");
}
}
}
3.5 实现电话号码的验证
public String telNumValidate(){
//对电话号码有验证的正则表达式
String regex = "(\\d{3,4}-\\d{7,8})|([1]{1}\\d{10})";
//创建键盘输入对象
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("输入的电话号码有误");
}
}
}
3.6 实现地址的验证
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("输入格式有误,请重新输入");
}
}
}
4.实现 App类中的方法
4.1 实现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);//结束当前虚拟机
}
}
}
4.2 实现main方法
public static void main(String[] args) {
App app = new App();
app.start();
}
5. 实现Operate类中的方法
5.1添加记录菜单方法
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; //return可以当前方法
}
}
}
5.2实现查找记录逻辑方法
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;
}
}
}
5.3 实现修改记录业务逻辑方法
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.modifyOpeartion();
break;
case 3: return;
}
}
}
5.4实现删除记录业务逻辑方法
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.deleteOpeartion();
break;
case 3: this.deleteAllOpeartion();
case 4: return;
}
}
}
5.5实现排序记录控制
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();
case 4: this.showAll();
case 5: return;
}
}
}
5.6实现添加记录的方法
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());
System.out.println("添加成功");
}
5.7实现查看全部记录的方法
public void showAll(){
if(this.list.size() == 0) {
System.out.println("没有任何记录");
return;
}
for(int i = 0; i < this.list.size(); i++)
{
System.out.println(this.list.get(i));
}
}
5.8实现按姓名查找功能
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(list.get(i).getName())){
System.out.println(this.list.get(i));
flag = false;
}
}
if(flag){
System.out.println("没有此人记录里");
}
}
5.9实现按年龄查找功能
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(list.get(i).getAge())){
System.out.println(this.list.get(i));
flag = false;
}
}
if(flag){
System.out.println("没有此人记录里");
}
}
5.10实现按性别查找功能
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.equalsIgnoreCase(list.get(i).getSex())){
System.out.println(this.list.get(i));
flag = false;
}
}
if(flag){
System.out.println("没有此人记录里");
}
}
5.10实现按电话号码查找功能
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(list.get(i).getTelNum())){
System.out.println(this.list.get(i));
flag = false;
}
}
if(flag){
System.out.println("没有此人记录里");
}
}
5.11 实现按地址查找记录业务
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(list.get(i).getAddress())){
System.out.println(this.list.get(i));
flag = false;
}
}
if(flag){
System.out.println("没有此人记录里");
}
}
5.12 实现修改指定记录业务功能
public void modifyOpeartion(){
TelNoteRegex telNoteRegex = new TelNoteRegex();
Menu menu = new Menu();
//对被修改的记录的序号进行验证,可以使用对菜单项验证的方法来完成
System.out.println("请输入记录的序号");
int itemNum = 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(itemNum-1).setName(name);
break;
case 2: String age = telNoteRegex.ageValidate();
this.list.get(itemNum-1).setAge(age);
break;
case 3: String sex = telNoteRegex.sexValidate();
this.list.get(itemNum-1).setSex(sex);
break;
case 4: String telNum = telNoteRegex.telNumValidate();
this.list.get(itemNum-1).setTelNum(telNum);
break;
case 5: String address = telNoteRegex.addressValidate();
this.list.get(itemNum-1).setAddress(address);
break;
case 6: return;
}
}
5.13 删除指定记录
public void deleteOpeartion(){
TelNoteRegex telNoteRegex = new TelNoteRegex();
System.out.println("请输入要删除的记录序号");
int itemNum = telNoteRegex.menuItemValidate(1,this.list.size());
this.list.remove(itemNum-1);
//重新为记录设置新的序号
for(int i = 0; i < this.list.size(); i++){
this.list.get(i).setId(i+1);
}
System.out.println("删除成功,请继续操作");
}
5.14删除全部记录
public void deleteAllOpeartion(){
this.list.clear();
System.out.println("删除成功");
}
5.15 实现比较器的排序规则
/**
* 按姓名排序的比较器类
*/
class OrderByName implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.getName().compareTo(o2.getName());
}
}
/**
* 按年龄排序的比较器
*/
class OrderByAge implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge().compareTo(o2.getAge());
}
}
/**
* 按性别排序的比较器
*/
class OrderBySex implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.getSex().compareTo(o2.getSex());
}
}
5.16 实现排序记录
/**
* 按姓名排序
*/
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);
}
}
/**
* 按年龄排序
*/
public void orderAge(){
Collections.sort(this.list,new OrderByAge());
for(int i = 0; i < this.list.size();i++){
this.list.get(i).setId(i+1);
}
}
/**
* 按性别排序
*/
public void orderSex(){
Collections.sort(this.list,new OrderBySex());
for(int i = 0; i < this.list.size();i++){
this.list.get(i).setId(i+1);
}
}
6.导出项目


选择main方法所在的类

能够启动项目的类

点击ok

选择apply再选择ok



完成后输出到out

右键jar文件找到这个目录


复制到桌面我们在桌面运行
输入java –jar 文件名

可以在桌面创建批处理文件

双击start文件即可运行
/**
* 按姓名排序的比较器类
*/
class OrderByName implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
/**
* 按年龄排序的比较器
*/
class OrderByAge implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
/**
* 按性别排序的比较器
*/
class OrderBySex implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return 0;
}
}
年少轻狂,总以为天下事竭力有为。人事尽时,终感力不能及。
浙公网安备 33010602011771号