首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Rust专项——实战案例:酒店管理系统 - 综合运用数组与函数

Rust专项——实战案例:酒店管理系统 - 综合运用数组与函数

作者头像
红目香薰
发布2025-12-16 16:15:01
发布2025-12-16 16:15:01
610
举报
文章被收录于专栏:CSDNToQQCodeCSDNToQQCode

项目概述

本项目将通过构建一个酒店管理系统来综合运用之前学到的Rust知识,特别是数组函数的使用。这是一个实用的案例,可以帮助你理解如何在实际项目中组织和应用基础知识。

功能演示

在这里插入图片描述
在这里插入图片描述
项目功能
  • ✅ 房间管理:查看所有房间状态
  • ✅ 客人登记:入住登记功能
  • ✅ 退房处理:客人退房操作
  • ✅ 房间查询:根据房间号或客人姓名查询
  • ✅ 统计信息:查看入住率、空房数量等
技术要点
  • 数组:使用数组存储房间和客人信息
  • 函数:模块化设计,每个功能独立函数
  • 枚举:房间状态管理
  • 结构体:客人信息组织
  • 控制流:循环和条件判断
  • 交互式菜单:命令行界面

1. 数据结构设计

1.1 定义枚举和结构体

首先,我们需要定义系统的核心数据结构:

代码语言:javascript
复制
// 房间状态枚举
#[derive(Debug, Clone, Copy, PartialEq)]
enum RoomStatus {
    Available,    // 空闲
    Occupied,     // 已入住
    Maintenance,  // 维护中
}

// 客人信息结构体
#[derive(Debug, Clone)]
struct Guest {
    name: String,
    phone: String,
    check_in_date: String,
}

// 房间结构体
#[derive(Debug, Clone)]
struct Room {
    number: u32,
    status: RoomStatus,
    guest: Option<Guest>,  // 可能为空(没有客人)
    price_per_night: f64,
}

// 酒店管理系统结构体
struct Hotel {
    rooms: [Room; 10],  // 10个房间的数组
}
1.2 初始化函数
代码语言:javascript
复制
impl Hotel {
    // 创建新的酒店
    fn new() -> Self {
        let mut rooms = [Room {
            number: 0,
            status: RoomStatus::Available,
            guest: None,
            price_per_night: 0.0,
        }; 10];
        
        // 初始化10个房间
        for i in 0..10 {
            rooms[i] = Room {
                number: (i + 1) as u32,
                status: RoomStatus::Available,
                guest: None,
                price_per_night: 100.0 + (i as f64 * 20.0),  // 价格递增
            };
        }
        
        Hotel { rooms }
    }
}

2. 核心功能实现

2.1 显示所有房间状态
代码语言:javascript
复制
impl Hotel {
    // 显示所有房间状态
    fn display_all_rooms(&self) {
        println!("\n=== 酒店房间状态 ===");
        println!("{:<8} {:<12} {:<15} {:<15} {:<10}", 
                 "房间号", "状态", "客人姓名", "电话", "价格/晚");
        println!("{}", "-".repeat(65));
        
        for room in self.rooms.iter() {
            let status_str = match room.status {
                RoomStatus::Available => "空闲",
                RoomStatus::Occupied => "已入住",
                RoomStatus::Maintenance => "维护中",
            };
            
            let guest_name = match &room.guest {
                Some(g) => g.name.clone(),
                None => "-".to_string(),
            };
            
            let guest_phone = match &room.guest {
                Some(g) => g.phone.clone(),
                None => "-".to_string(),
            };
            
            println!("{:<8} {:<12} {:<15} {:<15} {:<10.2}", 
                     room.number, 
                     status_str, 
                     guest_name, 
                     guest_phone,
                     room.price_per_night);
        }
        println!();
    }
}
2.2 查找房间函数
代码语言:javascript
复制
impl Hotel {
    // 根据房间号查找房间(返回索引)
    fn find_room_by_number(&self, number: u32) -> Option<usize> {
        for (index, room) in self.rooms.iter().enumerate() {
            if room.number == number {
                return Some(index);
            }
        }
        None
    }
    
