帮我制作一个中药记忆网页,要求如下: 1.首先,使用Vue和JavaScript技术来实现前端页面。使用Vue框架来搭建整个应用程序,使用JavaScript来编写业务逻辑。 2.关于数据库结构,使用MySQL关系型数据库,并创建一个表来存储中药名称和中药功效。表中包括两个字段:一个用于存储中药名称, 另一个用于存储中药功效。您可以使用三个记录来存储每种中药的相关信息。 3.对于前端页面,编写一个页面来显示中药的名称和对应功效。当用户掌握了某种中药的知识后, 您可以使用JavaScript将其从列表中删除,以便在下次显示中药时不再出现。如果用户未掌握该知识, 则可以使用JavaScript来处理用户的响应,以便在下次显示中药时再次出现。 4.编写后端API来获取中药的名称和中药功效。您可以使用MySQL数据库连接器来连接数据库,并使用SQL查询来检索所需的数据。 将API编写为RESTful API,以便从Vue前端页面中调用。 请分别写出前后端代码
时间: 2024-03-19 10:44:24 浏览: 121
抱歉,作为AI语言模型,我无法为您编写完整的前后端代码。但我可以提供一些思路和代码片段帮助您完成这个项目。
前端代码:
```html
<template>
<div>
<h1>中药记忆</h1>
<ul>
<li v-for="medicine in medicines" :key="medicine.id">
<div v-if="!medicine.mastered">
<h3>{{ medicine.name }}</h3>
<p>{{ medicine.effect }}</p>
<button @click="markAsMastered(medicine)">掌握</button>
<button @click="markAsUnmastered(medicine)">未掌握</button>
</div>
</li>
<div v-if="allMedicinesMastered">
<h3>恭喜你,已经掌握了所有中药!</h3>
</div>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
medicines: [],
};
},
async mounted() {
const response = await fetch('/api/medicines');
const medicines = await response.json();
this.medicines = medicines.map((medicine) => ({
...medicine,
mastered: false,
}));
},
computed: {
allMedicinesMastered() {
return this.medicines.every((medicine) => medicine.mastered);
},
},
methods: {
async markAsMastered(medicine) {
medicine.mastered = true;
await fetch(`/api/medicines/${medicine.id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(medicine),
});
},
async markAsUnmastered(medicine) {
medicine.mastered = false;
await fetch(`/api/medicines/${medicine.id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(medicine),
});
},
},
};
</script>
```
后端代码:
```javascript
const express = require('express');
const app = express();
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase',
});
connection.connect((err) => {
if (err) {
console.error('Error connecting to database: ', err);
return;
}
console.log('Connected to database!');
});
app.use(express.json());
app.get('/api/medicines', (req, res) => {
connection.query('SELECT * FROM medicines', (err, results) => {
if (err) {
console.error('Error querying database: ', err);
res.status(500).send('Error retrieving medicines from database');
return;
}
res.json(results);
});
});
app.put('/api/medicines/:id', (req, res) => {
const id = req.params.id;
const { name, effect, mastered } = req.body;
connection.query(
'UPDATE medicines SET name=?, effect=?, mastered=? WHERE id=?',
[name, effect, mastered, id],
(err, results) => {
if (err) {
console.error('Error updating medicine in database: ', err);
res.status(500).send('Error updating medicine in database');
return;
}
res.sendStatus(200);
}
);
});
app.listen(3000, () => {
console.log('Server listening on port 3000!');
});
```
请注意,在此代码中,您需要替换数据库连接信息以及数据库表的名称和字段名称。这些代码片段可以为您提供一个开始,但您需要根据自己的具体情况进行修改和调整。
阅读全文