【Java--名片管理系统】
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--名片管理系统】相关推荐
- Java——名片管理系统
目录 任务1.确定给定日期是一年的第几天 任务 2.构建可进不可退的多级菜单系统 任务1.确定给定日期是一年的第几天 要求输入年.月.日,最好能判断用户输入的是否是合法日期 比如2022年3月31日, ...
- Java名片管理系统
文章目录 (一).创建名片实体类 (二).创建名片管理类 1.创建主菜单 2.创建登陆方法 3.创建名片管理方法 4.创建添加名片方法 5.创建保存名片方法 实现可进可退的多级菜单系统 功能:添加名片 ...
- java web简单的网上名片管理系统
java web简单的网上名片管理系统 实现名片的增删查改以及回收站中信息的还原与彻底删除 1.登录注册页面 <%@ page language="java" content ...
- Java学习:创建简单的名片管理系统
创建简单的名片管理系统 一.创建名片实体类 二.创建名片管理类 1. 创建主菜单 2. 创建登录方法 3. 创建名片管理方法 5. 添加名片方法 6.创建保存名片方法 7.创建读取名片文件方法 8. ...
- Java任务项目-名片管理系统
文章目录 任务:名片管理系统 (一)任务完整代码 (二)代码步骤解析 1.创建Card类(名片实体类),代码编写 2.创建CardManagement类(名片管理系统) 3.创建添加名片方法 4.保存 ...
- 名片管理系统java,[作业]JavaEE框架开发技术之名片管理系统
这是Java EE框架开发技术一书中贯穿整本书的一个练习系统(作业). 代码一共有两个部分 第一部分是第五章的作业,完成如下 使用原生的jdbc代码进行数据库的连接 界面和书本完全相同 除部分js代码 ...
- java名片_javaweb名片管理系统
在学习基于javaweb的名片管理系统项目的时候,方便日后能及时查阅,在本平台中记录一下基于javaweb的名片管理系统的开发流程.在学习时候的选用了SSM(MYECLIPSE),这个框架不论是学习还 ...
- 【Java面向对象编程——名片管理系统】
文章目录 (一)编程实现 1.创建名片实体类 2.创建名片管理类 (1)创建主菜单 (2)创建登录方法 (3)创建名片管理方法 (4)创建添加名片方法 (5)创建保存名片方法 (6)创建读取名片文件方 ...
- JAVA名片注册_JavaWeb练习-网上名片管理系统
实验项目名称 JavaWeb网上名片管理系统 实验目的 实现名片的增.删.改.查等操作. 实验基本原理 JSP指令.JSP动作.JSP内置对象等 主要仪器设备及耗材 Win10.Myeclipse 实 ...
- java web 名片管理系统
关注微信公众号:查看菜单<项目> 1.基础功能介绍 登录.注册 所有名片 查询名片[提交.重置] 修改名片[修改] 新增名片[添加.重置] 删除名片[删除.放入回收站] 回收站[还原.删除 ...
最新文章
- 2019年深度学习自然语言处理最新十大发展趋势(附下载报告)
- 关于自定义控件设计时如何把属性写入aspx中的研究(上)
- CPD和DESCR文件查看
- 用BenchmarkDotNet给C#程序做性能测试
- JDK1.6官方下载
- JS如何控制checkbox的全选反选
- Android Activity中重写onCreateOptionsMenu不显示菜单按钮
- linux用户管理和文件权限
- nginx访问502,日志报错:connect() to 127.0.0.1:180 failed (13: Permission denied)解决
- Python爬虫个人记录(二) 获取fishc 课件下载链接
- web如何加入视频?video
- 【2021牛客暑期多校训练营7 】 xay loves count
- 学会这些快准狠的Word技巧,你也能成为Word高手
- 关于计算机的知识作文,有关电脑的作文
- 使用HTML+CSS技术制作篮球明星介绍网站
- 转变自己的信仰——致少年的自己
- Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客
- http://www.dewen.net.cn/q/9980/JQuery AJAX GBK 编
- 自定义Linxu启动logo(从其他分区加载logo)
- sqlserver更改盘符