C# 当当网(控制台)

    该当当网作业标志着一个多月的C#学习结束了。
    首先非常感谢老师,总是非常认真的给我们讲解疑难;然后就是非常怀念七月学习C#的生活,非常的充实;接下来就是说当当网了,刚开始经过老师特意地修改,让我们用对象数组完成管理员部分,然后学了非泛型(ArrayList),就开始让我们用它完成整个作业,然后学了泛型后要我们换成这个List,最后学完接口,懂得,然而年少轻狂,不听,硬是ArrayList用到底,没有去修改。我想我这个样子学完后,肯定找到工作也要被炒鱿鱼。     

题目:完成当当网。

一、功能
1、用户
(1) 注册
(2) 登录
(3) 修改密码
(4) 查看商品
(5) 购买商品
(6) 查看订单
(7) 修改订单
(8) 删除订单
2、管理员
(1) 登录
(2) 对商品增删查改
(3) 对用户查删
(4) 对订单查删
二、类和对象
1、对象
用户 管理员 商品 订单
2、字段/属性
(1) 用户(Users):id name password
(2) 管理员(Admin):id name password
(3) 商品(Product):id name price num(库存量) desc(商品描述)
(4) 订单(Orders):id 用户(Users) 商品(Product) count(商品总数量) sum(总价钱)
3、类
(1) Users
(2) Admin
(3) Product
(4) Orders
(5) UsersController(用户操作类) AdminController(管理员操作类)
(6) Test
二、代码
1、接口类

 interface IAdminController
    {
    
    
        public void InitAdmin();
        public Admin AdminLogin(string name, string password);
        public void InitProduct();
        public void ShowProduct();
        public void ProductAdd(string name, double price, int num, string desc);
        public Product SelectByPid(int id);
        public Product ProductUpdate(int id, double price, int num);
        public void ProductDelete(int id);
    }
    interface IUserController
    {
    
    
        public void OrderAdd(int count, double num, Users users, Product products);
        public Orders IsOrderId(int id);
        public Orders IsNum(int id, int num);
        public void DeleteOrder(int id);
        public void InitUser();
        public void ShowUser();
        public void UserRegister(string name, string password);
        public void SelectAllOrder();
        public Users UsersLogin1(string name, string password);
        public Users DeleteUser(int id);
        public Orders SelectOwnOrder(string name);
        public ArrayList SelectOrder(string name);
    }

2、创建Users,Admin,Product,Orders类
用户类

  class Users
  {
    
    
      public int Id {
    
     get; set; }
      public string Name {
    
     get; set; }
      public string Password {
    
     get; set; }    
      public Users()
      {
    
    
      }
      public Users(int id, string name, string password)
      {
    
    
          Id = id;
          Name = name;
          Password = password;          
      }   
  }   

管理员类

   class Admin
   {
    
    
      public int Id {
    
     get; set; }
      public string Name {
    
     get; set; }
      public string Password {
    
     get; set; }
      public Admin()
      {
    
    
      }
      public Admin(int id, string name, string password)
      {
    
    
          Id = id;
          Name = name;
          Password = password;
      }
   }

产品类

 class Product
  {
    
    
    //产品:id name price num(库存) desc(商品描述)
    private int id;
    private string name;
    private double price;
    private int num;//库存
    private string desc;//商品描述
    //封装
    public int Id
    {
    
    
     get {
    
     return id; }
     set {
    
     id = value; }
    }
    public string Name
    {
    
    
     get {
    
     return name; }
     set {
    
     name = value; }
    }
    public double Price
    {
    
    
     get {
    
     return price; }
     set {
    
     price = value; }
    }
    public int Num
    {
    
    
     get {
    
     return num; }
     set {
    
     num = value; }
    }
    public string Desc
    {
    
    
     get {
    
     return desc; }
     set {
    
     desc = value; }
    }
    public Product()
    {
    
    
    }
  public Product(int id, string name, double price, int num, string desc)
   {
    
    
     Id = id;
     Name = name;
     Price = price;
     Num = num;
     Desc = desc;
   }
 }

