Java学习之综合案例——水果超市商品管理系统_水果超市管理系统java-程序员宅基地

技术标签: Java  java  

案例介绍:

水果超市管理系统包括两个界面:系统欢迎界面和超市货物管理界面,在系统欢迎界面中,通过单击“进入系统”按钮,进入超市货物管理界面。在超市货物管理界面中,可以对水果信息实现具体的操作。例如,每当有新水果运送到超市时,就需要系统管理人员在系统中增加新水果的信息;若超市中的某种水果售罄,则删除该水果的信息;若水果的数量、价格等需要变更,则及时进行修改。这些操作都可以在水果超市管理系统中完成。

案例目标: 实现添加数据、修改数据和删除数据的功能。

运行环境: Jdk、Eclipse

案例代码:

首先,我们需要按照以下形式在Eclipse中创建相应的包和类。

在这里插入图片描述
先创建一个工程"fruitstore",下面开始就是代码了。

(1)先创建cn.example.fruitstore.app包,在此包下创建MainApp.java类。

package cn.example.fruitstore.app;
import cn.example.fruitstore.controller.MainFrameController;
/**
 * 项目运行
 */
public class MainApp {
    
	public static void main(String[] args) {
    
		new MainFrameController().setVisible(true);
	}
}

(2)先创建cn.example.fruitstore.controller包,在此包下创建AdminDialogController.java类和MainFrameController.java类。

//AdminDialogController.java类代码如下
package cn.example.fruitstore.controller;
import java.awt.Frame;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import cn.example.fruitstore.domain.FruitItem;
import cn.example.fruitstore.service.AdminService;
import cn.example.fruitstore.view.AbstractSdminDialog;
/**
* 管理员界面操作类*/
@SuppressWarnings("serial")
public class AdminDialogController extends AbstractSdminDialog{
    
	//定义服务类,提供完整功能服务
	private AdminService adminService = new AdminService();
	//构造方法
	public AdminDialogController(){
    
		super();
	}
	public AdminDialogController(Frame owner,boolean modal) {
    
		super(owner, modal);
		//创建对象时展示数据
		queryFruitItem();
	}
	//查询方法
	@Override
	public void queryFruitItem(){
    
		//定义表格头
		String[] thead ={
    "水果编号", "水果名称", "水果单价(/元)","计价单位"};
		//调用adminService的查询服务
		ArrayList<FruitItem> dataList = adminService.queryFruitItem();
		//调用list2Array方法,将查询到的集合转换为数组,方便为JTable赋值
		String[][] tbody = list2Array(dataList);
		//用查询到的结果为table赋值
		TableModel dataModel = new DefaultTableModel(tbody, thead);
		table.setModel (dataModel);
	}
	//集合数据转换为二维数组方法
	public String[][] list2Array(ArrayList<FruitItem> list){
    
		//根据EruitItem类的model与集合数据,定义JTable 数据的二维数组
		String[][] tbody = new String[list.size()][4];
		for (int i=0; i<list.size(); i++){
    
			FruitItem fruitItem = list.get(i);
			tbody[i][0] = fruitItem.getNumber();
			tbody[i][1] = fruitItem.getName();
			tbody[i][2] = fruitItem.getPrice()+"";
			tbody[i][3] = fruitItem.getUnit();
		}
		return tbody;
	}
	//添加方法
	@Override
	public void addFruitItem() {
    
		//获取数据
		String addNumber = addNumberText.getText();
		String addName = addNameText.getText();
		String addPrice = addPriceText.getText();
		String addUnit = addUnitText.getText();
		//调用adminService的添加服务
		boolean addSuccess = adminService.addFruitItem(addNumber, addName,
				addPrice, addUnit);
		//若添加成功
		if(addSuccess){
    
			//添加后刷新表格
			queryFruitItem();
		}else{
    
			//若没有添加成功,则弹出错误提示
			JOptionPane. showMessageDialog(this,"水果编号不能重复,请检查数据!");
		}
	}
	//修改方法
	@Override
	public void updateFruitItem(){
    
		//获取数据
		String updateNumber = updateNumberText.getText();
		String updateName= updateNameText.getText();
		String updatePrice = updatePriceText.getText();
		String updateUnit = updateUnitText.getText();
		//调用adminService的修改服务
		boolean updateSuccess = adminService.updateFruitItem(updateNumber,
				updateName, updatePrice, updateUnit);
		//若修改成功
		if(updateSuccess){
    
			//修改后刷新表格
			queryFruitItem();
		}else{
    
			//若没有修改成功,则弹出错误提示
			JOptionPane.showMessageDialog(this,"没有这个编号的水果,请检查数据!");
		}
	}
	//删除方法
	@Override
	public void delFruitItem(){
    
	//获取数据
	String delNumber = delNumberText.getText();
	//调用 adminService的删除服务
	boolean delSuccess = adminService.delFruitItem(delNumber) ;
	//若删除成功
	if(delSuccess){
    
		//删除后刷新表格
		queryFruitItem();
	}else{
    
		//若没有删除成功,则弹出错误提示
		JOptionPane.showMessageDialog(this,"没有这个编号的水果,请检查数据! ");
	}
  }
}
//MainFrameController.java类代码如下
package cn.example.fruitstore.controller;
import cn.example.fruitstore.view.AbstractMainFrame;
/**
*主界面操作类
*/
@SuppressWarnings("serial")
public class MainFrameController extends AbstractMainFrame {
    
