C#实现简单订单管理程序

yizhihongxing

C#实现简单订单管理程序攻略

订单管理程序是一个基本的软件开发任务,通过它我们可以练习C#类和对象,掌握基本的输入输出、判断和运算等编程技巧。下面将详细讲解如何使用C#实现一个简单的订单管理程序。

步骤一:定义订单类

首先,我们需要定义一个订单类,用于表示一个订单。订单有一个唯一的标识符、一个客户信息、一个订单日期以及一组订单项。定义订单类的代码如下:

public class Order
{
    public int Id { get; set; } // 订单号
    public Customer Customer { get; set; } // 客户信息
    public DateTime OrderDate { get; set; } // 订单日期
    public List<OrderItem> Items { get; set; } // 订单项

    public Order(int id, Customer customer, DateTime orderDate)
    {
        Id = id;
        Customer = customer;
        OrderDate = orderDate;
        Items = new List<OrderItem>();
    }

    public override string ToString()
    {
        StringBuilder builder = new StringBuilder();
        builder.AppendFormat("Order Id: {0}\n", Id);
        builder.AppendFormat("Customer: {0}\n", Customer);
        builder.AppendFormat("Order Date: {0}\n", OrderDate);
        builder.AppendLine("Order Items:");
        foreach (OrderItem item in Items)
        {
            builder.AppendFormat("\t{0}\n", item);
        }
        return builder.ToString();
    }
}

在订单类中,我们定义了四个成员变量:订单号、客户信息、订单日期以及订单项。订单项是一个列表,包含了多个订单商品。我们还实现了ToString方法,用于打印订单的详细信息。

步骤二:定义客户类和订单项类

接下来,我们需要定义客户类和订单项类,用于表示客户信息和订单商品。客户类和订单项类的代码如下:

public class Customer
{
    public int Id { get; set; } // 客户ID
    public string Name { get; set; } // 客户名称

    public Customer(int id, string name)
    {
        Id = id;
        Name = name;
    }

    public override string ToString()
    {
        return string.Format("ID: {0}, Name: {1}", Id, Name);
    }
}

public class OrderItem
{
    public int Id { get; set; } // 商品ID
    public string Name { get; set; } // 商品名称
    public double Price { get; set; } // 商品单价
    public int Quantity { get; set; } // 商品数量

    public OrderItem(int id, string name, double price, int quantity)
    {
        Id = id;
        Name = name;
        Price = price;
        Quantity = quantity;
    }

    public override string ToString()
    {
        return string.Format("ID: {0}, Name: {1}, Price: {2:C}, Quantity: {3}", Id, Name, Price, Quantity);
    }
}

在客户类和订单项类中,我们分别定义了客户ID、客户名称、商品ID、商品名称、商品单价以及商品数量等属性,并实现了ToString方法,用于打印客户信息和订单商品的详细信息。

步骤三:实现订单管理程序

现在,我们已经定义了订单类、客户类和订单项类,可以开始实现订单管理程序了。我们可以通过控制台程序进行实现,具体流程如下:

  1. 打印主菜单,包括添加订单、删除订单、修改订单、查询订单和退出程序等选项。
  2. 根据用户选择的选项,执行相应的操作。
  3. 若用户选择添加订单,则提示用户输入订单信息,并根据用户输入创建一个订单对象。
  4. 若用户选择删除订单,则提示用户输入要删除订单的ID,并从订单列表中删除该订单。
  5. 若用户选择修改订单,则提示用户输入要修改订单的ID,并根据用户输入更新该订单的信息。
  6. 若用户选择查询订单,则提示用户选择查询方式,可以根据订单号、客户名称或商品名称进行查询,并返回符合条件的所有订单。
  7. 若用户选择退出程序,则退出程序,否则回到步骤1。

以下是一个简单的控制台程序的实现示例:

class Program
{
    static List<Order> orders = new List<Order>();

