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

Java图书管理系统(简易保姆级)

前面学习了这么多知识,为了巩固之前的知识,我们就要写一个图书管理系统来帮助大家复习,让大家的知识融会贯通~~~

话不多说,直接开始今天的内容~


首先呢,我们要有一个大体的思路:

实现效果思路有两种情况:

1.实现普通用户

输入用户名->

Re.不晚

选择身份:  1->管理员   2->普通用户

2

欢迎Re.不晚来到图书管理系统
******普通用户菜单******
1 借阅图书
2 查找图书
3 显示图书
4 归还图书
0 退出系统
********************

2.实现管理员

输入用户名->

Re.不晚

选择身份:  1->管理员   2->普通用户

1

欢迎Re.不晚来到图书管理系统
******管理员菜单******
1 增加图书
2 查找图书
3 删除图书
4 显示图书
0 退出系统
********************

到这一步 ,我们就有了一个大体思路了,首先使用这个系统有两类人,第一类人是普通用户,第二类人是系统管理员

我们先来定义一个User的包,然后有一个User的类作为父类,然后再创建普通用户NormalUser和图书系统管理员AdminUser,不管是普通用户还是系统管理员都将作为子类继承父类

那我们先来说一下User类怎么写,首先不管你是普通用户还是系统管理员,我们都要输入一下名字 ,所以这个类里面就有了名字~

package User;public class User {public String name;public User(String name) {this.name = name;}
}

然后另外两个子类要继承这个父类,我们的代码如下:

