Eclipse+Java+Swing实现图书信息管理系统-TXT存储信息

news2024/10/5 23:28:57

一、系统介绍

1.开发环境

操作系统:Win10

开发工具 :Eclipse2021

JDK版本:jdk1.8

存储方式:Txt文件存储

2.技术选型

Java+Swing+Txt

3.功能模块

4.工程结构

5.系统功能

1.系统登录

管理员可以登录系统

2.查看图书

管理员可以查看图书信息。

3.新增图书

管理员可以新增图书信息。

4.修改图书

管理员可以修改图书信息。

5.删除图书

管理员可以删除图书信息。

二、系统展示

1.登录页面

2.主页面

3.查看图书

4.新增图书

5.修改图书

6.删除图书

三、部分代码

LoginActivity

package com.sjsq.view;

import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
 * 
 * 登录
 *
 */
public class LoginActivity extends JFrame implements ActionListener {
	static LoginActivity w1;
	JLabel jL1, jL2, jLname;
	JButton jB1, jB2;
	JTextField jF1;
	JPasswordField jP1;

	public LoginActivity() {
		super("图书信息管理系统_登录界面");
		jLname = new JLabel("");
		jLname.setFont(new Font("宋体", Font.BOLD, 20));
		jLname.setBounds(5, 5, 200, 30);
		jL1 = new JLabel("用户名称:");
		jL1.setFont(new Font("宋体", Font.BOLD, 20));
		jL1.setBounds(60, 40, 200, 30);
		jL2 = new JLabel("登录密码:");
		jL2.setFont(new Font("宋体", Font.BOLD, 20));
		jL2.setBounds(60, 120, 200, 30);
		jF1 = new JTextField("", 20);
		jF1.setBounds(250, 40, 200, 30);
		jP1 = new JPasswordField("", 20);
		jP1.setBounds(250, 120, 200, 30);
		jB1 = new JButton("登录");
		jB1.setBounds(150, 260, 60, 30);
		jB1.addActionListener(this);
		jB2 = new JButton("退出");
		jB2.setBounds(340, 260, 60, 30);
		jB2.addActionListener(this);
		Container winContainer = this.getContentPane();
		winContainer.setLayout(null);
		winContainer.add(jLname);
		winContainer.add(jL1);
		winContainer.add(jL2);
		winContainer.add(jF1);
		winContainer.add(jP1);
		winContainer.add(jB1);
		winContainer.add(jB2);
		this.setSize(600, 400);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
	}

	public static void main(String[] args) {
		LoginActivity w1 = new LoginActivity();

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub

		if (e.getSource() == jB1) {
			if (jF1.getText().toString() != null && jF1.getText().toString().length() > 0) {
				if(new String(jP1.getPassword()).equals(""))
				{
					JOptionPane.showMessageDialog(w1, "登录密码不为空", "提示", 2);
				}
				else {
				// 账号和密码
				if (jF1.getText().equals("admin") && new String(jP1.getPassword()).equals("admin")) // ※
				{
					JOptionPane.showMessageDialog(w1, "登录成功", "提示", 1);
					jL1.setText("");
					jL2.setText("");
					jF1.setText("");
					this.setVisible(false);
					IndexActivity w2 = new IndexActivity();

				} else {
					JOptionPane.showMessageDialog(w1, "登录失败", "提示", 2);
				}
				}
			} else {
				JOptionPane.showMessageDialog(w1, "用户名称不为空", "提示", 2);

			}

		} else if (e.getSource() == jB2)
			System.exit(0);
	}

}

IndexActivity

package com.sjsq.view;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
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.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
/**
 * 
 * 主页面
 *
 */
public class IndexActivity extends JFrame implements ActionListener {
	JLabel jL1, jL2, jLname, jL3;
	JButton jB1, jB2, jB3, jB4, jB5, jB6, SignOut;
	JTextField jF1;
	JPasswordField jP1;
	ImageIcon background;
	JPanel myPanel;

