该当当网作业标志着一个多月的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