文中所有代码来自尚硅谷宋红康老师的Java课程,如有侵权请联系删除。

项目说明:

模拟实现一个基于文本界面的《客户信息管理软件》。

该软件能够实现对客户对象的插入、修改和删除(用数组实现),并能够打印客户明细表。

项目采用分级菜单方式。主菜单如下:

-----------------客户信息管理软件-----------------

1 添 加 客 户

2 修 改 客 户

3 删 除 客 户

4 客 户 列 表

5 退           出

请选择(1-5):_

•每个客户的信息被保存在customer对象中。
•以一个customer类型的数组来记录当前所有的客户。
•每次“添加客户”(菜单1)后,客户(Customer)对象被添加到数组中。
•每次“修改客户”(菜单2)后,修改后的客户(Customer)对象替换数组中原对象。
•每次“删除客户”(菜单3)后,客户(Customer)对象被从数组中清除。
•执行“客户列表 ”(菜单4)时,将列出数组中所有客户的信息。

项目代码

整个项目分为4个Java文件,分别实现功能。

CMUtility文件,实现与客户的交互

package customer.util;
import java.util.*;public class CMUtil {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;}
}

customer代码文件,实现创建客户信息

package customer.bean;public class customer {private String name;private char gender;private int age;private String phone;private String email;public void setName(String name) {this.name = name;}public String getName() {return name;}public void setGender(char gender) {this.gender = gender;}public char getGender() {return gender;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public void setEmail(String email) {this.email = email;}public String getEmail() {return 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;}}

customerList文件,实现客户信息的一些操作

package customer.service;import customer.bean.customer;public class customerList {private customer[] customers; //用来保存用户对象的数组private int total=0;  //记录已保存的客户的数量public customerList(int totalCustomer){customers=new customer[totalCustomer];}public boolean addcustomer(customer customes){if (total>=customers.length){return false;}customers[total++]=customes;return true;}public boolean replacecustomer(int index,customer cust){if (index<0 || index>=total){return false;}customers[index]=cust;return true;}public boolean deletecustomer(int index){if (index<0 || index>=total){return false;}for (int i=0;i<total-1;i++){customers[i]=customers[i+1];}customers[--total]=null;return true;}public customer[] getAllCustomers(){customer[] custs=new customer[total];for (int i=0;i<total;i++){custs[i]=customers[i];}return custs;}public customer getCustomer(int index){if (index<0 || index>=total){return null;}return customers[index];}public int getTotal(){return total;}}

customerView文件,实现主界面实现和逻辑交互

package customer.ui;import customer.bean.customer;
import customer.service.customerList;
import customer.util.CMUtil;public class customerview {private customerList customers=new customerList(10);public customerview(){customer cust=new customer("张三", '男', 30, "010-56253825","abc@email.com");customers.addcustomer(cust);}public void enterMainMenu(){boolean loopFlag = true;do {System.out.println("\n-----------------客户信息管理软件-----------------\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 key = CMUtil.readMenuSelection();System.out.println();switch (key) {case '1':addNewCustomer();break;case '2':modifyCustomer();break;case '3':deleteCustomer();break;case '4':listAllCustomers();break;case '5':System.out.print("确认是否退出(Y/N):");char yn = CMUtil.readConfirmSelection();if (yn == 'Y')loopFlag = false;break;}} while (loopFlag);}private void addNewCustomer() {System.out.println("---------------------添加客户---------------------");System.out.print("姓名:");String name = CMUtil.readString(4);System.out.print("性别:");char gender = CMUtil.readChar();System.out.print("年龄:");int age = CMUtil.readInt();System.out.print("电话:");String phone = CMUtil.readString(15);System.out.print("邮箱:");String email = CMUtil.readString(30);customer cust = new customer(name, gender, age, phone, email);boolean flag = customers.addcustomer(cust);if (flag) {System.out.println("---------------------添加完成---------------------");} else {System.out.println("----------------记录已满,无法添加-----------------");}}private void modifyCustomer() {System.out.println("---------------------修改客户---------------------");int index = 0;customer cust = null;for (;;) {System.out.print("请选择待修改客户编号(-1退出):");index = CMUtil.readInt();if (index == -1) {return;}cust = customers.getCustomer(index - 1);if (cust == null) {System.out.println("无法找到指定客户!");} elsebreak;}System.out.print("姓名(" + cust.getName() + "):");String name = CMUtil.readString(4, cust.getName());System.out.print("性别(" + cust.getGender() + "):");char gender = CMUtil.readChar(cust.getGender());System.out.print("年龄(" + cust.getAge() + "):");int age = CMUtil.readInt(cust.getAge());System.out.print("电话(" + cust.getPhone() + "):");String phone = CMUtil.readString(15, cust.getPhone());System.out.print("邮箱(" + cust.getEmail() + "):");String email = CMUtil.readString(15, cust.getEmail());cust = new customer(name, gender, age, phone, email);boolean flag = customers.replacecustomer(index - 1, cust);if (flag) {System.out.println("---------------------修改完成---------------------");} else {System.out.println("----------无法找到指定客户,修改失败--------------");}}private void deleteCustomer() {System.out.println("---------------------删除客户---------------------");int index = 0;customer cust = null;for (;;) {System.out.print("请选择待删除客户编号(-1退出):");index = CMUtil.readInt();if (index == -1) {return;}cust = customers.getCustomer(index - 1);if (cust == null) {System.out.println("无法找到指定客户!");} elsebreak;}System.out.print("确认是否删除(Y/N):");char yn = CMUtil.readConfirmSelection();if (yn == 'N')return;boolean flag = customers.deletecustomer(index - 1);if (flag) {System.out.println("---------------------删除完成---------------------");} else {System.out.println("----------无法找到指定客户,删除失败--------------");}}private void listAllCustomers() {System.out.println("---------------------------客户列表---------------------------");customer[] custs = customers.getAllCustomers();if (custs.length == 0) {System.out.println("没有客户记录!");} else {System.out.println("编号\t姓名\t性别\t年龄\t\t电话\t\t邮箱");for (int i = 0; i < custs.length; i++) {System.out.println(i + 1 + "\t" + custs[i].getName() + "\t" + custs[i].getGender() + "\t" + custs[i].getAge() + "\t\t" + custs[i].getPhone() + "\t" + custs[i].getEmail());//System.out.println((i+1) + "\t" + custs[i].getDetails());}}System.out.println("-------------------------客户列表完成-------------------------");}public static void main(String[] args) {customerview cView = new customerview();cView.enterMainMenu();}}

java项目之Bank银行代码相关推荐

  1. 【shopify 1】调研出海项目,发现shopify没有java的相关SDK接口,但是找到一个最新2022年6月的Java项目分享了相关代码,使用docker进行环境搭建、编译,并成功启动

    目录 前言 1,关于shopify java调研 2,发现一个新的关于shopify的JavaSDK开源项目是2022年6月发布的 3,使用OAuth2 进行授权的逻辑 4,解决相关问题,解决配置依赖 ...

  2. java项目免费授权方案 代码加密 离线授权 模块授权

    java项目单机离线部署时,放在客户端无外网控制权限, 怎么实现软件级别的加密授权呢?大多数使用lic号 , 采集mac地址,硬件编号授权, 但是class类很容易反编译被破解.很容易被模仿,抄袭核心 ...

  3. 纯java的方式实现自定义自动化部署java项目

    纯java的方式实现自定义自动化部署java项目 前言 使用第三方的服务或插件实现部署所存在的问题 自动化部署java项目 java项目部署方式 流程 代码实现 打包 使用 java 执行 cmd 进 ...

  4. java学习笔记(9) 第9章 Java项目-房屋出租系统

    Java项目-房屋出租系统 代码打包--百度网盘链接: 9.1 房屋出租系统-需求 9.1.1 项目需求说明 9.2 房屋出租系统-界面 9.3 房屋出租系统-设计(!!) 9.4 房屋出租系统-实现 ...

  5. K8s 集群资源监控、高可用搭建、部署java项目 (下)

    目录 集群资源监控 监控指标和搭建方案 搭建监控平台(k8s部署) 部署守护进程 部署prometheus 部署Grafana 高可用k8s集群 系统初始化 master节点部署keepalived ...

  6. java web项目网上银行_网上银行java项目源代码(含最终文档)超棒!

    [实例简介] 网上银行java项目源代码(含最终文档) 超棒!绝对让你满意... [实例截图] [核心代码] 3009218016万冠 └── 3009218016万冠 ├── webBank │   ...

  7. 项目名称:Bank Account Management System 银行账户管理系统 简称BAM

    有兴趣的高手可以发表一下代码   供我们初级者借鉴借鉴 项目名称:Bank Account Management System 银行账户管理系统 简称BAM 项目描述:这是一个银行账户管理系统,用户可 ...

  8. .NET 程序测试 Java 项目 log4j2 是否存在远程代码执行漏洞

    最近两天被朋友圈的"Apache Log4j2 远程代码执行漏洞"刷屏了,主要是因为组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求 ...

  9. java ee 导入项目_最代码网站java项目下载后遇到项目打开,导入,运行的问题QA汇总...

    经常有牛牛下载最代码的代码后遇到各种关于压缩包打开,项目导入,项目运行的问题,我这边总结了很多相关的问答,博客,代码. 项目无法运行,首先确认本地配置,搞不定再求助搜索引擎,最后再私信最代码官方. 一 ...

最新文章

  1. java中的模板方法设计模式
  2. 如何修改Android应用程序能够使用的默认最大内存值
  3. “三十而已”女性洞察报告
  4. java 多线程日志_多线程 打印的日志出现重复行
  5. 2019年开发者必读!20位阿里技术大牛们帮你列了一份经典书单!...
  6. LeetCode 100. Same Tree
  7. 初步理解NServiceBus
  8. 数据库的几个基本概念
  9. 13个Excel动图小技巧,快速提高工作效率?建议收藏!
  10. Macbook怎么开启三指移动 ForceTouch TrackPad开启三指移动方法
  11. 分省老年抚养比和老年人口比重(1995-2018年)
  12. Linux关闭防火墙并设置开机启动/不启动
  13. Blender建模(二)
  14. 网页制作大作业HTML+CSS制作静态网页----原神
  15. 手机铃声和图片的详细设计说明
  16. R语言学习(一)前言
  17. 分享 13 个可以在线制作 360 度全景视图的网站
  18. 世界 IT 公司 20 强企业的敏捷转型实例
  19. 微软准备再次裁员2850人 一年之内完成
  20. 利用matlab实现复数域空间牛顿迭代法的分形图案展示(newton法)

热门文章

  1. 前端学习之路之CSS (一)
  2. 从感知机到支持向量机—学习笔记
  3. 关于ie7下display:inline-block;不支持的解决方案
  4. Verilog HDL 学习笔记3-Latch
  5. 4款bt search
  6. 再见了亲爱的学生们,再见了敬爱的同事们,再见了信狮
  7. 软考初级——计算机系统基础知识
  8. mysql round 四舍五入_MySQL之ROUND函数四舍五入的陷阱
  9. python画点云_python scipy Delaunay绘制点云
  10. 日均5亿查询量的京东订单中心,为什么舍MySQL用ElasticSearch?