    static void Main(string[] args)
    {
        bool exit = false;
        while (!exit)
        {
            Console.WriteLine("Order Management System");
            Console.WriteLine("-----------------------");
            Console.WriteLine("1. Add Order");
            Console.WriteLine("2. Remove Order");
            Console.WriteLine("3. Modify Order");
            Console.WriteLine("4. Query Order");
            Console.WriteLine("5. Exit");
            Console.Write("Please select an option: ");
            string option = Console.ReadLine();
            switch (option)
            {
                case "1":
                    AddOrder();
                    break;
                case "2":
                    RemoveOrder();
                    break;
                case "3":
                    ModifyOrder();
                    break;
                case "4":
                    QueryOrder();
                    break;
                case "5":
                    exit = true;
                    break;
                default:
                    Console.WriteLine("Invalid option, please try again.");
                    break;
            }
        }
    }

    // 添加订单
    static void AddOrder()
    {
        Console.WriteLine("Add Order");
        Console.WriteLine("---------");
        Console.Write("Please enter Order ID: ");
        int id = int.Parse(Console.ReadLine());
        Console.Write("Please enter Customer ID: ");
        int customerId = int.Parse(Console.ReadLine());
        Console.Write("Please enter Customer Name: ");
        string customerName = Console.ReadLine();
        Console.Write("Please enter Order Date (yyyy-MM-dd): ");
        DateTime orderDate = DateTime.Parse(Console.ReadLine());
        Order order = new Order(id, new Customer(customerId, customerName), orderDate);
        bool exit = false;
        while (!exit)
        {
            Console.WriteLine("Add Order Item");
            Console.WriteLine("--------------");
            Console.Write("Please enter Item ID: ");
            int itemId = int.Parse(Console.ReadLine());
            Console.Write("Please enter Item Name: ");
            string itemName = Console.ReadLine();
            Console.Write("Please enter Item Price: ");
            double itemPrice = double.Parse(Console.ReadLine());
            Console.Write("Please enter Item Quantity: ");
            int itemQuantity = int.Parse(Console.ReadLine());
            order.Items.Add(new OrderItem(itemId, itemName, itemPrice, itemQuantity));
            Console.Write("Add another Item? (Y/N): ");
            string yn = Console.ReadLine();
            if (yn.ToLower() == "n")
            {
                exit = true;
            }
        }
        orders.Add(order);
        Console.WriteLine("Order added successfully.");
    }

    // 删除订单
    static void RemoveOrder()
    {
        Console.WriteLine("Remove Order");
        Console.WriteLine("------------");
        Console.Write("Please enter Order ID: ");
        int id = int.Parse(Console.ReadLine());
        Order orderToRemove = orders.SingleOrDefault(o => o.Id == id);
        if (orderToRemove != null)
        {
            orders.Remove(orderToRemove);
            Console.WriteLine("Order removed successfully.");
        }
        else
        {
            Console.WriteLine("Order not found.");
        }
    }

    // 修改订单
    static void ModifyOrder()
    {
        Console.WriteLine("Modify Order");
        Console.WriteLine("------------");
        Console.Write("Please enter Order ID to modify: ");
        int id = int.Parse(Console.ReadLine());
        Order orderToModify = orders.SingleOrDefault(o => o.Id == id);
        if (orderToModify != null)
        {
            Console.Write("Please enter new Customer ID: ");
            int customerId = int.Parse(Console.ReadLine());
            Console.Write("Please enter new Customer Name: ");
            string customerName = Console.ReadLine();
            Console.Write("Please enter new Order Date (yyyy-MM-dd): ");
            DateTime orderDate = DateTime.Parse(Console.ReadLine());
            orderToModify.Customer.Id = customerId;
            orderToModify.Customer.Name = customerName;
            orderToModify.OrderDate = orderDate;
            Console.WriteLine("Order modified successfully.");
        }
        else
        {
            Console.WriteLine("Order not found.");
        }
    }