	@Override
	public void showAdminDialog(){
    
		//在该方法中创建管理员界面并显示
		// this为父窗体(主界面),true表示设置为模态窗体展示
		new AdminDialogController(this, true).setVisible(true);
	}
}

(3)先创建cn.example.fruitstore.dao包,在此包下创建AdminDao.java类。

package cn.example.fruitstore.dao;
import java.util.ArrayList;
import cn.example.fruitstore.data.DataBase;
import cn.example.fruitstore.domain.FruitItem;
/*
*管理员数据访问类
*/
public class AdminDao{
    
	//获取所有数据
	public ArrayList<FruitItem> queryAllData(){
    
		return DataBase.data;
	}
	//添加数据
	public void addFruitItem(FruitItem fruitItem) {
    
		DataBase.data.add(fruitItem);
	}
	//删除数据
	public void delFruitItem(String delNumber){
    
		//查询集合中数据
		for(int i = 0; i < DataBase.data.size(); i++){
    
			FruitItem thisFruitItem= DataBase.data.get(i);
			//若有水果项的编号与传入编号相同,则从集合中删除
			if(thisFruitItem.getNumber().equals(delNumber)){
    
				DataBase.data.remove(i);
			}
		}
	}
}

(4)先创建cn.example.fruitstore.data包,在此包下创建DataBase.java类。

package cn.example.fruitstore.data;
import java.util.ArrayList;
import cn.example.fruitstore.domain.FruitItem;
/**
* 存储数据
*/
public class DataBase{
    
	public static ArrayList<FruitItem> data = new ArrayList<FruitItem>();
	//初始数据
	static{
    
		data.add(new FruitItem("1","苹果",5.0,"kg"));
	}
}

(5)先创建cn.example.fruitstore.domain包,在此包下创建FruitItem.java类。

package cn.example.fruitstore.domain;
/*
 * 水果项数据模型
 */
public class FruitItem {
    
	//属性
	private String number; //水果编号
	private String name; //水果名称
	private double price;//水果单价
	private String unit;//计价单位
	//构造方法
	public FruitItem(){
    
	}
	//存储数据
	public FruitItem(String number, String name,double price,String unit) {
    
		super();
		this.number = number;
		this.name = name;
		this.price = price;
		this.unit = unit;
	}
	// getter和 setter方法
	public String getNumber() {
    
		return number;
	}
	public void setNumber(String number) {
    
		this. number = number;
	}
	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;
	}
	public String getUnit() {
    
		return unit;
	}
	public void setUnit(String unit) {
    
		this.unit = unit;
	}
}

(6)先创建cn.example.fruitstore.service包,在此包下创建AdminService.java类。