订单类

 class Orders
    {
    
    
        public int Id {
    
     get; set; }
        public Users Users {
    
     get; set; }
        public Product Product {
    
     get; set; }
        public int Counts {
    
     get; set; }
        public double Sum {
    
     get; set; }
        public Orders()
        {
    
    
        }
        public Orders(int id, Users users, Product product, int counts, double sum)
        {
    
    
            Id = id;
            Users = users;
            Product = product;
            Counts = counts;
            Sum = sum;
        }
    }

3、用户控制类(UserController)

 class UserController : IUserController
 {
    
    
  //首先用户类需要有两个集合,然后我把用户id和订单id取了固定值。
  ArrayList userList = new ArrayList();//用户集合
  ArrayList orderList = new ArrayList();//订单集合
  int userId = 1002;//用户id
  int orderId = 1;//订单id 
  //先初始化用户信息,减去后面测试时频繁注册操作
  public void InitUser()
  {
    
    
   userList.Add(new Users(1001, "张三", "123"));
  }
  //用户注册
  public void UserRegister(string name, string password)
  {
    
    
   userList.Add(new Users(userId, name, password));
   Console.WriteLine("注册成功");
   userId++;
  }
  //用户登录
  public Users UsersLogin1(string name, string password)
   {
    
    
    Users u = null;
    if (userList.Count != 0)
     {
    
    
      foreach (var item in userList)
       {
    
    
        Users users = (Users)item;
        if (users.Name.Equals(name) && users.Password.Equals(password))
          {
    
    
             u = users;
             break;
          }
        }
       }
      return u;
    }  
 }
 //订单添加(购买商品)
 public void OrderAdd(int count, double num, Users users, Product products)
  {
    
    
   Orders orders = new Orders(orderId, users, products, count, num);
   orderList.Add(orders);
   Console.WriteLine("添加成功");
   Console.WriteLine("您购买的商品:" + products.Name + "  " + "数量:" + count + "  " + "总计:" + num);
    orderId++;
  }
 //购买商品时需要判断库存是否足够,足够则修改库存,且存入订单
 public Orders IsNum(int id, int num)
  {
    
    
   Orders pNum = null;
   foreach (Orders orders in orderList)
   {
    
    
    if (orders.Id == id)
    {
    
    
     if (orders.Product.Num < num)
     {
    
    
      pNum = null;
     }
     else
      {
    
    
       pNum = orders;
       orders.Product.Num = orders.Counts - num + orders.Product.Num;
       orders.Counts = num;
       orders.Sum = orders.Product.Price * num;
       }
      }
     }
   return pNum;
   }
 //查看个人订单
 public Orders SelectOwnOrder(string name)
  {
    
    
   Orders uorder = null;
   foreach (Orders orders in orderList)
    {
    
    
     if (orders.Users.Name == name)
       {
    
    
         if (orders.Counts == 0)
         {
    
    
          Console.WriteLine("订单为空!");
         }
         else
         {
    
    
          uorder = orders;
          Product pp = orders.Product;
          Users uu = orders.Users;
           Console.WriteLine(orders.Id + "   " + pp.Name + "    " + pp.Price + "  " + orders.Counts + "   " + orders.Sum + "  " + uu.Name);
         }
       }
     }
  return uorder;
 }
 //删除订单
 public void DeleteOrder(int id)
 {
    
    
  Boolean flag = true;
  foreach (Orders orders in orderList)
   {
    
    
    if (orders.Id.Equals(id))
    {
    
    
     orderList.Remove(orders);
     Console.WriteLine("删除成功!");
     flag = false;
     break;
    }
   }
  if (flag)
   {
    
    
    Console.WriteLine("无该订单!");
   }  
  //接下来的功能本该写在管理员控制类的,
  //但是本人不知道怎么在管理员控制类调用用户和订单集合   
  //于是将功能写在用户控制类里面           
  
  //管理员查看用户
  public void ShowUser()
  {
    
    
   if (userList.Count != 0)
   {
    
    
    foreach (var item in userList)
    {
    
    
     Users users = item as Users;
     Console.WriteLine(users.Id + users.Name + users.Password );
    }
   }
   else
   {
    
    
     Console.WriteLine("无用户");
   }
  }
  //管理员删除用户
  public Users DeleteUser(int id)
  {
    
    
   Users u = null;
   foreach (Users uu in userList)
   {
    
    
    if (uu.Id == id)
    {
    
    
     u = uu;
     userList.Remove(uu);
     break;
    }
   }
   return u;
  }
  //管理员查看用户所有订单
  public void SelectAllOrder()
   {
    
    
    if (orderList.Count == 0)
    {
    
    
     Console.WriteLine("订单为空!");
    }
    else
    {
    
    
     Console.WriteLine("编号" + " " + "名称" + " " + "单价" + " " + "数量" + " " + "总价" + " " + "姓名");
     foreach (Orders orders in orderList)
     {
    
    
       Product pp = orders.Product;
       Users uu = orders.Users;
       Console.WriteLine(orders.Id + "   " + pp.Name + "    " + pp.Price + "  " + orders.Counts + "   " + orders.Sum + "  " + uu.Name);
     }
    }
   }
 }
 //管理员删除订单(与用户删除一致)
 public void DeleteOrder(int id)
  {
    
    
   Boolean flag = true;
   foreach (Orders orders in orderList)
   {
    
    
    if (orders.Id.Equals(id))
    {
    
    
     orderList.Remove(orders);
     Console.WriteLine("删除成功!");
     flag = false;
     break;
    }
   }
   if (flag)
    {
    
    
     Console.WriteLine("无该订单!");
    }
 }

