商超项目.docx
- 文档编号:27076616
- 上传时间:2023-06-26
- 格式:DOCX
- 页数:28
- 大小:31.52KB
商超项目.docx
《商超项目.docx》由会员分享,可在线阅读,更多相关《商超项目.docx(28页珍藏版)》请在冰豆网上搜索。
商超项目
No6商超项目
1确认需求
需求文档:
描述客户对项目的要求。
2需求分析
需求分析报告:
明确给客户这个项目实现功能有哪些。
UML:
统一建模语言,用例图
整体的用例图:
管理员用例图:
用户用例图:
1用户可以查看商品(只显示上架商品)
2增加商品到购物车(增加新商品功能)
3购物车操作(删除商品功能)
4结账(清空购物车)
5查询商品(扩展排序)
3程序结构
就一个类。
将这个类中所有的方法进行分类,
view:
视图:
负责数据的显示和信息的采集
biz:
业务:
负责业务处理,逻辑判断,条件(保存新商品时,商品编号不能重复)
4数据模型
管理员
//3个管理员,每个管理员有两个属性:
账号和密码
publicstaticString[][]managers=newString[3][2];
//3个管理员是managers[0],managers[1],managers[2]
//第一个管理员的账号:
managers[0][0],密码managers[0][1]
商品
//10个商品,每个商品有属性:
1编号,2名称,3价格4库存数量5上下架状态
publicstaticString[][]goods=newString[10][5];
4.1数据模型的初始化init()
publicstaticvoidinit(){
//手动创建二个管理员
managers[0][0]="admin";//第一个管理员的账号
managers[0][1]="123456";//第一个管理员的密码
managers[1][0]="no6";//第二个管理员的账号
managers[1][1]="123456";//第二个管理员的密码
//第一个商品
goods[0][0]="g001";
goods[0][1]="扩音器S-318";
goods[0][2]="50";
goods[0][3]="100";
goods[0][4]="true";
//第二个商品
goods[1][0]="g002";
goods[1][1]="小米516G";
goods[1][2]="2499";
goods[1][3]="500";
goods[1][4]="true";
//第三个商品
goods[2][0]="g003";
goods[2][1]="脉动青柠口味";
goods[2][2]="4";
goods[2][3]="1000";
goods[2][4]="true";
}
publicstaticvoidmain(String[]args){
init();
mainView();
}
5编写程序的主界面mainView()
//主界面
publicstaticvoidmainView(){
booleanbool=true;
do{
System.out.println("0、退出");
System.out.println("1、购物");
System.out.println("2、登录");
System.out.print("请选择:
");
intchoose=scanner.nextInt();
switch(choose){
case0:
bool=false;
break;
case1:
System.out.println("进入购物界面");
break;
case2:
loginView();
break;
default:
System.out.println("选择有错误!
请重新选择!
");
}
}while(bool);
}
5.1Scanner问题处理
当每次使用nextInt()时,接收一个整数,但是我们在输入时输入的是:
一个整数+回车符。
使用nextInt时,只能接收一个整数。
所有在缓冲区中还有一个回车符没有接收。
下次nextLine()时,就会直接把回车接收走,回车符当成输入的结束符。
所以nextLine()没有接收到任意字符。
处理方案:
在每次的nextInt()后面都带一个nextLine(),清空缓冲的回车符。
System.out.print("请选择:
");
intchoose=scanner.nextInt();
scanner.nextLine();
6编写登录视图loginView()
//登录视图
publicstaticvoidloginView(){
intcount=0;//计数器
do{
System.out.println("欢迎进入登录视图!
");
String[]manager=newString[2];
System.out.println("请输入账号:
");
manager[0]=scanner.nextLine();
System.out.println("请输入密码:
");
manager[1]=scanner.nextLine();
//调用业务方法判断当前的管理员是否可以登录
if(isLogin(manager)){
count=0;
managerView();
break;
}else{
count++;
System.out.println("登录失败!
请重新输入!
");
}
}while(count<3);
}
7编写登录业务isLogin()
输入的管理员的账号和密码与数据模型中的账号和密码进行比较。
/**
*验证是否验的方法
*
*@parammanager
*管理员对象
*@return登录成功返回true
*/
publicstaticbooleanisLogin(String[]manager){
for(String[]man:
managers){
if(man[0]!
=null){
if(man[0].equals(manager[0])){
if(man[1].equals(manager[1])){
returntrue;
}
}
}else{
returnfalse;
}
}
returnfalse;
}
8编写后台管理视图
publicstaticvoidmanagerView(){
System.out.println("欢迎进入管理视图");
booleanbool=true;
do{
System.out.println("0、退出");
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.print("请选择:
");
intchoose=scanner.nextInt();
scanner.nextLine();
switch(choose){
case0:
bool=false;break;
case1:
showGoodsView();break;
case2:
addGoodsView();break;
case3:
updateGoodsView();break;
case4:
updateNumView();break;
case5:
deleteGoodsView();break;
case6:
updateStateView();break;
default:
System.out.println("选择错误!
请重新选择!
");break;
}
}while(bool);
}
9编写查询所有商品视图
publicstaticvoidshowGoodsView(){
System.out.println("编号\t名称\t\t价格\t数量\t状态");
intgoodsCount=getGoodsCount();
for(inti=0;i System.out.print(goods[i][0]+"\t"); System.out.print(goods[i][1]+"\t"); System.out.print(goods[i][2]+"\t"); System.out.print(goods[i][3]+"\t"); System.out.println("true".equals(goods[i][4])? "上架": "下架"); } System.out.println("输入回车继续: "); scanner.nextLine(); } 10编写一个查询当前有多少商品的方法 /** *查询当前有多少商品的方法 *@return商品的个数 */ publicstaticintgetGoodsCount(){ for(inti=0;i if(goods[i][0]==null){ returni; } } returngoods.length; } 11实现增加新商品功能 11.1编写增加新商品视图addGoodsView publicstaticvoidaddGoodsView(){ booleanbool=true; do{ intgoodsCount=getGoodsCount(); if(goodsCount==goods.length){ System.out.println("没有位置! 不能增加新商品"); return; }else{ String[]g=newString[5]; System.out.println("请输入编号: "); g[0]=scanner.nextLine(); System.out.println("请输入名称: "); g[1]=scanner.nextLine(); System.out.println("请输入价格: "); g[2]=scanner.nextFloat()+""; scanner.nextLine(); System.out.println("请输入数量: "); g[3]=scanner.nextInt()+""; scanner.nextLine(); System.out.println("请输入状态(1上架,2下架): "); intchoose=scanner.nextInt(); scanner.nextLine(); g[4]=(choose==1? "true": false+""); if(addGoods(g)){ System.out.println("保存成功! "); showGoodsView(); }else{ System.out.println("保存失败! 请重新! "); } System.out.println("是否继续(y/n)? "); StringisWhile=scanner.nextLine(); if("y".equalsIgnoreCase(isWhile)){ bool=true; }else{ bool=false; } } }while(bool); } 11.2编写保存新商品的业务方法addGoods(String[]g) /** *保存商品 * *@paramg *商品 *@return返回true表示保存成功 */ publicstaticbooleanaddGoods(String[]g){ if(findById(g[0])! =null){ System.out.println("商品编号已经存在! 保存失败! "); returnfalse; }else{ intgoodsCount=getGoodsCount(); goods[goodsCount]=g; returntrue; } } 11.3编写按编号查询商品的业务方法findById(Stringid) /** *按编号查询商品 *@paramid商品编号(g001,g002) *@return查询到的商品对象,如果没找到返回null */ publicstaticString[]findById(Stringid){ intcount=getGoodsCount(); for(inti=0;i if(id.equals(goods[i][0])){ returngoods[i]; } } returnnull; } 12实现修改商品功能 12.1编写修改商品的视图 publicstaticvoidupdateGoodsView(){ //修改和删除都先基于查询。 修改以id关键字。 booleanbool=true; do{ showGoodsView(); System.out.println("请输入修改的商品编号: "); Stringid=scanner.nextLine(); //验证商品编号 String[]g=findById(id); if(g==null){ System.out.println("你输入的编号有误,没有找到商品! "); }else{ System.out.println("请选择你要修改的商品内容: "); System.out.println("1、商品名称"); System.out.println("2、商品价格"); intchoose=scanner.nextInt(); scanner.nextLine(); switch(choose){ case1: System.out.println("输入新的商品名称: "); g[1]=scanner.nextLine(); showGoodsView(); break; case2: System.out.println("输入新的商品价格"); g[2]=scanner.nextFloat()+""; scanner.nextLine(); showGoodsView(); break; default: System.out.println("选择有错误! "); break; } } System.out.println("是否继续(y/n)"); StringisWhile=scanner.nextLine(); if("n".equalsIgnoreCase(isWhile)){ bool=false; } }while(bool); } 13实现删除功能 删除也是要以查询为基础,以id关键字。 13.1编写删除的视图 publicstaticvoiddeleteGoodsView(){ do{ showGoodsView(); System.out.println("请输入删除的商品编号: "); Stringid=scanner.nextLine(); if(deleteById(id)){ System.out.println("删除成功! "); showGoodsView(); }else{ System.out.println("删除失败! "); } }while(isWhile()); } 13.2编写删除的业务 /** *删除商品业务方法 * *@paramid *商品对象的编号 *@return如果删除成功返回true */ publicstaticbooleandeleteById(Stringid){ //先找到id表示商品的索引. intindex=getIndexFindById(id); if(index==-1){ System.out.println("编号不存在! 删除失败"); returnfalse; }else{ intcount=getGoodsCount(); for(inti=index;i goods[i][0]=goods[i+1][0];//使用后一个向前移一位。 goods[i][1]=goods[i+1][1];//使用后一个向前移一位。 goods[i][2]=goods[i+1][2];//使用后一个向前移一位。 goods[i][3]=goods[i+1][3];//使用后一个向前移一位。 goods[i][4]=goods[i+1][4];//使用后一个向前移一位。 } //清空最后一个 goods[count-1][0]=null; returntrue; } } 13.2编写按商品编号查找位置 publicstaticintgetIndexFindById(Stringid){ intcount=getGoodsCount(); for(inti=0;i if(id.equals(goods[i][0])){ returni; } } return-1; } 14实现商品入库功能 采集数据: 商品编号,入库数量 实现步骤: 先按商品编号找到商品,再修改数量 扩展用例: 验证商品编号是否存在 14.1实现商品入库的视图层 只负责数据采集和数据显示 /** *商品入库的视图 */ publicstaticvoidupdateNumView(){ do{ System.out.println("请输入商品编号: "); Stringid=scanner.nextLine(); System.out.println("请输入商品数量: "); intnum=scanner.nextInt(); scanner.nextLine(); //调用业务 if(updateNum(id,num)){ System.out.println("入库成功! "); showGoodsView(); }else{ System.out.println("入库失败! "); } }while(isWhile()); } 14.2实现商品入库的业务层 业务处理 实现步骤: 先按商品编号找到商品,再修改数量 扩展用例: 验证商品编号是否存在 /** *商品入库的业务方法 * *@paramid *商品编号 *@paramnum *商品数量 *@return成功返回true */ publicstaticbooleanupdateNum(Stringid,intnum){ String[]g=findById(id); if(g==null){ System.out.println("商品编号不存在! "); returnfalse; }else{ inttemp=Integer.parseInt(g[3])+num; g[3]=temp+""; returntrue; } } 将字符串类型转换成int: intInteger.parseInt(String); 将字符串类型转换成float: floatFloat.parseFloat(String); 15实现设置警戒数量 //设置警戒数量视图 publicstaticvoidsetErrorNumView(){ System.out.println("请输入警戒数量: "); intnum=scanner.nextInt(); scanner.nextLine(); errornum=num; showGoodsView(); } 16编写用户操作主界面 用户操作主界面主要包括4个模块: 1查询商品,2购买商品,3购物车操作,4结账 //用户操作主界面 publicstaticvoiduserMainView()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目