	public IndexActivity() {
		super("图书信息管理系统_操作主界面");
		jLname = new JLabel("用户名称:admin");
		jLname.setFont(new Font("宋体", Font.BOLD, 16));
		jLname.setBounds(950, 5, 200, 30);
		jL1 = new JLabel("操作:");
		jL1.setFont(new Font("宋体", Font.BOLD, 20));
		jL1.setBounds(20, 40, 200, 30);
		
		
		
		jB3 = new JButton("查询图书信息");
		jB3.setBounds(100, 75, 150, 30);
		jB3.addActionListener(this);
		
		jB4 = new JButton("添加图书信息");
		jB4.setBounds(100, 125, 150, 30);
		jB4.addActionListener(this);
		
		jB5 = new JButton("更新图书信息");
		jB5.setBounds(100, 175, 150, 30);
		jB5.addActionListener(this);
		
		jB6 = new JButton("删除图书信息");
		jB6.setBounds(100, 225, 150, 30);
		jB6.addActionListener(this);
		
		
		SignOut = new JButton("退出登录");
		SignOut.setBounds(460, 155, 110, 30);
		SignOut.addActionListener(this);
		
		background = new ImageIcon("e:\\\\图片/图标/cloud.png"); // 创建一个背景图片
		jL3 = new JLabel(background); // 把背景图片添加到标签里
		jL3.setBounds(950, 35, background.getIconWidth(), background.getIconHeight()); // 把标签设置为和图片等高等宽
		myPanel = (JPanel) this.getContentPane(); // 把我的面板设置为内容面板
		myPanel.setOpaque(false); // 把我的面板设置为不可视
		myPanel.setLayout(new FlowLayout()); // 把我的面板设置为流动布局
		this.getLayeredPane().setLayout(null); // 把分层面板的布局置空
		this.getLayeredPane().add(jL3, new Integer(Integer.MIN_VALUE));
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		Container winContainer = this.getContentPane();
		winContainer.setLayout(null);
		winContainer.add(jLname);
		
		winContainer.add(jB3);
		winContainer.add(jB4);
		winContainer.add(jB5);
		winContainer.add(jB6);
		winContainer.add(SignOut);
		this.setSize(600, 400);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
	}

	public static void main(String[] args) {
		IndexActivity w2 = new IndexActivity();

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
		if (e.getSource() == jB3) {
			this.setVisible(false);
			// 查询信息
			SearchInfoActivity w6 = new SearchInfoActivity();
		}
		
		if (e.getSource() == jB4) {
			this.setVisible(false);
			// 添加信息
			AddInfoActivity w5 = new AddInfoActivity();
		}
		if (e.getSource() == jB5) {
			this.setVisible(false);
			// 更新信息
			UpdateInfoActivity w5 = new UpdateInfoActivity();
		}
		if (e.getSource() == jB6) {
			this.setVisible(false);
			// 删除信息
			DeleteInfoActivity w5 = new DeleteInfoActivity();
		}
		if (e.getSource() == SignOut) {
			this.setVisible(false);
			// 登录界面
			LoginActivity w1 = new LoginActivity();
		}

	}

}

SearchInfoActivity

package com.sjsq.view;
import com.sjsq.util.*;
import java.awt.Container;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
/**
 * 
 * 查询图书
 *
 */
public class SearchInfoActivity extends JFrame implements ActionListener {
	static IndexActivity w2;
	JLabel jL1, jL2, jLname;
	JButton jB1, jB2;
	JTextField jF1, jF;
	JScrollPane scrollPane;
	JTextArea textArea;

