要求:
完成以下功能,实现效果如图(要求:1.添加商品编号不能重复2.删除和退出时都应给出提示,用户确定后,再删除3.可借用我们的Utility来优化用户体验)
大概功能:

==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
1==========商品库存清单==========
商品编号        商品名称              商品单价
9001     少林寺酥饼核桃           120.0
9002     尚康杂粮牡丹饼           20.0
9003     新疆原产哈蜜瓜           7.0  ==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
2请输入新水果的名称:
红心柚子
请输入新水果的编号:
9004
请输入新水果的单价:
16
新商品已添加成功!==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
1==========商品库存清单==========
商品编号       商品名称         商品单价
9001    少林寺酥饼核桃     120.0
9002    尚康杂粮牡丹饼     20.0
9003    新疆原产哈蜜瓜     7.0
9004    红心柚子                16.0    ==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
3请输入您要删除的水果编号
9004
你确定要删除该水果吗?(y/n)
Y
水果信息删除完毕!==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
1==========商品库存清单==========
商品编号      商品名称          商品单价
9001    少林寺酥饼核桃      120.0
9002    尚康杂粮牡丹饼      20.0
9003    新疆原产哈蜜瓜      7.0    ==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
4请输入您要修改信息的水果编号:
9003
请输入新的水果编号:
9004
请输入新的水果名称:
究极哈密瓜
请输入新的水果单价:
25
水果信息更新完毕!==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
1==========商品库存清单==========
商品编号    商品名称            商品单价
9001    少林寺酥饼核桃     120.0
9002    尚康杂粮牡丹饼     20.0
9004    究极哈密瓜           25.0    ==========欢迎光临 oracle 超市==========
1:货物清单 2:添加新货物 3:删除货物 4:修改货物
5:退出系统
请您输入要操作的功能序号:
5
你确定要退出吗?(y/n)
Y
您已退出系统

在这里因为有增删改查的功能,所以我们先创建一个类,来定义这些属性。
定义类:

public class Pro {private String num;  //商品编号private String name; //商品名称private double price; //商品单价public Pro() {}public Pro(String num, String name, double price) {this.num = num;this.name = name;this.price = price;}public String getNum() {return num;}public void setNum(String num) {this.num = num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}
}

