[云服务器8] 搭建图书馆管理系统

获得云服务器

为了部署我们的项目,我们需要一台服务器(happy)。

让我们打开雨云

注册一个账号,然后找到~可爱的~“云服务器”,点击~可爱的(bushi~“购买云服务器”:

区域我们可以选择中国香港,优点是不用备案,这样就不用傻傻的等审核了……

CPU 三区是只有Amd的EPYC,四区只有Xeon Gold,大家可以自行选择。

套餐的话,emm……

如果你只想试着玩,可以尝试KVM 标配版,但如果你来看这篇文章是为了正式搭建,可以选择更HIGH的配置。

操作系统我推荐Ubuntu,当然只要是Linux旗下的都可以。


购买好后,我们来到服务器的管理面板,找到远程连接这一栏。

打开你喜欢的SSH软件,可以是Win10+/MacOS/Linux自带的SSH,也可以类似Xterminal类似的软件,当然也可以用雨云自带的Xtermjs。

此时我们输入:

apt update
apt upgrade
reboot

然后你会发现,reboot后,连接断开了!

不要慌,过个3-5分钟重新连接好了!

数据库初始化

首先,我们需要设计一个数据库的模型。

请自行安装MySQL后,在SSH里输入:

mysql_secure_installtion
mysql -u root -p

然后输入你的密码(在mysql_secure_installtion中设置的密码),登录成功后输入:

create database library;
create user 'libuser'@'localhost' identified by 'password'
grant all privileges on library.* to 'libuser'@'localhost';
flush privileges

这样,我们就创建好了我们的数据库。

构建后端API

首先,我们需要安装NodeJS和npm(可能已经安装了):

apt install nodejs npm

创建后端项目:

mkdir library-backend
cd library-backend
npm init -y
npm install express mysql body-parser

在这个文件夹下创建server.js文件,这个文件负责进行端口监听。

const express = require("express");
const mysql = require("mysql");
const bodyParser = require("body-parser");

const app = express();
const port = 12000;

app.use(bodyParser.json());

const database = mysql.createConnection({
	host: "127.0.0.1",
	user: "libuser",
	password: "password",
	database: "library"
});

database.connect((err) => {
	if (err) throw err;
	console.log("Connected to database");
});

app.get("/books",(req,res) => {
	const query = "select * from books";
	database.query(query,(err,res2) => {
		if (err) throw err;
		res.json(res2);
	});
});

app.post("/borrow",(req,res) =>{
	const {bookId,userId} = req.body;
	const query = "insert into borrow_records (book_id,user_id) values (?,?)";
	database.query(query,[bookId,userId],(err,res2) => {
		if (err) throw err;
		res.json({message:"Book borrowed successfully"});
	});
});

app.listen(port,() => {
	console.log("Server is running, visit https://server_ip:12000");
});

构建前端界面

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width,initial-scale=1.0">
	<title>Library system - Powered by Node.JS</title>

	<link rel="stylesheet" type="text/css" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
	<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
	<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js"></script>
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</head>
<body>
	<div class="container mt-5">
		<h1 class="text-center">Library Books</h1>
		<div id="books" class="row mt-4">
			<!-- Blank -->
		</div>
	</div>
	
	<script>
		async function fetchBooks() {
			const response = await fetch("/books");
			const books = await response.json();
			const booksDiv = document.getElementById("books");
			
			booksDiv.innerHTML = '';
			books.forEach(book => {
				const bookCard = document.createElement("div");
				bookCard.className = "col-md-4 mb-4";
				const cardHTML = `
				<div class="card">
					<div class="card-body">
						<h5 class="card-title">${book.title}</h5>
						<h6 class="card-subtitle mb-2 text-muted">${book.author}</h6>
						<p class="card-text">Available"${book.available?"Yes":"No"}</p>
					</div>
				</div>
				`;
				bookCard.innerHTML = cardHTML;
				booksDiv.appendChild(bookCard);
			});
		}
		fetchBooks();
	</script>
</body>
</html>

然后,你就可以访问了!

结语

这样,你就已经搭建好了一个~不甚完备~的图书管理系统,然后你可以加入还书等功能,还可以buy一个刷码的机器,然后Serial读取借书卡的二维码来验证 等等等等。

你也可以安装phpMyAdmin来管理数据库中的数据。

[sub plz]

1 个赞