超市1.3代码
1.Order类
public class Order {
double totalMoney;
//价格
User user;
//用户
Product product;
//产品
int sales;
//销量
}
2. Product类
public class Product {
int price ;
//价格
String name;
//名称
int serNum;
//序号
int kuc;
//库存
int cost;
//成本
}
3. User类
public class User {
String name;
//存放用户名
String pwd;
//存放密码
int type;
//用户1 或者管理员 2
int vip;
//0不是,1是
double money;
//用户余额
}
4. shopping类
import java.util.Scanner;
public class Shoping {
User USER;
Product [] products = new Product[10];
User [] users = new User[10];
Order [] orders=new Order[10];
Scanner scanner = new Scanner(System.in);
Order [] orders1 = new Order[10];
//boolean falg =true;
/**
* 进入主页面
*/
/**
* 初始页面,可以进行选择登录或者注册
*/
public void sp(){
System.out.println("***欢迎来到超市***");
System.out.println("输入1 代表登录,输入2 代表注册 输入其他代表退出");
int n = scanner.nextInt();
switch(n){
case 1:{
//用户登录
userLogIn();
if(USER.type==1){
//用户界面
shopUser();
}else {
//管理员界面
admPage();
sp();
}
break;
}
case 2:{
//用户注册
register();
sp();
}
default:{
System.out.println("退出超市");
}
}
}
/**
* 注册页面
*/
/**
* 分为管理员注册和用户注册。
* 输入账号密码后会判断账号名是否重复,重复会让重新注册
* 不重复会让再输一次密码,然后密码都相同会注册成功
* 在注册时根据用户选择直接分为管理员和用户,用标志位type判断
*/
public void register(){
User user =new User();
System.out.println("****欢迎来到注册页面****");
System.out.println("请选择你是管理员注册还是用户注册");
System.out.println("输入1代表用户注册,输入2代表管理员注册");
user.type = scanner.nextInt();
//判断是用户还是管理员
System.out.println("请输入账户名称");
user.name = scanner.next();
System.out.println("请输入账户密码");
user.pwd = scanner.next();
boolean flag =true;
boolean choose =true;
//判断用户名没有被使用过
for(int j=0;j<=users.length-1;j++){
if(users[j]!=null&&users[j].name.equals(user.name)){
choose =false;
System.out.println("此用户名已被注册,请重新注册:");
register();
}
}
//用户名没有被注册时执行
if(choose){
System.out.println("请再次输入密码保证密码不是误输");
//验证密码正确
String pwd =scanner.next();
if(pwd.equals(user.pwd)){
for(int i=0;i<=users.length-1;i++){
if(users[i]==null){
users[i]=user;
// USER=users[i];
flag =false;
System.out.println("用户注册成功!");
break;
}
}
}else{
System.out.println("两次密码不一致,请重新注册");
register();
}
if(flag){
System.out.println("用户已注册满,无法添加");
}
}
}
/**
* 登录界面
*/
/**
* 管理员和用户统一一个登录界面,判断密码正确然后成功登录
*/
public void userLogIn(){
System.out.println("请输入用户账号");
String name = scanner.next();
System.out.println("请输入用户密码");
String pwd = scanner.next();
//遍历
boolean falg =true;
for(int i =0;i<=users.length-1;i++){
if(users[i]!=null){
//判断用户账户密码是否正确
if(name.equals(users[i].name)&&pwd.equals(users[i].pwd)){
System.out.println("登录成功!");
USER=users[i];
falg =false;
break;
}
}
}
if(falg){
System.out.println("用户名或者密码错误!");
USER = null;//?
}
}
/**
* 用户界面
*/
/**
* 用户登录后,进入用户界面。然后通过选择每个选项调用方法
*/
public void shopUser(){
System.out.println("欢迎进入超市页面,我们有以下功能");
System.out.println("1.购物 2.查询 3.充值 4.查看个人信息 5.vip办理 6.热销 7.查看账单 8.更改密码 9.退出");
int a = scanner.nextInt();
switch(a){
case 1:{
//购物
userBuy();
shopUser();
break;
}
case 2:{
//查询
selectProduct();
shopUser();
break;
}
case 3:{
//充值页面
userRecharg();
shopUser();
break;
}
case 4:{
//System.out.println("请查看个人信息");
userInfor();
shopUser();
break;
}
case 5:{
//System.out.println("vip办理");
userVip();
shopUser();
break;
}
case 6:{
//System.out.println("热销排行榜");
bestProduct();
shopUser();
break;
}
case 7:{
//System.out.println("查看账单");
bill();
shopUser();
break;
}
case 8:{
//System.out.println("更改密码");
changePwd();
shopUser();
break;
}
default:{
System.out.println("返回登录界面");
sp();
break;
}
}
}
/**
* 管理员页面
*/
/**
* 管理员登录后,进入管理员界面。然后通过选择每个选项调用方法
*/
public void admPage(){
// Product product = new Product();
System.out.println("欢迎进入管理员界面请选择以下操作");
System.out.println("1.增加商品 2.查询商品 3.修改商品 4.更改密码 5.查看利润 6.删除产品 7.退出");
int choose = scanner.nextInt();
switch (choose){
case 1:{
//增加商品
addProduct();
//
admPage();
break;
}
case 2:{
//查询产品目录
selectProduct();
//
admPage();
break;
}
case 3:{
//修改产品信息
//selectProduct();
revise();
admPage();
//
break;
}
case 4:{
//更改密码
changePwd();
admPage();
break;
}
case 5:{
//查看订单利润
//selectProduct();
profit();
admPage();
//
break;
}
case 6:{
//删除产品
//selectProduct();
delete();
admPage();
//
break;
}
default:{
System.out.println("退出操作");
break;
}
}
}
/**
* 添加产品页面
*/
/**
* 管理员界面功能
* 输入产品名称,价格,库存
* 数组进行判断,满了退出
*/
public void addProduct(){
boolean flag =true;
Product product = new Product();
System.out.println("请输入产品名称");
product.name = scanner.next();
System.out.println("请输入产品价格");
product.price = scanner.nextInt();
System.out.println("请输入产品库存量");
product.kuc = scanner.nextInt();
System.out.println("请输入产品进货价");
int cost =scanner.nextInt();
if(cost<=product.price){
for(int i =0;i<=products.length-1;i++){
if(products[i]==null){
flag =false;
product.serNum=i;
products[i]=product;
break;
}
}
if(flag){
System.out.println("仓库已满,无法添加");
}else{
System.out.println("添加成功");
}
}else{
System.out.println("你输入的进货价错误,请重新添加");
addProduct();
}
}
/**
* 查询产品页面
*/
/**
* 用户和管理员共同功能
* 通过遍历输出所有产品
*/
public void selectProduct(){
if(USER.type==2){
System.out.println("***以下是查询商品页面***");
System.out.println("产品序号 产品名称 产品价格 产品库存 进货价 ");
for(int i= 0;i<=products.length-1;i++){
if(products[i]!=null){
System.out.println(products[i].serNum+"\t\t "+products[i].name+"\t "
+products[i].price+"\t "+products[i].kuc+" "+products[i].cost);
}else{
break;
}
}
}else{
System.out.println("***以下是查询商品页面***");
System.out.println("产品序号 产品名称 产品价格 产品库存 ");
for(int i= 0;i<=products.length-1;i++){
if(products[i]!=null){
System.out.println(products[i].serNum+"\t\t "+products[i].name+"\t "
+products[i].price+"\t "+products[i].kuc);
}else{
break;
}
}
}
}
/**
* 商品修改页面
*/
/**
* 管理员功能
* 选择序号进行修改产品,重新输入产品信息
*/
public void revise(){
Product product = new Product();
System.out.println("这是修改商品信息页面,请选择要修改的商品序号");
int ser =scanner.nextInt();
if(products[ser]!=null){
//当输入的序号存在时
System.out.println("请输入更改后的商品名");
product.name = scanner.next();
System.out.println("请输入更改后的商品价格");
product.price = scanner.nextInt();
System.out.println("请输入更改后的商品库存");
product.kuc = scanner.nextInt();
}else{
System.out.println("商品序号不存在,请检查后重新输入");
revise();
}
}
/**
* 用户购物界面
*/
/**
* 用户功能
* 通过输入产品序号进行产品选择,选择完然后输入数量进行购买
* 购买时进行判断库存数是否够需求以及用户余额是否够交易、
* 购买时会判断是不是会员,会员会进行打折操作
* 购买成功后更新库存量,用户余额,以及更新账单
* 当用户余额不够购买时,选择是否跳转到充值界面
* 购买完成后并输出账单以及用户余额
*/
public void userBuy(){
Order order =new Order();
System.out.println("欢迎选购商品,以下是我们的所有产品");
selectProduct();
System.out.println("请输入想要购买的产品序号");
int ser = scanner.nextInt();
System.out.println("产品序号 产品名称 产品价格 产品库存");
System.out.println(products[ser].serNum+" "+products[ser].name+" "+products[ser].price+
" "+products[ser].kuc);
System.out.println("请输入想要购买数量");
int num =scanner.nextInt();
//判断库存够不够
if(products[ser].kuc>=num){
//判断钱够不够
if(USER.vip!=1){
if(USER.money>=num*products[ser].price){
USER.money=USER.money-num*products[ser].price;
//更新用户余额
order.sales=order.sales+num;
//更新销售量
//order.cost =(products[ser].price-)
order.user=USER;
//更新账单
order.totalMoney =num*products[ser].price;
//更新库存
products[ser].kuc= products[ser].kuc - num;
order.product=products[ser];
//将值存进orders中
for(int i=0;i<=orders.length-1;i++){
if(orders[i]==null){
orders[i]=order;
break;
}
}
System.out.println("你本次消费:"+order.totalMoney+" 还剩余额:"+USER.money);
}else{
System.out.println("剩余钱不够,是否进行充值,充值请输入1");
int a =scanner.nextInt();
if(a==1){
//充值
userRecharg();
}
//跳转
userBuy();
}
}else{
System.out.println("您是尊贵的VIP会员,享受八折优惠");
if(USER.money>=0.8*num*products[ser].price){
//用户余额
USER.money=USER.money-0.8*num*products[ser].price;
//热销
order.sales=order.sales+num;
order.user=USER;
order.totalMoney =0.8*num*products[ser].price;
//将值存进orders中
products[ser].kuc= products[ser].kuc - num;
order.product=products[ser];
for(int i=0;i<=orders.length-1;i++){
if(orders[i]==null){
orders[i]=order;
break;
}
}
System.out.println("您本次消费:"+order.totalMoney+" 还剩余额:"+USER.money);
}else{
System.out.println("剩余钱不够,是否进行充值,充值请输入1");
int a =scanner.nextInt();
if(a==1){
//充值
userRecharg();
}
//跳转
userBuy();
}
}
}else{
System.out.println("库存不够");
}
}
/**
* 充值页面
*/
/**
* 用户界面
* 通过选择进行判断,将金额加上,并将金额存到用户余额里
*/
public void userRecharg(){
System.out.println("******欢迎来到充值界面*****");
System.out.println("本着爱民原则,我们超市优惠大酬宾,充值有优惠");
System.out.println("充值100送10元,充值200送25,充值1000送150,超过1500,每超100送16");
System.out.println("******请输入充值金额******");
int money = scanner.nextInt();
if(money<100){
USER.money=USER.money+money;
System.out.println("目前账目上余额为"+USER.money);
}else if(money>=100&&money<200){
USER.money=USER.money+money+10;
System.out.println("目前账目上余额为"+USER.money);
}else if(money>=200&&money<1000){
USER.money=USER.money+money+25;
System.out.println("目前账目上余额为"+USER.money);
}else if(money>=1000&&money<1500){
USER.money=USER.money+money+150;
System.out.println("目前账目上余额为"+USER.money);
}else{
int k = (money-1500)/100;
USER.money=USER.money+money+16*k;
System.out.println("目前账目上余额为"+USER.money);
}
}
/**
* 查看个人信息页面
*/
/**
* 用户界面
* 输出用户的所有信息
*/
public void userInfor(){
System.out.println("****欢迎查看个人信息****");
System.out.println("用户名: "+USER.name);
System.out.println("用户密码: "+USER.pwd);
System.out.println("用户余额 "+USER.money);
if(USER.vip==1){
System.out.println("你是尊贵的vip会员");
}else{
System.out.println("你目前还不是vip会员");
}
}
/**
* vip界面
*/
/**
* 用户界面
* 通过将标志位vip赋值为1进行判断
* 当已经成为vip时再充值vip会失败
* 充值完vip会进行扣钱操作,如果余额不够会选择是否跳转到充值界面
* 结束时输出用户余额
*/
public void userVip(){
System.out.println("欢迎进入VIP页面");
System.out.println("请问是否办理VIp会员,办理会员需要支付10元");
System.out.println("输入1办理");
int num =scanner.nextInt();
if(USER.vip!=1){
if(num==1){
if(USER.money>=10){
System.out.println("您已成功办理VIP会员,感谢您的加入");
USER.vip=1;
USER.money=USER.money-10;
System.out.println("你目前的余额还有"+USER.money);
}else{
System.out.println("余额不足,是否进行充值,输入1进入充值界面,输入其他退出");
int i=scanner.nextInt();
if(i==1){
userRecharg();
}
}
}
}else{
System.out.println("你已经是尊贵的VIP用户,无需再充值VIP");
}
}
/**
* 账单查看页面
*/
/**
* 用户界面
*
*/
public void bill(){
System.out.println("欢迎进入账单查看页面");
System.out.println("以下是"+USER.name+"用户的账单");
//遍历
//boolean falg = true;
System.out.println("产品序号 产品名 产品价格 消费价格 操作");
for(int i =0; i<=orders.length-1;i++){
if(orders[0]!=null){//判断数组第一个数是否为空
//为空表示用户未购买东西
if(orders[i]!=null){//找数组不为空的部分
// falg = false;
//输出信息
if(orders[i].user==USER){
System.out.println(i + "\t\t"+orders[i].product.name+"\t\t"+orders[i].product.price+
"\t\t"+orders[i].totalMoney+"\t\t");
}
}else{
break;
}
}else{
System.out.println("你还未进行购物,是否跳转到购物页面?");
System.out.println("输入1代表跳转");
int mun = scanner.nextInt();
if(mun==1){
//跳转
userBuy();
}
}
}
}
/**
* 热销界面
*/
/**
* 用户界面
* 通过查看订单1然后了解热销榜单
* 先判断订单中有几个不为空
* 然后将订单引用给订单1
* 将订单1以销量冒泡排序
*/
public void bestProduct(){
Order order =new Order();
System.out.println("欢迎进入热销排行榜");
System.out.println("畅销序列 产品名称 产品价格 销量");
int j = 0;
//判断数组中有几个不为空
for(int i=0;i<=orders.length-1;i++){
if(orders[i]!=null){
j++;
}else{
break;
}
}
//boolean falg = true;
//将orders的数组不为空的部分引用给orders1
for (int i =0; i<j;i++){
if(orders1[i]==null){
orders1[i]=orders[i];
//falg = false;
}
}
//冒泡排序
Order order1;
for(int i = 0;i<j;i++){
for (int s=0; s<j-i;s++){
if(orders1[s+1]!=null){
if(orders1[s].sales<=orders1[s+1].sales){
order1=orders1[s+1];
orders1[s+1]=orders1[s];
orders1[s]=order1;
}
}else{
break;
}
}
}
//boolean falg;
for (int i=0;i<=j;i++){
if(orders1[i]!=null){
System.out.println("TOP"+i+"\t\t"+orders1[i].product.name+"\t\t"+
orders1[i].product.price+"\t\t"+orders1[i].sales);
}else{
break;
}
}
}
/**
* 更改密码界面
*/
/**
* 用户和管理员界面
* 通过输入原始密码然后进行判断,
* 密码正确之后,输入新密码,将新密码赋值给原来的账户
*/
public void changePwd(){
System.out.println("欢迎来到更改密码界面");
System.out.println("请输入当前密码以确定是本人操作");
String pwd = scanner.next();
//判断当前用户密码是否输入正确
if(USER.pwd.equals(pwd)){
System.out.println("密码输入正确,请输入新密码");
System.out.println("请不要和之前密码相同");
String pwd1 = scanner.next();
//判断更改后的密码与之前不同
if(!pwd1.equals(USER.pwd)){
System.out.println("密码修改成功");
//将密码重新赋值
USER.pwd=pwd1;
System.out.println("当前用户名为"+USER.name);
System.out.println("当前密码为"+USER.pwd);
}else{
System.out.println("与之前输入密码相同,操作失败");
System.out.println("是否放弃更改密码操作,是输入1,否输入2");
int a = scanner.nextInt();
if(a==1){
System.out.println("退出更改密码界面");
sp();
}else{
changePwd();
}
}
}else{
System.out.println("密码输入错误,是否退出更改密码操作,退出请输入1");
int choose = scanner.nextInt();
if(choose==1){
System.out.println("退出更改密码界面");
sp();
}else{
changePwd();
}
}
}
/**
*利润界面
*/
/**
* 管理员界面
* 查看销售利润
*/
public void profit(){
System.out.println("欢迎来到利润界面");
/*
属性 将每个种类里的销量乘以利润然后加起来
可以先输出每种利润,然后输出之和
*/
System.out.println("产品名称 产品价格 产品销量 产品总利润");
for (int i=0;i<orders.length-1;i++){
if(orders[i]!=null){
System.out.println(orders[i].product.name+" "+orders[i].product.price+" "+
orders[i].sales+" "+(orders[i].sales*orders[i].product.price-orders[i].sales*orders[i].product.cost));
}
}
}
/**
* 删除操作
*/
/**
* 管理员页面
* 通过输入序号将产品所有信息删除,并将其他产品序号往前排
*/
public void delete(){
Product product;
System.out.println("欢迎进入删除操作");
selectProduct();
System.out.println("请输入想要删除的序列号");
int ser = scanner.nextInt();
// selectProduct();
if(products[ser]!=null){
System.out.println("确定要删除吗");
System.out.println("确定请输入1");
int choose =scanner.nextInt();
if(choose==1){
//System.out.println("已删除这个产品,产品序号已经重新自动排序");
//products[ser]=null;
//判断非空数组长度
int j=0;
for(int k=0;k<=products.length-1;k++){
if(products[k]!=null){
j++;
}else{
break;
}
}
//System.out.println("已删除这个产品,");
//从要删除的那个开始,后面的往前排序
if(ser==(j-1)){
products[j-1]=null;
}else{
for(int i=ser;i<(j-1);i++){
product = products[i+1];
product.serNum = products[i+1].serNum-1;
products[i]=product;
}
products[j-1]=null;
}
System.out.println("已删除这个产品,");
selectProduct();
}
}
}
}
5. 启动类
public class ShoppingMain {
public static void main(String[] args) {
Shoping shoping =new Shoping();
shoping.sp();
}
}
6. 结尾
以上就是此次超市1.3的所有的代码,可以根据注释进行理解,如果有不理解的地方或者有其他的学习上的疑惑也可以私信我,博主会尽最大可能帮助。
如果这个代码看着有难度,可以看博主前面的博客,超市1.0和超市1.3