Java--名片管理系统

  • (一)编程实现
    • 1、创建名片实体类
    • 2、创建名片管理类
      • (1) 创建主菜单
      • (2) 创建登录方法
      • (3) 创建名片管理方法
      • (4)创建添加名片方法
      • (5)保存名片到文件
      • (6)读取名片文件
      • (7) 创建查询名片方法
      • (8)修改名片方式
  • 实现可进可退的多级菜单系统
  • 功能:添加名片、查询名片、修改名片、删除名片
  • 要求:数据要持久化保存到磁盘上

(一)编程实现

1、创建名片实体类

  • 创建Card实体类
public class Card {private String id;private String name;private String workUnit;private String post;private String telephone;/***无参构造方法*/public Card() {}/***有参构造方法* * @param id* @param name* @param workUnit* @param post* @param telephone*/public Card(String id, String name, String workUnit, String post, String telephone) {this.id = id;this.name = name;this.workUnit = workUnit;this.post = post;this.telephone = telephone;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getWorkUnit() {return workUnit;}public void setWorkUnit(String workUnit) {this.workUnit = workUnit;}public String getPost() {return post;}public void setPost(String post) {this.post = post;}public String getTelephone() {return telephone;}public void setTelephone(String telephone) {this.telephone = telephone;}@Overridepublic String toString() {return "Card{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", workUnit='" + workUnit + '\'' +", post='" + post + '\'' +", telephone='" + telephone + '\'' +'}';}
}

2、创建名片管理类

