查看: 1267|回复: 4

[Java新手区] 超市收银

[复制链接]

该用户从未签到

发表于 2015-6-19 15:11:19 | 显示全部楼层 |阅读模式
怎么实现客户端跟服务器之间的交互验证啊?我现在都是在客户端里自行验证的


package Eight01;

import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
/*
* 服务器
*/
public class Server {
        public static void main(String[] args) throws Exception {
                ServerSocket s = new ServerSocket(8081);
                Socket socket = s.accept();
                InputStream is = socket.getInputStream();
                OutputStream os = socket.getOutputStream();
                ObjectOutputStream oos = new ObjectOutputStream(os);
                ObjectInputStream ois = new ObjectInputStream(is);
       
                        User user = (User)ois.readObject();
                        int role = 1;
                        if("username".equals(user.getName())&&"123456".equals(user.getPwd())){
                                // 这里进行处理相对应的用户权限(得到相对应的权限)
                                oos.writeObject(role);
               
                        }else if("user".equals(user.getName())&&"123".equals(user.getPwd())){
                                oos.writeObject(2);

                        }else{
                                oos.writeObject(0);
                        }
                /**
                 *
                 */

                        is.close();
                        os.close();
                        ois.close();
                        oos.close();
                        s.close();
                        socket.close();
                       
                }
        }

//}



package Eight01;

import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
/*
* 客户端
*/
public class Client {

        public static void main(String[] args) throws Exception {
                Socket s = null;
                InputStream is = null;
                OutputStream os = null;
                ObjectInputStream ois = null;
                ObjectOutputStream oos = null;
                s = new Socket("127.0.0.1", 8081);
                os = s.getOutputStream();
                is = s.getInputStream();
                // 封装成一个包装流
                oos = new ObjectOutputStream(os);
                ois = new ObjectInputStream(is);
                Scanner in = new Scanner(System.in);
                System.out.println("************欢迎使用青鸟超市管理系统************");
                System.out.println("1.登录" + "\n2.退出系统");
                System.out.println("****************请选择数字1/2****************");
                int choose = in.nextInt();
                if(choose == 1){
                        int role = 1;
                        do{
                                User user = new User();
                                System.out.println("用户名称:");
                                user.setName(in.next());
                                System.out.println("用户密码:");
                                user.setPwd(in.next());
                                oos.writeObject(user);
                                role = (Integer) ois.readObject();
                                if(role == 0){
                                        System.out.println("对不起,没有该用户!请重新输入!");
                                }
                        }while(role == 0);
                        // 库存管理员
                        if(role == 1){
                                System.out.println("************欢迎登陆库存管理系统************");
                                while(true){
                                System.out.println("请选择进行操作:1.商品入库   2.商品出库   3.新增商品    4.查询全部商品    5.按查询号查询商品    6.退出");
                        int cho1=in.nextInt();
                        CommodityTest.map();
                        if(cho1==1){
                                CommodityTest.into();//商品入库
                        }else if(cho1==2){
                                CommodityTest.out();//商品出库
                        }else if(cho1==3){
                                CommodityTest.add();//新增商品
                        }else if(cho1==4){
                                CommodityTest.print();//查询全部商品
                        }else if(cho1==5){
                                CommodityTest.find();//按查询号查询商品
                        }else if(cho1==6){
                                System.out.println("退出!");
                                System.exit(0);
                        }else{
                                System.out.println("没有此选项,请重新输入!");
                        }
                        }
                       
                                // 收银员
                        } else if(role==2){
                                System.out.println("************欢迎登陆收银管理系统************");
                                while(true){
                                System.out.println("请选择进行操作:1.扫描商品  2.修改数量   3.结账   4.退出");
                                int cho2=in.nextInt();
                                CommodityTest.map();
                                double totalmoney=0;
                                if(cho2==1){
                                        totalmoney =  Datas.scan();//扫描商品
                                }else if(cho2==2){
                                        Datas.amend();//修改数量
                                }else if(cho2==3){
                                        Datas.accounts();//结账
                                }else if(cho2==4){
                                        System.out.println("退出!");
                                break;
                                }
                                else{
                                        System.out.println("没有此选项!请重新选择!");
                                }
                        }
                       
                        }
                } else if (choose == 2) {
                        System.out.println("退出程序!");
                       
                } else {
                        System.out.println("没有该选择!");
                }
                s.shutdownOutput();
                ois.close();
                oos.close();
                s.close();
        }

}





