创建简单的名片管理系统

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

名片管理系统

  • 实现可退的多级菜单系统
  • 功能:添加名片、查询名片、修改名片、删除名片、保存名片、读取名片
  • 要求:数据要持久化保存到磁盘上

一、创建名片实体类

  • net.zwh.p03.t07包里创建Card实体类
  • Card实体类代码
package net.zwh.p03.t07;/*** 名片实体类*/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 + '\'' +'}';}
}

二、创建名片管理类

  • 在net.zwh.p03.t07包里创建CardManagement类

1. 创建主菜单

package net.zwh.p03.t07;import java.util.Scanner;/*** 功能:名片管理系统*/
public class CardManagement {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("zl") && password.equals("202111")) {      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("执行添加名片功能~");break;case 2:System.out.println("执行修改名片功能~");break;case 3:System.out.println("执行查询名片功能~");break;case 4:System.out.println("执行删除名片功能~");break;case 5:System.out.println("读取名片文件到名片数组列表~");break;case 6:System.out.println("将名片数组列表写入名片文件~");break;case 7:isRunning = false; // 结束二级菜单循环break;default:System.out.println("输入的菜单编号有误!");}}}
  • 运行查看

5. 添加名片方法

  • CardManagement类创建addCard()方法

  • 思路:输入名片信息,基于名片信息构建名片对象,将名片对象添加到名片数组列表

  • 在类的声明部分创建名片列表对象(思考为什么要这样做)

  • 编写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);
}                                                              
  • 修改cardManagement()方法
  • 运行程序,测试效果

6.创建保存名片方法

  • CardManagement类创建saveCards()方法
  • 思路:遍历名片数组列表,将每一个名片对象的属性拼接成一个有分隔符的字符串,写入名片文件
 /*** 创建保存名片方法** 任务:检测编号,无重复*/private static void saveCards() {// 创建文件字符输出流try {FileWriter fw = new FileWriter("cards.txt");// 用增强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());// 将名片信息写入名片文件(必须添加换行符)fw.write(buffer.toString() + "\n");                }// 关闭文件字符输出流fw.close();// 提示用户写入成功System.out.println("名片信息写入成功~");} catch (IOException e) {e.printStackTrace();}}
  • 对每一个名片对象都会写入磁盘文件,这个方法不好,需要优化。
  • 将所有名片数据分行放到一个字符串缓冲对象里,这样只需要写一次磁盘文件,效率才能提高
/*** 创建保存名片方法** 任务:检测编号,无重复*/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();}}
  • 修改cardManagement()方法,添加调用saveCards()方法

  • 运行测试,查看效果

7.创建读取名片文件方法

  • 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();// 用字段数组设置对象属性card.setId(fields[0]);card.setName(fields[1]);card.setWorkUnit(fields[2]);card.setPost(fields[3]);card.setTelephone(fields[4]);// 输出名片对象System.out.println("添加\n" + card + "\n到名片数组列表");// 将名片对象添加到名片数组列表cards.add(card);}// 关闭缓冲字符输入流br.close();// 关闭文件字符输入流fr.close();} catch (FileNotFoundException e) {System.err.println("温馨提示:名片文件不存在~");} catch (IOException e) {System.err.println("");}}
  • 添加调用方法
  • 运行程序,查看结果

8. 创建查询方法

  • CardManagement类创建searchCard()方法

  • 思路:我们可以再做一个子菜单,包含两个选项:按编号查询和按姓名查询。还可以让用户输入待查的编号和姓名, 这样会有4种情况:

  • 输入编号和姓名全为空字符串,此时查询全部名片;
  • 输入编号不为空,但是姓名为空,此时按编号查询;
  • 输入编号为空字符串,但姓名不为空,此时按姓名查询;
  • 输入编号和姓名都不为空,此时按编号和姓名查询
  • 添加调用searchCard()方法

