提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
作为一个刚开始学习Java的小白,总要开始做人生中第一个小项目的,我亦如此
提示:以下是本篇文章正文内容,下面案例可供参考
一、项目介绍
1.项目开发主要过程:
- 需求分析. 确定项目要做什么, 分析有哪些角色, 分析每个角色有哪些功能,这是功能性需求; 还有性能要求; 在最终要给客户提交一个需求分析报告, 一般情况下还会提交一个项目原型
- 设计, 确定如何做, 简单点说就是项目需要有哪些模块, 每个模块在完成功能时,需要定义哪些类, 每个类需要有哪些方法, 模块与模块之间如何进行数据的交换, 最终也会形成一个设计文档
- 实现, 根据设计文档使用Java语言描述出来
- 测试
- 实施与维护
2. 需求分析:
1.1.1 程序主界面运行程序,显示以下界面
(1) 浏览商品用户选择1 表示浏览商品, 把所有的商品给显示出来
(2) 注册用户选择2, 表示注册
(3) 用户登录用户选择3, 表示登录
(4)用户选择4, 退出程序
1.1.2 产品管理操作界面登录成功后,显示操作界面
用户选择(1)显示所有商品信息
(2) 添加商品
(3) 删除商品
(4) 修改商品
(5) 查找商品
二、代码如下
创建视图类
代码如下(示例):
import java.util.List;
import java.util.Scanner;
//定义视图类
class ViewManager{
//定义用户管理对象
private UserManager userManager = new UserManager();
//定义产品管理对象
private ProductManager productManager = new ProductManager();
private Scanner sc = new Scanner(System.in);
//1)定义方法显示主界面
public void showMainView(){
while (true) {
System.out.println("---------------主界面------------------------");
System.out.println("1 注册 2 登录 3 浏览产品 4 退出");
System.out.println("请输入你的选择");
int choice = sc.nextInt();
if ( choice == 1){
showRegisterView(); //显示注册界面
}else if (choice == 2){
showLoginView(); //显示登录界面
}else if( choice == 3){
showAllProductsView(); //显示所有产品界面
}else {
System.exit(0); //退出JVM, 代表0表示正常退出
}
}
}
//2)定义方法显示注册界面
public void showRegisterView(){
System.out.println("===============用户注册==============");
System.out.println("请输入用户名");
String name = sc.next();
//判断用户名是否存在,
while ( userManager.containsName(name) ){
System.out.println("该用户名已存在,请重新输入");
name = sc.next();
}
System.out.println("请输入密码");
String pwd = sc.next();
//注册
if ( userManager.addUser(name, pwd) ){
System.out.println("注册 成功");
}else {
System.out.println("注册失败");
}
}
//3)定义方法显示登录界面
public void showLoginView(){
String flag = "y"; //重新登录标志
System.out.println("================登录=================");
while ("y".equalsIgnoreCase(flag)) {
System.out.println("请输入用户名");
String name = sc.next();
System.out.println("请输入密码");
String pwd = sc.next();
//判断是否合法
if( userManager.validUser(name, pwd)){
System.out.println("登录成功");
break;
}else {
System.out.println("用户名或密码不正确,是否重新登录(Y/N)?");
flag = sc.next();
if ("n".equalsIgnoreCase(flag)){
return;
}
}
}
showProductManagerView(); //登录成功转到产品管理界面
}
private void showProductManagerView() {
while (true) {
System.out.println("==================产品管理=====================");
System.out.println("1 浏览产品 ");
System.out.println("2 添加产品 ");
System.out.println("3 删除产品 ");
System.out.println("4 修改产品 ");
System.out.println("5 查找产品 ");
System.out.println("6 退出");
System.out.println("请输入你的操作");
int choice = sc.nextInt();
switch (choice){
case 1:
showAllProductsView();
break;
case 2:
showAddProductView();
break;
case 3:
showdeleteProductView();
break;
case 4:
showModifyProdutView();
break;
case 5:
showSearchProductView();
break;
default:
return;
}
}
}
private void showSearchProductView() {
System.out.println("*************查找产品******************");
System.out.println("请输入产品名称包含的字符");
String name = sc.next();
//返回包含指定名称的产品
List<Product> list = productManager.getProductsContainsName(name);
showProducts(list);
}
private void showModifyProdutView() {
System.out.println("*************修改产品******************");
System.out.println("请输入要删除的产品编号");
String pid = sc.next();
//根据产品编号获得产品
Product p = productManager.getProductById(pid);
if ( p == null ){
System.out.println("没有该编号的产品,无需修改");
}else {
System.out.println("该产品为:" + p);
System.out.println("请输入新的产品名称");
p.setName( sc.next());
System.out.println("请输入新的产品价格");
p.setPrice( sc.nextDouble());
System.out.println("请输入新的产品销量");
p.setSales( sc.nextInt());
}
}
private void showdeleteProductView() {
System.out.println("*************删除产品******************");
System.out.println("请输入要删除的产品编号");
String pid = sc.next();
//根据产品编号获得产品
Product p = productManager.getProductById(pid);
if ( p == null ){
System.out.println("没有该编号的产品,无需删除");
}else {
System.out.println("你要删除的产品:" + p + ",确定要删除吗?(y/n)");
String flag = sc.next();
if("y".equalsIgnoreCase(flag)){
productManager.deleteProdut( p );
}
}
}
private void showAddProductView() {
System.out.println("*************添加产品******************");
Product p = new Product();
System.out.println("请输入产品编号");
p.setPid( sc.next() );
System.out.println("请输入产品名称");
p.setName( sc.next());
System.out.println("请输入产品价格");
p.setPrice( sc.nextDouble());
System.out.println("请输入产品销量");
p.setSales( sc.nextInt());
//添加产品
productManager.add(p);
}
//4)定义方法显示所有产品界面
public void showAllProductsView(){
//获得所有的产品
List<Product> productList = productManager.getAllProducts();
showProducts(productList);
while (true) {
System.out.println("请选择排序方式:1 名称升序 2 价格升序 3销量降序 4 退出");
int choice =sc.nextInt();
if( choice == 1){
productManager.sortByName();
//重新显示
showProducts(productList);
}else if ( choice == 2){
productManager.sortByPrice();
//重新显示
showProducts(productList);
}else if (choice == 3){
productManager.sortBySalesDesc();
//重新显示
showProducts(productList);
}else {
break;
}
}
}
private void showProducts(List<Product> productList) {
System.out.println("-------------------商品信息----------------------");
System.out.println("编号 名称 价格 销量");
for (Product product : productList) {
System.out.println( product.getPid() + "\t" + product.getName() + "\t" + product.getPrice() + "\t" + product.getSales());
}
}
}
**
创建用户管理类
**
import java.util.HashMap;
import java.util.Map;
//1)定义一个用户管理类,用于处理业务逻辑
class UserManager{
//使用Map保存《用户名,密码》
private Map<String, String> map = new HashMap<>();
//在构造方法中添加几条测试数据
public UserManager(){
map.put("lisi", "123");
map.put("wangwu", "456");
}
//提供方法判断是否包含指定的用户名
public boolean containsName(String name){
return map.containsKey(name); //判断map的键是否包含它
}
//添加用户名和密码
public boolean addUser(String name, String pwd){
return map.put(name, pwd) == null;
}
//查看用户是否合法
public boolean validUser(String name, String pwd){
if ( pwd == null ) {
return false;
}
return pwd.equals(map.get(name));
// 密码。equals( map中name用户保存的密码 )
}
}
/**
定义产品类
**
*/
import java.util.Objects;
public class Product {
private String pid;
private String name;
private int sales; //销量
private double price; //价格
public Product() {
}
public Product(String pid, String name, int sales, double price) {
this.pid = pid;
this.name = name;
this.sales = sales;
this.price = price;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Product product = (Product) o;
return Objects.equals(pid, product.pid) &&
Objects.equals(name, product.name);
}
@Override
public int hashCode() {
return Objects.hash(pid, name);
}
@Override
public String toString() {
return "Product{" +
"pid='" + pid + '\'' +
", name='" + name + '\'' +
", sales=" + sales +
", price=" + price +
'}';
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSales() {
return sales;
}
public void setSales(int sales) {
this.sales = sales;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
/*
定义产品管理类
*/
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
public class ProductManager {
//产品可以保存在List集合中
private List<Product> list = new ArrayList<>();
//在构造方法中向list集合添加一些测试数据
public ProductManager(){
list.add(new Product("1001", "华为P40", 80000, 5800));
list.add(new Product("1002", "Mate40", 9000, 7800));
list.add(new Product("1003", "pingguo", 180000, 2.5));
list.add(new Product("1004", "xiaomi", 580000, 8.9));
list.add(new Product("1005", "dami", 20000, 3.8));
}
//定义方法返回所有的商品
public List<Product> getAllProducts(){
return list;
}
//根据姓名升序
public void sortByName() {
list.sort(new Comparator<Product>() {
@Override
public int compare(Product o1, Product o2) {
return o1.getName().compareTo(o2.getName());
}
});
}
public void sortByPrice() {
list.sort(new Comparator<Product>() {
@Override
public int compare(Product o1, Product o2) {
return Double.compare(o1.getPrice(), o2.getPrice());
}
});
}
public void sortBySalesDesc() {
list.sort(new Comparator<Product>() {
@Override
public int compare(Product o1, Product o2) {
return o2.getSales() - o1.getSales(); }
});
}
//添加产品
public void add(Product p) {
list.add(p);
}
//定义方法根据产品编号获得产品
public Product getProductById(String pid) {
//遍历集合中的产品 ,如果有某个产品的编号与参数编号一致 就返回该产品
for (Product product : list) {
if (product.getPid().equals(pid)){
return product;
}
}
return null;
}
//定义方法删除产品
public void deleteProdut(Product p) {
/* for (Iterator<Product> iterator = list.iterator(); iterator.hasNext(); ) {
Product next = iterator.next();
if ( next.equals(p)){
iterator.remove();
}
}*/
list.remove(p);
}
//定义方法,返回包含指定名称的产品
public List<Product> getProductsContainsName(String name) {
List<Product> result = new ArrayList<>();
//遍历lsit集合的每个 产品 ,如果产品名称包含name就添加到result集合中
for (Product product : list) {
if ( product.getName().contains( name )){
result.add(product);
}
}
return result;
}
}
//
**
创建测试类
**
public class Test {
public static void main(String[] args) {
ViewManager viewManager = new ViewManager();
viewManager.showMainView();
}
}