C# Dangdang (console)

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

Topic: Complete Dangdang.com.

1. Functions
1. User
(1) Register
(2) Login
(3) Change Password
(4) View Product
(5) Purchase Product
(6) View Order
(7) Modify Order
(8) Delete Order
2. Administrator
(1) ) Login
(2) Add, delete, check and modify products
(3) Check and delete users
(4) Check and delete orders
2. Classes and objects
1. Object
User administrator Product order
2. Fields/attributes
(1) Users (Users): id name password
(2) Administrator (Admin): id name password
(3) Product (Product): id name price num (stock quantity) desc (commodity description)
(4) Orders (Orders): id User (Users) product (Product) count (total quantity of goods) sum (total price)
3. Class
(1) Users
(2) Admin
(3) Product
(4) Orders
(5) UsersController (user operation class) AdminController (administrator operation class)
( 6) Test
2. Code
1. Interface class

 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. Create Users, Admin, Product, Orders class
user class

  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;          
      }   
  }   

administrator class

   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;
      }
   }

product category

 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;
   }
 }

Order class

 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. User Control Class (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. Administrator control class (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) This class is used to write the interface

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;
    }
   }
  }
  //还有部分界面没有写,文末有代码连接
}

3. Operation diagram
1. User logs in and checks products (shopping)
insert image description here
2. User checks orders and modifies orders
insert image description here
3. User deletes orders 4.
insert image description here
Administrator adds products and checks products
insert image description here
5. Administrator checks users and orders
insert image description here
4. Summary
Although the program It has been modified many times, but it is still unsatisfactory. I feel that I have learned for nothing in a month, and even a small homework is so poorly done. Below is the link of the small project, which is very messy.
"Dangdang" https://www.aliyundrive.com/s/U5LcAKcMgc9 Extraction code: 6i4e

Guess you like

Origin blog.csdn.net/weixin_44706943/article/details/126323945