package Eight01;

import java.io.File;
import java.util.ArrayList;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class CommodityTest {
        public static Scanner in = new Scanner(System.in);
        public static Map<Integer, Commodity> map = new TreeMap();
        public static ArrayList<String>list=new ArrayList<String>();
        public static int total;
        public static int hao;
        public static int num;

//        public static void main(String[] args) {
//                map();
//                show();
//                 into();
//                 out();
//                 add();
//                 print();
//                find();
//        }

        // 公有的map
        public static void map() {
               
                        map.put(1003, new Commodity(1003, "    脉动水蜜桃", 7.0, "1.5l",1, 50));
                        map.put(1004, new Commodity(1004, "  旺仔苹果Q糖", 2.5, "70g",1, 70));
                        map.put(1001, new Commodity(1001, "    吉百芝麻油", 9.5, "125ml",1, 20));
                        map.put(1002, new Commodity(1002, "雀巢奶香咖啡", 1.5, "13g",1, 200));
                        map.put(1007, new Commodity(1007, "白玉内酯豆腐", 1.0, "400g",1, 15));
                        map.put(1008, new Commodity(1008, "    吉百芝麻油", 9.5, "125ml",1, 20));
                        map.put(1005, new Commodity(1005, "    桃李熟切片", 6.5, "400g",1, 10));
                        map.put(1006, new Commodity(1006, "    白玉黄豆芽", 2.4, "350g",1, 20));
               
        }

        // 输出商品信息
        public static void show() {
                System.out.println("商品编号" + "\t   商品名称" + "\t\t商品单价" + "\t单位" + "\t数量");
                for (Commodity commodity : map.values()) {
                        commodity.print();
                }
        }

        // 商品入库
        public static void into() {
                System.out.println("输入商品编号:");
                hao = in.nextInt();
                if (map.containsKey(hao)) {
                        System.out.println("入库数量:");
                        num = in.nextInt();
                        total = map.get(hao).getTotalnum()+ num;
                        map.get(hao).setTotalnum(total);
                        System.out.println("入库成功!");
                } else {
                        System.out.println("没有此商品,请选择编号3:新增商品!");
                }
                show();
        }

        // 商品出库
        public static void out() {
                while (true) {
                        System.out.println("请输入商品编号:");
                        hao = in.nextInt();
                        if (map.containsKey(hao)) {
                                System.out.println("输入出库数量:");
                                num = in.nextInt();
                                if (num > (map.get(hao).getTotalnum())) {
                                        System.out.println("库存不足,请核实,出库失败!");
                                        show();
                                } else {
                                        int total = map.get(hao).getTotalnum() - num;
                                        map.get(hao).setTotalnum(total);
                                        System.out.println("出库成功!" );
                                        show();
                                }
                                break;
                        } else {
                                System.out.println("没有此商品!");
                        }
                }
        }

        // 新增商品
        public static void add() {
                while (true) {
                        System.out.println("输入商品编号:");
                        hao = in.nextInt();
                        if (map.containsKey(hao)) {
                                System.out.println("此编号已存在!");
                                continue;
                        } else {
                                System.out.println("输入商品名称:");
                                String name = in.next();
                                if (name.length() < 12) {
                                        name = "    " + name;
                                }
                                System.out.println("输入商品价格:");
                                double price = in.nextDouble();
                                System.out.println("输入商品单位:");
                                String bit = in.next();
                                System.out.println("输入商品数量:");
                                int num = in.nextInt();
                                map.put(hao, new Commodity(hao, name, price, bit, 1,num));
                                System.out.println("新增成功!");
                                show();
                                break;
                        }
                }
        }

        // 查询全部商品
        public static void print() {
                show();
        }

        // 按照编号查询商品
        public static void find() {
                System.out.println("输入商品编号:");
                hao = in.nextInt();
                if (map.containsKey(hao)) {
                        System.out.println("商品编号" + "\t   商品名称" + "\t\t商品单价" + "\t单位"
                                        + "\t数量");
                        System.out.println(map.get(hao).getComId() + "\t"
                                        + map.get(hao).getComname() + "\t"
                                        + map.get(hao).getPrice() + "\t" + map.get(hao).getBit()
                                        + "\t" + map.get(hao).getTotalnum());
                } else {
                        System.out.println("对不起,没有此商品!");
                }
        }
}