package User;
import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);//用super访问父类的名字属性}
}
package User;
import java.util.Scanner;public class AdminUser extends User{public AdminUser(String name) {super(name);//用super访问父类属性}
}

之后,我们就要选择身份了,选择完身份,我们就需要进入菜单了,不管是哪个子类都有菜单,如果选择了1 就进入AdminUser的菜单,如果选择了2 就进入NormalUser的菜单,我们把菜单抽象到User类里面,那么此时User就变成了抽象类,那么三个类的代码如下:

package User;public abstract class User {public String name;public User(String name) {this.name = name;}public abstract int menu();
}
package User;
import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);}@Overridepublic int menu() {//重写User类里面的抽象方法,也就是菜单System.out.println("欢迎"+this.name+"来到图书管理系统");System.out.println("******普通用户菜单******");System.out.println("1 借阅图书");System.out.println("2 查找图书");System.out.println("3 显示图书");System.out.println("4 归还图书")System.out.println("0 退出系统");System.out.println("********************");Scanner sc = new Scanner(System.in);//由于要在菜单里面选择0~3的数字,所以我们要返回用户输入的值int choice = sc.nextInt();//用户在菜单中选择return choice;//返回用户的选择}
}
package User;
import java.util.Scanner;public class AdminUser extends User{public AdminUser(String name) {super(name);}@Overridepublic int menu() {System.out.println("欢迎"+this.name+"来到图书管理系统");System.out.println("******管理员菜单******");System.out.println("1 增加图书");System.out.println("2 查找图书");System.out.println("3 删除图书");System.out.println("4 显示图书");System.out.println("0 退出系统");System.out.println("********************");Scanner sc = new Scanner(System.in);//由于管理员要选择0~4之间的数字,所以我们要输入一个数字int choice = sc.nextInt();//管理员输入一个0~4之间的数字return choice;//返回管理员选择的数字}
}

那这个时候,前面铺垫的差不多了,我们就要写一个登录系统来串一下整体的逻辑,代码如下(有注释):

import User.AdminUser;
import User.NormalUser;
import User.User;
import java.util.Scanner;public class Main {public static User login(){   //由于这里要返回AdminUser或者NormalUser,所以这里的login()方法是User类Scanner sc = new Scanner(System.in);System.out.println("Enter your username: ");String name = sc.nextLine();//这里就是输入你的名字System.out.println("Enter your identity: 1->AdminUser 2->NormalUser");int choice = sc.nextInt();//这里就是输入你的选择,选1就是AdminUser,选2就是NormalUserif(choice == 1){return new AdminUser(name);//如果选择1,那么就返回AdminUser的类}else if(choice == 2){return new NormalUser(name);//如果选择2,那么就返回NormalUser的类}}public static void main(String[] args) {User user = login();//由于这里要返回AdminUser或者NormalUser,所以这里的login()方法是User类,所以当新建一个对象也是User类}
}

那用户方面我们大体写出来了,接下来我们该考虑图书了,首先,我们需要建立一个书架,上面放着书,一本书有作者,价格,书名,类型,有没有被借走这几种状态,那么我们就可以先建立一个包~

然后在Book类里面,有这么几种属性,书名,作者,价格,类型,借走状态(代码如下):

package BookShelf;public class Book {private String name;private String author;private int price;private String type;private boolean isborrowed;public Book(String name, String author, String type, int price) {this.name = name;this.author = author;this.type = type;this.price = price;this.isborrowed = false;}//构造方法public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public int getPrice() {return price;}public void setPrice(int price) {this.price = price;}public String getType() {return type;}public void setType(String type) {this.type = type;}public boolean isborrowed() {return isborrowed;}public void setborrowed(boolean isborrowed) {this.isborrowed = isborrowed;}//这里重写了toString的方法,在进行new对象时,输出这个对象时就是这里的输出格式@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +", isborrowed=" + isborrowed +'}';}
}

然后在另一个BookList类里,则代表关于存放几本书,具体的书籍初始化等问题,而且要把Book创建成一个数组,每个数组里面,包含Book类的属性,代码如下:

package BookShelf;public class BookList {private Book[] books;//创建Book类型的数组private static final int default_size = 10;//数组的大小private int validSzie;//有效书籍个数public BookList() {this.books = new Book[default_size];//创建一个大小为10的Book类数组//假设刚开始这个系统存放了三本书this.books[0] = new Book("Book 1", "Author 1", "ISBN 1", 2000);this.books[1] = new Book("Book 2", "Author 2", "ISBN 2", 3000);this.books[2] = new Book("Book 3", "Author 3", "ISBN 3", 4000);//有效书籍个数为3this.validSzie = 3;}//若调用此方法,则打印所有书籍(具体在Book类里 toString 方法实现打印)public Book[] getBooks() {return books;}//调用此方法则获得有效书籍的个数public int getValidszie() {return validSzie;}//若调用此方法则可以赋值效书籍的个数public void setValidSzie(int validszie) {this.validSzie = validszie;}//若调用此方法,则打印一本书籍的信息public Book getBooks(int pos) {return books[pos];}//若调用此方法,则可以增加一本书,对书进行初始化public void setBooks(int pos, Book book) {books[pos] = book;}
}

那么书架我们也写好了,在串联用户和书架时,我们突然想到有这么一个步骤,用户选择了菜单中一项内容,然后我门要对书架进行增删查改,这个时候,我们就通过菜单的功能串联起来了,前面我们讲到菜单的返回是一个整数,那么我们要针对选择的整数,进行一个功能上的选择,那么我们应该怎么做呢?

答案就是,把这些功能,放到 一个数组里面!

那么我们的包就可以这样创建:

在这些功能中,都有各自的方法,每个方法都不一样,但是他们都有功能,那么这个时候,我们就想到了接口,把功能写到这个接口里,后面不管写哪个具体的功能都要进行重写,代码如下:

package operation;
import BookShelf.BookList;public interface IOperation {void work(BookList bookList);
}

考虑到当我们初始化普通用户或者是管理员的功能不同,我们在User类里面,创建这个功能数组~

那么User类的代码如下:

package User;
import BookShelf.BookList;
import operation.IOperation;public abstract class User {public String name;public IOperation[] ioPerations;//创建的功能数组public User(String name) {this.name = name;}public abstract int menu();public void doOperations(int choice, BookList books) {IOperation iOperation = this.ioPerations[choice];//这里指的是创建功能数组时,由于菜单那里返回的是用户选择的一个整数,那么我们就对应到数组中具体的那个功能iOperation.work(books);//调用不同功能中的方法~}
}

 那我们其它两个子类的代码如下:

package User;import operation.*;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);//初始化功能数组,把功能放到数组里面,因为功能都有一个共同的接口,所以数组的类型为IOperationthis.ioPerations = new IOperation[]{new ExitBook(),//数组下标为0,功能为退出系统(其他几行以此类推)new BorrowBook(),new FindBook(),new ShowBook(),new ReturnBook()};}@Overridepublic int menu() {System.out.println("欢迎"+this.name+"来到图书管理系统");System.out.println("******普通用户菜单******");System.out.println("1 借阅图书");System.out.println("2 查找图书");System.out.println("3 显示图书");System.out.println("4 归还图书")System.out.println("0 退出系统");System.out.println("********************");Scanner sc = new Scanner(System.in);int choice = sc.nextInt();return choice;}
}
package User;import operation.*;import java.util.Scanner;public class AdminUser extends User{public AdminUser(String name) {super(name);//初始化功能数组this.ioPerations = new IOperation[]{new AddBook(),new FindBook(),new DeleteBook(),new ShowBook(),};}@Overridepublic int menu() {System.out.println("欢迎"+this.name+"来到图书管理系统");System.out.println("******管理员菜单******");System.out.println("1 增加图书");System.out.println("2 查找图书");System.out.println("3 删除图书");System.out.println("4 显示图书");System.out.println("0 退出系统");System.out.println("********************");Scanner sc = new Scanner(System.in);int choice = sc.nextInt();return choice;}
}

那我们接下来以显示图书为例,也就是在ShowBook类里面,来给大家实现一下具体的功能~

package operation;
import BookShelf.Book;
import BookShelf.BookList;public class ShowBook implements IOperation{//重写接口中的方法public void work(BookList bookList) {System.out.println("正在显示图书......");int currentSize = bookList.getValidszie();//获取有效书籍的个数for (int i = 0; i < currentSize; i++) {Book tmp = bookList.getBooks(i);System.out.println(tmp);//打印所有书籍}}}

那么我们在main方法里面怎么调用呢? 代码如下:

import BookShelf.BookList;
import User.AdminUser;
import User.NormalUser;
import User.User;import java.util.Scanner;public class Main {public static User login(){Scanner sc = new Scanner(System.in);System.out.println("Enter your username: ");String name = sc.nextLine();System.out.println("Enter your identity: 1->AdminUser 2->NormalUser");int choice = sc.nextInt();if(choice == 1){return new AdminUser(name);}else if(choice == 2){return new NormalUser(name);}}public static void main(String[] args) {BookList bookList = new BookList();User user = login();while(true){int choice = user.menu();if(choice == 0){System.out.println("退出系统......");break;}else{user.doOperations(choice,bookList);}}}
}

之后我们就实现其它具体功能就好啦~

ExitBook类的具体实现代码如下:

package operation;
import BookShelf.BookList;public class ExitBook implements IOperation {@Overridepublic void work(BookList bookList) {System.out.println("Exit BookSystem");int currentSize = bookList.getValidszie();for (int i = 0; i < currentSize; i++) {bookList.setBooks(i,null);}bookList.setValidSzie(0);System.exit(0);}
}

FindBook类的具体实现代码如下:

package operation;
import BookShelf.Book;
import BookShelf.BookList;
import java.util.Scanner;public class FindBook implements IOperation {public void work(BookList bookList){System.out.println("正在查找图书......");Scanner scanner = new Scanner(System.in);System.out.println("请输入你要查找的书籍名称");String bookName = scanner.nextLine();int currentSize = bookList.getValidszie();for (int i = 0; i < currentSize; i++) {Book book = bookList.getBooks(i);if (book.getName().equals(bookName)) {System.out.println("找到了这本书,书籍信息如下所示");System.out.println(book);return;}}System.out.println("没有此书");}
}

AddBook类具体实现功能如下:

package operation;import BookShelf.Book;
import BookShelf.BookList;import java.util.Scanner;public class AddBook implements IOperation {public void work(BookList bookList){System.out.println("正在增加图书......");Scanner scanner = new Scanner(System.in);System.out.println("请输入书的名称");String bookName = scanner.nextLine();System.out.println("请输入作者的名称");String author = scanner.nextLine();System.out.println("请输入书的类型");String type = scanner.nextLine();System.out.println("请输入书的价格");int price = scanner.nextInt();Book book = new Book(bookName, author, type, price);int currentSize = bookList.getValidszie();for (int i = 0; i < currentSize; i++) {if(bookList.getBooks(i).getName().equals(bookName)){System.out.println("存在此书,请勿重复添加");return;}}bookList.setBooks(currentSize,book);bookList.setValidSzie(currentSize+1);}private boolean isFull(BookList bookList){return bookList.getBooks().length == bookList.getValidszie();}
}

DeleteBook类具体实现功能如下:

package operation;import BookShelf.Book;
import BookShelf.BookList;import java.util.Scanner;public class DeleteBook implements IOperation {public void work(BookList bookList){System.out.println("正在删除图书......");Scanner scanner = new Scanner(System.in);System.out.println("请输入你要删除图书的名称");String bookName = scanner.nextLine();int currentSize = bookList.getValidszie();int index = -1;int i = 0;for (i = 0; i < currentSize; i++) {Book tmp = bookList.getBooks(i);if(bookList.getBooks(i).getName().equals(bookName)){index = i;break;}}if(index < 0){System.out.println("没有此书");return;}for (int j = index; j < currentSize-1; j++) {Book tmp = bookList.getBooks(j+1);bookList.setBooks(j,tmp);}bookList.setValidSzie(currentSize-1);bookList.setBooks(currentSize-1,null);System.out.println("已删除图书");}
}

BorrowBook类具体实现功能如下:

package operation;
import BookShelf.Book;
import BookShelf.BookList;
import java.util.Scanner;public class BorrowBook implements IOperation {public void work(BookList bookList){System.out.println("开始借阅图书");Scanner scanner = new Scanner(System.in);System.out.println("请输入你要借阅的图书");String bookName = scanner.nextLine();int currentSize = bookList.getValidszie();for (int i = 0; i < currentSize; i++) {if(bookList.getBooks(i).getName().equals(bookName)){Book book = bookList.getBooks(i);if(book.isborrowed()){System.out.println("此书已被借走");}else{book.setborrowed(true);System.out.println(book);System.out.println("借阅成功");}return;}}System.out.println("未找到此书");}
}

ReturnBook类具体实现功能如下:

package operation;
import BookShelf.Book;
import BookShelf.BookList;
import java.util.Scanner;public class ReturnBook implements IOperation{@Overridepublic void work(BookList bookList) {System.out.println("开始归还图书");Scanner scanner = new Scanner(System.in);System.out.println("请输入你要归还的图书");String bookName = scanner.nextLine();int currentSize = bookList.getValidszie();for (int i = 0; i < currentSize; i++) {if(bookList.getBooks(i).getName().equals(bookName)){Book book = bookList.getBooks(i);if(!book.isborrowed()){System.out.println("此书未被借出");}else{book.setborrowed(false);System.out.println(book);System.out.println("归还成功");}return;}}System.out.println("未找到此书");}}

之后我们就写完了一个简易版的图书管理系统啦~


由于这篇博客带有讲解,也包含了全部代码,但是怕有些小伙伴混乱,所以所有代码放到下篇博客汇总

大家加油!拜拜~

相关文章:

Java图书管理系统(简易保姆级)

前面学习了这么多知识&#xff0c;为了巩固之前的知识&#xff0c;我们就要写一个图书管理系统来帮助大家复习&#xff0c;让大家的知识融会贯通~~~ 话不多说&#xff0c;直接开始今天的内容~ 首先呢&#xff0c;我们要有一个大体的思路&#xff1a; 实现效果思路有两种情况&a…...

嵌入式硬件设计:从概念到实现的全流程

嵌入式硬件设计是现代电子技术中一个至关重要的领域&#xff0c;涉及从硬件架构设计到硬件调试的各个方面。它为我们日常生活中的各类智能设备、家电、工业控制系统等提供了强大的支持。本文将介绍嵌入式硬件设计的基本流程、关键技术、常用工具以及常见的挑战和解决方案&#…...

第 4 章 Java 并发包中原子操作类原理剖析

原子变量操作类 AtomicLong 是原子性递增或者递减类&#xff0c;其内部使用 Unsafe 来实现&#xff0c;AtomicLong类也是在 rt.jar 包下面的&#xff0c;AtomicLong 类就是通过 BootStarp 类加载器进行加载的。这里的原子操作类都使用 CAS 非阻塞算法 private static final lon…...

从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中

文章目录 前言构建一个 hello world web 应用项目结构项目核心文件启动项目 检查项目是否构建成功 容器化我们的应用编写 Dockerfile构建 docker 镜像推送 docker 镜像仓库 使用 labs.play-with-k8s.com 构建 Kubernetes 集群并部署应用构建 Kubernetes 集群环境编写部署文件 总…...

政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例

目录 Cusor的主要特点 Cusor实操 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; Cursor 是 Visual Studio Code 的一个分支。这使我们能够…...

CentOS 7 安装部署 KVM

1.关闭虚拟机 打开相关选项 打开虚拟机centos7 连接xshell 测试网络&#xff0c;现在就是没问题的&#xff0c;因为我们要使用网络源 安装 GNOME 桌面环境 安装KVM 模块 安装KVM 调试工具 构建虚拟机的命令行工具 qemu 组件,创建磁盘、启动虚拟机等 输入这条命令&#xff0c;…...

ArcGIS 10.2软件安装包下载及安装教程!

今日资源&#xff1a;ArcGIS 适用系统&#xff1a;WINDOWS 软件介绍&#xff1a;ArcGIS是一款专业的电子地图信息编辑和开发软件&#xff0c;提供一种快速并且使用简单的方式浏览地理信息&#xff0c;无论是2D还是3D的信息。软件内置多种编辑工具&#xff0c;可以轻松的完成地…...

一个专为云原生环境设计的高性能分布式文件系统

大家好&#xff0c;今天给大家分享一款开源创新的分布式 POSIX 文件系统JuiceFS&#xff0c;旨在解决海量云存储与各类应用平台&#xff08;如大数据、机器学习、人工智能等&#xff09;之间高效对接的问题。 项目介绍 JuiceFS 是一款面向云原生设计的高性能分布式文件系统&am…...

基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码

文章目录 基于深度学习算法的花卉分类识别系统一、项目摘要二、项目运行效果三、项目文件介绍四、项目环境配置1、项目环境库2、环境配置视频教程 五、项目系统架构六、项目构建流程1、数据集2、算法网络Mobilenet3、网络模型训练4、训练好的模型预测5、UI界面设计-pyqt56、项目…...

3174、清除数字

3174、[简单] 清除数字 1、题目描述 给你一个字符串 s 。你的任务是重复以下操作删除 所有 数字字符&#xff1a; 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。 请你返回删除所有数字字符以后剩下的字符串。 2、解题思路 遍历字符串&#xff1a; 我们需要逐个遍…...

C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)

目录 题目&#xff1a; 无重复字符的最长子串 1. 题目解析 2. 算法原理 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口&#xff08;同向双指针&#xff09; 3. 代码实现 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口 题目&#xff1a; 无重复字符的最长子串 1. 题目解析 题目截图&#xff1a; 此题所说的…...

ADS学习笔记 6. 射频发射机设计

基于ADS2023 update2 更多ADS学习笔记&#xff1a;ADS学习笔记 1. 功率放大器设计ADS学习笔记 2. 低噪声放大器设计ADS学习笔记 3. 功分器设计ADS学习笔记 4. 微带分支定向耦合器设计ADS学习笔记 5. 微带天线设计 -1、射频发射机性能指标 在射频电路和系统中&#xff0c;发送…...

上海乐鑫科技一级代理商飞睿科技,ESP32-C61高性价比WiFi6芯片高性能、大容量

在当今快速发展的物联网市场中&#xff0c;无线连接技术的不断进步对智能设备的性能和能效提出了更高要求。为了满足这一需求&#xff0c;乐鑫科技推出了ESP32-C61——一款高性价比的Wi-Fi 6芯片&#xff0c;旨在为用户设备提供更出色的物联网性能&#xff0c;并满足智能设备连…...

QT QRadioButton控件 全面详解

本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizontalSpacer)、…...