  • 创建CardManagement
(1) 创建主菜单
public class CardManagement {//创建名片数组列表对象private static ArrayList<Card> cards = new ArrayList<>();public static void main(String[] args) {// 声明部分int mc1;Scanner sc = new Scanner(System.in);boolean isRunning = true;while (isRunning) {// 绘制一级菜单System.out.println("   名片管理系统");System.out.println("==================");System.out.println("     1. 登录");System.out.println("     0. 退出");System.out.println("==================");System.out.print("输入菜单编号[1,0]:");mc1 = sc.nextInt();// 根据用户选择执行相应操作switch (mc1) {case 1:login();break;case 0:System.out.println("谢谢使用~再见~");isRunning = false;break;default:System.out.println("输入的菜单编号有误!");}}}
}
  • 程序报错,因为在菜单项1里要调用的登录方法login()尚未定义

(2) 创建登录方法
  • CardManagement类创建login()方法
/**                                                                             * 登录方法                                                                         */
private static void login() {                                                   String username, password;                                                  Scanner sc = new Scanner(System.in);                                        System.out.print("用户名:");                                                   username = sc.next();                                                       System.out.print("密  码:");                                                  password = sc.next();                                                       if (username.equals("april") && password.equals("040824")) {                System.out.println("登录成功~");                                            // 调用名片管理方法                                                             cardManagement();                                                       } else {                                                                    System.out.println("用户名或密码有误,登录失败~");                                   }
}
  • 程序报错,因为在login()方法要调用的名片管理方法cardManagement()尚未定义

(3) 创建名片管理方法
  • CardManagement类里创建cardManagement()方法
/**                                                                       * 名片管理方法                                                                 */
private static void cardManagement() {                                    int mc2;                                                              Scanner sc = new Scanner(System.in);                                  boolean isRunning = true; // 循环控制变量                                   while (isRunning) {                                                   // 绘制二级菜单                                                         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("===================");                        System.out.print("输入菜单编号[1,2,3,4,5,6,7]:");                      mc2 = sc.nextInt();                                               switch (mc2) {                                                    case 1:                                                       System.out.println("执行添加名片功能~"); addCard(); //调用添加名片方法                  break;                                                    case 2:                                                       System.out.println("执行修改名片功能~"); modifyCard();                         break;                                                    case 3:                                                       System.out.println("执行查询名片功能~");findCard();                          break;                                                    case 4:                                                       System.out.println("执行删除名片功能~");                          break;                                                    case 5:                                                       System.out.println("读取名片文件到名片数组列表~");           readCardFile();          break;                                                    case 6:                                                       System.out.println("将名片数组列表写入名片文件~");           saveCards();//调用保存名片方法          break;                                                    case 7:                                                       isRunning = false; // 结束二级菜单循环                            break;                                                    default:                                                      System.out.println("输入的菜单编号有误!");                         }                                                                 }
}
  • 现在一个可进可退的菜单系统我们就做好了,可以简单测试一下

(4)创建添加名片方法
  • CardManagement类里创建addCard()方法
/**
* 添加名片方法*/
private static void addCard() {String id;String name;String workUnit;String post;String telephone;Scanner sc = new Scanner(System.in);System.out.print("编号:");id = sc.next();System.out.print("姓名:");name = sc.next();System.out.print("单位:");workUnit = sc.next();System.out.print("职位:");post = sc.next();System.out.print("手机:");telephone = sc.next();//创建名片对象Card card = new Card(id,name,workUnit,post,telephone);//将名片对象添加名片数组列表cards.add(card);
}
  • case 1 进行添加addCard()方法

(5)保存名片到文件
  • CardManagement类里创建saveCards()方法
/**
* 保存名片到文件
*/
private static void saveCards() {                                try {                                                        // 创建文件字符输出流                                             FileWriter fw = new FileWriter("cards.txt");             // 创建名片容器字符串缓冲对象                                         StringBuffer cardsBuffer = new StringBuffer();           // 用增强for循环遍历名片数组列表                                      for (Card card : cards) {                                // 输出名片对象                                            System.out.println(card);                            // 创建名片字符串缓冲对象                                       StringBuffer buffer = new StringBuffer();            // 添加名片字段信息(空格作为分隔符)                                 buffer.append(card.getId() + " ");                   buffer.append(card.getName() + " ");                 buffer.append(card.getWorkUnit() + " ");             buffer.append(card.getPost() + " ");                 buffer.append(card.getTelephone());                  // 将名片信息添加到名片容器字符串缓冲对象                               cardsBuffer.append(buffer.toString() + "\n");        }                                                        // 将名片容器字符串缓冲对象里的数据写入文件                                  fw.write(cardsBuffer.toString());                        // 关闭文件字符输出流                                             fw.close();                                              // 提示用户写入成功                                              System.out.println("恭喜,名片数据成功写入文件~");                    } catch (IOException e) {                                    e.printStackTrace();                                     }
}
  • case 6 进行添加saveCards()方法

(6)读取名片文件
  • CardManagement类里创建readCardFile()方法
  • 思路:行读取名片文件,把每行数据按空格拆分名片字段信息,基于名片字段信息创建名片对象,然后将每个名片对象添加到名片数组列表
 /**                                                                                     * 读取名片文件,保存到名片数组列表                                                                     */                                                                                     private static void readCardFile(){                                                     try{                                                                                //创建文件字符输入流                                                                     FileReader fr = new FileReader("cards.txt");                                    //创建缓冲字符输入流                                                                     BufferedReader br = new BufferedReader(fr);                                     //定义行变量                                                                         String nextLine = "";                                                           //通过循环读取名片文件                                                                    while ((nextLine = br.readLine()) != null) {                                    //拆分行字符串得到字段数组                                                              String[] fields = nextLine.split(" ");                                      //创建名片对象                                                                    Card card = new Card(fields[0],fields[1],fields[2],fields[3],fields[4]);    //将名片对象添加到名片数组列表                                                            cards.add(card);                                                            //提示用户添加成功                                                                  System.out.println("添加" + card + "到名片数组列表~");                               }                                                                               //关闭缓冲字符输入流                                                                     br.close();                                                                     //关闭文件字符输入流                                                                     fr.close();                                                                     } catch (FileNotFoundException e) {                                                 System.err.println("温馨提示:名片文件不存在~");                                            } catch (IOException e) {                                                           e.printStackTrace();                                                            }                                                                                   }
  • case 5 进行添加readCardFile()方法

(7) 创建查询名片方法
  • CardManagement类里创建findCard()方法
  • 思路:我们可以再做一个子菜单,包含两个选项:按编号查询和按姓名查询,但是我们不想再做子菜单,让用户输入待查的编号和姓名,这样会有四种情况:输入的编号和姓名全为空字符串,此时查询全部名片;输入的编号不为空字符串但是姓名为空字符串,此时按编号查询名片;输入的编号为空字符串但是姓名不为空字符串,此时按姓名查询;输入的编号和姓名都不为空字符串,此时按编号和姓名查询名片。
/**                                                                                            * 查询名片方法                                                                                      */
private static void findCard() {                                                               String id, name;                                                                           Scanner sc = new Scanner(System.in);                                                       System.out.print("编号:");                                                                   id = sc.nextLine(); // 不能使用next()方法                                                        System.out.print("姓名:");                                                                   name = sc.nextLine(); // 不能使用next()方法                                                      // 判断用户按哪种方式查询名片                                                                           if (id.equals("")) {                                                                       if (name.equals("")) { // 查询全部名片                                                       // 遍历名片数组列表                                                                        for (Card card : cards) {                                                          System.out.println(card.getId() + " "                                          + card.getName() + " " + card.getWorkUnit() + " "                      + card.getPost() + " " + card.getTelephone());                         }                                                                                  } else { // 按姓名查询名片                                                                    System.out.println("~按姓名查询名片~");                                                   Boolean found = false;                                                             // 遍历名片数组列表,按姓名来找                                                                  for (Card card : cards) {                                                          if (card.getName().equals(name)) {                                             found = true; // 找到了                                                       break; // 跳出循环                                                             }                                                                              }                                                                                  // 根据found值提示用户                                                                    if (found) {                                                                       // 针对同名情况                                                                      for (Card card : cards) {                                                      if (card.getName().equals(name)) {                                         System.out.println(card.getId() + " "                                  + card.getName() + " " + card.getWorkUnit() + " "              + card.getPost() + " " + card.getTelephone());                 }                                                                          }                                                                              } else {                                                                           System.out.println("温馨提示:查无此人~");                                              }                                                                                  }                                                                                      } else {                                                                                   if (name.equals("")) { // 按编号查询名片                                                      System.out.println("~按编号查询名片~");                                                   Boolean found = false;                                                             // 遍历名片数组列表,按编号来找                                                                  for (Card card : cards) {                                                          if (card.getId().equals(id)) {                                                 found = true; // 找到了                                                       // 输出名片信息                                                                  System.out.println(card.getId() + " "                                      + card.getName() + " " + card.getWorkUnit() + " "                  + card.getPost() + " " + card.getTelephone());                     break; // 跳出循环                                                             }                                                                              }                                                                                  // 根据found值提示用户                                                                    if (!found) {                                                                      System.out.println("温馨提示:查无此人~");                                              }                                                                                  } else { // 按编号和姓名查询名片                                                                 System.out.println("~按编号和姓名查询名片~");                                                Boolean found = false;                                                             // 遍历名片数组列表,按编号和姓名来找                                                               for (Card card : cards) {                                                          if (card.getId().equals(id) && card.getName().equals(name)) {                  found = true; // 找到了                                                       // 输出名片信息                                                                  System.out.println(card.getId() + " "                                      + card.getName() + " " + card.getWorkUnit() + " "                  + card.getPost() + " " + card.getTelephone());                     break; // 跳出循环                                                             }                                                                              }                                                                                  // 根据found值提示用户                                                                    if (!found) {                                                                      System.out.println("温馨提示:查无此人~");                                              }                                                                                  }                                                                                      }
}                                                                                                                                     
  • case 3 进行添加findCard()方法

(8)修改名片方式

CardManagement类里创建modifyCard()方法

/**                                                                                   * 修改名片方法                                                                             */
public static void modifyCard() {                                                     String id,name,workUnit,post,telephone;                                           Scanner sc = new Scanner(System.in);                                              boolean found = false;                                                            System.out.print("输入待修改者编号:");                                                    id = sc.nextLine();                                                               //遍历名片列表数组                                                                        for (Card card :cards) {                                                         if (card.getId().equals(id)) {                                            found = true; // 找到了                                                      // 输出名片信息                                                                 System.out.println(card.getId() + " "                                     + card.getName() + " " + card.getWorkUnit() + " "                 + card.getPost() + " " + card.getTelephone());                    break; // 跳出循环                                                            }                                                                             }                                                                                 // 根据found值提示用户                                                                   if (!found) {                                                                     System.out.println("说明:不输入信息,直接敲回车,表明不修改字段值");                                System.out.print("姓名:");                                                      name = sc.nextLine();                                                         System.out.print("单位:");                                                      workUnit = sc.nextLine();                                                     System.out.print("职务:");                                                      post = sc.nextLine();                                                         System.out.print("手机:");                                                      telephone = sc.nextLine();                                                    //采用传统for循环遍历名片数组列表                                                           for (int i = 0;i < cards.size();i++) {                                        //获取名片对象                                                                  Card card = cards.get(i);                                                 if (card.getId().equals(id)) {                                            //根据用户输入修改名片对象                                                        if (!name.equals("")) {                                               card.setName(name);                                               }                                                                     if (!workUnit.equals("")) {                                           card.setWorkUnit(workUnit);                                       }                                                                     if (!post.equals("")){                                                card.setPost(post);                                               }                                                                     if (!telephone.equals("")) {                                          card.setTelephone(telephone);                                     }                                                                     //用修改后的名片对象去更新名片数组列表对应的元素                                             cards.set(i,card);                                                    break;//跳出循环                                                          }                                                                         }                                                                             } else {                                                                          System.out.println("温馨提示:查无此人~");                                             }
}
  • case 2 进行添加modifyCard()方法

【Java--名片管理系统】相关推荐

  1. Java——名片管理系统

    目录 任务1.确定给定日期是一年的第几天 任务 2.构建可进不可退的多级菜单系统 任务1.确定给定日期是一年的第几天 要求输入年.月.日,最好能判断用户输入的是否是合法日期 比如2022年3月31日, ...

  2. Java名片管理系统

    文章目录 (一).创建名片实体类 (二).创建名片管理类 1.创建主菜单 2.创建登陆方法 3.创建名片管理方法 4.创建添加名片方法 5.创建保存名片方法 实现可进可退的多级菜单系统 功能:添加名片 ...

  3. java web简单的网上名片管理系统

    java web简单的网上名片管理系统 实现名片的增删查改以及回收站中信息的还原与彻底删除 1.登录注册页面 <%@ page language="java" content ...

  4. Java学习:创建简单的名片管理系统

    创建简单的名片管理系统 一.创建名片实体类 二.创建名片管理类 1. 创建主菜单 2. 创建登录方法 3. 创建名片管理方法 5. 添加名片方法 6.创建保存名片方法 7.创建读取名片文件方法 8. ...

  5. Java任务项目-名片管理系统

    文章目录 任务:名片管理系统 (一)任务完整代码 (二)代码步骤解析 1.创建Card类(名片实体类),代码编写 2.创建CardManagement类(名片管理系统) 3.创建添加名片方法 4.保存 ...

  6. 名片管理系统java,[作业]JavaEE框架开发技术之名片管理系统

    这是Java EE框架开发技术一书中贯穿整本书的一个练习系统(作业). 代码一共有两个部分 第一部分是第五章的作业,完成如下 使用原生的jdbc代码进行数据库的连接 界面和书本完全相同 除部分js代码 ...

  7. java名片_javaweb名片管理系统

    在学习基于javaweb的名片管理系统项目的时候,方便日后能及时查阅,在本平台中记录一下基于javaweb的名片管理系统的开发流程.在学习时候的选用了SSM(MYECLIPSE),这个框架不论是学习还 ...

  8. 【Java面向对象编程——名片管理系统】

    文章目录 (一)编程实现 1.创建名片实体类 2.创建名片管理类 (1)创建主菜单 (2)创建登录方法 (3)创建名片管理方法 (4)创建添加名片方法 (5)创建保存名片方法 (6)创建读取名片文件方 ...

  9. JAVA名片注册_JavaWeb练习-网上名片管理系统

    实验项目名称 JavaWeb网上名片管理系统 实验目的 实现名片的增.删.改.查等操作. 实验基本原理 JSP指令.JSP动作.JSP内置对象等 主要仪器设备及耗材 Win10.Myeclipse 实 ...

  10. java web 名片管理系统

    关注微信公众号:查看菜单<项目> 1.基础功能介绍 登录.注册 所有名片 查询名片[提交.重置] 修改名片[修改] 新增名片[添加.重置] 删除名片[删除.放入回收站] 回收站[还原.删除 ...

最新文章

  1. 2019年深度学习自然语言处理最新十大发展趋势(附下载报告)
  2. 关于自定义控件设计时如何把属性写入aspx中的研究(上)
  3. CPD和DESCR文件查看
  4. 用BenchmarkDotNet给C#程序做性能测试
  5. JDK1.6官方下载
  6. JS如何控制checkbox的全选反选
  7. Android Activity中重写onCreateOptionsMenu不显示菜单按钮
  8. linux用户管理和文件权限
  9. nginx访问502,日志报错:connect() to 127.0.0.1:180 failed (13: Permission denied)解决
  10. Python爬虫个人记录(二) 获取fishc 课件下载链接
  11. web如何加入视频?video
  12. 【2021牛客暑期多校训练营7 】 xay loves count
  13. 学会这些快准狠的Word技巧,你也能成为Word高手
  14. 关于计算机的知识作文,有关电脑的作文
  15. 使用HTML+CSS技术制作篮球明星介绍网站
  16. 转变自己的信仰——致少年的自己
  17. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客
  18. http://www.dewen.net.cn/q/9980/JQuery AJAX GBK 编
  19. 自定义Linxu启动logo(从其他分区加载logo)
  20. sqlserver更改盘符

热门文章

  1. ERP系统中的工作流和业务流
  2. angular ng lint 相关
  3. 取模、乘法和除法运算在CPU和GPU上的效率
  4. solidworks3D打印技术
  5. nginx 404 图片均衡
  6. 人生无意义,才更值得过,推石上山的搏斗本身,足以充实一颗人心,认清生活的荒诞,对它报之以微笑,就是对抗荒诞的最好方式
  7. chrome 查看日志
  8. 如何导出word文档
  9. C++异常传递三种不同方式介绍
  10. 【Linux下的性能测试】(三) : nmon图形分析