Java通讯录管理系统使用线性表任务台程序
下载点此去
运行截图:
我自己选择的是通讯录管理系统,该设计采用菜单作为应用程序的主要界面,用控制语句来改变程序执行的顺序,控制语句是实现结构化程序设计的基础。该设计的任务是利用一个简单实用的菜单,通过菜单单项进行选择,实现和完成通讯录管理中常用的几个不同的功能。
问题描述:随着计算机应用技术的快速发展和日益普及,网络也遍及到我们生活的每个角落,为我们的学习和工作带来极大的方便。很多人都使用过传统的纸质通讯录,与之不同的另外一种管理方式——2
设计思路:为实现系统功能,本程序主要分为七个模块。它们分别为:主界面、建立通讯录链表、通讯者结点的插入、通讯者结点的查询、通讯者结点的删除、通讯者结点的输出、退出管理系统。这几个函数再通过主函数调用分别得以实现。
主函数,首先提供了程序运行时的友好界面,提供客户选择的菜单。然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能
程序功能:
(0) 通讯录链表的建立
(1)通讯者结点的插入
(2)通讯者结点的查询
(3)通讯者结点的删除
(4)通讯录链表的输出
(5)退出管理系统
如下图所示:
图3-1
详细设计:本程序中,运用了线性表的链式结构。首先进入了主界面,建立通讯录链表、添加通讯者结点、查询通讯者结点、删除通讯者结点、输出全部通讯者结点和退出通讯录管理系统。在主函数中分别调用各项的函数。
public class Node {
public class Friend{
public Friend next;
private String Name;
private String Tel;
private String Email;
private String BornAdd;
public Friend(){}
public Friend(String Name,String Tel,String Email,String BornAdd){
this.Name=Name;
this.Tel=Tel;
this.Email=Email;
this.BornAdd=BornAdd;
}
Switch控制菜单函数(主体)
public static void main(String[] args) {
Node sm = new Node();
Scanner in = new Scanner(System.in);
boolean open = true;
while (open) {
printMenu();
System.out.println(“请输入菜单序号进行操作”);
int menu = -1;
try {
menu = in.nextInt();
} catch (Exception e) {
in = new Scanner(System.in);
}
switch (menu) {
case 0: {
System.out.println(“创建成功”);
}
break;
case 1: {
System.out.println(“请输入姓名”);
String Name1 = in.next();
System.out.println("手机号,邮箱地址,家庭地址(空格结束,回车确认插入)");try {String Tel = in.next();String Email = in.next();String BornAdd = in.next();Friend news = sm.new Friend(Name1, Tel, Email, BornAdd);sm.insertHead(news);} catch (Exception e) {System.out.println("输入信息有误");in = new Scanner(System.in);}break;}case 2: {System.out.println("请输入要查询联系人的姓名");String Name2 = in.next();Friend selectS = sm.select(Name2);System.out.println("姓名\t手机号\t邮箱地址\t家庭地址");if (selectS == null) {} else {System.out.println(selectS.toString());}}break;case 3: {System.out.println("请输入要删除联系人的姓名");String Name3 = in.next();if (sm.delete(Name3)) {System.out.println("删除成功");} else {System.out.println("删除失败");}sm.display();}break;case 4: {sm.display();}break;case 5: {System.out.println("系统已退出");System.exit(0);break;}default:System.out.println("输入错误");}
输出的功能菜单:
public static void printMenu(){
System.out.println(“通讯录管理系统”);
System.out.println(“");
System.out.println("* 0----创建链表 “);
System.out.println(” 1----插入联系人 “);
System.out.println(” 2----查找联系人 “);
System.out.println(” 3----删除联系人 “);
System.out.println(” 4----输出通讯录 “);
System.out.println(” 5----退出系统 *");
System.out.println("”);
}}
关键代码(遇到的难点——查找关键结点)
在有序表中查找指定结点的算法是比较简单的,其基本思路是:首先输入要查找的通讯者的编号或姓名,从表头顺序访问表中结点。成功返回一个指向查找到的通讯者信息的结点;若失败,则返回一个空指针值NULL. 当按编号查找时,如果需要查找的通讯者编号不在表中,则不一定需要循环比较到表尾,因表是按编号递增有序的;按姓名查找时,则要循环比较到表尾,才能确定查不到的情况。
public void setEmail(String Email){this.Email=Email;}public String getEmail(){return Email;}public void setBornAdd(String BornAdd){this.BornAdd=BornAdd;}public String getBornAdd(){return BornAdd;}public void message(String Name,String Tel,String Email,String BornAdd){this.Name=Name;this.Tel=Tel;this.Email=Email;this.BornAdd=BornAdd;}public String toString(){return this.Name+"\t"+this.Tel+"\t"+this.Email+"\t"+this.BornAdd;
不足与改进:
本程序基本满足功能,但是在正常使用中数据不可能直接一直运行,没有数据库将数据承接,是本程序最大的不足。改进的地方需要给程序配置数据库,不至于让程序关闭后,数据丢失。
特色功能:网上很多的通讯录管理系统,以电话作为查找方式,但是在现实生活中很难记住对方号码,本程序的查询方式选择以联系人姓名查找
Java通讯录管理系统使用线性表任务台程序相关推荐
- Java学生管理系统使用线性表任务台程序
点此去下载 运行截图: (线性表) 基本概念与设计思路:链表的每个元素称为一个节点,每个节点都可以存储在内存中的不同的位置,为了表示每个元素与后继元素的逻辑关系,以便构成"一个节点链着一个节 ...
- 数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)
数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...
- 数据结构课程设计:1、单位员工通讯录管理系统(线性表的应用)
单位员工通讯录管理系统(线性表的应用) [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话. ...
- 数据结构课程设计报告 单位员工通讯录管理系统(线性表的应用)
题目1.单位员工通讯录管理系统(线性表的应用) [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话.手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息的查 ...
- c语言通讯录程序线性表,数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)...
数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...
- 单位员工通讯录管理系统(线性表的应用)
[问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话.手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息的查询.修改.插入与删除.以及整个通讯录表的输出. ...
- 用Java描述数据结构之线性表的链式存储(链表),模拟LinkedList实现
上一篇介绍了顺序表:用Java描述数据结构之线性表的顺序存储(顺序表),ArrayList及其方法的介绍 上一篇博客中说明了什么是线性表--线性表就是一个个数据元素逻辑上以一对一的相邻关系(但是在物理 ...
- 用Java描述数据结构之线性表的顺序存储(顺序表),ArrayList及其方法的介绍
我们先来想一想什么是线性表? 线性表是最基本.最简单.也是最常用的一种数据结构.线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列. 线性表中数据元素之 ...
- [数据结构与算法] (顺序)线性表简单demo程序
1 /******************************************************* 2 * @: Project: (顺序)线性表数据结构演示 3 * @: File ...
最新文章
- android adb命令
- IntelliJ IDEA 2017 注册方法
- mysql 配置文件设置最大链接数 max_connections不生效
- 成功解决IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (100,)
- html5导航菜单置顶,jQuery和css3顶部固定导航菜单特效插件
- GO模仿python –m SimpleHTTPServer 8080
- 计算机绘制轴类零件图,轴类零件工序图自动绘制的方法和系统研究
- 同步异步 阻塞 非阻塞 异步调用 线程队列 协程
- 回顾18年我的Java自动化测试框架
- imnoise, imnoise2 imnoise3
- android荣耀v20圆角适配,AR新玩法 让荣耀V20成为你随身的尺子
- SqlServer2012中使用动态sql语句
- 锂电池基本原理解析:充电及放电机制
- (附源码)springboot电影院售票与管理系统 毕业设计 011449
- 互联网电影购票网站调查思考
- Apollo星火计划学习笔记——第六讲上自动驾驶感知基础(I)
- 【TCP专题】TCP的可靠性传输
- 正则表达式验证身份证号以及验证校验位的正确性
- JavaScript实现读秒按钮,按钮计时器,倒计时结束方可点击按钮(setInterval,clearInterval)
- 初学Python:encode、decode和Unicode等
热门文章
- Leecode刷题热题HOT100(9)——回文数
- 将您的SQL Server工作负载迁移到PostgreSQL –第2部分
- 使用HP Vertica进行.NET编程
- 2020年最好用的手机是哪一款_2020年入手5G手机最佳时期到了:5款最佳手机,您认可哪款...
- mysql数据库校对_mysql数据库校对原则
- mysql导入库排除某个表_mysql导入数据排除表-mysql导入数据排除某张表或多张表-吾爱编程网...
- mfc ribbon动态修改字符_如何動態更改CMFCRibbonLabel的文本
- 32f407tim4时钟源频率_华为以太时钟同步原理介绍(一)
- redis管理_Redis基本管理
- selenium autoit java_selenium借助AutoIt识别上传文件Java篇