	public SearchInfoActivity() {
		super("图书信息管理系统_查询图书信息");
		jLname = new JLabel("用户名称:admin");
		jLname.setFont(new Font("宋体", Font.BOLD, 16));
		jLname.setBounds(950, 5, 200, 30);
		jL1 = new JLabel("编号:");
		jL1.setFont(new Font("宋体", Font.BOLD, 20));
		jL1.setBounds(20, 60, 200, 30);
		jF1 = new JTextField("", 20);
		jF1.setBounds(110, 60, 280, 30);
		jF1.setFont(new Font("宋体", Font.BOLD, 15));
		jF1.addFocusListener(new JTextFieldHintListener(jF1, "请输入书籍编号"));
		jF = new JTextField("", 20);
		jB1 = new JButton("查询");
		jB1.setBounds(60, 170, 60, 30);
		jB1.addActionListener(this);
		jB2 = new JButton("返回");
		jB2.setBounds(250, 170, 60, 30);
		jB2.addActionListener(this);
		// 创建文本区域组件
		textArea = new JTextArea();
		textArea.setLineWrap(true); // 自动换行
		textArea.setFont(new Font("sssssssss", Font.PLAIN, 18)); // 设置字体
		// 创建滚动面板, 指定滚动显示的视图组件(textArea), 垂直滚动条一直显示, 水平滚动条从不显示
		scrollPane = new JScrollPane(textArea, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPane.setBounds(400, 50, 660, 160);
		Container winContainer = this.getContentPane();
		winContainer.setLayout(null);
		winContainer.add(jLname);
		winContainer.add(jL1);
		winContainer.add(jF1);
		winContainer.add(jF);
		winContainer.add(jB1);
		winContainer.add(jB2);
		winContainer.add(scrollPane);
		this.setSize(1100, 400);
		this.setVisible(true);
		this.setLocationRelativeTo(null);
		jF.requestFocus();
		try {
			SQLTxt.searchAllTxtFile();
			textArea.setText(SQLTxt.getreadStr());
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws Exception {
		SearchInfoActivity w6 = new SearchInfoActivity();

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub

		if (e.getSource() == jB1) {
			if (jF1.getText().toString() != null && jF1.getText().toString().length() > 0) {
				if (jF1.getText().toString().equals("search.all")) {
					try {
						SQLTxt.searchAllTxtFile();
						textArea.setText(SQLTxt.getreadStr());
						JOptionPane.showMessageDialog(w2, "查询成功", "提示", 1);
						// System.out.println(SQLTxt.getreadStr());
					} catch (UnsupportedEncodingException e1) {
						// TODO Auto-generated catch block
						JOptionPane.showMessageDialog(w2, "查询失败", "提示", 1);
						e1.printStackTrace();

					}
				} else {
					try {
						SQLTxt.searchTxtFile(jF1.getText().toString());
						textArea.setText(SQLTxt.getreadStr());
						JOptionPane.showMessageDialog(w2, "查询成功", "提示", 1);
						// System.out.println(SQLTxt.getreadStr());
					} catch (UnsupportedEncodingException e1) {
						// TODO Auto-generated catch block
						JOptionPane.showMessageDialog(w2, "查询失败", "提示", 1);
						e1.printStackTrace();

					}
				}
			} else {
				JOptionPane.showMessageDialog(w2, "输入不为空", "提示", 1);

			}

		} else if (e.getSource() == jB2) {
			this.setVisible(false);
			w2 = new IndexActivity();
		}
	}

}

Book

package com.sjsq.vo;

import java.io.Serializable;
/**
 * 
 * 图书类
 *
 */
public class Book implements Serializable {
	String name;
	String introduce;

	public Book(String name, String introduce) {
		super();
		this.name = name;
		this.introduce = introduce;
	}

	public String toString() {
		return "Book (书名=[" + name + "], 简介=[" + introduce + "])";
	}

}

JTextFieldHintListener

package com.sjsq.util;

import java.awt.Color;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
 
import javax.swing.JTextField;
/**
 *  
 * 输入监听
 *
 */
public class JTextFieldHintListener implements FocusListener {
	private String hintText;
	private JTextField textField;
	public JTextFieldHintListener(JTextField jTextField,String hintText) {
		this.textField = jTextField;
		this.hintText = hintText;
		jTextField.setText(hintText);  //默认直接显示
		jTextField.setForeground(Color.GRAY);
	}
 
	@Override
	public void focusGained(FocusEvent e) {
		//获取焦点时,清空提示内容
		String temp = textField.getText();
		if(temp.equals(hintText)) {
			textField.setText("");
			textField.setForeground(Color.BLACK);
		}
		
	}
 
	@Override
	public void focusLost(FocusEvent e) {	
		//失去焦点时,没有输入内容,显示提示内容
		String temp = textField.getText();
		if(temp.equals("")) {
			textField.setForeground(Color.GRAY);
			textField.setText(hintText);
		}
		
	}
 
}

四、源码下载

1.登录说明

1.系统登录:账号:admin  密码:admin;

2.文件存储:BookInfo.txt。

2.下载地址

私信我

五、其他事宜

1.更多系统

Java+Swing系统系列实现

Java+Swing实现超市管理系统-TXT存储数据

Java+Swing实现自助取款机系统-TXT存储数据

Java+Swing实现宠物商店管理系统-TXT存储数据

Java+Swing实现通讯录管理系统-TXT存储信息

Java+Swing实现斗地主游戏

Java+Swing实现图书管理系统

Java+Swing实现医院管理系统

Java+Swing实现考试管理系统

Java+Swing实现酒店管理系统

Java+Swing实现超市管理系统1

Java+Swing实现超市管理系统2

Java+Swing实现电影购票系统

Java+Swing实现仓库管理系统-1

Java+Swing实现仓库管理系统-2

Java+Swing实现进销存管理系统

Java+Swing实现自助取款机系统

Java+Swing实现通讯录管理系统

Java+Swing实现停车场管理系统

Java+Swing实现学生信息管理系统-1

Java+Swing实现学生信息管理系统-2

Java+Swing实现学生宿舍管理系统

Java+Swing实现学生选课管理系统

Java+Swing实现学生成绩管理系统

Java+Swing实现学校教材管理系统

Java+Swing实现学校教务管理系统

Java+Swing实现企业人事管理系统

Java+Swing实现电子相册管理系统

Java+JSP系统系列实现

Java+JSP实现学生图书管理系统

Java+JSP实现学生信息管理系统

Java+JSP实现用户信息管理系统

Java+JSP实现教师信息管理系统

Java+JSP实现学生宿舍管理系统

Java+JSP实现商品信息管理系统

Java+JSP实现宠物信息管理系统

Java+JSP实现学生成绩管理系统

Java+Servlet系统系列实现

Java+Servlet+JSP实现航空订票系统

Java+Servlet+JSP实现新闻发布系统

Java+Servlet+JSP学生宿舍管理系统

Java+Servlet+JSP实现图书管理系统

Java+Servlet+JSP实现停车场管理系统

Java+Servlet+JSP实现房屋租赁管理系统

Java+Servlet+JSP实现学生信息管理系统

Java+Servlet+JSP实现学生选课管理系统

Java+Servlet+JSPl实现学生选课签到系统

Java+Servlet+JSP实现宠物诊所管理系统

Java+Servlet+JSP实现学生成绩管理系统-1

Java+Servlet+JSP实现学生成绩管理系统-2

Java+SSM系统系列实现

Java+SSM+JSP实现网上考试系统

Java+SSM+JSP实现宠物商城系统

Java+SSM+JSP实现超市管理系统

Java+SSM+JSP实现学生成绩管理系统

Java+SSM+JSP实现学生信息管理系统

Java+SSM+JSP实现药品信息管理系统

Java+SSM+JSP实现汽车信息管理系统

Java+SSM+Jspl实现商品信息管理系统

Java+SSM+JSP+Maven实现网上书城系统

Java+SSM+JSP+Maven实现学校教务管理系统

Java+SSH系统系列实现

Java+SSH+JSP实现在线考试系统

Java+SSH+JSP实现医院在线挂号系统

Java+Springboot系统系列实现

Java+Springboot+H-ui+Maven实现营销管理系统

Java+Springboot+Bootstrap+Maven实现网上商城系统

Java+Springboot+Bootstrap+Maven实现景区旅游管理系统

1.更多JavaWeb系统请关注专栏。

https://blog.csdn.net/helongqiang/category_10020130.html

2.更多JavaSwing系统请关注专栏。

https://blog.csdn.net/helongqiang/category_6229101.html

2.运行项目

关注B站:水坚石青

后期有更多干货视频推出!!!

Eclipse如何导入JavaSwing项目超详细教程

3.侵权事宜

如有侵权请联系我删除。

4.支持博主

如果您觉得此文对您有帮助,请点赞加关注加收藏。祝您生活愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1595089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python数据分析案例42——基于Attention-BiGRU的时间序列数据预测

承接上一篇的学术缝合,排列组合模型,本次继续缝合模型演示。 Python数据分析案例41——基于CNN-BiLSTM的沪深300收盘价预测-CSDN博客 案例背景 虽然我自己基于各种循环神经网络做时间序列的预测已经做烂了.....但是还是会有很多刚读研究生或者是别的领…

Django处理枚举(枚举模型)以及source的使用

Django处理枚举-枚举模型 1、定义模型类、序列化器类2、对上面这些场景使用source参数3、支持连表查询4、自定义序列化输出方法5、案例5 1、定义模型类、序列化器类 定义模型类models.py;项目模型类、接口模型类、用例模型类 from django.db import modelsclass T…

【linux深入剖析】深入理解软硬链接 | 动静态库的制作以及使用

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 1.理解软硬链接1.1 操作观…

AskManyAI:一个GPT、Claude、Gemini、Kimi等顶级AI的决斗场

一直以来很多人问我能不能有个稳定,不折腾的全球AI大模型测试网站,既能够保证真实靠谱,又能够保证稳定、快速,不要老动不动就挂了、出错或者漫长的响应。 直到笔者遇到了AskManyAI,直接就惊艳住了! 话不多…

公布应用程序

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Jav…

亚马逊云科技官方重磅发布GenAI应用开发学习路线(全免费)

今天小李哥给大家分享的是亚马逊云科技(AWS)最近官方发布的GenAI应用开发最佳学习路线,不仅内容非常全面更主要的是全部免费!大家动动小手就能成为GenAI开发大🐮! 1️⃣这个GenAI开发学习路线包括什么&…

.cur 鼠标光标编辑器

详解透明贴图和三元光栅操作 - CodeBus 鼠标指针文件格式解析——Windows(二) (qq.com) [C/C] RGBA数组生成Windows下的ico文件_c ico格式-CSDN博客 色环设计 - CodeBus 左键绘制 右键选颜色 ctrl右键设置鼠标热点 F1导出.cur文件 //代码来源&…

web3项目自动连接小狐狸以及小狐狸中的各种“地址”详解

刚做web3的时候,比较迷糊的就是人们口中说的各种地址,小狐狸钱包地址,私钥地址,跳转地址,接口地址,交易地址,等等XX地址,常常感觉跟做链的同事们说话不在一个频道。 这一小节&#x…

力扣:49. 字母异位词分组

知识点: 散列函数 散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位: 1. 直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)key或H&a…

CentOS 7安装Zookeeper

说明:本文介绍如何在CentOS 7操作系统下使用Zookeeper 下载安装 首先,去官网下载所需要安装的版本,我这里下载3.4.9版本; 上传到云服务器上,解压 tar -xvf zookeeper-3.4.9.tar.gz修改配置 进入Zookeeper目录下的co…

ssm049基于Vue.js的在线购物系统的设计与实现+vue

在线购物系统 摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线购物系统当然也不能排除在外,随着网络技术的不断成熟,带动了在线购物系统,它彻底改…

设计模式代码实战-外观模式

1、问题描述 小明家的电源总开关控制了家里的三个设备:空调、台灯和电视机。每个设备都有独立的开关密码,分别用数字1、2和3表示。即输入1时,空调关闭,输入2时,台灯关闭,输入3时,电视机关闭&am…

排序总结Java

文章目录 排序算法复杂度总结插入排序希尔排序归并排序快速排序堆排序 排序算法复杂度总结 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 插入排序 public class Sort {// 插入排序public int[] inserSort(int[] nums){for (int i 1; i < nums.length;…

科技助力输电线安全隐患预警,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建电力设备场景下输电线安全隐患目标检测预警系统

电力的普及让我们的生活变得更加便利&#xff0c;四通八达的电网连接着生活的方方面面&#xff0c;电力能源主要是依托于庞大复杂的电网电力设备进行传输的&#xff0c;有效地保障电网场景下输电线的安全对于保障我们日常生活所需要的电力有着重要的意义&#xff0c;但是电力设…

Redis报错:CROSSSLOT Keys in request don‘t hash to the same slot的解决方案

最近&#xff0c;项目上线的时候&#xff0c;出现了一个Redis的报错&#xff1a;CROSSSLOT Keys in request dont hash to the same slot&#xff0c;这个在内网环境下无法复现&#xff0c;因为正式环境的Redis是cluster集群模式&#xff0c;而我们内网环境是单机模式。(后面我…

Django第三方功能的使用

Django第三方功能的使用 Django REST framework前言1、Django--Restframework--coreapi版文档BUG:AssertionError: coreapi must be installed for schema support.How to run Django with Uvicorn webserver?2、序列化类 Serializer的使用模型序列化类 ModelSerializer的使用…

再写-全景拼接

全景拼接 1. 将读取进行灰度转化&#xff0c;并且输出图像&#xff0c;关键点和计算描述 import cv2 import numpy as np# 将读取进行灰度转化&#xff0c;并且输出图像&#xff0c;关键点和计算描述 image_left cv2.imread("C:\\Users\\HONOR\\Desktop\\image\\pinjie…

001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂

001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂 文章目录 001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂创作背景通信模型ISO/OSI七层模型 和 TCP/IP四层模型网络通信数据包格式&#xff08;Ethernet II&…

【微信小程序——案例——本地生活(列表页面)】

案例——本地生活&#xff08;列表页面&#xff09; 九宫格中实现导航跳转——以汽车服务为案例&#xff08;之后可以全部实现页面跳转——现在先实现一个&#xff09; 在app.json中添加新页面 修改之前的九宫格view改为navitage 效果图&#xff1a; 动态设置标题内容—…

【5G PHY】5G无线链路监测原理简述

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…