51单片机从入门到精通:理论与实践指南(一)

单片机在智能控制领域的应用已非常普遍&#xff0c;发展也很迅猛&#xff0c;学习和使用单片机的人员越来越多。虽然新型微控制器在不断推出&#xff0c;但51单片机价格低廉、易学易用、性能成熟&#xff0c;在家电和工业控制中有一定的应用&#xff0c;而且学好了51单片机&…...

零基础3分钟快速掌握 ——Linux【终端操作】及【常用指令】Ubuntu

1.为啥使用Linux做嵌入式开发 能广泛支持硬件 内核比较高效稳定 原码开放、软件丰富 能够完善网络通信与文件管理机制 优秀的开发工具 2.什么是Ubuntu 是一个以桌面应用为主的Linux的操作系统&#xff0c; 内核是Linux操作系统&#xff0c; 具有Ubuntu特色的可视…...

C#中面试的常见问题007

1.在EF中实现一个实体对应多个表 1. 表拆分&#xff08;Table Splitting&#xff09; 表拆分是指将一个实体映射到两个或多个表中的行。这通常发生在实体的属性分布在不同的表中&#xff0c;但这些表通过外键关联到同一个主表。在EF Core中&#xff0c;可以通过Fluent API来配…...

人工智能——大语言模型

5. 大语言模型 5.1. 语言模型历史 20世纪90年代以前的语言模型都是基于语法分析这种方法&#xff0c;效果一直不佳。到了20世纪90年代&#xff0c;采用统计学方法分析语言&#xff0c;取得了重大进展。但是在庞大而复杂的语言信息上&#xff0c;基于传统统计的因为计算量巨大…...

nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等

Sharp是一个基于libvips的高性能Node.js图像处理库&#xff0c;它提供了广泛的功能&#xff0c;包括调整大小、裁剪、旋转、格式转换等。Sharp可以处理多种图像格式&#xff0c;并且能够高效地转换图像格式。 相关说明及用法看&#xff1a;https://sharp.nodejs.cn/ 安装&#…...

力扣第 67 题 “二进制求和”

题目描述 给你两个二进制字符串 a 和 b&#xff0c;以二进制字符串的形式返回它们的和。 示例 1: 输入: a "11", b "1" 输出: "100"示例 2: 输入: a "1010", b "1011" 输出: "10101"提示: 每个字符串仅由…...

Spring Boot优雅读取配置信息 @EnableConfigurationProperties

很多时候我们需要将一些常用的配置信息比如oss等相关配置信息放到配置文件中。常用的有以下几种&#xff0c;相信大家比较熟悉&#xff1a; 1、Value(“${property}”) 读取比较简单的配置信息&#xff1a; 2、ConfigurationProperties(prefix “property”)读取配置信息并与 …...

鸿蒙多线程开发——Sendable对象的序列化与冻结操作

1、Sendable对象的序列化与反序列化 Sendable对象的简单介绍参考文章&#xff1a;鸿蒙多线程开发——线程间数据通信对象03(sendable) 与JSON对象的序列化和反序列化类似&#xff0c;Sendable对象的序列化和反序列化是通过ArkTs提供的ASON工具来完成。 与JSON类似&#xff0…...