Java学习:创建简单的名片管理系统相关推荐

  1. JAVA swing实现简单的学生管理系统

    JAVA swing实现简单的学生管理系统 基本功能介绍 本系统实现了一个简单而实用的学生管理系统,通过这个学生管理系统我们可以进行一些基本的学生管理操作,它可以进行简单的添加学生.删除学生.修改学生 ...

  2. java+mysql实现简单电影影片管理系统

    java+mysql实现简单电影影片管理系统 系统结构介绍 1.主要视图 2.项目准备 3.代码 1.Movies.java和user.java 2.demo.java 系统结构介绍 1.主要视图 分 ...

  3. Python 基础 之 Pycharm 实现简单的名片管理系统

    Python 基础 之 Pycharm 实现简单的名片管理系统 目录 Python 基础 之 Pycharm 实现简单的名片管理系统 一.简单介绍

  4. java学习之路1--酒店管理系统

    java学习之路1 酒店管理系统 题目概括 实现思路 代码实现 收获 酒店管理系统 题目概括 使用java语言编写一个有订房,退房,查房功能的一个简易酒店管理系统 实现思路 房间类来存储房间信息,酒店 ...

  5. Java水果搬运问题_关于Java实现一个简单水果订购管理系统的几点问题

    关于Java实现一个简单水果订购管理系统的几点问题 关于Java实现一个简单水果订购管理系统的几点问题 这个周用java写了一个简单的水果订购系统.其中遇上了几个问题 一.在编写过程中,我试图输入订购 ...

  6. java基础做简单的医院管理系统,附带课程设计说明书

    最近做了一个简单的医院管理系统,查阅资料时发现,网上的很多java语言做的语言管理系统项目过于庞大,代码过于繁杂,不适于初学者更好的理解,下面我把我做的简单的医院管理系统分享给大家.当然了大牛直接略过 ...

  7. java学习(1):学生管理系统1

    最近又想开始接触java了,写了一个简单的学生管理系统找找感觉,分为三部分,适合萌新使用. 实现初步功能 1建立一个student的java类 import java.util.*; public c ...

  8. Python做一个简单的名片管理系统

    项目介绍 如下图,本次项目主要完成新建名片.显示全部名片.查询对应名片并对对应名片完成相关操作. 框架搭建: 名片管理首先可以由main.py以及tools.py组成,main.py主要完成主要功能, ...

  9. 用Python实现简单的名片管理系统

    首先新建项目,包含主程序cards_main和工具库cards_tools: 如下: main函数主主要使用while和if实现4功能切换,切换的具体操作由cards_tools中的函数执行.不说了直 ...

最新文章

  1. ASP.Net中利用CSS实现多界面两法
  2. 图像读取、转为灰度图像、均值平滑、显示保存操作
  3. QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考
  4. Object family 在Object search中的default逻辑
  5. LeetCode 1674. 使数组互补的最少操作次数(差分思想)
  6. 零基础转行学习python是否还在纠结?这里告诉你答案!
  7. java开发者工具开源版_6种开源工具可帮助教育工作者保持井井有条
  8. dijkstra伪代码翻译java,Dijkstra算法的伪代码和C语言版本,还是模版
  9. surface 安卓双系统_一张图看懂微软Surface发布会:史上最大惊喜
  10. 如何从 iCloud 共享文件和文件夹?
  11. iPhone的屏幕尺寸和分辨率
  12. 【OCR 文字识别】Python中一个不错的OCR库-EasyOCR
  13. 移动地盘仿真平台搭建
  14. 手机cpu天梯图2020
  15. GCTA学习8 | GCTA计算多性状遗传力和遗传相关
  16. win10问题:无任何操作,2分钟后电脑就自动休眠
  17. win10下台式电脑主机,无法播放声音解决办法。
  18. 计算机音乐谱大全好汉歌,好汉歌简谱-刘欢-电视剧《水浒传》主题曲
  19. 腾讯企业邮箱登录、网易企业邮箱、TOM企业邮箱,各大企业邮箱如何申请登录?
  20. jQuery fadeIn() 、fadeOut()

热门文章

  1. ABM410-ASEMI贴片整流桥ABM410
  2. 一文深度学习建模预测全流程(Python)
  3. hive的UDF函数的使用。常见UDF函数
  4. Hive 自定义UDF函数讲解
  5. Instruments相关
  6. Vue响应式原理(看这一篇就够了)
  7. APP第一次请求HTTPS慢
  8. PbootCMS微信小程序API的封装使用教程
  9. 1月初.wang域名总量15强:易名西数阿里云稳居三甲
  10. 11月末.wang域名总量15强:易名中国榜首 份额涨5%