简易外卖订单系统(C#控制台)
功能:
创建订单
添加菜品
查看订单
计算总价
保存订单记录
退出系统
菜品类:菜品名称 菜品价格
订单类:菜品集合、下单时间、添加菜品、计算总价、显示订单
外卖系统:保存所有订单的集合、创建订单、显示所有订单、保存日志
创建订单时,添加菜品和菜品价格
查看订单时,显示所有的订单和总价
主程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 用类的思想设计外卖订单系统
{
internal class Program
{
static void Main(string[] args)
{
DeliverySystem deliverySystem = new DeliverySystem();
bool isRunning = true;
while (isRunning)
{
PrintMenu();
string choice = Console.ReadLine();
switch (choice)
{
case "1": deliverySystem.CreateOrder();break;
case "2": deliverySystem.ShowLogs();break;
case "3":isRunning = false;break;
default: Console.WriteLine("输入错误,请重新输入");break;
}
}
}
public static void PrintMenu()
{
Console.WriteLine("========外卖订单管理系统========");
Console.WriteLine("1.创建订单");
Console.WriteLine("2.查看订单");
Console.WriteLine("3.退出");
Console.WriteLine("请选择:");
}
}
}
菜品类 (这个是最底层的类)
在菜品类中实现构造方法,添加菜品,打印菜品列表,计算菜品列表总价
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 用类的思想设计外卖订单系统
{
/// <summary>
/// 菜品类
/// </summary>
internal class Dish
{
public string DishName { get; set; }//菜品名称
public double DishPrice { get; set; }//菜品价格
/// <summary>
/// 菜品的构造函数
/// </summary>
/// <param name="dishname">菜品名称</param>
/// <param name="dishprice">菜品价格</param>
public Dish(string dishname,double dishprice)
{
DishName = dishname;
DishPrice = dishprice;
}
/// <summary>
/// 向dishes中添加菜品
/// </summary>
/// <param name="dishlist">菜品列表dishes</param>
public static void AddDish(List<Dish> dishlist)
{
Console.WriteLine("请输入菜品名称:");
string dishName = Console.ReadLine();
Console.WriteLine("请输入菜品价格:");
if (double.TryParse(Console.ReadLine(), out double dishPrice))
{
Dish dish = new Dish(dishName, dishPrice);
dishlist.Add(dish);
}
else
{
Console.WriteLine("输入有误,按任意键返回....");
return;
}
}
/// <summary>
/// 显示菜品名称和价格
/// </summary>
/// <param name="dishes">菜品列表dishes</param>
public static void ShowList(List<Dish> dishes)
{
for (int i = 0; i < dishes.Count; i++)
{
Console.WriteLine($"{dishes[i].DishName}------{dishes[i].DishPrice}元");
}
}
/// <summary>
/// 计算订单总价
/// </summary>
/// <param name="dishes">菜品列表dishes</param>
/// <returns></returns>
public static double GetTotalPrice(List<Dish> dishes)
{
double total = 0;
for (int i = 0; i < dishes.Count; i++)
{
total += dishes[i].DishPrice;
}
return total;
}
}
}
订单类(这是中间层的类)
实现订单的构造函数,打印订单信息(调用菜品类打印菜品列表)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 用类的思想设计外卖订单系统
{
/// <summary>
/// 订单类
/// </summary>
internal class Order
{
public int OrderId { get; set; } //下单编号
public DateTime OrderingTime { get; set; }//下单的时间
public double TotalPrice { get; set; }// 计算总价
public List<Dish> Dishes { get; set; }//菜品列表
/// <summary>
/// Order类的构造函数
/// </summary>
/// <param name="orderid"></param>
/// <param name="totalPrice"></param>
/// <param name="dishes"></param>
public Order(int orderid,double totalPrice,List<Dish> dishes)
{
OrderId = orderid;
OrderingTime = DateTime.Now;
TotalPrice = totalPrice;
Dishes = dishes;
}
/// <summary>
/// 打印订单信息(调用菜品类打印菜品信息)
/// </summary>
public void ShowMessage()
{
Console.WriteLine("-----------------------------------");
Console.WriteLine($"订单编号:{OrderId}");
Console.WriteLine($"下单时间:{OrderingTime}");
Console.WriteLine("订单菜品:");
Dish.ShowList(Dishes); //显示菜品全部信息
Console.WriteLine($"订单总价:{TotalPrice}元");
}
}
}
外卖系统类(这是外层类)
实现创建订单,保存订单到本地文件,访问本地文件显示订单列表

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Data.Odbc;
namespace 用类的思想设计外卖订单系统
{
/// <summary>
/// 外卖系统类
/// </summary>
internal class DeliverySystem
{
List<Order> orderlist = new List<Order>();
public string path = "OrderLogs.txt";
/// <summary>
/// 创建订单
/// </summary>
public void CreateOrder()
{
Console.WriteLine("请输入订单编号:");
int id = int.Parse(Console.ReadLine());
List<Dish> dishes = new List<Dish>();
bool isAdd = true;
//利用 do while循环实现,是否继续添加菜品(至少执行一次)
do
{
Dish.AddDish(dishes);
Console.WriteLine("是继续添加菜品(y/n):");
string choice = Console.ReadLine();
isAdd = (choice == "y") ? true : false;
} while (isAdd);
double totalPrice = Dish.GetTotalPrice(dishes);//调用菜品类封装的方法算总价
Order order = new Order(id,totalPrice, dishes);//调用订单的构造函数
order.ShowMessage(); //显示订单全部信息
SaveOrderLog(order); //保存订单日志
orderlist.Add(order); //添加订单
}
/// <summary>
/// 保存订单信息到本地文件
/// </summary>
/// <param name="order"></param>
public void SaveOrderLog(Order order)
{
string result = "";
result += "[订单编号]:" + order.OrderId;
result += "\n下单时间" + order.OrderingTime;
for (int i = 0; i < order.Dishes.Count; i++)
{
result += "\n菜品名:" + order.Dishes[i].DishName + "------菜品价格:" + order.Dishes[i].DishPrice;
}
result += "\n订单总价:"+order.TotalPrice;
SaveMessage(result);
}
/// <summary>
///访问本地文件,显示订单列表
/// </summary>
public void ShowLogs()
{
string str = File.ReadAllText(path);
Console.WriteLine(str);
}
/// <summary>
/// 文件操作,写入本地txt文件
/// </summary>
/// <param name="message"></param>
public void SaveMessage(string message)
{
File.AppendAllText(path, message+Environment.NewLine, Encoding.UTF8);
}
}
}
程序测试
1.测试创建订单 多个菜品

2.测试添加1个菜品
3.查看菜品
以上不足,请同学、老师批评指正。