nodepad配置c/c++ cmd快速打开创建项目文件

前提:下载MinGw,并且配置环境变量 点击阅读次篇文章配置MinGw 无论是哪个编译器&#xff0c;执行c文件都是经历以下步骤: 编译文件生成exe文件执行该exe文件 我们先手动完成这两部 手动编译文件使用指令 gcc {你的c文件} -o {生成文件名}生成exe文件 第二步运行exe直接点击该文…...

【C++】读取数量不定的输入数据

读取数量不定的输入数据 似乎是一个很实用的东西&#xff1f; 问题&#xff1a; 我们如何对用户输入的一组数&#xff08;事先不知道具体有多少个数&#xff09;求和&#xff1f; 这需要不断读取数据直至没有新的输入为止。&#xff08;所以我们的代码就是这样设计的&#x…...

ESC字符背后的故事(27 <> 033 | x1B ?)

ANSI不可见字符转义&#xff0c;正确的理解让记忆和书写变得丝滑惬意。 (笔记模板由python脚本于2024年11月26日 15:05:33创建&#xff0c;本篇笔记适合python 基础扎实的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xf…...

基于NXP LS1043 OpenWRT智能交通边缘网关设计

0 引言 城市公共交通是与人们生产生活息息相关的重 要基础设施&#xff0c;是关系国计民生的社会公益事业。“城 市公共交通发展的十三五规划”明确指出&#xff1a;建设与移 动互联网深度融合的智能公交系统&#xff1b;推进“互联网 城市公交”发展&#xff1b;推进多元…...