    // 查询订单
    static void QueryOrder()
    {
        Console.WriteLine("Query Order");
        Console.WriteLine("-----------");
        Console.WriteLine("1. Query by Order ID");
        Console.WriteLine("2. Query by Customer Name");
        Console.WriteLine("3. Query by Item Name");
        Console.Write("Please select a query option: ");
        string option = Console.ReadLine();
        switch (option)
        {
            case "1":
                Console.Write("Please enter Order ID: ");
                int id = int.Parse(Console.ReadLine());
                var ordersById = orders.Where(o => o.Id == id);
                PrintOrders(ordersById);
                break;
            case "2":
                Console.Write("Please enter Customer Name: ");
                string customerName = Console.ReadLine();
                var ordersByCustomerName = orders.Where(o => o.Customer.Name == customerName);
                PrintOrders(ordersByCustomerName);
                break;
            case "3":
                Console.Write("Please enter Item Name: ");
                string itemName = Console.ReadLine();
                var ordersByItemName = orders.Where(o => o.Items.Any(item => item.Name == itemName));
                PrintOrders(ordersByItemName);
                break;
            default:
                Console.WriteLine("Invalid option, please try again.");
                break;
        }
    }

    // 打印订单列表
    static void PrintOrders(IEnumerable<Order> orders)
    {
        if (orders.Count() == 0)
        {
            Console.WriteLine("No orders found.");
        }
        else
        {
            foreach (Order order in orders)
            {
                Console.WriteLine(order);
            }
        }
    }
}

在上面的代码中,我们定义了一个静态变量orders,用于存储所有的订单。在程序启动后,我们打印了一个简单的菜单,并根据用户选择的选项执行相应的操作。

例如,用户选择添加订单选项后,程序会提示用户输入订单信息,并根据输入创建一个订单对象,然后提示用户继续添加订单商品,直到用户不再添加。最后,将订单对象添加到订单列表中,并提示用户添加成功。

另外,我们还实现了删除订单、修改订单和查询订单等操作,并通过LINQ语句和Lambda表达式对订单列表进行过滤和查询,最后将符合条件的所有订单打印出来。

示例说明

示例一:添加订单

Order Management System
-----------------------
1. Add Order
2. Remove Order
3. Modify Order
4. Query Order
5. Exit
Please select an option: 1
Add Order
---------
Please enter Order ID: 1001
Please enter Customer ID: 1
Please enter Customer Name: Alice
Please enter Order Date (yyyy-MM-dd): 2021-06-10
Add Order Item
--------------
Please enter Item ID: 1
Please enter Item Name: iPhone
Please enter Item Price: 6999
Please enter Item Quantity: 1
Add another Item? (Y/N): y
Please enter Item ID: 2
Please enter Item Name: MacBook Pro
Please enter Item Price: 12999
Please enter Item Quantity: 1
Add another Item? (Y/N): n
Order added successfully.

上面的示例中,我们选择了添加订单选项,并输入了订单信息和两个订单商品,程序最后提示添加成功。

示例二:查询订单

Order Management System
-----------------------
1. Add Order
2. Remove Order
3. Modify Order
4. Query Order
5. Exit
Please select an option: 4
Query Order
-----------
1. Query by Order ID
2. Query by Customer Name
3. Query by Item Name
Please select a query option: 1
Please enter Order ID: 1001
Order Id: 1001
Customer: ID: 1, Name: Alice
Order Date: 6/10/2021 12:00:00 AM
Order Items:
        ID: 1, Name: iPhone, Price: ¥6,999.00, Quantity: 1
        ID: 2, Name: MacBook Pro, Price: ¥12,999.00, Quantity: 1

