Java学习:创建简单的名片管理系统
创建简单的名片管理系统
- 一、创建名片实体类
- 二、创建名片管理类
- 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学习:创建简单的名片管理系统相关推荐
- JAVA swing实现简单的学生管理系统
JAVA swing实现简单的学生管理系统 基本功能介绍 本系统实现了一个简单而实用的学生管理系统,通过这个学生管理系统我们可以进行一些基本的学生管理操作,它可以进行简单的添加学生.删除学生.修改学生 ...
- java+mysql实现简单电影影片管理系统
java+mysql实现简单电影影片管理系统 系统结构介绍 1.主要视图 2.项目准备 3.代码 1.Movies.java和user.java 2.demo.java 系统结构介绍 1.主要视图 分 ...
- Python 基础 之 Pycharm 实现简单的名片管理系统
Python 基础 之 Pycharm 实现简单的名片管理系统 目录 Python 基础 之 Pycharm 实现简单的名片管理系统 一.简单介绍
- java学习之路1--酒店管理系统
java学习之路1 酒店管理系统 题目概括 实现思路 代码实现 收获 酒店管理系统 题目概括 使用java语言编写一个有订房,退房,查房功能的一个简易酒店管理系统 实现思路 房间类来存储房间信息,酒店 ...
- Java水果搬运问题_关于Java实现一个简单水果订购管理系统的几点问题
关于Java实现一个简单水果订购管理系统的几点问题 关于Java实现一个简单水果订购管理系统的几点问题 这个周用java写了一个简单的水果订购系统.其中遇上了几个问题 一.在编写过程中,我试图输入订购 ...
- java基础做简单的医院管理系统,附带课程设计说明书
最近做了一个简单的医院管理系统,查阅资料时发现,网上的很多java语言做的语言管理系统项目过于庞大,代码过于繁杂,不适于初学者更好的理解,下面我把我做的简单的医院管理系统分享给大家.当然了大牛直接略过 ...
- java学习(1):学生管理系统1
最近又想开始接触java了,写了一个简单的学生管理系统找找感觉,分为三部分,适合萌新使用. 实现初步功能 1建立一个student的java类 import java.util.*; public c ...
- Python做一个简单的名片管理系统
项目介绍 如下图,本次项目主要完成新建名片.显示全部名片.查询对应名片并对对应名片完成相关操作. 框架搭建: 名片管理首先可以由main.py以及tools.py组成,main.py主要完成主要功能, ...
- 用Python实现简单的名片管理系统
首先新建项目,包含主程序cards_main和工具库cards_tools: 如下: main函数主主要使用while和if实现4功能切换,切换的具体操作由cards_tools中的函数执行.不说了直 ...
最新文章
- ASP.Net中利用CSS实现多界面两法
- 图像读取、转为灰度图像、均值平滑、显示保存操作
- QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考
- Object family 在Object search中的default逻辑
- LeetCode 1674. 使数组互补的最少操作次数(差分思想)
- 零基础转行学习python是否还在纠结?这里告诉你答案!
- java开发者工具开源版_6种开源工具可帮助教育工作者保持井井有条
- dijkstra伪代码翻译java,Dijkstra算法的伪代码和C语言版本,还是模版
- surface 安卓双系统_一张图看懂微软Surface发布会:史上最大惊喜
- 如何从 iCloud 共享文件和文件夹?
- iPhone的屏幕尺寸和分辨率
- 【OCR 文字识别】Python中一个不错的OCR库-EasyOCR
- 移动地盘仿真平台搭建
- 手机cpu天梯图2020
- GCTA学习8 | GCTA计算多性状遗传力和遗传相关
- win10问题:无任何操作,2分钟后电脑就自动休眠
- win10下台式电脑主机,无法播放声音解决办法。
- 计算机音乐谱大全好汉歌,好汉歌简谱-刘欢-电视剧《水浒传》主题曲
- 腾讯企业邮箱登录、网易企业邮箱、TOM企业邮箱,各大企业邮箱如何申请登录?
- jQuery fadeIn() 、fadeOut()