package cn.example.fruitstore.service;
import java.util.ArrayList;
import cn.example.fruitstore.dao.AdminDao;
import cn.example.fruitstore.domain.FruitItem;
/*	*管理员服务类
*/
public class AdminService{
    
	
	private AdminDao adminDao = new AdminDao();
	//查询服务
	public ArrayList<FruitItem> queryFruitItem(){
    
		//调用Dao层的获取所有数据方法获取所有数据
		ArrayList<FruitItem> data = adminDao.queryAllData();
		//返回数据
		return data;
	}
	//添加服务
	public boolean addFruitItem(String number,String name,String price,
			String unit){
    
		//调用Dao层的获取所有数据方法获取所有数据
		ArrayList<FruitItem> data = queryFruitItem() ;
		//使用输入的编号与所有数据对比
		for(int i=0;i<data.size(); i++) {
    
			FruitItem fruitItem = data.get(i);
			//若存在重复编号数据,则添加不成功
			if(number.equals(fruitItem.getNumber())){
    
				return false;
			}
		}
		//若没有重复编号,将数据封装为FruitItem对象
		FruitItem thisFruitItem = new FruitItem(number,name,
				Double.parseDouble(price), unit);
		//调用Dao层的添加数据方法
		adminDao.addFruitItem(thisFruitItem);
		//在添加数据后,返回添加成功
		return true;
	}
	//修改服务
	public boolean updateFruitItem(String number,String name,
			String price,String unit){
    
		//调用 Dao层的获取所有数据方法,获取所有数据
		ArrayList<FruitItem> data = queryFruitItem();
		//使用输入的编号与所有数据对比
		for(int i=0;i<data.size();i++){
    
			FruitItem fruitItem = data.get(i);
			//若存在相同编号数据,则可以更新
			if(number.equals(fruitItem.getNumber())){
    
				//调用Dao层的删除指定编号数据方法
				adminDao.delFruitItem(number);
				//若没有重复编号,则将数据封装为FruitItem对象
				FruitItem thisFruitItem = new FruitItem(number, name,
						Double.parseDouble(price), unit);
				//调用Dao层的添加数据方法
				adminDao.addFruitItem(thisFruitItem);
				//在修改数据后,返回添加成功
				return true;
			}
		}
		//若不存在相同编号数据,则不可以更新
		return false;
	}
	//删除服务
	public boolean delFruitItem(String delNumber) {
    
		//调用Dao层的获取所有数据方法获取所有数据
		ArrayList<FruitItem> data = queryFruitItem() ;
		//使用输入的编号与所有数据对比
		for(int i = 0; i< data.size(); i++){
    
		FruitItem fruitItem = data.get(i);
		//若存在相同编号数据,则可以删除
		if(delNumber.equals(fruitItem.getNumber())){
    
			//调用 Dao层的删除指定编号数据方法
			adminDao.delFruitItem(delNumber);
			//在删除数据后,返回添加成功
			return true;
			}
		}
		//若不存在相同编号数据,则不可以删除
		return false;
		}
}

(7)先创建cn.example.fruitstore.test包,在此包下创建AbstractAdminDialogTest.java类和AbstractMainFrameTest.java类。

//AbstractAdminDialogTest.java类代码如下
package cn.example.fruitstore.test;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import cn.example.fruitstore.view.AbstractSdminDialog;
/*管理界面测试类*/
@SuppressWarnings("serial")
public class AbstractAdminDialogTest extends AbstractSdminDialog{
    
	//定义构造方法初始化数据
	public AbstractAdminDialogTest(){
    
		super();
		queryFruitItem();//测试数据
	}
	//加入测试table数据
	@Override
	public void queryFruitItem(){
    
		String [] thead = new String []{
     "水果编号", "水果名称",
							"水果单价(/元)","计价单位"};
		String[][] tbody = new String[][]{
    
			{
    "1","苹果","5.0", "kg"},
			{
    "2","葡萄","3.2","斤"},
			{
    "3","雪梨","3.8","斤"},
			{
    "4","大榴莲", "120","个"}
			};
			TableModel data = new DefaultTableModel(tbody, thead);
			table.setModel(data);
	}
	@Override
	public void addFruitItem(){
    
	}
	@Override
	public void updateFruitItem(){
    
	}
	@Override
	public void delFruitItem(){
    
	}
	public static void main(String[] args) {
    
		new AbstractAdminDialogTest().setVisible(true);
	}
}
//AbstractMainFrameTest.java类代码如下
package cn.example.fruitstore.test;
import cn.example.fruitstore.view.AbstractMainFrame;
/*主窗体测试类*/
@SuppressWarnings("serial")
public class AbstractMainFrameTest extends AbstractMainFrame {
    
