首页 > 其他分享 >暑假代码训练项目增删改查(一)

暑假代码训练项目增删改查(一)

时间:2022-09-02 15:37:11浏览次数:95  
标签:return String int 改查 System 训练项目 增删 public out


package com.atguigu.p2.bean; /** * @Description Customer 为实体对象,用来封装客户信息 * @author 高槐玉 * @date 2022年8月29日晚20:45 * */ public class Customer { private String name;//客户姓名 private char gender;//客户性别 private int age;//客户年龄 private String phone;//客户电话 private String email;//电子邮箱 public String getName() { return name; } public void setName(String name) { this.name = name; } public char getGender() { return gender; } public void setGender(char gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Customer() { } public Customer(String name, char gender, int age, String phone, String email) { this.name = name; this.gender = gender; this.age = age; this.phone = phone; this.email = email; } }

customer封装客户信息代码(上)

 

CMUtility代码,这个是工具类,提供各类型的方法,比如读入键盘,判断Y或者N等等:

 

package com.atguigu.p2.util;

import java.util.*;
/**
 CMUtility工具类:
 将不同的功能封装为方法,就是可以直接通过调用方法使用它的功能,而无需考虑具体的功能实现细节。
 */
public class CMUtility {
    private static Scanner scanner = new Scanner(System.in);
    /**
     用于界面菜单的选择。该方法读取键盘,如果用户键入’1’-’5’中的任意字符,则方法返回。返回值为用户键入字符。
     */
    public static char readMenuSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false);
            c = str.charAt(0);
            if (c != '1' && c != '2' &&
                    c != '3' && c != '4' && c != '5') {
                System.out.print("选择错误,请重新输入:");
            } else break;
        }
        return c;
    }
    /**
     从键盘读取一个字符,并将其作为方法的返回值。
     */
    public static char readChar() {
        String str = readKeyBoard(1, false);
        return str.charAt(0);
    }
    /**
     从键盘读取一个字符,并将其作为方法的返回值。
     如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
     */
    public static char readChar(char defaultValue) {
        String str = readKeyBoard(1, true);
        return (str.length() == 0) ? defaultValue : str.charAt(0);
    }
    /**
     从键盘读取一个长度不超过2位的整数, 并将其作为方法的返回值。
     */
    public static int readInt() {
        int n;
        for (; ; ) {
            String str = readKeyBoard(2, false);
            try {
                n = Integer.parseInt(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }
    /**
     从键盘读取一个长度不超过2位的整数,并将其作为方法的返回值。
     如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
     */
    public static int readInt(int defaultValue) {
        int n;
        for (; ; ) {
            String str = readKeyBoard(2, true);
            if (str.equals("")) {
                return defaultValue;
            }

            try {
                n = Integer.parseInt(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }
    /**
     从键盘读取一个长度不超过limit的字符串,并将其作为方法的返回值。
     */
    public static String readString(int limit) {
        return readKeyBoard(limit, false);
    }
    /**
     从键盘读取一个长度不超过limit的字符串,并将其作为方法的返回值。
     如果用户不输入字符而直接回车,方法将以defaultValue 作为返回值。
     */
    public static String readString(int limit, String defaultValue) {
        String str = readKeyBoard(limit, true);
        return str.equals("")? defaultValue : str;
    }
    /**
     用于确认选择的输入。该方法从键盘读取‘Y’或’N’,并将其作为方法的返回值。
     */
    public static char readConfirmSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false).toUpperCase();
            c = str.charAt(0);
            if (c == 'Y' || c == 'N') {
                break;
            } else {
                System.out.print("选择错误,请重新输入:");
            }
        }
        return c;
    }

    private static String readKeyBoard(int limit, boolean blankReturn) {
        String line = "";

        while (scanner.hasNextLine()) {
            line = scanner.nextLine();
            if (line.length() == 0) {
                if (blankReturn) return line;
                else continue;
            }

            if (line.length() < 1 || line.length() > limit) {
                System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                continue;
            }
            break;
        }

        return line;
    }
}

 

这个是CustomerList代码,这个是内层方面,提供增删改查的代码逻辑:

package com.atguigu.p2.service;

import com.atguigu.p2.bean.Customer;

public class CustomerList {
    private Customer[] customers;
    private int total = 0;
    public CustomerList(int totalCustomer){
        /**
         * 用来初始化customers数组的构造器
         *
         */
        customers = new Customer[totalCustomer];

    }

    /**
     * @Description 将指定的客户添加到数组中
     * @param customer
     * @return true:添加成功 false:添加失败
     */
    public boolean addCustomer(Customer customer){
        if(total>=customers.length){
            return false;
        }
        customers[total] = customer;
        total++;
        return true;
    }

    /**
     * @Description  修改指定位置的客户信息
     * @param index
     * @param cust
     * @return true:修改成功 false:修改失败
     */
    public boolean replaceCustomer(int index,Customer cust){
        if(index<0||index>total-1){
            return false;
        }
        customers[index] = cust;
        return true;
    }

    /**
     * 删除指定索引上的客户
     * @param index
     * @return true:删除成功 false:删除失败
     */
    public boolean deleteCustomer(int index){
        if(index<0||index>total-1){
            return false;
        }
        for(int i = index;i < total - 1;i++){
            customers[i]=customers[i+1];

        }
        //最后有数据的元素需要置空
        customers[total - 1] = null;
        total--;
        return  true;
    }

    /**
     * Description 获取所有的客户的信息
     * @return
     */
    public Customer[]getAllCustomers(){
        Customer[] custs = new Customer[total];
        for(int i = 0;i < custs.length;i++){
        custs[i] = customers[i];
        }
        return custs;
    }

    /***
     * @Description 获取指定索引位置上的客户
     * @param index
     * @return false:null
     */
    public Customer getCustomer(int index){
        if(index<0||index>total-1){
            return null;
        }
        return  customers[index];
    }

    /**
     * @Description 获取存储的客户的数量
     * @return
     */
    public int getTotal(){
        return total;
    }

}

 

这是CustomerView代码,是与用户交互的页面:

package com.atguigu.p2.ui;

import com.atguigu.p2.bean.Customer;
import com.atguigu.p2.service.CustomerList;
import com.atguigu.p2.util.CMUtility;

public class CustomerView {
    private CustomerList customerList = new CustomerList(10);


//    public  CustomerView(){
//        Customer customer = new Customer("胡婧怡",'男',23,"18327870838","@qq.com235909");
//        customerList.addCustomer(customer);
//
//    }
    /**
     * 显示《客户管理页面》界面的方法
     * @Description
     * @author 高槐玉
     * @date 2022年8月30日晚上20点34分
     */
    public void enterMainMenu(){
        boolean isFlag = true;
        while (isFlag) {
            System.out.println("\n-----------------客户信息管理软件----------------------");
            System.out.println("                    1添加客户");
            System.out.println("                    2修改客户");
            System.out.println("                    3删除客户");
            System.out.println("                    4客户列表");
            System.out.println("                    5退 出\n");
            System.out.print("                      请选择(1-5):");
            char menu = CMUtility.readMenuSelection();
            switch (menu){
                case '1':
                    addNewCustomer();
                    break;
                case '2':
                    modifyCustomer();
                    break;
                case '3':
                    deleteCustomer();
                    break;
                case '4':
                    listAllCustomers();
                    break;
                case '5':
                    System.out.println("确认是否退出(Y/N):");
                    char isExit = CMUtility.readConfirmSelection();
                    if(isExit == 'Y'){
                        isFlag = false;
                    }
                    break;
            }
        }
    }

    /**
     * 添加客户的操作
     * @Description
     * @author 高槐玉
     * @date 2022年8月30日晚上20点34分
     */
    private void addNewCustomer(){
        System.out.println("------------------------------------添加客户----------------------------");
        System.out.println("姓名:");
        String name = CMUtility.readString(10);
        System.out.println("性别");
        char gender = CMUtility.readChar();
        System.out.println("年龄");
        int age = CMUtility.readInt();
        System.out.println("电话");
        String phone = CMUtility.readString(30);
        System.out.println("邮箱");
        String email = CMUtility.readString(30);

        Customer customer = new Customer(name, gender, age, phone, email);
//        Customer customer = new Customer("胡婧怡",'男',23,"18327870838","@qq.com235909");
        boolean isSuccess = customerList.addCustomer(customer);
        if(isSuccess){
            System.out.println("------------------------------------添加成功!----------------------------");
        }else{
            System.out.println("------------------------------------客户目录已满,添加失败!----------------------------");
        }

    }
    /**
     * 修改客户的操作
     * @Description
     * @author 高槐玉
     * @date 2022年8月30日晚上20点34分
     */
    private void modifyCustomer(){
        System.out.println("------------------------------------客户列表----------------------------");
        for(;;){
            System.out.println("请选择待修改的客户编号(-1退出)");
            int number = CMUtility.readInt();
            int hjy = customerList.getTotal();
            if(number==-1){
                break;
            }else if(number<1 || number>hjy){
            System.out.println("无法找到该客户");
            }else{
            Customer cust = customerList.getCustomer(number-1);
                System.out.print("姓名(" + cust.getName() + "):");
                String name = CMUtility.readString(10,cust.getName());
                System.out.print("性别(" + cust.getGender()+"):");
                char gender = CMUtility.readChar(cust.getGender());
                System.out.print("年龄(" + cust.getAge() + "):");
                int age = CMUtility.readInt(cust.getAge());
                System.out.print("电话(" + cust.getPhone() + "):");
                String phone = CMUtility.readString(13,cust.getPhone());
                System.out.print("邮箱(" + cust.getEmail() + "):");
                String email = CMUtility.readString(30,cust.getEmail());
                Customer newcust = new Customer(name,gender,age,phone,email);
                customerList.replaceCustomer(number-1,newcust);
            }
        }
    }
    /**
     * 删除客户的操作
     * @Description
     * @author 高槐玉
     * @date 2022年8月30日晚上20点34分
     */
    private void deleteCustomer(){
        System.out.println("选择要删除的客户编号:");
        int number = CMUtility.readInt();
        boolean isDelete = customerList.deleteCustomer(number-1);
        if(isDelete){
            System.out.println("删除成功!");

        }else {
            System.out.println("修改失败!3");
        }
    }
    /**
     * 显示客户列表的操作
     * @Description
     * @author 高槐玉
     * @date 2022年8月30日晚上20点34分
     */
    private void listAllCustomers(){
        System.out.println("------------------------------------客户列表----------------------------");
        int ghy = customerList.getTotal();
        if(ghy == 0){
            System.out.println("没有客户记录!");
        }else {
            System.out.println("编号\t姓名\t\t性别\t\t年龄\t\t电话\t\t\t\t邮箱");
            Customer[] hjy = customerList.getAllCustomers();
            for(int i = 0;i< hjy.length;i++){
                Customer hjy2 = hjy[i];
                System.out.println((i+1) + "\t" + hjy2.getName() + "\t\t" +
                        hjy2.getGender() + "\t\t" +hjy2.getAge() + "\t\t" +hjy2.getPhone()+"\t\t\t"+hjy2.getEmail());
            }
        }




        System.out.println("------------------------------------客户列表完成!----------------------------");
    }

    public static void main(String[] args){
        CustomerView view = new CustomerView();
        view.enterMainMenu();
    }
}

 

标签:return,String,int,改查,System,训练项目,增删,public,out
From: https://www.cnblogs.com/gaohuaiyu/p/16650088.html

相关文章

  • 增删改查
    增:insertinto`table`(`id`,`name`,`sex`,`grade`)value('1','张三','男','三年级')删:deletefrom`table`where`id`='1'改:update'table'set`name`='李四'w......
  • MyBatis常用注解及基本增删改查的注解实现
    MyBatis的常用注解注解可以减少Mapper文件的编写,常用注解如下;@Insert:实现新增@Update:实现更新@Delete:实现删除@Select:实现查询@Result:实现结果集封装@Results:可......
  • 利用Java集合实现学生信息的”增删查“
    之前学了Java中的集合,打算写一个小程序来消化一下!那么我们知道,集合相比数组的优点就是可以动态的增加元素,这对比数组来说,十分的便捷;并且集合为我们封装好一些方法,可以更......
  • 通过postman实现数据列表的增删改查
    constKoa=require('koa')constrouter=require('koa-router')()constviews=require('koa-views')constnunjucks=require('nunjucks')constsession=re......
  • mysql增删改查
    #include<stdio.h>#include<stdlib.h>#include<mysql.h>#include<unistd.h>#include<string.h>intmain(){ MYSQL*conn; MYSQL_RES*res; MYSQL_ROWro......
  • mysql的增删改查
    针对库的增删改查(文件夹)#增createdatabasedb1;创建一个库库名为db1createdatabasedb2charset='gbk';创建一个库库名为db2charset设置编码为gbk#查sho......
  • 字典创建和增删改查
    列表数据顺序发生变化,每个数据的下标也会随之变化,查找代码也需要跟着变。但是字典不同,数据顺序变化前后都可以统一的标准查找数据。1、创建字典的语法字典特点:符号......
  • 什么是双向链表?双向链表的操作封装实现(增删改查)?
    什么是双向链表?双向链表既可以从头遍历到尾,又可以从尾遍历到头也就是链表相连的过程是双向的.那么它的实现原理,你能猜到吗?一个节点既有向前连接的引用,也......
  • pyhton单表数据增删改查
    fromdjango.testimportTestCase#Createyourtestshere.importosif__name__=='__main__':os.environ.setdefault('DJANGO_SETTINGS_MODULE','DAY64.settings......
  • mysql增删改查json中的某个字段
    创建表1CREATETABLEt_json(idINTPRIMARYKEY,NAMEVARCHAR(20),infoJSON);插入记录1INSERTINTOt_json(id,sname,info)VALUES(1,'test','{"time":"20......