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

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#位运算符的基本用法介绍

    C#位运算符的基本用法介绍 什么是位运算符? 位运算符是一组针对二进制数进行操作的运算符。C#中的位运算符包括位与(&)、位或(|)、取反(~)、异或(^)、左移(<<)和右移(>>), 下面逐一介绍它们的用法。 位与(&) 位与运算符用于将两个二进制数的相应位设置为1,然后返回一个新的值。只有当两个数的相应位都是1时…

    C# 2023年6月7日
    00
  • C#实现上传下载图片

    下面就为您介绍C#实现上传下载图片的完整攻略。 1. 上传图片 1.1 上传图片的基本原理 上传图片其实是将本地计算机的图片文件传输到服务器上。由于HTTP协议是无状态的,因此可以使用POST请求将文件传输到服务器上。 1.2 上传图片的技术实现 在C#中进行上传图片的技术实现,可以通过以下步骤完成: 1.2.1 选择需要上传的图片文件 使用OpenFile…

    C# 2023年6月1日
    00
  • c# .Net Core静态文件服务器的新人入门教程

    C# .NET Core 静态文件服务器的新人入门教程 在 C# .NET Core 中,静态文件服务器是一个非常常见的功能,它可以帮助我们在 Web 应用程序中提供静态文件的访问。本攻略将详细介绍如何在 C# .NET Core 中创建静态文件服务器。 静态文件服务器的作用 C# .NET Core 的静态文件服务器可以帮助我们: 提供静态文件的访问。 管…

    C# 2023年5月16日
    00
  • 关于C#执行顺序带来的一些潜在问题

    针对“关于C#执行顺序带来的一些潜在问题”的问题,我们需要详细探讨C#的执行顺序,以及该顺序可能带来的问题,下面是我的完整攻略: C#的执行顺序 在C#语言中,程序的运行顺序是由代码所编写的顺序决定的,也就是按照从上到下的顺序依次执行语句(除了被注释的代码或被if/else等条件语句控制的代码块)。但是,C#程序中也有一些特殊的操作符或者语句的执行是带有优先…

    C# 2023年5月15日
    00
  • 如何使用ASP.NET Core 配置文件

    以下是“如何使用ASP.NET Core配置文件”的完整攻略: 什么是ASP.NET Core配置文件 ASP.NET Core配置文件是一种用于存储应用程序配置信息的文件。配置文件可以包含应用的各种设置,例如数据库连接字符串、日志级别、身份验证设置等。ASP.NET Core提供了一种方便的方式来读取和配置文件。 如何使用ASP.NET Core配置文件 …

    C# 2023年5月12日
    00
  • C# File.ReadAllLines()方法: 读取文本文件的所有行到一个字符串数组中

    File.ReadAllLines() 方法用于读取指定路径下文本文件的所有行并返回一个字符串数组,每个数组元素存储一行文本。该方法属于 System.IO 命名空间下的静态类 File 的一个成员函数。 使用方法: string[] lines = File.ReadAllLines("filePath.txt"); 其中 “fileP…

    C# 2023年4月19日
    00
  • .net实现文件读写的几种常用方法

    这里给出“.NET实现文件读写的几种常用方法”的攻略: 一、文件读写方式 在.NET中,实现文件读写主要有以下几种方式: 1.使用FileStream对象 FileStream是.NET中用于操作文件的类,可以使用Read方法读取文件,使用Write方法写入文件。 以下示例是使用FileStream实现写入文件和读取文件的方法: 写入文件 string fi…

    C# 2023年6月1日
    00
  • C#简单的特殊输出实例

    接下来我将为您详细讲解使用C#实现特殊输出的方法。 1. 基础知识 在C#中,我们可以使用Console.WriteLine()方法来输出字符串,并使用{}将变量括起来输出变量的值。 例如: int age = 18; Console.WriteLine("My age is {0}", age); 输出结果为:My age is 18 …

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