简易当当网项目

前期准备

项目需要写的类

类:Users   Product  Orders  Admin  Operation  Test

Users:id  u_name  u_password

Product:id  p_name  price  num

Orders:id  count  sum  Users  Product

Admin:id  a_name  u_password

以上红字代表用类作为返回值

  1. 用户

    1. 注册
    2. 登录
    3. 查看商品
    4. 购买商品
    5. 查看订单
    6. 修改订单
    7. 删除订单
  2. 管理员

    1. 登录
    2. 对商品增删查改
    3. 对用户查删
    4. 对订单查删
  3. 对象

    1. 用户   管理员   商品   订单
  4. 字段/属性

    1. 用户(Users):id  name  password  tel  address
    2. 管理员(Admin):id  name  password
    3. 商品(Product):id  name  price  num(库存量)
    4. 订单(Orders):id 用户(Users)  商品(Product)  count(商品总数量)  sum(总价钱)
    1. Users
    2. Admin
    3. Product
    4. Orders
    5. UserOperation(用户操作类)   AdminOperation(管理员操作类)
    6. Test

  5. 面向接口编程

    1. 管理员接口:登录
    2. 用户接口:注册、登录
  6. MVC设计模式      

    1. M:model  模型          (业务逻辑操作)    
    2. V:view  视图            (界面)               
    3. C:controller  控制器      (调用模型和视图)     

        controller:测试类  Test

        view:操作类  XXXOperation

        model:

        dao:接口IAdmin   IUsers

        Impl: 接口实现类   Adminimpl   UsersImpl

            pojo:封装类   Users  Admin  Product  Orders

        操作思路:

  1.  接口(IAdminDao设计方法功能)
  2. 实现类(AdminImpl实现接口里面的所有方法)
  3. 操作类(AdminOperation调用实现类里面的方法)
  4. 测试类(Test调用操作类里面的方法)

8.项目树型结构

 9,效果展示

代码实现

1,构建项目树型结构

 

 2,给类和接口添加属性和构造方法

        pojo的封装类

        Admin类

 class Admin
    {
        public Admin()
        {
        }

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

        public int Id { get; set; }

        public string Name { get; set; }

        public string Password { get; set; }

    }

        Users类

class Users
    {
        public int Id { get; set; }
        public string Name { get; set; }

        public string Password { get; set; }

        public string Tel { get; set; }

        public string Address { get; set; }

        public Users(int id, string name, string password, string tel, string address)
        {
            Id = id;
            Name = name;
            Password = password;
            Tel = tel;
            Address = address;
        }

        public Users()
        {
        }
    }

        Product类

class Product
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public int Price { get; set; }

        public int Num { get; set; }

        public string Desc { get; set; }

        public Product(int id, string name, int price, int num, string desc)
        {
            Id = id;
            Name = name;
            Price = price;
            Num = num;
            Desc = desc;
        }

        public Product()
        {
        }


    }

        Orders类

 class Orders
    {
        public int Id { get; set; }

        public int Count { get; set; }

        public int Sum { get; set; }

        public Users Users { get; set; }    // Users类做返回值

        public Product Product { get; set; }    //Product 做返回值

        public Orders(int id, int count, int sum, Users users, Product product)
        {
            Id = id;
            Count = count;
            Sum = sum;
            Users = users;
            Product = product;
        }

        public Orders()
        {
        }
    }

3,给dao接口声明方法

        IAdminDao接口