    // 根据客人姓名查找房间
    fn find_room_by_guest_name(&self, name: &str) -> Option<usize> {
        for (index, room) in self.rooms.iter().enumerate() {
            if let Some(ref guest) = room.guest {
                if guest.name == name {
                    return Some(index);
                }
            }
        }
        None
    }
}
2.3 入住登记函数
代码语言:javascript
复制
impl Hotel {
    // 客人入住
    fn check_in(&mut self, room_number: u32, guest_name: String, phone: String) -> bool {
        // 查找房间
        if let Some(index) = self.find_room_by_number(room_number) {
            let room = &mut self.rooms[index];
            
            // 检查房间状态
            if room.status == RoomStatus::Available {
                room.status = RoomStatus::Occupied;
                room.guest = Some(Guest {
                    name: guest_name,
                    phone: phone,
                    check_in_date: "2024-01-01".to_string(),  // 简化,实际应该获取当前日期
                });
                println!("✓ 房间 {} 入住成功!", room_number);
                return true;
            } else {
                println!("✗ 房间 {} 不可用", room_number);
                return false;
            }
        }
        println!("✗ 房间 {} 不存在", room_number);
        false
    }
}
2.4 退房处理函数
代码语言:javascript
复制
impl Hotel {
    // 客人退房
    fn check_out(&mut self, room_number: u32) -> bool {
        if let Some(index) = self.find_room_by_number(room_number) {
            let room = &mut self.rooms[index];
            
            if room.status == RoomStatus::Occupied {
                if let Some(ref guest) = room.guest {
                    println!("✓ 客人 {} 退房成功", guest.name);
                }
                room.status = RoomStatus::Available;
                room.guest = None;
                return true;
            } else {
                println!("✗ 房间 {} 没有客人入住", room_number);
                return false;
            }
        }
        println!("✗ 房间 {} 不存在", room_number);
        false
    }
}
2.5 查询功能函数
代码语言:javascript
复制
impl Hotel {
    // 查询房间信息
    fn query_room(&self, room_number: u32) {
        if let Some(index) = self.find_room_by_number(room_number) {
            let room = &self.rooms[index];
            println!("\n=== 房间 {} 详细信息 ===", room_number);
            println!("房间号: {}", room.number);
            println!("价格/晚: {:.2} 元", room.price_per_night);
            println!("状态: {:?}", room.status);
            
            if let Some(ref guest) = room.guest {
                println!("客人姓名: {}", guest.name);
                println!("电话: {}", guest.phone);
                println!("入住日期: {}", guest.check_in_date);
            } else {
                println!("当前无客人");
            }
        } else {
            println!("✗ 房间 {} 不存在", room_number);
        }
    }
    
    // 查询客人信息
    fn query_guest(&self, guest_name: &str) {
        if let Some(index) = self.find_room_by_guest_name(guest_name) {
            let room = &self.rooms[index];
            println!("\n=== 客人 {} 的信息 ===", guest_name);
            
            if let Some(ref guest) = room.guest {
                println!("姓名: {}", guest.name);
                println!("电话: {}", guest.phone);
                println!("入住房间: {}", room.number);
                println!("入住日期: {}", guest.check_in_date);
                println!("房间价格: {:.2} 元/晚", room.price_per_night);
            }
        } else {
            println!("✗ 未找到客人 {}", guest_name);
        }
    }
}
2.6 统计信息函数
代码语言:javascript
复制
impl Hotel {
    // 统计信息
    fn statistics(&self) {
        let mut available_count = 0;
        let mut occupied_count = 0;
        let mut maintenance_count = 0;
        let mut total_revenue = 0.0;
        
        for room in self.rooms.iter() {
            match room.status {
                RoomStatus::Available => available_count += 1,
                RoomStatus::Occupied => {
                    occupied_count += 1;
                    total_revenue += room.price_per_night;
                },
                RoomStatus::Maintenance => maintenance_count += 1,
            }
        }
        
        let total_rooms = self.rooms.len();
        let occupancy_rate = (occupied_count as f64 / total_rooms as f64) * 100.0;
        
        println!("\n=== 酒店统计信息 ===");
        println!("总房间数: {}", total_rooms);
        println!("空闲房间: {}", available_count);
        println!("已入住房间: {}", occupied_count);
        println!("维护中房间: {}", maintenance_count);
        println!("入住率: {:.2}%", occupancy_rate);
        println!("当日预计收入: {:.2} 元", total_revenue);
        println!();
    }
}

