概述
前期准备
项目需要写的类
类: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
以上红字代表用类作为返回值
-
用户
- 注册
- 登录
- 查看商品
- 购买商品
- 查看订单
- 修改订单
- 删除订单
-
管理员
- 登录
- 对商品增删查改
- 对用户查删
- 对订单查删
-
对象
- 用户 管理员 商品 订单
-
字段/属性
- 用户(Users):id name password tel address
- 管理员(Admin):id name password
- 商品(Product):id name price num(库存量)
- 订单(Orders):id 用户(Users) 商品(Product) count(商品总数量) sum(总价钱)
-
类
- Users
- Admin
- Product
- Orders
- UserOperation(用户操作类) AdminOperation(管理员操作类)
- Test
-
面向接口编程
- 管理员接口:登录
- 用户接口:注册、登录
-
MVC设计模式
- M:model 模型 (业务逻辑操作)
- V:view 视图 (界面)
- C:controller 控制器 (调用模型和视图)
controller:测试类 Test
view:操作类 XXXOperation
model:
dao:接口IAdmin IUsers
Impl: 接口实现类 Adminimpl UsersImpl
pojo:封装类 Users Admin Product Orders
操作思路:
- 接口(IAdminDao设计方法功能)
- 实现类(AdminImpl实现接口里面的所有方法)
- 操作类(AdminOperation调用实现类里面的方法)
- 测试类(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 + "tt" + p.Name + "tt" + p.Price + "tt" + p.Num + "tt" + 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 + "tt" + p.Name + "tt" + p.Price + "tt" + p.Num + "tt" + 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 + "tt" + p.Name + "tt" + p.Price + "tt" + p.Num + "tt" + 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();
}
}
最后
以上就是务实曲奇为你收集整理的简易当当网项目前期准备代码实现的全部内容,希望文章能够帮你解决简易当当网项目前期准备代码实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复