绪论相关题目

1.在数据结构中,从逻辑上可以把数据结构分成( C)。 A. 动态结构和静态结构 B. 紧凑结构和非紧凑结构 C. 线性结构和非线性结构 D. 内部结构和外部结构 2.在数据结构中,从存储结构上可以将之分为( B)。 A. 动态结构和静态结构 B. 顺序存储和非顺序存储 C. 紧凑结构和非紧…...

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译

中国科学院大学研究生学术英语读写教程 Unit7 Materials Science TextA 原文和翻译 Why Is the Story of Materials Really the Story of Civilisation? 为什么材料的故事实际上就是文明的故事&#xff1f; Mark Miodownik 1 Everything is made of something. Take away co…...

centos系列安装服务器时分区

服务器安装手动分区&#xff0c;标准分区(注意顺序)&#xff1a; 自定义标准分区 /boot/efi 200M&#xff1b;/boot 1G 放引导程序和内核文件及根文件&#xff1b; /var 磁盘1/10内存尽量大存放日志文件&#xff1b; /usr 磁盘1/10内存尽量大存在程序软件包&#xff1b; swap 虚…...

vue的理解

什么是vue vue是一套用于构建用户界面的渐进式框架&#xff0c;与其他框架不同的是&#xff0c;vue被设计为可以自底向上逐层应用&#xff0c;它也是创建单页面应用的web应用框架。vue的核心库只关注视图层&#xff0c;不仅易上手&#xff0c;还便于与第三方库或既有项目整合。…...