3. internally实现

代码语言:javascript
复制
use std::io::{self, Write};
use std::io::{self, Write};

impl Hotel {
    // 显示主菜单
    fn show_menu() {
        println!("\n╔══════════════════════════════════╗");
        println!("║      酒店管理系统                ║");
        println!("╠══════════════════════════════════╣");
        println!("║  1. 显示所有房间                 ║");
        println!("║  2. 客人入住                     ║");
        println!("║  3. 客人退房                     ║");
        println!("║  4. 查询房间信息                 ║");
        println!("║  5. 查询客人信息                 ║");
        println!("║  6. 统计信息                     ║");
        println!("║  0. 退出系统                     ║");
        println!("╚══════════════════════════════════╝");
        print!("请选择功能 (0-6): ");
        io::stdout().flush().unwrap();
    }
    
    // 获取用户输入(整数)
    fn get_input_number() -> Option<u32> {
        let mut input = String::new();
        io::stdin().read_line(&mut input).ok()?;
        input.trim().parse().ok()
    }
    
    // 获取用户输入(字符串)
    fn get_input_string() -> String {
        let mut input = String::new();
        io::stdin().read_line(&mut input).unwrap();
        input.trim().to_string()
    }
    
    // 运行系统
    fn run(&mut self) {
        loop {
            Self::show_menu();
            
            match Self::get_input_number() {
                Some(1) => {
                    self.display_all_rooms();
                },
                Some(2) => {
                    println!("\n=== 客人入住 ===");
                    print!("请输入房间号: ");
                    io::stdout().flush().unwrap();
                    
                    if let Some(room_num) = Self::get_input_number() {
                        print!("请输入客人姓名: ");
                        io::stdout().flush().unwrap();
                        let name = Self::get_input_string();
                        
                        print!("请输入联系电话: ");
                        io::stdout().flush().unwrap();
                        let phone = Self::get_input_string();
                        
                        self.check_in(room_num, name, phone);
                    } else {
                        println!("✗ 无效的房间号");
                    }
                },
                Some(3) => {
                    println!("\n=== 客人退房 ===");
                    print!("请输入房间号: ");
                    io::stdout().flush().unwrap();
                    
                    if let Some(room_num) = Self::get_input_number() {
                        self.check_out(room_num);
                    } else {
                        println!("✗ 无效的房间号");
                    }
                },
                Some(4) => {
                    println!("\n=== 查询房间信息 ===");
                    print!("请输入房间号: ");
                    io::stdout().flush().unwrap();
                    
                    if let Some(room_num) = Self::get_input_number() {
                        self.query_room(room_num);
                    } else {
                        println!("✗ 无效的房间号");
                    }
                },
                Some(5) => {
                    println!("\n=== 查询客人信息 ===");
                    print!("请输入客人姓名: ");
                    io::stdout().flush().unwrap();
                    
                    let name = Self::get_input_string();
                    if !name.is_empty() {
                        self.query_guest(&name);
                    } else {
                        println!("✗ 请输入有效的姓名");
                    }
                },
                Some(6) => {
                    self.statistics();
                },
                Some(0) => {
                    println!("感谢使用酒店管理系统,再见!");
                    break;
                },
                _ => {
                    println!("✗ 无效的选择,请重新输入");
                }
            }
        }
    }
}

