项目实战 医药箱APP
更新时间:2023-10-05
第一段:需求概述
本次项目是一个医药箱APP。主要功能有两个:一是方便用户管理自己的药箱,及时补充药品和查看过期药品;二是提供药品的购买服务,便捷用户购买药品。因此,我们需要设计两个主要模块:药箱管理模块和购药模块。
第二段:药箱管理模块设计
药箱管理模块有以下功能:
1.添加药品到药箱
2.从药箱删除药品
3.查看药箱中的药品
4.查看药箱中即将过期的药品
5.搜寻特定的药品
为实现以上功能,我们需要创建一个药品类,包含药品的名称、数量、生产日期、过期日期等属性。具体代码如下:
class Drug {
constructor(name, quantity, productionDate, expirationDate) {
this.name = name;
this.quantity = quantity;
this.productionDate = productionDate;
this.expirationDate = expirationDate;
}
}
let drug = new Drug('头孢', 5, '2020-02-01', '2021-02-01');
接下来,我们可以创建一个药箱类,包含管理药箱的方法。具体代码如下:
管理药箱的类
class MedicineBox {
constructor() {
this.drugs = new Array();
}
addDrug(drug) {
if (this.drugs.find(item => item.name === drug.name)) {
return '该药品已经存在,请检查药品名称';
} else {
this.drugs.push(drug);
return '添加成功';
}
}
deleteDrug(drugName) {
let index = this.drugs.findIndex(item => item.name === drugName);
if (index === -1) {
return '该药品不存在,请检查药品名称';
} else {
this.drugs.splice(index, 1);
return '删除成功';
}
}
showDrugs() {
let result = '';
for (let i = 0; i < this.drugs.length; i++) {
result += `药品名称:${this.drugs[i].name},数量:${this.drugs[i].quantity},生产日期:${this.drugs[i].productionDate},过期日期:${this.drugs[i].expirationDate}\n`;
}
return result;
}
showSoonExpireDrugs() {
let result = '';
const date = new Date();
const today = `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;
for (let i = 0; i < this.drugs.length; i++) {
if (this.drugs[i].expirationDate < today) {
result += `药品名称:${this.drugs[i].name},剩余有效期:${this.drugs[i].expirationDate - today}\n`;
}
}
return result;
}
searchDrug(drugName) {
let searchedDrug = this.drugs.find(item => item.name === drugName);
if (searchedDrug) {
return `药品名称:${searchedDrug.name},数量:${searchedDrug.quantity},生产日期:${searchedDrug.productionDate},过期日期:${searchedDrug.expirationDate}`;
} else {
return '该药品不存在,请检查药品名称';
}
}
}
let medicineBox = new MedicineBox();
medicineBox.addDrug(drug);
medicineBox.showDrugs();
第三段:购药模块设计
购药模块需要提供以下功能:
1.显示所有药品信息
2.筛选特定类型的药品
3.购买药品并更新药箱中药品数量
4.查看购买记录
为实现以上功能,我们需要设计一个药品列表类和一个购买记录类。具体代码如下:
管理药品列表的类
class DrugList {
constructor() {
this.drugs = [
{name: '感冒药', type: 'OTC', price: 10, quantity: 100},
{name: '头疼药', type: 'OTC', price: 8, quantity: 50},
{name: '退烧药', type: 'OTC', price: 7, quantity: 60},
{name: '胃药', type: 'OTC', price: 15, quantity: 80},
{name: '维生素C片', type: '保健食品', price: 20, quantity: 150},
{name: '钙片', type: '保健食品', price: 25, quantity: 100},
{name: '维生素E软胶囊', type: '保健食品', price: 40, quantity: 200},
{name: '降压药', type: '处方药', price: 30, quantity: 30},
{name: '降血脂药', type: '处方药', price: 50, quantity: 20},
{name: '抗生素', type: '处方药', price: 70, quantity: 10}
];
}
showDrugs() {
let result = '';
for (let i = 0; i < this.drugs.length; i++) {
result += `药品名称:${this.drugs[i].name},类型:${this.drugs[i].type},价格:${this.drugs[i].price}元,数量:${this.drugs[i].quantity}\n`;
}
return result;
}
findDrug(drugName) {
return this.drugs.find(item => item.name === drugName);
}
filterType(type) {
return this.drugs.filter(item => item.type === type);
}
}
let drugList = new DrugList();
drugList.showDrugs();
管理购买记录的类
class PurchaseRecord {
constructor() {
this.records = new Array();
}
addRecord(drugName, quantity, totalPrice) {
const date = new Date();
const purchaseDate = `${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`;
const record = {
drugName: drugName,
purchaseDate: purchaseDate,
quantity: quantity,
totalPrice: totalPrice
};
this.records.push(record);
}
showRecords() {
let result = '';
for (let i = 0; i < this.records.length; i++) {
result += `药品名称:${this.records[i].drugName},购买日期:${this.records[i].purchaseDate},购买数量:${this.records[i].quantity},购买总价:${this.records[i].totalPrice}元\n`;
}
return result;
}
}
let purchaseRecord = new PurchaseRecord();
purchaseRecord.addRecord('感冒药', 5, 50);
purchaseRecord.showRecords();
第四段:总结
本次项目实战是个医药箱APP,需要实现药箱管理和购药两个主要模块的功能。为实现这两个模块,我们分别设计了药品类、药箱类、药品列表类、购买记录类。这些类的方法使得药品的管理和购买变得非常便捷。药品类和药箱类是本项目的核心类,它们实现了药品的增删改查、药箱药品的查询、过期药品提醒等多种功能。药品列表类和购买记录类使得药品的购买和管理变得更加高效。通过以上几个类的组合,我们可以为用户提供一个易用、高效的医药箱APP。