interface IAdminDao
    {
        //登录
        /*
         * 需要账户和密码两个参数,获取外部输入的信息
         * 管理员账户需要初始化 ,不用注册直接登录
         * 初始化的值:在集合里存放,登录是从集合里读取账号
         * 读取出来说明账号存在,反之
         * 由于这个方法要别人调,需要返回结果判断成功还是失败
         * 所以这个方法需要返回值,登录成功后:会提示欢迎XX登录
         * 这个返回值就是对象
         */
        Admin A_Login(string  name,string password);

        //增删改返回值都是整形的
        //添加商品
        Product InsertProduct(int id, string name, int price, int num, string desc);
        //查看商品
        List<Product> SelectAllProduct();
        //public int SelectProduct(int id, string name, int price, int num, string desc);
        //修改商品
        Product UpdateProduct(int id, string name, int price, int num, string desc);
        //删除商品
        Product DeleteProduct(int id);
        //根据商品编号查看商品(单个)
        Product SelectById(int id);

        //查看用户
        //删除用户
        //查看订单
        //修改订单
    }

 4,在实现类中实现接口

        AdminDaoImpl类

 class AdminDaoImpl : IAdminDao  //ImpI就被认为是业务逻辑的功能
    {
        List<Admin> list = new List<Admin>();   //3,写一个集合接受adminde的值

        public List<Product> productList=new List<Product>();   //定义为公共的方法

        //写一个方法把AdminController的InsertProduct五个字段传进集合里
        public Product InsertProduct(int id, string name, int price,int num,string desc)
        {
            Product p = new Product(id,name,price,num,desc);
            productList.Add(p);

            return p;
        }

       


        public Admin A_Login(string name, string password)    //1,先实现抽象类
        {
            Admin a = null;
            foreach (var admin in list)     //5,循环判断
            {
                if (admin.Name.Equals(name) && admin.Password.Equals(password))     //【判断
                {

                    a = new Admin();
                    a.Name = admin.Name;    //把从集合拿出来的Name赋给a.Name
                    break;      //第一次找到之后退出
                }
            }
            return a;   //2,返回 a
        }

        public void Init()  //4,初始化管理员的方法,不需要返回值,不需要参数
        {
            Admin a1 = new Admin(101, "张三", "123");     //用构造方法初始化更简单
            Admin a2 = new Admin(102, "李四", "456");
            list.Add(a1);       //添加到集合
            list.Add(a2);

        }

        public List<Product> SelectAllProduct()
        {
            return productList;
        }

        //public int SelectProduct(int id, string name, int price, int num, string desc)
        //{
        //    throw new NotImplementedException();
        //}

        public Product SelectById(int id)
        {
            Product p = null;
            foreach (var pro in productList)
            {
                if (pro.Id == id)
                {
                    p = pro;
                    break;
                }
            }
            return p;
        }

        public Product UpdateProduct(int id, string name, int price, int num, string desc)
        {
            Product pro = SelectById(id);
            productList.Remove(pro);

            Product p = new Product(id, name, price, num, desc);
            productList.Add(p);

            return p;

        }

        public Product DeleteProduct(int id)
        {
            Product p2 = SelectById(id);
            productList.Remove(p2);
            return p2;
        }


    }

5,欢迎界面

        AdminOperation类

class AdminOperation
    {
        public  void Welcome()
        {
            Console.WriteLine("*********************************");
            Console.WriteLine("********* 欢迎光临当当网 *********");         
            Console.WriteLine("********************************");
        }
        public void OperationAll()
        {
            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 返回上一级 **********");
        }
        

    }

6,控制器登录操作

AdminController类