4. 完整代码

将所有代码整合到一个完整的程序中:

代码语言:javascript
复制
use std::io::{self, Write};

// 房间状态枚举
#[derive(Debug, Clone, Copy, PartialEq)]
enum RoomStatus {
    Available,    // 空闲
    Occupied,     // 已入住
    Maintenance,  // 维护中
}

// 客人信息结构体
#[derive(Debug, Clone)]
struct Guest {
    name: String,
    phone: String,
    check_in_date: String,
}

// 房间结构体
#[derive(Debug, Clone)]
struct Room {
    number: u32,
    status: RoomStatus,
    guest: Option<Guest>,
    price_per_night: f64,
}

// 酒店管理系统结构体
struct Hotel {
    rooms: [Room; 10],
}

impl Hotel {
    // 创建新的酒店
    fn new() -> Self {
        // 使用 from_fn 初始化数组,避免需要 Copy trait
        let rooms = std::array::from_fn(|i| Room {
            number: (i + 1) as u32,
            status: RoomStatus::Available,
            guest: None,
            price_per_night: 100.0 + (i as f64 * 20.0),
        });
        
        Hotel { rooms }
    }
    
    // 显示所有房间状态
    fn display_all_rooms(&self) {
        println!("\n=== 酒店房间状态 ===");
        println!("{:<8} {:<12} {:<15} {:<15} {:<10}", 
                 "房间号", "状态", "客人姓名", "电话", "价格/晚");
        println!("{}", "-".repeat(65));
        
        for room in self.rooms.iter() {
            let status_str = match room.status {
                RoomStatus::Available => "空闲",
                RoomStatus::Occupied => "已入住",
                RoomStatus::Maintenance => "维护中",
            };
            
            let guest_name = match &room.guest {
                Some(g) => g.name.clone(),
                None => "-".to_string(),
            };
            
            let guest_phone = match &room.guest {
                Some(g) => g.phone.clone(),
                None => "-".to_string(),
            };
            
            println!("{:<8} {:<12} {:<15} {:<15} {:<10.2}", 
                     room.number, 
                     status_str, 
                     guest_name, 
                     guest_phone,
                     room.price_per_night);
        }
        println!();
    }
    
    // 根据房间号查找房间
    fn find_room_by_number(&self, number: u32) -> Option<usize> {
        for (index, room) in self.rooms.iter().enumerate() {
            if room.number == number {
                return Some(index);
            }
        }
        None
    }
    
    // 根据客人姓名查找房间
    fn find_room_by_guest_name(&self, name: &str) -> Option<usize> {
        for (index, room) in self.rooms.iter().enumerate() {
            if let Some(ref guest) = room.guest {
                if guest.name == name {
                    return Some(index);
                }
            }
        }
        None
    }
    
    // 客人入住
    fn check_in(&mut self, room_number: u32, guest_name: String, phone: String) -> bool {
        if let Some(index) = self.find_room_by_number(room_number) {
            let room = &mut self.rooms[index];
            
            if room.status == RoomStatus::Available {
                room.status = RoomStatus::Occupied;
                room.guest = Some(Guest {
                    name: guest_name,
                    phone: phone,
                    check_in_date: "2024-01-01".to_string(),
                });
                println!("✓ 房间 {} 入住成功!", room_number);
                return true;
            } else {
                println!("✗ 房间 {} 不可用", room_number);
                return false;
            }
        }
        println!("✗ 房间 {} 不存在", room_number);
        false
    }
    
    // 客人退房
    fn check_out(&mut self, room_number: u32) -> bool {
        if let Some(index) = self.find_room_by_number(room_number) {
            let room = &mut self.rooms[index];
            
            if room.status == RoomStatus::Occupied {
                if let Some(ref guest) = room.guest {
                    println!("✓ 客人 {} 退房成功", guest.name);
                }
                room.status = RoomStatus::Available;
                room.guest = None;
                return true;
            } else {
                println!("✗ 房间 {} 没有客人入住", room_number);
                return false;
            }
        }
        println!("✗ 房间 {} 不存在", room_number);
        false
    }
    
