当前位置: 首页 > news >正文

综合练习二

使用到的知识点:xml文件,printf方法

第一单元单元考核:销售数据分析系统

  • 背景:某电商平台需要对季度销售数据进行统计分析,根据分析结果总结经验,并制定下一季度的销售计划,需要你来编写小程序,实现以下数据分析功能
  • (5分)为了系统设计轻便,采用XML文件记录销售记录,记录包括以下内容:销售单号、售单月份、商品名称、销售数量、单价、营销顾问工号、售单状态(已结款、未结款)
  • (10分)主要功能界面要求参考如下:

  • (25分)选择1时,在控制台打印全部销售单信息:

  • (25分)选择2时,要求输入营销顾问工号,显示如下图,要有统计:

  • (10分)选择3时,显示如图:

  • (20分)选择4时,要求输入商品编号,显示如图:

  • (5分)选择5时,程序结束
  • (5分)附加分,项目结构设计合理,代码清晰,注释命名等规范,此项额外加分

saleRecord.xml

<?xml version="1.0" encoding="UTF-8"?>
<saleInfo><jobNum name="x0001"><id>pd0001</id><month>1</month><itemName>可口可乐</itemName><itemCount>102</itemCount><itemPrice>3.5</itemPrice><saleStatus>true</saleStatus></jobNum><jobNum name="x0001"><id>pd0002</id><month>1</month><itemName>笔记本</itemName><itemCount>10</itemCount><itemPrice>3000</itemPrice><saleStatus>true</saleStatus></jobNum><jobNum name="x0001"><id>pd0003</id><month>3</month><itemName>可口可乐</itemName><itemCount>50</itemCount><itemPrice>3.5</itemPrice><saleStatus>false</saleStatus></jobNum><jobNum name="x0001"><id>pd0004</id><month>4</month><itemName>汽车</itemName><itemCount>2</itemCount><itemPrice>100000</itemPrice><saleStatus>true</saleStatus></jobNum><jobNum name="x0001"><id>pd0005</id><month>5</month><itemName>可口可乐</itemName><itemCount>100</itemCount><itemPrice>3.5</itemPrice><saleStatus>false</saleStatus></jobNum><jobNum name="x0001"><id>pd0006</id><month>5</month><itemName>汽车</itemName><itemCount>11</itemCount><itemPrice>80000</itemPrice><saleStatus>true</saleStatus></jobNum><jobNum name="x0002"><id>pd0007</id><month>5</month><itemName>可口可乐</itemName><itemCount>80</itemCount><itemPrice>3.5</itemPrice><saleStatus>true</saleStatus></jobNum><jobNum name="x0002"><id>pd0008</id><month>7</month><itemName>可口可乐</itemName><itemCount>10</itemCount><itemPrice>3.5</itemPrice><saleStatus>true</saleStatus></jobNum>
</saleInfo>

entity:

        SaleItem类

public class SaleItem {private String id;private Integer month;private String itemName;private Integer itemCount;private Double itemPrice;private String jobNum;private Boolean isSale = true;public SaleItem(String id, Integer month, String itemName, Integer itemCount, Double itemPrice, Boolean saleStatus) {}public SaleItem(String id, Integer month, String itemName, Integer itemCount, Double itemPrice, String jobNum, Boolean isSale) {this.id=id;this.month=month;this.itemName=itemName;this.itemCount=itemCount;this.itemPrice=itemPrice;this.jobNum=jobNum;this.isSale=isSale;}public String getId() {return id;}public void setId(String id) {this.id=id;}public Integer getMonth() {return month;}public void setMonth(Integer month) {this.month=month;}public String getItemName() {return itemName;}public void setItemName(String itemName) {this.itemName=itemName;}public Integer getItemCount() {return itemCount;}public void setItemCount(Integer itemCount) {this.itemCount=itemCount;}public Double getItemPrice() {return itemPrice;}public void setItemPrice(Double itemPrice) {this.itemPrice=itemPrice;}public String getJobNum() {return jobNum;}public void setJobNum(String jobNum) {this.jobNum=jobNum;}public Boolean getSale() {return isSale;}public void setSale(Boolean sale) {isSale=sale;}public void show(){System.out.printf("%-8s %-10s %-10s %-10s %-10.2f %-8s %-8s\n", getId(),getMonth(),getItemName(),getItemCount(),getItemPrice(),getJobNum(),(getSale() ? "已结款":"未结款"));}
}