class AdminController
    {

        AdminOperation ao = new AdminOperation();   //3,实例界面对象
        IAdminDao adi = new AdminDaoImpl();      //操作类 

        //  1,一个页面一个方法
        public void LoginInput()
        {
            ao.Welcome();           //4,调用方法
            new AdminDaoImpl().Init();

            Console.WriteLine("请输入账号:");    //5,输入账号密码
            string name = Console.ReadLine();
            Console.WriteLine("请输入密码:");
            string password = Console.ReadLine();
            Admin a = adi.A_Login(name, password);
            if (a != null)        //6,判断    
            {
                Console.WriteLine("登陆成功");
                ao.OperationAll();
                OperationInput();
            }
            else
            {
                Console.WriteLine("登录失败");
                LoginInput();   // 7,回调
            }

        }

        public void OperationInput()
        {
            Console.WriteLine("请输入你的选择");
            int a = int.Parse(Console.ReadLine());
            switch (a)
            {
                case 1:
                    InsertProduct();
                    break;
                case 2:
                    SelectProduct();
                    break;
                case 3:
                    SelectByPid();
                    break;
                case 4:
                    DeleteProduct();
                    break;
                case 5:
                    break;
                case 6:
                    break;
                case 7:
                    break;
                case 8:
                    break;
                case 0:
                    break;
                default:        //输错的情况
                    //Console.WriteLine("请输入以上数字,谢谢!");
                    //OperationInput();
                    break;
            }

        }

      

        //添加商品
        int pid = 100;
        public void InsertProduct()
        {
            pid++;
            Console.WriteLine("请输入商品名称");
            string name = Console.ReadLine();

            Console.WriteLine("请输入商品单价");
            int price = int.Parse(Console.ReadLine());

            Console.WriteLine("请输入商品库存");
            int num = int.Parse(Console.ReadLine());

            Console.WriteLine("请输入商品描述");
            string desc = Console.ReadLine();

            //上面五个字段都要作为参数传进集合AdminDaoImpl中

            Product p = adi.InsertProduct(pid, name, price, num, desc);
            if (p!=null)
            {
                Console.WriteLine("添加商品成功");

            }
            else
            {
                Console.WriteLine("添加商品失败");
            }
            OperationInput();
        }


        //查看商品
        public void SelectProduct()
        {
            List<Product> list = adi.SelectAllProduct();
            if (list.Count > 0)
            {
                Console.WriteLine("商品编号\t商品名称\t商品单价\t商品库存\t商品描述");
                foreach (var p in list)
                {
                    //p.id后的第一个\t要用双引号
                    Console.WriteLine(p.Id + "\t\t" + p.Name + "\t\t" + p.Price + "\t\t" + p.Num + "\t\t" + p.Desc);
                }
            }
            else
            {
                Console.WriteLine("库存在没有该商品了");
            }
            OperationInput();

        }


        //查看商品编号
        int pidd = 0;
        public void SelectByPid()
        {
            Console.WriteLine("请输入要修改的产品编号:");
            pidd = int.Parse(Console.ReadLine());

            Product p = adi.SelectById(pidd);
            if (p != null)
            {
                Console.WriteLine("商品编号\t商品名称\t商品单价\t商品库存\t商品描述");
                Console.WriteLine(p.Id + "\t\t" + p.Name + "\t\t" + p.Price + "\t\t" + p.Num + "\t\t" + p.Desc);
                UpdateProduct();

            }
            else
            {
                Console.WriteLine("无此商品");
            }
        }

        //修改商品
        public void UpdateProduct()
        {
            Console.WriteLine("是否要修改商品 ?: (y/n)");
            String a = Console.ReadLine();
            if (a.Equals("Y") || a.Equals("y"))
            {
                Console.WriteLine("请输入商品名称");
                string name = Console.ReadLine();

                Console.WriteLine("请输入商品单价");
                int price = int.Parse(Console.ReadLine());

                Console.WriteLine("请输入商品库存");
                int num = int.Parse(Console.ReadLine());

                Console.WriteLine("请输入商品描述");
                string desc = Console.ReadLine();

                Product p = adi.UpdateProduct(pidd, name,price, num, desc);
                if (p != null)
                {
                    Console.WriteLine("修改商品成功");

                }
                else
                {
                    Console.WriteLine("修改商品失败");
                }
               
            }
            OperationInput();

        }
        
        //删除商品
        private void DeleteProduct()
        {

            Console.WriteLine("请输入要删除的商品编号:");
            int id = int.Parse(Console.ReadLine());
            Console.WriteLine("是否删除该商品?:(y/n)");
            String b = Console.ReadLine();
            if (b.Equals("Y") || b.Equals("y"))
            {
                
                Product p = adi.DeleteProduct(id);
                if (p != null)
                {
                    Console.WriteLine("删除商品成功");

                }
                else
                {
                    Console.WriteLine("删除商品失败");
                }

            }
            OperationInput();

        }




        //static void Main(string[] args)
        //{
        //    AdminController ac = new AdminController();     //2new出对象调用登录类
        //    ac.LoginInput();

        //}
    }

用户操作:

1,声明接口方法

IUsersDao接口

 interface IUsersDao
    {
        //注册
        Users Register(int id,string name, string password);
        //登录
        Users Login(string name, string password);

        //查看商品
        //购买商品
        Orders InsertOrder(int id, int count, int sum, Users users, Product product);
        //根据用户编号查看订单
        Orders SelectByOid(int id);
        //修改订单
        //删除订单

    }

2,实现用户接口方法

UsersDaoImpl 实现类继承 IUsersDao 接口

 class UsersDaoImpl:IUsersDao
    {
        List<Users> usersList = new List<Users>();
        public List<Product> productList = new List<Product>();
        List<Orders> ordersList = new List<Orders>();

        public Users Login(string name, string password)
        {
            Users u = null;
            foreach (var users in usersList)
            { 
                if (users.Name.Equals(name) && users.Password.Equals(password))
                {
                    u = new Users();
                    u.Name = users.Name;
                    break;
                }
            }
            return u;
        }

        public Users Register(int id, string name, string password)
        {
            Users u = new Users(id, name, password);
            usersList.Add(u);
            return u;
        }

        public void InitProduct()   //初始化商品
        {
            Product p1 = new Product(101, "苹果", 2, 100, "富士苹果");
            Product p2 = new Product(102, "梨", 1, 200, "砀山梨");
            productList.Add(p1);    
            productList.Add(p2);

        }

        public Product SelectById(int id)
        {
            Product p = null;
            foreach (var pro in productList)
            {
                if (pro.Id == id)
                {
                    p = pro;
                    break;
                }
            }
            return p;
        }

        public Orders InsertOrder(int id, int count, int sum, Users u, Product p)
        {
            Orders orders = new Orders(id,count,sum,u,p);
            ordersList.Add(orders);
            return orders;
        }

        public Orders SelectByOid(int id)
        {
            throw new NotImplementedException();
        }



    }