    // 查询房间信息
    fn query_room(&self, room_number: u32) {
        if let Some(index) = self.find_room_by_number(room_number) {
            let room = &self.rooms[index];
            println!("\n=== 房间 {} 详细信息 ===", room_number);
            println!("房间号: {}", room.number);
            println!("价格/晚: {:.2} 元", room.price_per_night);
            println!("状态: {:?}", room.status);
            
            if let Some(ref guest) = room.guest {
                println!("客人姓名: {}", guest.name);
                println!("电话: {}", guest.phone);
                println!("入住日期: {}", guest.check_in_date);
            } else {
                println!("当前无客人");
            }
        } else {
            println!("✗ 房间 {} 不存在", room_number);
        }
    }
    
    // 查询客人信息
    fn query_guest(&self, guest_name: &str) {
        if let Some(index) = self.find_room_by_guest_name(guest_name) {
            let room = &self.rooms[index];
            println!("\n=== 客人 {} 的信息 ===", guest_name);
            
            if let Some(ref guest) = room.guest {
                println!("姓名: {}", guest.name);
                println!("电话: {}", guest.phone);
                println!("入住房间: {}", room.number);
                println!("入住日期: {}", guest.check_in_date);
                println!("房间价格: {:.2} 元/晚", room.price_per_night);
            }
        } else {
            println!("✗ 未找到客人 {}", guest_name);
        }
    }
    
    // 统计信息
    fn statistics(&self) {
        let mut available_count = 0;
        let mut occupied_count = 0;
        let mut maintenance_count = 0;
        let mut total_revenue = 0.0;
        
        for room in self.rooms.iter() {
            match room.status {
                RoomStatus::Available => available_count += 1,
                RoomStatus::Occupied => {
                    occupied_count += 1;
                    total_revenue += room.price_per_night;
                },
                RoomStatus::Maintenance => maintenance_count += 1,
            }
        }
        
        let total_rooms = self.rooms.len();
        let occupancy_rate = (occupied_count as f64 / total_rooms as f64) * 100.0;
        
        println!("\n=== 酒店统计信息 ===");
        println!("总房间数: {}", total_rooms);
        println!("空闲房间: {}", available_count);
        println!("已入住房间: {}", occupied_count);
        println!("维护中房间: {}", maintenance_count);
        println!("入住率: {:.2}%", occupancy_rate);
        println!("当日预计收入: {:.2} 元", total_revenue);
        println!();
    }
    
    // 显示主菜单
    fn show_menu() {
        println!("\n╔══════════════════════════════════╗");
        println!("║      酒店管理系统                ║");
        println!("╠══════════════════════════════════╣");
        println!("║  1. 显示所有房间                 ║");
        println!("║  2. 客人入住                     ║");
        println!("║  3. 客人退房                     ║");
        println!("║  4. 查询房间信息                 ║");
        println!("║  5. 查询客人信息                 ║");
        println!("║  6. 统计信息                     ║");
        println!("║  0. 退出系统                     ║");
        println!("╚══════════════════════════════════╝");
        print!("请选择功能 (0-6): ");
        io::stdout().flush().unwrap();
    }
    
    // 获取用户输入(整数)
    fn get_input_number() -> Option<u32> {
        let mut input = String::new();
        io::stdin().read_line(&mut input).ok()?;
        input.trim().parse().ok()
    }
    
    // 获取用户输入(字符串)
    fn get_input_string() -> String {
        let mut input = String::new();
        io::stdin().read_line(&mut input).unwrap();
        input.trim().to_string()
    }
    