上面的示例中,我们选择了查询订单选项,并选择了按订单号查询。程序根据我们输入的订单号查找到该订单,并打印了订单的详细信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现简单订单管理程序 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • c#调用jar包的方法步骤(非常详细)

    下面是使用C#调用Java jar包的完整攻略,步骤如下: 步骤一:安装JDK 首先需要安装JDK(Java开发工具包),在JDK中包含了Java的运行环境和开发工具,以及Java SE Development Kit中的运行环境(JRE)的副本。稍后的步骤需要使用到JDK中自带的工具。 步骤二:创建Java项目并打包 在此步骤中,需要使用Java语言编写代…

    C# 2023年5月15日
    00
  • Unity中 mesh生成斜坡的示例代码

    下面我为你详细讲解如何在Unity中生成斜坡的示例代码。 Unity中mesh生成斜坡的示例代码 1. 创建空白的GameObject 首先我们需要在场景中创建一个空白的GameObject。你可以在Unity的菜单栏中选择GameObject -> CreateEmpty来创建它。 2. 添加MeshFilter和MeshRenderer组件 选中G…

    C# 2023年5月15日
    00
  • ASP.Net邮箱发邮件实例代码

    下面我将给您详细讲解如何使用 ASP.NET 发送邮件的完整攻略。 1. 准备工作 在开始发送邮件之前,您需要在您的 ASP.NET 项目中添加以下名称空间的引用: using System.Net; using System.Net.Mail; 2. 配置邮件设置 在发送邮件之前,您需要配置以下邮件设置: // SMTP 服务器地址 string smtp…

    C# 2023年5月31日
    00
  • 带着问题读CLR via C#(笔记一)CLR的执行模型

    让我来详细讲解一下“带着问题读CLRviaC#(笔记一)CLR的执行模型”的完整攻略。 问题 首先,我们需要了解本文所要解决的问题是什么。本文所讨论的问题是CLR的执行模型,具体来说,就是CLR是如何执行.NET程序的。 步骤 接下来,让我们来看看解决这个问题的步骤: 阅读CLRviaC#这本书,这是一本深入讲解CLR的经典著作。 掌握CLR的执行模型,即C…

    C# 2023年5月15日
    00
  • 深入分析C#键盘勾子(Hook)拦截器,屏蔽键盘活动的详解

    深入分析C#键盘勾子(Hook)拦截器,屏蔽键盘活动的详解 前言 在一些场景下,我们可能需要屏蔽用户在键盘上的操作,例如游戏或者安全软件中。在 Windows 系统中,我们可以通过 C# 键盘勾子 (Hook) 拦截器来实现这个目的,本文就来详细解析这个过程。 键盘勾子概述 键盘勾子是一种为全局键盘事件提供监视的技术。我们通过注册一些事件,例如钩子事件、击键…

    C# 2023年5月15日
    00
  • c#读取文件详谈

    c#读取文件详谈 前言 在c#的应用中,读取文件是一项常见的操作。无论是读取文本文件、二进制文件,还是读取 Excel 文件、数据库文件,我们都需要用到 c# 读取文件的相关操作。在本篇文章中,我们将一步一步地讲解如何在 c# 中读取文件,希望对大家有所帮助。 读取文本文件 假设我们有一个文件叫做 text.txt,我们需要在 c# 中读取该文件中的数据。以…

    C# 2023年5月31日
    00
  • C#实现的4种常用数据校验方法小结(CRC校验,LRC校验,BCC校验,累加和校验)

    C#实现的4种常用数据校验方法小结 在数据通信过程中,对数据进行校验是十分必要的,通过校验可以确保数据的准确性和完整性。本文将讲解C#实现的4种常用数据校验方法:CRC校验、LRC校验、BCC校验、累加和校验。 CRC校验 CRC校验是一种常用的数据校验方法,常见于串口通信、以太网通信等领域。其原理是通过生成一个固定的校验码,将数据和校验码一起传输,接收方同…

    C# 2023年5月31日
    00
  • ASP.NET MVC实现区域或城市选择

    当我们需要实现区域或城市选择的功能时,可以使用 ASP.NET MVC 框架来实现。下面是详细的攻略: 步骤1:创建数据库 在 SQL Server 中创建一个名为“City”的数据库,并添加以下表: Province 表 列名 数据类型 Id int Name nvarchar(50) City 表 列名 数据类型 Id int Name nvarchar…

    C# 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部