	//定义主函数
	public static void main(String[] args){
    
		new AbstractMainFrameTest().setVisible(true);
	}
	//覆盖父类中展示管理员界面的方法
	@Override
	public void showAdminDialog(){
    
		System.out.println("进入管理界面");
	}
}

(8)先创建cn.example.fruitstore.tools包,在此包下创建GUITools.java类。

package cn.example.fruitstore.tools;
import java.awt.Component;
import java.awt.Toolkit;
import javax.swing.JFrame;
/*
*工具类
*/
public class GUITools {
    
	//JAVA提供的GUI默认工具类对象
	static Toolkit kit =Toolkit.getDefaultToolkit();
	//将指定组件屏幕居中
			public static void center(Component c){
    
			int x =(kit.getScreenSize().width - c.getWidth())/2;
			int y =(kit.getScreenSize().height - c.getHeight())/ 2;
			c.setLocation(x, y);
			}
			//为指定窗体设置图标标题
			public static void setTitleImage(JFrame frame, String titleIconPath) {
    
			frame.setIconImage(kit.createImage(titleIconPath));	
	}
}

(9)先创建cn.example.fruitstore.view包,在此包下创建AbstractMainFrame.java类和AbstractSdminDialog.java类。然后我们需要在src所在的文件夹内存入一个“Fruaitstore.jpg”(任意图片都行,但是敲黑板:必须把“Fruaitstore.jpg”存放在src所在文件夹内,否则图片不会运行出来!)

我就把“Fruaitstore.jpg”放在了这里:

在这里插入图片描述
下面是AbstractMainFrame.java类和AbstractSdminDialog.java类的代码:

//AbstractMainFrame.java类代码如下
package cn.example.fruitstore.view;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import cn.example.fruitstore.tools.GUITools;
/**
*主窗体类
*/
@SuppressWarnings ("serial")
public abstract class AbstractMainFrame extends JFrame{
    //组件
	private JLabel titleLabel = new JLabel(new ImageIcon("Fruaitstore.jpg"));//标题图片
	private JButton btn = new JButton("进入系统");//按钮
	//构造方法
	public AbstractMainFrame(){
    
		this.init ();
		this.addComponent();//添加组件
		this.addListener();//添加监听器
	}
	//初始化操作
	private void init(){
    
		this.setTitle("水果超市欢迎您!");	
		this.setSize(600,400);//窗体大小与位置
		this.setResizable(true);//窗体大小不固定
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体默认操作
}
//添加组件
	private void addComponent() {
    
		//窗体使用默认的边界布局,北区放入图片
		this.add(this.titleLabel, BorderLayout.NORTH);
		//创建JPanel对象
		JPanel btnPanel=new JPanel();
		//清除布局,使JPanel中的组件可以自定义位置
		btnPanel.setLayout(null);
		//将JPanel对象添加到窗体中
		this.add(btnPanel);
		//定义边界位置
		btn.setBounds(540,20,120,50);//将按钮添加到JPanel对象中
		btnPanel.add(btn);
	}
	//添加监听器
	private void addListener(){
    
		btn.addActionListener(new ActionListener(){
    
			public void actionPerformed(ActionEvent e){
    
				showAdminDialog();
			}
		});
	}
	//展示管理员界面方法
	public abstract void showAdminDialog();
}
//AbstractSdminDialog.java类代码如下
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import cn.example.fruitstore.tools.GUITools;
/*管理窗体类
*/
@SuppressWarnings("serial")
public abstract class AbstractSdminDialog extends JDialog{
    