    // 运行系统
    fn run(&mut self) {
        println!("欢迎使用酒店管理系统!");
        
        loop {
            Self::show_menu();
            
            match Self::get_input_number() {
                Some(1) => {
                    self.display_all_rooms();
                },
                Some(2) => {
                    println!("\n=== 客人入住 ===");
                    print!("请输入房间号: ");
                    io::stdout().flush().unwrap();
                    
                    if let Some(room_num) = Self::get_input_number() {
                        print!("请输入客人姓名: ");
                        io::stdout().flush().unwrap();
                        let name = Self::get_input_string();
                        
                        print!("请输入联系电话: ");
                        io::stdout().flush().unwrap();
                        let phone = Self::get_input_string();
                        
                        self.check_in(room_num, name, phone);
                    } else {
                        println!("✗ 无效的房间号");
                    }
                },
                Some(3) => {
                    println!("\n=== 客人退房 ===");
                    print!("请输入房间号: ");
                    io::stdout().flush().unwrap();
                    
                    if let Some(room_num) = Self::get_input_number() {
                        self.check_out(room_num);
                    } else {
                        println!("✗ 无效的房间号");
                    }
                },
                Some(4) => {
                    println!("\n=== 查询房间信息 ===");
                    print!("请输入房间号: ");
                    io::stdout().flush().unwrap();
                    
                    if let Some(room_num) = Self::get_input_number() {
                        self.query_room(room_num);
                    } else {
                        println!("✗ 无效的房间号");
                    }
                },
                Some(5) => {
                    println!("\n=== 查询客人信息 ===");
                    print!("请输入客人姓名: ");
                    io::stdout().flush().unwrap();
                    
                    let name = Self::get_input_string();
                    if !name.is_empty() {
                        self.query_guest(&name);
                    } else {
                        println!("✗ 请输入有效的姓名");
                    }
                },
                Some(6) => {
                    self.statistics();
                },
                Some(0) => {
                    println!("\n感谢使用酒店管理系统,再见!");
                    break;
                },
                _ => {
                    println!("✗ 无效的选择,请重新输入");
                }
            }
        }
    }
}

fn main() {
    let mut hotel = Hotel::new();
    hotel.run();
}

5. 项目结构说明

5.1 数组的使用

本项目大量使用了数组来存储房间信息:

代码语言:javascript
复制
struct Hotel {
    rooms: [Room; 10],  // 固定大小的房间数组
}

数组的优势

  • ✅ 固定大小,性能好
  • ✅ 连续内存,访问快速
  • ✅ 类型安全,编译时检查
5.2 函数的作用

每个功能都封装成独立函数:

代码语言:javascript
复制
// 查询函数
fn find_room_by_number(&self, number: u32) -> Option<usize>
fn find_room_by_guest_name(&self, name: &str) -> Option<usize>

// 操作函数
fn check_in(&mut self, room_number: u32, guest_name: String, phone: String) -> bool
fn check_out(&mut self, room_number: u32) -> bool

// 查询函数
fn query_room(&self, room_number: u32)
fn query_guest(&self, guest_name: &str)

// 统计函数
fn statistics(&self)

函数设计的优势

  • ✅ 代码模块化,易于维护
  • ✅ 可复用,减少重复代码
  • ✅ 易于测试,每个函数独立测试

6. 运行示例

6.1 编译运行
代码语言:javascript
复制
# 创建新项目
cargo new hotel_management
cd hotel_management

# 将代码复制到 src/main.rs
# 运行
cargo run
6.2 使用流程示例
代码语言:javascript
复制
欢迎使用酒店管理系统!

╔══════════════════════════════════╗
║      酒店管理系统                ║
╠══════════════════════════════════╣
║  1. 显示所有房间                 ║
║  2. 客人入住                     ║
║  3. 客人退房                     ║
║  4. 查询房间信息                 ║
║  5. 查询客人信息                 ║
║  6. 统计信息                     ║
║  0. 退出系统                     ║
╚══════════════════════════════════╝
请选择功能 (0-6): 1

=== 酒店房间状态 ===
房间号   状态         客人姓名         电话             价格/晚
-----------------------------------------------------------------
1        空闲         -               -               100.00
2        空闲         -               -               120.00
...