把网站放到服务器上/免费com域名注册永久

11月24日消息&#xff0c;在上海举行的SyScan360亚太前瞻信息安全技术年会上&#xff0c;360车联网安全中心宣布正式成立&#xff0c;该中心由360公司联合多家高校、汽车及零部件企业组建&#xff0c;是国内第一个专业从事汽车及车联网的安全保护的跨行业合作机构。 信息安全成…...

wordpress跳转内容页/网页设计一般用什么软件

http://blog.ednchina.com/tengjingshu/376105/message.aspx Hello,World源代码 按上一篇博文搭建嵌入式开发环境的步骤安装了开发环境&#xff0c;在Ubuntux新建一个文件hello.c&#xff0c;把这个文件将放到 /home/lin/mini2440/examples/hello/目录&#xff0c;其源代码如下…...

wordpress内网访问不了/怎么进行网络营销

1&#xff0c;迪杰斯特拉算法介绍迪杰斯特拉算法是典型最短路径算法&#xff0c;用于计算图或网中某个特定顶点到其他所有顶点的最短路径。主要特点是以起始点为中心向外&#xff0c;层层扩展&#xff0c;直到扩展覆盖所有顶点。2&#xff0c;迪杰斯特拉算法思想设G(V,E)为一个…...

公司做哪个网站比较好/南宁百度快速排名优化

1&#xff1a;eclipse创建一个项目&#xff0c;然后导入对应的jar包&#xff1a; 鼠标右击项目&#xff0c;点击properties或者altenter快捷键--->java build path--->libraries--->add library--->user library--->next--->user libraries--->new--->…...

白云区网站建设公/seo网络营销案例分析

在外行人看来&#xff0c;IBM的在线量子体验工具所构建的线路&#xff0c;有点像是计算机科学入门课程。计算的基石——逻辑门&#xff0c;被排列在数字画布上&#xff0c;将输入转化为输出。 但因为这是量子线路&#xff0c;所以这些门修改的不是通常的二进制0或1位&#xff…...

广州美容网站建设/googleseo优化

vue监听浏览器tab切换 描述 监听tab切换浏览器页面&#xff0c;在离开当前页面和再次进来发生事件监听&#xff0c;类似与小程序的show函数 visibilitychange 详解 解决 created() {document.addEventListener(visibilitychange, () > {if(document.visibilityState h…...