创建完定义类后,我们在创建一个java文件用来做测试,在这里我们先定义属性,在构造有参无参方法,在构造get、set方法。
随后我们按照它的要求一步一步的来,首先我们将它要求的基本信息录入,因为在这里这个商品信息是不确定的,所以我们不能有数组来录入它的信息,在这里我们用ArrayList创建集合,因为集合的底层是数组实现的,长度可以变化 。
然后录入:

 public static void main(String[] args) {ArrayList<Pro> array = new ArrayList<>();Pro p1 = new Pro();p1.setName("少林寺酥饼核桃");p1.setNum("9001");p1.setPrice(120.0);Pro p2 = new Pro();p2.setName("尚康杂粮牡丹饼");p2.setNum("9002");p2.setPrice(20.0);Pro p3 = new Pro();p3.setName("新疆原产哈蜜瓜");p3.setNum("9003");p3.setPrice(7.0);

然后将录入的信息添加到集合中去:

        array.add(p1);array.add(p2);array.add(p3);

之后我们再实现商品查看功能,还有程序选择功能,因为在这里我们要多次进行增删改查功能,所以在这里我们用死循环,先输出程序开始界面,在这里我们在进行选择:
之后通过条件语句Switch,根据用户不同的选择,调用不同的方法从而实现不同的功能,

     while (true) {System.out.println("==========欢迎光临 oracle 超市==========");System.out.println("1. 货物清单");System.out.println("2. 添加新货物");System.out.println("3. 删除货物");System.out.println("4. 修改货物");System.out.println("5. 退出系统");System.out.println("请您输入要操作的功能序号:");Scanner sc = new Scanner(System.in);int i = sc.nextInt();switch (i) {case 1:findarray(array);break;case 2:addarray(array);break;case 3:deletearray(array);break;case 4:updateStudent(array);break;case 5:tui();}}

功能1:货物清单。按照要求,将初始页面输出,这里我们通过遍历集合就可以得到集合中的所有数据。

private static void findarray(ArrayList<Pro> array) {System.out.println("==========商品库存清单==========");System.out.println("商品编号\t\t\t商品名称\t\t\t\t商品价格");for (int i = 0; i < array.size(); i++) {Pro s = array.get(i);System.out.println(s.getNum() + "\t\t\t" + s.getName() + "\t\t" + s.getPrice());}}

功能2:添加新货物。在这里我是用了两个方法,第一个方法是通过创建对象,通过set方法给这个对象赋值,最后天极爱到这个集合中去,而第二个方法就是判断,新添加的商品的编号,是否重复,在这里我们也是通过一个死循环来方便我们的添加。

public static void addarray(ArrayList<Pro> array) {//键盘录入商品对象所需要的数据,显示提示信息,提示要输入何种信息Scanner sc = new Scanner(System.in);String num;while (true) {System.out.println("请输入新水果的商品编号:");num = sc.nextLine();boolean flag = isUsed(array, num);if (flag) {System.out.println("你输入的商品编号已经被占用,请重新输入!");} else {break;}}System.out.println("请输入新水果的名称:");String name = sc.nextLine();System.out.println("请输入新水果的价格:");double price = sc.nextDouble();//创建新的对象,把键盘录入的数据赋值给对象的成员变量Pro p = new Pro();p.setName(name);p.setNum(num);p.setPrice(price);array.add(p);System.out.println("新商品已添加成功!");}//定义一个方法,判断商品编号是否被使用public static boolean isUsed(ArrayList<Pro> array, String num) {//如果与集合中的某一个商品编号相同,返回true;如果都不相同,返回falseboolean flag = false;for (int i = 0; i < array.size(); i++) {Pro s = array.get(i);if (s.getNum().equals(num)) {flag = true;break;}}return flag;}

功能3:删除货物信息。首先接受要删除的货物编号,通过遍历集合进行寻找,如果找的这个信息,就往下执行,没有就输出编号错误。根据要求,在删除前再次进行删除询问,然后给出提示信息。

 public static void deletearray(ArrayList<Pro> array) {Scanner sc = new Scanner(System.in);System.out.println("请输入您要删除的水果编号:");String s = sc.nextLine();int a = -1;for (int i = 0; i < array.size(); i++) {Pro p = array.get(i);if (p.getNum().equals(s)) {a = i;break;}}if (a == -1) {System.out.println("你输入的编号有误!");return;}System.out.println("你确定要删除该水果吗?(y/n)");String ss = sc.nextLine();if (ss.equals("y")) {array.remove(a);System.out.println("水果信息删除完毕!");} else {return;}}

功能4:修改货物信息。大体方法一致,首先通过键盘录入接受这些数据,其次创建一个对象,通过set方法进行赋值,在通过遍历寻找要修改的信息再用array.set方法添加到集合中去。

 public static void updateStudent(ArrayList<Pro> array) {Scanner sc = new Scanner(System.in);//键盘录入要修改的水果编号,显示提示信息System.out.println("请输入您要修改信息的水果编号:");String s = sc.nextLine();//录入修改的信息System.out.println("请输入新的水果编号:");String num = sc.nextLine();System.out.println("请输入新的水果名称:");String name = sc.nextLine();System.out.println("请输入新的水果单价:");double price = sc.nextDouble();//创建对象Pro a = new Pro();a.setNum(num);a.setName(name);a.setPrice(price);for (int i = 0; i < array.size(); i++) {Pro p = array.get(i);if (p.getNum().equals(s)) {array.set(i, a);}}System.out.println("水果信息更新完毕!");}

功能5:退出系统。在这里根据要求给与相应的提示,通过键盘录入得到结果,而System.exit(0);是退出JVM的代码,用户确定退出,则输出提示语句,进行退出。

  public static void tui() {Scanner sc = new Scanner(System.in);System.out.println("你确定要退出吗?(y/n)");String s = sc.nextLine();if (s.equals("y")) {System.out.println("您已退出系统");System.exit(0);} else if (s.equals("n")) {return;}}

java--面向对象之oracle 超市(初学者)相关推荐

  1. 【Java】《Java面向对象编程的三大特性》阅读笔记

    前言 偶然读到这篇文章(<Java面向对象编程的三大特性>),想来这也算论文?这种还不满网络都是?读罢觉得写得还真不错,这里以我愚见,简单点评一二,不足之处还望指教. 阅读笔记 笔记1 文 ...

  2. oracle jinitiator版本太旧,Windows7系统运行java软件提示Oracle JInitiator版本太旧怎么办...

    Java是面向对象windows7系统用户反映说在运行java的时候,提示OracleJInitiator版本太旧,该怎么解决这样的问题呢,现在给大家分享一下 1.如图,弹出需要安装更高版本Oracl ...

  3. java 面向对象继承的思想_Java面向对象思想!

    刚开始学习Java的时候,一个人跌跌撞撞摸索着往前走,很多东西理解的也懵懵懂懂,后来实践的多了,才慢慢清楚:许多东西虽然很基础但是却很重要,是需要反复思考和加深理解的.在此分享一些归纳总结后的技术干货 ...

  4. Java学习系列(十六)Java面向对象之基于TCP协议的网络通信

    TCP/IP的网络分层模型:应用层(HTTP/FTP/SMTP/POPS...),传输层(TCP协议),网络层(IP协议,负责为网络上节点分配唯一标识),物理层+数据链路层). IP地址用于标识网络中 ...

  5. java面向对象程序练习_5本面向经验丰富的程序员的高级Java书籍

    java面向对象程序练习 Sometimes back I wrote an article for Best Core Java Books for beginners, today I am sh ...

  6. JAVA面向对象的基础知识快速通过---自学笔记(一)

    网上的教学很多,看视频非常浪费时间,看文字快点,快速捡起知识点,我只根据我学到的,集各种教学学习,把精华提取出来,把主要概念通俗的展示出来,基本常识就不介绍了,其他的资料谁看了都能看懂,只是java特 ...

  7. java实验报告系统分析怎么写_20155218 《Java程序设计》实验二(Java面向对象程序设计)实验报告...

    20155218 <Java程序设计>实验二(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)单元测试 主要学习安装和使用junit来测试编写的程序,并学习以TDD(Test ...

  8. 面试轻松讲清楚 Java 面向对象的问题与知识(类与对象,封装,继承,多态,接口,内部类...)

    写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...

  9. JAVA 面向对象与面向过程区别

    JAVA 面向对象与面向过程区别 什么是面向过程 概述:自上而下的编程模式 将我们所需要的问题(需求)拆分成一个个步骤,把每个步骤使用函数进行实现,再根据解决问题的步骤逻辑将函数依次调用即可. 可以通 ...

最新文章

  1. 青源 LIVE 第 20 期 | 复旦大学吴祖煊:高效视频内容识别
  2. 【硬核书】矩阵代数基础
  3. oracle忘记密码
  4. Vim的一些使用技巧
  5. UA MATH564 概率论VI 数理统计基础5 F分布
  6. 小试牛刀Matplotlib
  7. CentOS6.7防火墙(Iptables)的开启与关闭
  8. 你们的蛙儿子成马云儿子了 阿里巴巴获得《旅行青蛙》独家代理权
  9. python利用cookie模拟登录
  10. WinForm立体饼状图实现(附源码示例) 之配餐系统的开发
  11. element中select默认选中第一个_探索在网页中使用“标注”
  12. iOS 7.1 的 Safari 为 meta 标签新增 minimal-ui 属性,在网页加载时隐藏地址栏与导航栏...
  13. 实验一 框架的选择及其原因
  14. SpringCloud工作笔记088---SpringBoot启动报错:启动后的端口是8080但是明明配置文件中是8000_Request execution error_ java.net.Conn
  15. Eclipse中如何更改工作空间(之前一直不知道,几天终于知道了!)。
  16. 分享五个最好的BT下载软件
  17. 笔记本计算机虚拟技术,ThinkPad笔记本电脑如何开启CPU虚拟化技术的图文教程
  18. C语言lo如何优化运行界面,高质量程序优化总结整理【经典】
  19. 18.2 增强型图元文件
  20. VS+OpenCV+VC超详细的配置教程

热门文章

  1. Android9.0(Pie) system_server进程学习
  2. 网站因服务器原因被K站,如果网站被K怎么快速恢复
  3. 亚马逊财务如何计算利润-跨境知道
  4. python手写汉字识别_中文简历表格提取,手写汉字识别(Python+OpenCV)
  5. Springboot 集成 AJ-Captcha 行为验证码实战 -- 验证码
  6. 蓝桥杯python求n以内的素数
  7. 软件工程课程团队项目——第3、4周开发日志
  8. Techwiz LCD 1D应用:OLED反射颜色模拟
  9. 2012-10-09傻可樂《新概念三笔记》…
  10. 微软tfs服务器申请,TFS 的命令行工具