请选择功能 (0-6): 2

=== 客人入住 ===
请输入房间号: 1
请输入客人姓名: 张三
请输入联系电话: 13800138000
✓ 房间 1 入住成功!

7. 知识点总结

7.1 数组的使用
  1. 固定大小数组[Room; 10] - 10个房间
  2. 数组初始化:使用 [value; length] 语法
  3. 数组迭代:使用 iter() 方法
  4. 数组索引:通过索引访问元素 rooms[i]
7.2 函数的使用
  1. 结构体方法:使用 impl 块实现方法
  2. 参数传递:不可变引用 &self 和可变引用 &mut self
  3. 返回值:使用 Option<T> 处理可能失败的操作
  4. 辅助函数:私有函数辅助主函数
7.3 其他重要概念
  1. 枚举:使用枚举表示房间状态
  2. Option:处理可能为空的值
  3. 模式匹配:使用 match 处理不同情况
  4. 字符串处理:使用 String&str

8. 扩展练习

练习1:添加房间维护功能

实现房间维护状态的设置和恢复功能。

练习2:添加预订系统

实现房间预订功能,允许客人提前预订房间。

练习3:添加入住天数计算

实现根据入住日期和退房日期计算费用。

练习4:添加数据持久化

使用文件保存和加载酒店数据。

练习5:添加房间类型

实现不同类型的房间(单人间、双人间、套房等)。

练习6:改进查询功能

实现按价格范围、按房间类型等条件查询。

9. 项目反思

9.1 优点
  • ✅ 代码结构清晰,功能模块化
  • ✅ 使用数组存储数据,性能好
  • ✅ 函数设计合理,易于扩展
  • ✅ 交互界面友好
9.2 可改进的地方
  • ⚠️ 数组大小固定,可以改用Vec实现动态扩展
  • ⚠️ 数据未持久化,程序重启后数据丢失
  • ⚠️ 输入验证不够完善
  • ⚠️ 缺少错误处理机制
9.3 下一步学习
  • 学习使用 Vec 替代固定大小数组
  • 学习文件I/O操作实现数据持久化
  • 学习错误处理(Result 类型)
  • 学习结构体的更高级用法

10. 总结

通过这个酒店管理系统项目,我们综合运用了:

  1. 数组:存储和管理房间数据
  2. 函数:模块化设计和代码组织
  3. 结构体:组织相关数据
  4. 枚举:表示状态信息
  5. 控制流:循环和条件判断
  6. 用户交互:命令行界面

这个项目展示了如何将基础知识组合起来构建一个完整的应用程序。虽然功能相对简单,但涵盖了Rust编程的核心概念,为学习更复杂的特性打下了坚实的基础。


相关文章

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目概述
  • 功能演示
    • 项目功能
    • 技术要点
  • 1. 数据结构设计
    • 1.1 定义枚举和结构体
    • 1.2 初始化函数
  • 2. 核心功能实现
    • 2.1 显示所有房间状态
    • 2.2 查找房间函数
    • 2.3 入住登记函数
    • 2.4 退房处理函数
    • 2.5 查询功能函数
    • 2.6 统计信息函数
  • 3. internally实现
  • 4. 完整代码
  • 5. 项目结构说明
    • 5.1 数组的使用
    • 5.2 函数的作用
  • 6. 运行示例
    • 6.1 编译运行
    • 6.2 使用流程示例
  • 7. 知识点总结
    • 7.1 数组的使用
    • 7.2 函数的使用
    • 7.3 其他重要概念
  • 8. 扩展练习
    • 练习1:添加房间维护功能
    • 练习2:添加预订系统
    • 练习3:添加入住天数计算
    • 练习4:添加数据持久化
    • 练习5:添加房间类型
    • 练习6:改进查询功能
  • 9. 项目反思
    • 9.1 优点
    • 9.2 可改进的地方
    • 9.3 下一步学习
  • 10. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档