	//定义界面使用到的组件作为成员变量
	private JLabel tableLabel = new JLabel("水果列表");//水果列表标题
	private JScrollPane tablePane =  new JScrollPane();//滚动窗口
	protected JTable table = new JTable();//水果列表
	private JLabel numberLabel = new JLabel("水果编号");//编号标题
	private JLabel nameLabel = new JLabel("水果名称");//名称标题
	private JLabel priceLabel = new JLabel("水果单价");//单位标题
	private JLabel unitLabel = new JLabel("水果单价");//计价单位标题
	//添加功能组件
	protected JTextField addNumberText = new JTextField(6);//添加编号文本框
	protected JTextField addNameText = new JTextField(6);//添加名称文本框
	protected JTextField addPriceText = new JTextField(6);//添加单价文本框
	protected JTextField addUnitText = new JTextField(6);//添加计价单位文本框
	private JButton addBtn = new JButton("添加水果");//添加按钮
	//修改功能组件
	protected JTextField updateNumberText = new JTextField(6);//修改编号文本框
	protected JTextField updateNameText = new JTextField(6);//修改名称文本框
	protected JTextField updatePriceText = new JTextField(6);//修改单价文本框 
	protected JTextField updateUnitText = new JTextField(6);
	//修改计价单位文本框
	private JButton updateBtn = new JButton("修改水果");//修改按钮
	//删除功能组件
	protected JTextField delNumberText = new JTextField(6);//添加编号文本
	private JButton delBtn = new JButton("删除水果");//删除按钮
	//构造方法
	public AbstractSdminDialog(){
    
		this(null,true);
	}
	public AbstractSdminDialog (Frame owner, boolean modal){
    
		super(owner,modal);
		this.init();//初始化操作
		this.addComponent();//添加组件
		this.addListener();//添加监听器
	}
	//初始化操作		
	private void init(){
    
		this.setTitle("超市货物管理!");//标题
		this.setSize(600,400);//窗体大小与位置
		GUITools.center(this);//设置窗体在屏幕上的位置
		this.setResizable(false);//窗体大小固定
	}
	//添加组件
	private void addComponent() {
    
			//取消布局
			this.setLayout(null);
			//表格标题
			tableLabel.setBounds(265,20,70,25);
			this.add(tableLabel);
			//表格
			table.getTableHeader().setReorderingAllowed(false);//列不能移动
			table.getTableHeader().setResizingAllowed(false);//不可拉动表格
			table.setEnabled(false);//不可更改数据
			tablePane.setBounds(50,50,500,200);
			tablePane.setViewportView(table);//视口装入表格
			this.add(tablePane);
			//字段标题
			numberLabel .setBounds(50,250,70,25);
			nameLabel.setBounds(150,250,70,25);
			priceLabel.setBounds(250, 250, 70,25);
			unitLabel.setBounds(350,250,70,25);
			this.add(numberLabel);
			this.add(nameLabel);
			this.add(priceLabel);
			this.add(unitLabel);
			//增加组件
			addNumberText.setBounds(50,280,80,25);
			addNameText.setBounds(150,280,80,25);
			addPriceText.setBounds(250,280,80,25);
			addUnitText.setBounds(350,280,80,25);
			this.add(addNumberText);
			this.add(addNameText);
			this.add(addPriceText);
			this.add(addUnitText);
			addBtn.setBounds(460,280,90,25);
			this.add(addBtn);
			//修改组件
			updateNumberText.setBounds(50,310, 80,25);
			updateNameText.setBounds(150,310,80,25);
			updatePriceText.setBounds(250,310,80,25);
			updateUnitText.setBounds(350,310,80,25);
			this.add(updateNumberText);
			this.add(updateNameText);
			this.add(updatePriceText);
			this.add(updateUnitText);
			updateBtn.setBounds(460,310,90, 25);
			this.add(updateBtn);
			//删除组件
			delNumberText.setBounds(50,340,80,25);
			this.add(delNumberText);
			delBtn.setBounds(460,340,90,25);
			this.add(delBtn);
		}
			//添加监听器
			private void addListener(){
    
			//添加按钮监听
				addBtn.addActionListener(new ActionListener(){
    
					@Override
					public void actionPerformed(ActionEvent e){
    
						//调用添加方法
						addFruitItem();}
				});
				//修改按钮监听
				updateBtn.addActionListener(new ActionListener(){
    
					@Override
					public void actionPerformed(ActionEvent e){
    
						//调用修改方法
						updateFruitItem();
					}
				});
				//删除按钮监听
				delBtn.addActionListener(new ActionListener(){
    
					@Override
					public void actionPerformed(ActionEvent e){
    
						//调用删除方法
						delFruitItem();
					}
				});
			}
			//查询方法
			public abstract void queryFruitItem();
			//添加方法
			public abstract void addFruitItem();
			//修改方法
			public abstract void updateFruitItem();
			//删除方法
			public abstract void delFruitItem();
}