4、管理员控制类(AdminController)

class AdminController: IAdminController
{
    
    
 int productId = 104;//产品id
 public ArrayList adminList = new ArrayList();//管理员集合
 public ArrayList productList = new ArrayList();//产品集合 
 //初始化管理员信息 
 public void InitAdmin()
 {
    
    
  adminList.Add(new Admin(101, "admin", "admin"));
  adminList.Add(new Admin(102, "boss", "boss"));
 }
//管理员登录
 public Admin AdminLogin(string name,string password)
 {
    
    
  Admin a = null;
  if (adminList.Count != 0)
  {
    
    
   foreach (var item in adminList)
    {
    
    
     Admin admin = (Admin)item;
     if(admin.Name.Equals(name) && admin.Password.Equals(password))
      {
    
    
       a = admin;
       break;
      }
     }
    }
   return a;
 } 
 //添加产品
 public void ProductAdd(string name, double price, int num, string desc)
  {
    
    
   productList.Add(new Product(productId, name, price, num, desc));
   productId++;
   Console.WriteLine("添加成功");
  }
 //查看商品
 public void ShowProduct()
 {
    
    
   Console.WriteLine("id" + "\t" + "名称" + "\t" + "价格" + "\t" + "库存" + "\t" + "描述");
   foreach (var item in productList)
   {
    
    
    Product products = item as Product;
     Console.WriteLine(products.Id + "      " + products.Name + "\t" + products.Price + "\t" + products.Num + "\t" + products.Desc);
    }
  }
 //根据id修改商品价格库存
 public Product ProductUpdate(int id, double price, int num)
  {
    
    
   Product p = null;
   foreach ( Product product in productList)
   {
    
    
    if (product.Id == id)
    {
    
                 
     product.Price = price;
     product.Num = num;
     p = product;
     }             
    }
   return p;
   }
 //删除商品
 public void ProductDelete(int id)
  {
    
    
   Boolean flag = true;
   for (int i = 0; i < productList.Count; i++)
   {
    
    
    Product products = (Product)productList[i];
    if (products.Id == id)
    {
    
    
     flag = false;
     productList.RemoveAt(i);
     Console.WriteLine("删除成功");
     break;
     }
    }
    if (flag)
    {
    
    
     Console.WriteLine("无该编号!删除失败");
    }            
   } 
  //接下来的功能由于是有关用户和订单的,
  //本人不知道怎么调用用户和订单集合   
  //于是将功能写在用户控制类里面   
 } 

5、测试类(Test)该类用来写界面的