SaleList类

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class SaleList {private List<SaleItem> saleList = new ArrayList<>();public SaleList() {}public SaleList(List<SaleItem> list) {this.saleList=list;}public List<SaleItem> getList() {//读取XML文件SAXReader saxReader=new SAXReader();Document doc=null;try {doc=saxReader.read("src/saleRecord.xml");} catch (DocumentException e) {e.printStackTrace();}Element root=doc.getRootElement();Iterator<Element> it=root.elementIterator();while (it.hasNext()) {Element job=it.next();//获取子元素的type属性String jobNum=job.attributeValue("name");//获取元素Element idElement=job.element("id");Element monthElement=job.element("month");Element itemNameElement=job.element("itemName");Element itemCountElement=job.element("itemCount");Element itemPriceElement=job.element("itemPrice");Element saleStatusElement=job.element("saleStatus");//获取元素值String id=idElement.getText();Integer month=Integer.valueOf(monthElement.getText());String itemName=itemNameElement.getText();Integer itemCount=Integer.valueOf(itemCountElement.getText());Double itemPrice=Double.valueOf(itemPriceElement.getText());Boolean saleStatus=Boolean.valueOf(saleStatusElement.getText());SaleItem saleItem = new SaleItem(id,month,itemName,itemCount,itemPrice,jobNum,saleStatus);saleList.add(saleItem);}return saleList;}public void setList(List<SaleItem> list) {this.saleList=list;}}

service:

        Analysis类

import entity.SaleItem;
import entity.SaleList;
import java.util.List;public class AnalysisSystem {private SaleList saleList = new SaleList();public void show(){List<SaleItem> itemList = saleList.getList();for (SaleItem saleItem : itemList) {saleItem.show();}itemList.clear();}public boolean hasJobNum(String jobNum){List<SaleItem> itemList = saleList.getList();boolean hasJobNum = false;for (SaleItem saleItem : itemList) {if (saleItem.getJobNum().equals(jobNum)) {hasJobNum = true;break;}}itemList.clear();return hasJobNum;}public boolean hasItemName(String itemName){List<SaleItem> itemList = saleList.getList();boolean hasItemName = false;for (SaleItem saleItem : itemList) {if (saleItem.getItemName().equals(itemName)) {hasItemName = true;break;}}itemList.clear();return hasItemName;}public void jobNumShow(String jobNum){List<SaleItem> itemList = saleList.getList();int isPay = 0;int notPay = 0;double payTotal = 0;double notPayTotal = 0;double totalAll = 0;for (SaleItem saleItem : itemList) {if (saleItem.getJobNum().equals(jobNum)){if (saleItem.getSale() == true){isPay++;payTotal += (saleItem.getItemCount() * saleItem.getItemPrice());}else {notPay++;notPayTotal += (saleItem.getItemCount() * saleItem.getItemPrice());}totalAll += (saleItem.getItemCount() * saleItem.getItemPrice());saleItem.show();}}System.out.println("【共成功签单"+isPay+"笔,结款销售总额"+payTotal+"元,其中有"+notPay+"笔签单未结款,未结款销售额:"+notPayTotal+",销售额总计(结款&未结款):"+totalAll+"元】");itemList.clear();}public void notPayTotal(){int notPay =0;double notPayTotal = 0;List<SaleItem> itemList = saleList.getList();for (SaleItem saleItem : itemList) {if (saleItem.getSale() == false){notPay++;notPayTotal += (saleItem.getItemCount() * saleItem.getItemPrice());}}System.out.println("【共有未签单"+notPay+"笔,涉及总额:"+notPayTotal+"元】");itemList.clear();}public void singleItemShow(String itemName){List<SaleItem> itemList = saleList.getList();for (SaleItem saleItem : itemList) {if (saleItem.getItemName().equals(itemName)){saleItem.show();}}itemList.clear();}
}

view:

        SaleView

import service.AnalysisSystem;import java.util.Scanner;public class SaleView {public static void main(String[] args) {SaleView saleView = new SaleView();saleView.show();}private Scanner input = new Scanner(System.in);private AnalysisSystem analysisSystem = new AnalysisSystem();public void show(){while (true) {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("请选择:");int type = input.nextInt();switch (type) {case 1:showList();break;case 2:showJobNumList();break;case 3:notPayCount();break;case 4:showSingleItem();break;case 5:System.out.println("系统已退出,谢谢使用!");return;}}}public void showList(){System.out.printf("%-8s %-5s %-10s %-10s %-10s %-8s %-8s\n","销售单号","售单月份","商品名称","销售数量","单价","营销顾问工号","售单状态");analysisSystem.show();}public void showJobNumList(){System.out.print("请输入营销顾问工号单号:");String jobNum = input.next();if (analysisSystem.hasJobNum(jobNum)){analysisSystem.jobNumShow(jobNum);}else {System.out.println("未查询到此顾问的销售信息!");}}public void notPayCount(){analysisSystem.notPayTotal();}public void showSingleItem(){System.out.print("请输入商品名称:");String itemName = input.next();if (analysisSystem.hasItemName(itemName)){analysisSystem.singleItemShow(itemName);}else {System.out.println("未查询到商品信息!");}}
}

附录:

dom4j

https://download.csdn.net/download/m0_62696265/90707510?spm=1001.2014.3001.5503

相关文章:

  • 人工智能企业算法备案:流程、要点与服务保障
  • 制作一款打飞机游戏36:调度编辑器
  • iView Admin的side menu改为top menu
  • 大连理工大学选修课——机器学习笔记(8):Boosting及提升树
  • kkFileView文档在线预览方案及Nginx代理方式访问
  • 如何在uni-app中自定义输入框placeholder的样式
  • TM1668芯片学习心得三
  • 使用vue开发electron
  • k8s术语值ReplicaSet
  • Spring 转发 form-data 文件上传请求时中文文件名乱码
  • 基本算法之龟速乘
  • 机器翻译与数据集
  • 进程地址空间
  • Ubuntu 22.04 的 ROS 2 和 Carla 设置指南(其一)
  • ComfyUI 学习笔记,案例3:img2img
  • Grounding DINO
  • (A2A Agent通信故障诊断体系)
  • JWT GenTokenParseToken
  • MATLAB小试牛刀系列(3)
  • 【RAG 框架部署】LangChain-Chatchat (原 Langchain-ChatGLM) + Ollama
  • 空调+零食助顶级赛马备战,上海环球马术冠军赛即将焕新登场
  • 擦亮“世界美食之都”金字招牌,淮安的努力不止于餐桌
  • 俄伏尔加格勒机场正式更名为斯大林格勒机场
  • 事关广大农民利益,农村集体经济组织法5月1日起施行
  • 移动互联网未成年人模式正式发布
  • “75后”袁达已任国家发改委秘书长