案例运行结果:

首先,我们运行cn.example.fruitstore.app包下的MainApp.java类文件,再将窗口左右上下拉大后会看到如下画面:
在这里插入图片描述

点击【进入系统】后,出现如下画面(这里画面的关于苹果的数据是我们编码时输入的,也就是系统默认的数据):
在这里插入图片描述
添加数据:

任意输入一种水果的数据(不一定要与在代码里设定的水果数据一样)在输入【水果编号】、【水果名称】、【水果单价】、【计价单价】后,比如“2 黑加仑 15.3 斤”会出现以下画面:
在这里插入图片描述
添加数据成功的画面如下:
在这里插入图片描述
修改数据:
在这里插入图片描述
修改数据成功的画面如下:
在这里插入图片描述
删除数据:

在这里插入图片描述
删除数据成功的画面如下:
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47062907/article/details/116484994

智能推荐

图解无约而来Win7 33in1 V1.3 32位与64位合一(版本齐全装机利器)_无约而来 33in1 oem windows7-程序员宅基地

文章浏览阅读9k次。图解无约而来Win7 33in1 V1.3 32位与64位合一(版本齐全装机利器) 2012-07-17 11:32:31| 分类:默认分类 | 标签:|字号大中小 订阅无约而来近日发布了将Windows 7 33in1 V1.3 32位与64位整合为一个映像的方法,现转载过来供大家学习实践,并将实际操作截图,手把手教你自己制作。自己整合后可以刻录到u盘上(体_无约而来 33in1 oem windows7

Go语言开发Web应用实战——这本书介绍了如何用Golang开发Web应用,涵盖从基础概念到实践应用等内容-程序员宅基地

文章浏览阅读1.1k次。2019年是第四个十年科技革命的开端,也是Golang被广泛应用的一个年份。这几年,Golang的热度不断提升,在开源社区及企业内部也出现了一批拥抱Go的优秀人员。每当我听到有人宣传“Golang开发更快、更安全、更高效”,或者推荐“Go语言入门”时,都会觉得不可思议。Golang作为新一代的编程语言,非常适合用来开发复杂的分布式系统,但同时它也非常简单易懂,可以轻松地学习掌握。在本书中,你将从零开始构建一个完整的基于Golang+Vue.js+MySQL Web应用程序。

宏碁笔记本安装固态硬盘-程序员宅基地

文章浏览阅读1.8w次。一、开始首先说明一下哈,这并不是一篇教程,只是我安装固态硬盘的过程,记录一下而已,话不多说,开始。首先需要准备一台笔记本,就是这个,宏碁V5-471G。然后是一块固态硬盘。我买还是宏碁自家的256G的固态。放图。31569147132_.pic_hd.jpg二、开始拆机第一步先把电池扣掉,电脑背面有个卡扣,顶一下,电池就出来了。51569147..._宏碁换固态硬盘教程

react-native初始化项目时候报错?Error: Command failed: yarn add react-native --exact_创建reactnative error error: command failed: yarn in-程序员宅基地

文章浏览阅读9.2k次。试着又执行了下面两句后竟然解决问题了,感觉有些莫名其妙,因为我之前已经设置过,并且一直也没出现这个问题,你如果没解决的话试试npm config set registry https://registry.npm.taobao.orgnpm config set disturl https://npm.taobao.org/dist_创建reactnative error error: command failed: yarn install

怎样把计算机放到手机桌面壁纸,怎么把待办事项生成电脑桌面壁纸?-程序员宅基地

文章浏览阅读221次。原标题:怎么把待办事项生成电脑桌面壁纸?我的同事张晨喜欢在工作前把每天的工作待办事项一一添加到手机便签中,这样在办公的时候就能随时查看自己的工作内容了,按照待办事项清单去一一完成,这样不仅会让她更有紧迫感和任务感,还能在无形中提高工作效率。但是张晨说了在手机便签中添加工作待办事项不方便的地方,这就是她使用的办公设备是电脑,一般需要在办公的时候,时不时的打开手机查看待办事项,这样也会分散自己的注意力..._待办事项手机壁纸

Unity VR Pico apk安装失败:INSTALL_FAILED_UPDATE_INCOMPATIBLE_pico apk 安装失败-程序员宅基地

文章浏览阅读1.4k次,点赞10次,收藏8次。PICO4企业版。安装apk,报错“安装失败。(所属的Unity项目打包的apk,被我在同一台pico4安装了20次+)_pico apk 安装失败

随便推点

conda pack环境迁移并下载安装离线包_conda导出环境离线安装包-程序员宅基地

文章浏览阅读798次,点赞15次,收藏20次。训练服务器为了安全起见,限制不能联网,无法直接创建虚拟环境及安装模型的依赖库,所以需要把另一台测试服务器已经部署好的虚拟环境迁移到训练服务器上,并在不能联网的情况下安装一些离线包。过程记录如下记录。_conda导出环境离线安装包

关于网络连接状态的编程_网络连接用什么程序编写-程序员宅基地

文章浏览阅读894次。1. 可以用WMI (Win2K & XP):(首先要在VS.NET中创建一个项目,然后在添加引用中引用一个.net的装配件:System.Management.dll,这样你的项目才能使用WMI)with Windows 2000 & XP, UNDOCUMENTED: MSNdis_MediaConnectStatus - NdisMediaConnectStatus :_网络连接用什么程序编写

js禁止滚动条滚动并且隐藏滚动条_js 去掉滚动条-程序员宅基地

文章浏览阅读7k次。禁止鼠标滑过滚动条滚动document.body.onmousewheel = function () {return false;}恢复鼠标滑过滚动条滚动document.body.onmousewheel = function () {return true;}禁止键盘控制滚动条滚动document.body.onkeydown = function (e) { ..._js 去掉滚动条

八皇后问题(递归,回溯)_八皇后问题 dfs 堆栈-程序员宅基地

文章浏览阅读2.4k次。八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。八皇后问题可以推广为更一般的n皇后摆放问题:这时棋盘的大小变为n×n,而皇后个数也变成n。当且仅当 n = 1 或 n ≥ 4 时问题有解。因此只需要判断放下的当前位置的棋子的位置是否被之前放下的棋子位置_八皇后问题 dfs 堆栈

java impala_impala系列: 基本命令和jdbc连接-程序员宅基地

文章浏览阅读436次。--=======================使用impala-shell 登录--=======================impala-shell --auth_creds_ok_in_clear -l -i ip_address -u user_name--=======================JDBC driver--=======================Impal..._impala 创建schema语句

在Proteus中添加元件库所没有的单片机芯片(STM32F407ZGT6为例)_stm32f407zgt6元件库-程序员宅基地

文章浏览阅读4.2w次,点赞43次,收藏311次。今天在画仿真图时发现proteus元件库里的stm32系列并没有我所需要的。通过百度才到了官网下载相应的元件,后自己导入到元件库!1、官网链接为:https://componentsearchengine.com/part-view/STM32F407ZGT6/STMicroelectronics先注册账号后下载相应的元件即可。2、解压元件的压缩包3、打开proteus工程,点击库,再点击import parts。4、点击select File5、找到从官网下载的元件解压后的文件夹,找到LI_stm32f407zgt6元件库

推荐文章

热门文章

相关标签