package Eight01;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Scanner;
import java.util.TreeMap;

public class Datas {
        public static int hao;
        public static double price = 0;//每次扫描的价格
        public static Scanner in = new Scanner(System.in);
        public static double totalmoney = 0;// 总金额
        public static ArrayList<String >list=new ArrayList<String>();//存放扫描到的商品的集合
        public static         Calendar cal = Calendar.getInstance();
       
//        public static void main(String[] args) {
//                CommodityTest.map();
//                 scan();
//                 amend();
//                money();
//                accounts();
//
//        }

        // 扫描商品
        public static double scan() {
                ArrayList<Commodity> arr=new ArrayList<Commodity>();
                Commodity commt=null;
                String choose=null;
                String a=null;
                int num=1;
                do{
                System.out.println("请输入要扫描的编号:");
                hao = in.nextInt();
                if (!(CommodityTest.map.containsKey(hao))){
                        System.out.println("对不起,没有此商品,扫描失败!");
                }else{
                        System.out.println("扫描成功!");       
                        price = num * CommodityTest.map.get(hao).getPrice();
                        commt=CommodityTest.map.get(hao);
                        arr.add(commt);
                        System.out.println("商品名称" + "\t\t\t数量" + "\t单价" + "\t金额");
                        System.out.println("-----------------------------------------------");
                        for(Commodity c:arr){
                    a="(" + c.getComId() + ")"
                                                + c.getComname()
                                                + c.getBit() + "\t" + num + "\t"
                                                + c.getPrice() + "\t" + num * c.getPrice();
                                System.out.println(a);
                       
                        }
                        list.add(a);
               
                        System.out.println("-----------------------------------------------");
                        System.out.println("是否继续扫描?(y/n)");
                        choose=in.next();
                        totalmoney += price;
                }
                }while("y".equals(choose));
               
                return totalmoney;
        }
       
        // 修改数量
        public static Commodity amend() {
                Commodity commt=null;
       
                System.out.println("请输入要修改的编号:");
                hao = in.nextInt();
                if (CommodityTest.map.containsKey(hao)) {
                        System.out.println("输入修改的数量:");
                        int num = in.nextInt();
                        price = num * CommodityTest.map.get(hao).getPrice();
                        System.out.println("商品名称" + "\t\t\t数量" + "\t单价" + "\t金额");
                        System.out.println("-----------------------------------------------");
                        System.out.println("(" + hao + ")"
                                        + CommodityTest.map.get(hao).getComname()
                                        + CommodityTest.map.get(hao).getBit() + "\t" + num + "\t"
                                        + CommodityTest.map.get(hao).getPrice() + "\t" + price);
                       
                        System.out.println("-----------------------------------------------");
                } else {
                        System.out.println("对不起,没有此商品,扫描失败!");
                }
                return commt;
        }

        //支付的钱
        public static void money(){
                double money=0;//付款金额
                do {
                        try {
                                money = in.nextDouble();
                                if (money >= totalmoney) {
                                        System.out.println("\t\t青鸟超市");
                                        User user = new User("user","123");
                                        System.out.println("收银员:" + user.getName() + "\t\t小票号:"+  cal.get(Calendar.YEAR)
                                                        + (cal.get(Calendar.MONTH) + 1)
                                                        + cal.get(Calendar.DAY_OF_MONTH)
                                                        +cal.get(Calendar.HOUR_OF_DAY)
                                                        +cal.get(Calendar.MINUTE)
                                                        +cal.get(Calendar.SECOND));
                                        System.out.println("序"+"\t商品名称"+"\t\t数量"+"\t单价"+"\t金额");
                                        System.out.println("--------------------------------------------------------");
                                        for(String c:list){
                                                System.out.println(c);
                                        }
                                        System.out.println("--------------------------------------------------------");
                                        System.out.println("总数量:"+list.size()+" \t应收:"+totalmoney);
                                        System.out.println("实收:"+money+"\t找零:"+(money-totalmoney));
                       
                                        break;
                                } else {
                                        System.out.println("请输入正确的金额!");
                                        money = in.nextDouble();
                                        break;
                                }
                        } catch (Exception e) {
                                System.out.println("请输入正确格式金额!");
                        }
                } while (money < totalmoney);
        }