Class Test
{
    
    
 Admin a = null;
 Users u = null;
 Orders o = null;
 IAdminController ac = new AdminController();
 IUserController uc = new UserController();
 static void Main(string[] args)
  {
    
    
   Test test = new Test();
   test.ac.InitAdmin();
   test.ac.InitProduct();
   test.uc.InitUser();
   test.MainView1();
  }
 //当当网 管理员和用户不同权限者登录
 public void MainView1()
 {
    
    
  while (true)
  {
    
               
   Console.WriteLine("***********欢迎来到当当网***********");
   Console.WriteLine("***** 1.管理员  2.顾客  3.退出 *****");
   Console.WriteLine("************************************");
   Console.Write("请输入数字:");
   string n = Console.ReadLine();
   switch (n)
   {
    
    
    case "1":
        AdminLoginView();
        break;
    case "2":
        MainView();
        break;
    case "0":
        Environment.Exit(0);
        break;
    default:
        Console.WriteLine("输入格式有误!");
        break;
    }
   }
  }
 //管理员登录界面 
 public void AdminLoginView()
 {
    
    
  Console.Write("请输入账号:");
  string name = Console.ReadLine();
  Console.Write("请输入密码:");
  string password = Console.ReadLine();
  a = ac.AdminLogin(name, password);
  if (a == null)
  {
    
    
   Console.WriteLine("账号密码错误!登录失败!");
   MainView();
  }
  else
  {
    
    
   Console.WriteLine(name + "登录成功!");
   ChoiceViewAdmin();
  }
 }
 //管理员选择操作界面
 public void ChoiceViewAdmin()
 {
    
    
  while (true)
  {
    
     
   Console.WriteLine("************************************");
   Console.WriteLine("************ 1.添加商品 ************");
   Console.WriteLine("************ 2.查看商品 ************");
   Console.WriteLine("************ 3.修改商品 ************");
   Console.WriteLine("************ 4.删除商品 ************");
   Console.WriteLine("************ 5.查看用户 ************");
   Console.WriteLine("************ 6.查看订单 ************");
   Console.WriteLine("************ 7.删除用户 ************");
   Console.WriteLine("************ 8.删除订单 ************");
   Console.WriteLine("************ 0.返回上一级 **********");
   Console.WriteLine("************************************");
   Console.Write("请输入您的操作:");
   string n = Console.ReadLine();
   switch (n)
   {
    
    
    case "1":
       GoodsAdd();
       break;
    case "2":
       ac.ShowProduct();
       break;
    case "3":
       GoodsUpdate();
       break;
    case "4":
       GoodsDelete();
       break;
    case "5":
       ShowAllUser();
       break;
    case "6":
       ShowOrder();
       break;
    case "7":
       DeleteUser();
       ChoiceViewAdmin();
       break;
    case "8":
       DeleteOrders();
       ChoiceViewAdmin();
       break;
    case "0":
       MainView1();
       break;
    default:
       break;
   }
  }
 }
 //用户选择操作界面
 public void ChoiceView()
  {
    
    
   while (true)
   {
    
    
    Console.WriteLine("************************************");
    Console.WriteLine("************ 1.查看商品 ************");
    Console.WriteLine("************ 2.查看订单 ************");
    Console.WriteLine("************ 3.修改订单 ************");
    Console.WriteLine("************ 4.删除订单 ************");
    Console.WriteLine("************ 0.返回上一级 **********");
    Console.WriteLine("************************************");
    Console.Write("请输入您的操作:");
    string n = Console.ReadLine();
    switch (n)
    {
    
    
     case "1":
        ac.ShowProduct();
        Shopping();
        break;
     case "2":
        // uc.SelectAllOrder();
        SelectOwnOrderView();
        break;
     case "3":
        UpdateOrderView();
        break;
     case "4":
        SelectOwnOrderView();
        DeleteOrderView();
        break;
     case "0":
         MainView();
         break;
     default:
         Console.WriteLine("输入有误!");
         break;
    }
   }
  }
  //还有部分界面没有写,文末有代码连接
}

三、运行图
1、用户登录,查看商品(购物)
在这里插入图片描述
2、用户查看订单,修改订单
在这里插入图片描述
3、用户删除订单
在这里插入图片描述
4、管理员添加商品和查看商品
在这里插入图片描述
5、管理员查看用户、订单
在这里插入图片描述
四、总结
尽管该程序修改多次,但是仍不尽人意,感觉一个月白学了,连个小作业都做得这么差,下面是该小项目的链接,写得很乱。
「当当网」https://www.aliyundrive.com/s/U5LcAKcMgc9 提取码: 6i4e

猜你喜欢

转载自blog.csdn.net/weixin_44706943/article/details/126323945