3,用户操作界面

UsersOperation类

 class UsersOperation
    {
        public void Welcome()
        {
            Console.WriteLine("*********************************");
            Console.WriteLine("********* 欢迎光临当当网 *********");
            Console.WriteLine("*********** 1 注册 **************");
            Console.WriteLine("*********** 2 登录 **************");
            Console.WriteLine("*********** 0 退出 **************");
            Console.WriteLine("********************************");
        }

        public void OperationAll()
        {
            Console.WriteLine("********* 1 查看商品 **********");
            Console.WriteLine("********* 2 查看订单 **********");
            Console.WriteLine("********* 3 修改订单 **********");
            Console.WriteLine("********* 4 删除订单 **********");
            Console.WriteLine("********* 0 返回上一级 **********");


        }
    }

4,用户控制器

UsersController类

 class UsersController
    {
        UsersOperation uo = new UsersOperation();
        IUsersDao udi = new UsersDaoImpl();
        UsersDaoImpl ud = new UsersDaoImpl();
        Users u = null; //方便用户购物使用



        public void UsersInput()     //老师教的
        {
            uo.Welcome();
            Console.WriteLine("请输入你的选择");
            string a = Console.ReadLine();
            if (a.Equals("1"))
            {
                Register();
            }
            else if (a.Equals("2"))
            {
                Login();
            }
            else if (a.Equals("0"))
            {
                Environment.Exit(0);
            }
            else
            {
                Console.WriteLine("请输入正确的数字");
            }

        }

        int uid = 1000;
        private void Register()
        {
            uid++;
            Console.WriteLine("请输入注册的账号名");
            string name = Console.ReadLine();
            Console.WriteLine("请输入注册的密码");
            string password = Console.ReadLine();
            Users u = udi.Register(uid, name, password);

            if (u != null)
            {
                Console.WriteLine("注册成功");

            }
            else
            {
                Console.WriteLine("注册失败");
            }
            UsersInput();
        }

        private void Login()
        {
            Console.WriteLine("请输入账号:");    //5,输入账号密码
            string name = Console.ReadLine();
            Console.WriteLine("请输入密码:");
            string password = Console.ReadLine();
            u = udi.Login(name, password);
            if (u != null)        //6,判断    
            {
                Console.WriteLine("登陆成功");
                uo.OperationAll();
                ShoppingInsert();
            }
            else
            {
                Console.WriteLine("登录失败");
            }

        }

        public void ShoppingInsert()
        {
            Console.WriteLine("请输入你的选择");
            string a = Console.ReadLine();
            switch (a)
            {
                case "0":
                    UsersInput();
                    break;
                case "1":
                    SelectProduct();
                    break;
                case "2":

                    break;
                case "3":
                    break;
                case "4":
                    break;
                default:
                    Console.WriteLine("请输入正确的数字");
                    break;
            }
        }

        public void SelectProduct()
        {
            //uo.OperationAll();

            ud.InitProduct();
            List<Product> list = ud.productList;

            Console.WriteLine("商品编号\t商品名称\t商品单价\t商品库存\t商品描述");
            foreach (var p in list)
            {
                //p.id后的第一个\t要用双引号
                Console.WriteLine(p.Id + "\t\t" + p.Name + "\t\t" + p.Price + "\t\t" + p.Num + "\t\t" + p.Desc);
            }

            Console.WriteLine("是否要购买商品 ?: (y/n)");
            String a = Console.ReadLine();
            if (a.Equals("Y") || a.Equals("y"))
            {
                Shopping();
            }
            else
            {
                ShoppingInsert();
            }

        }

        int oid = 10000;
        public void Shopping()
        {
            oid++;
            Console.WriteLine("请输入购买的产品编号");
            int pid = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入购买的产品数量");
            int count = int.Parse(Console.ReadLine());

            Product p = ud.SelectById(pid);
            int sum = p.Price * count;

            Orders order = udi.InsertOrder(oid, count, sum, u, p);
            if (order != null)
            {
                Console.WriteLine("购物成功!");
            }
            else
            {
                Console.WriteLine("购物失败!");
            }
        }

        static void Main(string[] args)
        {
            //new出对象调用登录类
            new UsersController().UsersInput();

        }
    }

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星梦∞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值