一間餐廳是否有賺錢,系統的分析是相當重要的,因此寫一個node.js的程式來分析餐廳的運營狀況在適合不過了
const fs = require('fs');
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
const restaurantDataFile = 'restaurant_data.json';
// 讀取餐廳數據
function readRestaurantData() {
try {
const data = fs.readFileSync(restaurantDataFile, 'utf8');
return JSON.parse(data);
} catch (error) {
return [];
}
}
// 寫入餐廳數據
function writeRestaurantData(data) {
fs.writeFileSync(restaurantDataFile, JSON.stringify(data, null, 2), 'utf8');
}
// 添加新餐廳
function addRestaurant() {
rl.question('請輸入新餐廳的名稱:', (name) => {
rl.question('請輸入新餐廳的營運數據:', (revenue) => {
const restaurant = {
name,
revenue: parseFloat(revenue)
};
const restaurantData = readRestaurantData();
restaurantData.push(restaurant);
writeRestaurantData(restaurantData);
console.log(`成功添加餐廳:${name}`);
rl.close();
});
});
}
// 更新餐廳的營運數據
function updateRestaurant() {
const restaurantData = readRestaurantData();
if (restaurantData.length === 0) {
console.log('沒有可供更新的餐廳數據。');
rl.close();
return;
}
console.log('現有餐廳列表:');
restaurantData.forEach((restaurant, index) => {
console.log(`${index + 1}. ${restaurant.name}`);
});
rl.question('請選擇要更新的餐廳編號:', (choice) => {
const index = parseInt(choice) - 1;
if (isNaN(index) || index < 0 || index >= restaurantData.length) {
console.log('無效的選擇。');
rl.close();
return;
}
rl.question(`請輸入新的營運數據 for ${restaurantData[index].name}:`, (revenue) => {
restaurantData[index].revenue = parseFloat(revenue);
writeRestaurantData(restaurantData);
console.log(`成功更新餐廳 ${restaurantData[index].name} 的營運數據。`);
rl.close();
});
});
}
// 主選單
function mainMenu() {
console.log('歡迎使用餐廳營運情況管理系統!');
console.log('1. 添加新餐廳');
console.log('2. 更新餐廳營運數據');
console.log('3. 退出');
rl.question('請選擇操作:', (choice) => {
switch (choice) {
case '1':
addRestaurant();
break;
case '2':
updateRestaurant();
break;
case '3':
rl.close();
break;
default:
console.log('無效的選擇。');
mainMenu();
break;
}
});
}
mainMenu();
以下是程式碼的解釋
const fs = require('fs');
const readline = require('readline');
這裡引入了 Node.js 的 fs
模塊,用於文件讀取和寫入,以及 readline
模塊,用於處理用戶的命令行輸入。
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
這個程式使用 readline
模塊創建一個命令行輸入接口,以便與用戶進行交互。
const restaurantDataFile = 'restaurant_data.json';
這裡指定了一個 JSON 文件的名稱,用於保存餐廳的基本信息和營運數據。
function readRestaurantData() { /* ... */ }
function writeRestaurantData(data) { /* ... */ }
這些函數用於讀取和寫入餐廳數據,它們通過讀取 JSON 文件來加載現有數據,並將更新後的數據寫入 JSON 文件中。
function addRestaurant() { /* ... */ }
這個函數允許用戶輸入新餐廳的名稱和營運數據,然後將其添加到餐廳數據中。
function updateRestaurant() { /* ... */ }
這個函數首先列出現有的餐廳,然後允許用戶選擇要更新的餐廳,並輸入新的營運數據。
function mainMenu() { /* ... */ }
這個函數是整個程序的入口點,顯示主選單,根據用戶的選擇執行相應的操作。
最後,通過調用 mainMenu()
函數,程序開始運行,並等待用戶的輸入。用戶可以選擇添加新餐廳、更新餐廳營運數據或退出程序。根據用戶的選擇,程序調用相應的函數,並進行互動。
整個程式的目標是提供一個簡單的方式來管理餐廳的營運情況,並將數據保存在 JSON 文件中,以便在後續運行時保留數據。