        // 结账
        public static void accounts(  ) {
                double money=0;//付款金额
                System.out.println("总金额:" +totalmoney);
                if(totalmoney<0||totalmoney==0){
                        System.out.println("没有扫描的商品!");
                        return;
                }else{
                System.out.println("1.普通结账     2.会员结账");
                int choice = in.nextInt();
                if (choice == 1) {
                        System.out.println("请输入您要支付的金额:");
                money();
                }else if(choice==2){
                        VIP vip=new VIP("2020",2000);
                        do{
                        System.out.println("请输入您的会员卡号:");
                        String custNo=in.next();
                        if(custNo.equals(vip.getCustNo())){
                                System.out.println("会员卡号正确,请输入您要支付的金额:");
                                money();
                                System.out.println("本次累计积分成功   卡号:"+custNo);
                                int now=31;
                                System.out.println("消费前积分 + 本次消费积分 = 消费后积分");
                                System.out.println(vip.getCredit()+"+"+now+"="+(vip.getCredit()+now));
                                break;
                        }else{
                                System.out.println("会员卡号错误!");
                        }
                        }while(true);
                }
                //输出时间
                System.out.println( cal.get(Calendar.YEAR)+"/"
                                + (cal.get(Calendar.MONTH) + 1)+"/"
                                + cal.get(Calendar.DAY_OF_MONTH)+"/"+"\t"
                                +cal.get(Calendar.HOUR_OF_DAY)+":"
                                +cal.get(Calendar.MINUTE)+":"
                                +cal.get(Calendar.SECOND));
                System.out.println("此小票是您退换货及核对积分的凭证,请妥善保存!");
                System.out.println("========================================================");
                }
        }
}






package Eight01;

import java.io.Serializable;

/*
* 用户类
*/
public class User implements Serializable{
        private String name;//用户名
        private String pwd;//密码

        public User(){
               
        }
        public User(String name,String pwd){
                this.name=name;
                this.pwd=pwd;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getPwd() {
                return pwd;
        }
        public void setPwd(String pwd) {
                this.pwd = pwd;
        }
       
}








package Eight01;

import java.io.Serializable;
/*
* 会员类
*/
public class VIP implements Serializable{
        private String custNo;//会员账号
        private int credit;//会员积分
        public VIP(){
               
        }
        public VIP(String custNo,int credit){
                this.custNo=custNo;
                this.credit=credit;
        }
        public String getCustNo() {
                return custNo;
        }
        public void setCustNo(String custNo) {
                this.custNo = custNo;
        }
        public int getCredit() {
                return credit;
        }
        public void setCredit(int credit) {
                this.credit = credit;
        }
       
       

}






package Eight01;

public class VIPTest {

        public static void main(String[] args) {
                VIP vip=new VIP("2011",2000);
               
        }

}




  • TA的每日心情
    开心
    2016-1-4 21:22
  • 签到天数: 205 天

    [LV.7]常住居民III

    发表于 2015-6-19 21:10:34 | 显示全部楼层
    楼主很牛啊,想起我那会根本不会
  • TA的每日心情
    开心
    2015-10-28 23:22
  • 签到天数: 103 天

    [LV.6]常住居民II

    发表于 2015-6-21 18:04:20 | 显示全部楼层
    客户端只接受输入,和简单验证。

    然后传到  服务端, 在进行具体的处理,   返回一堆 字符串 (打印的结果),
    客户端收到了再全部输出

    该用户从未签到

     楼主| 发表于 2015-6-22 11:37:48 | 显示全部楼层
    DivineHost 发表于 2015-6-19 21:10
    楼主很牛啊,想起我那会根本不会

    人家大神都已经写好了

    该用户从未签到

     楼主| 发表于 2018-1-16 23:20:47 | 显示全部楼层
    DivineHost 发表于 2015-6-19 21:10
    楼主很牛啊,想起我那会根本不会

    现在看看,都已经是两年前的事了
    您需要登录后才可以回帖 登录 | 注册青鸟豆号

    本版积分规则

    Copyright 1999-2019 Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd

    北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有

    京ICP备11045574号-3 京公网安备11010802013845号

    快速回复 返回顶部 返回列表