资源描述
版权所有人:李蒙
学士后java 第一单元,超市收银系统,代码
首先分为4个包 9个类 一个源文件
首先源文件 起名 sys.properties
源文件内容:
HOST= localhost
PORT=8888
Clientjiemian类的内容:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
import publiClass.Datas;
import publiClass.SysConstants;
import datas.Shangpin;
import datas.Yuangong;
public class ClientJiemian {
//控制台输入对象
private static Scanner input = new Scanner(System.in);
//客户端业务对象
private static ClientYehu clientyehu =new ClientYehu();
public static void main(String[] args) {
System.out.println("**************************************************************************************************");
System.out.println("\t\t\t\t\t欢迎使用青鸟超市管理系统");
do {
System.out.println("1. 登陆\n2. 退出系统");
System.out.println("=============================================请选择1/2==============================================");
String a = input.next();
if (a.equalsIgnoreCase("1")) {
createLoginView();
break;
} else if (a.equalsIgnoreCase("2")) {
System.out.println("系统退出成功!");
break;
} else
System.out.println("您选择有误!请重新选择");
} while (true);
}//实现客户端登陆视图的生成
public static void createLoginView(){
do {
System.out.println("请输入用户名:");
String name = input.next();
System.out.println("请输入密码:");
String password = input.next();
Datas datas = clientyehu.doLogin(name, password);
//判断是管理员还是收银员
if (datas.getFlag().equals(SysConstants.SYS_ADMIN)) {
createAdminView();
break;
} else if (datas.getFlag().equals(SysConstants.SYS_USER)) {
createUserView();
break;
} else {
System.out.println("用户名或密码有误,请重新输入");
}
} while (true);
}
//实现客户端超市库存管理系统视图的生成
private static void createAdminView() {
System.out
.println("***********************************欢迎登陆青鸟超市库存管理系统*******************************************");
do {
System.out
.println("请选择进行的操作:1. 商品入库\t2. 商品出库\t3. 新增商品\t4. 查看全部商品\t5. 按编号查询商品\t6. 退出");
String option = input.next();
// 商品入库
if (option.equals("1")) {
String id = null;
int num = 0;
System.out.print("请输入商品编号:");
id = input.next();
if (clientyehu.doFind(id).getFlag()
.equals(SysConstants.SYS_ERROR)) {
System.out.println("没有此商品,请选择3:新增商品!");
look(clientyehu.doFindAll());
} else {
System.out.print("请输入入库数量:");
num = input.nextInt();
if (num > 0) {
if (clientyehu.doRuku(id, num).getFlag()
.equals(SysConstants.SYS_SUCCESS)) {
System.out.println("入库成功!");
look(clientyehu.doFindAll());
}
} else {
System.out.println("入库失败!数量必须大于0");
}
}
}
else if (option.equals("2")) {
String id = null;
int num = 0;
do {
System.out.print("请输入商品编号:");
id = input.next();
Datas data = clientyehu.doFind(id);
if (data.getFlag().equals(SysConstants.SYS_ERROR)) {
System.out.println("没有此商品!");
} else {
System.out.print("请输入出库数量:");
num = input.nextInt();
if (num > 0) {
Datas datas = clientyehu.doChuku(id, num);
if (datas.getFlag().equals(SysConstants.SYS_LACK)) {
System.out.println("库存不足,请核实,出库失败");
perlook(data);
break;
} else {
System.out.println("出库成功!");
look(clientyehu.doFindAll());
break;
}
} else {
System.out.println("出库失败!数量必须大于0");
break;
}
}
} while (true);
}
/**
* 新增商品
*/
else if (option.equals("3")) {
do {
System.out.print("请输入编号");
String id = input.next();
if (clientyehu.doFind(id).getFlag()
.equals(SysConstants.SYS_SUCCESS)) {
System.out.println("此商品编号已存在!");
} else {
System.out.print("请输入商品名称:");
String name = input.next();
System.out.print("请输入商品价格:");
double d = input.nextDouble();
System.out.print("请输入商品单位:");
String w = input.next();
System.out.print("请输入商品数量:");
Shangpin shangpin = new Shangpin(id, name, d, w, input.nextInt());
clientyehu.doAdd(shangpin);
System.out.println("新增商品成功!");
look(clientyehu.doFindAll());
break;
}
} while (true);
}
// 查看全部商品
else if (option.equals("4")) {
look(clientyehu.doFindAll());
}
// 编号查询商品
else if (option.equals("5")) {
System.out.print("请输入商品编号:");
String id = input.next();
Datas data = clientyehu.doFind(id);
if (data.getFlag().equals(SysConstants.SYS_SUCCESS))
perlook(data);
else {
System.out.println("对不起,没有此商品!");
}
}
// 退出系统
else if (option.equals("6")) {
System.out.println("系统退出成功!");
return;
}
else {
System.out.println("您输入有误!");
}
} while (true);
}
//实现客户端超市收银管理系统视图的生成
private static void createUserView() {
System.out
.println("***********************************欢迎登陆青鸟超市收银系统*******************************************");
do {
System.out.println("请选择进行的操作: 1. 扫描商品\t2. 修改数量\t3. 结账\t4. 退出");
String option = input.next();
if (option.equals("1")) {
System.out.print("请输入商品编号:");
String id = input.next();
if (clientyehu.doFind(id).getFlag()
.equals(SysConstants.SYS_SUCCESS)) {
System.out.println("扫描成功");
show(clientyehu.doScan(id));
} else {
System.out.println("对不起,没有此商品,扫描失败!");
show(clientyehu.doResult());
}
}
// 修改商品
else if (option.equals("2")) {
if (clientyehu.doResult().getFlag()
.equals(SysConstants.SYS_ERROR)) {
System.out.println("您还没有扫描商品!");
continue;
}
do {
System.out.print("请输入要修改的商品编号:");
String id = input.next();
if (hasGoods(id)) {
System.out.print("请输入修改数量:");
Datas datas = null;
if (input.hasNextInt()) {
int a = input.nextInt();
if (a > 1) {
datas = clientyehu.doUpDate(id, a);
if (datas.getFlag().equals(
SysConstants.SYS_LACK)) {
System.out.println("数量不足!请确认!!");
perlook(clientyehu.doFind(id));
continue;
} else {
System.out.println("修改成功!");
show(clientyehu.doResult());
break;
}
} else {
System.out.println("数量必须大于0!");
continue;
}
} else {
input.next();
System.out.println("请输入正确格式!");
continue;
}
}
System.out.println("对不起,还没有扫描此商品!");
} while (true);
}
// 结账
else if (option.equals("3")) {
createover();
} else if (option.equals("4")) {
return;
} else {
System.out.println("您输入有误,请确认!");
}
} while (true);
}
private static void createover() {
double price = sum(clientyehu.doResult());
if (price != 0) {
System.out.println("总金额为: " + price);
System.out.println("请选择: 1. 普通结账\t2. 会员结账");
String a = input.next();
if (a.equals("1")) {
System.out.print("请输入金额:");
int money = 0;
do {
Scanner input = new Scanner(System.in);
if (input.hasNextInt()) {
money = input.nextInt();
if (money < 0) {
System.out.print("请输入正确金额:");
}
if (money < price) {
System.out.print("金额不足!请确认:");
}
if (money >= price) {
createResult(money, price);
break;
}
} else {
System.out.print("请输入正确格式:");
}
} while (true);
}
else if (a.equals("2")) {
System.out.print("请输入您的会员卡号:");
String vip = input.next();
if (vip.equals("2012")) {
System.out.print("会员卡号正确,请输入您要支付的金额:");
int money = 0;
do {
Scanner input = new Scanner(System.in);
if (input.hasNextInt()) {
money = input.nextInt();
if (money < 0) {
System.out.println("请输入正确金额:");
}
if (money < price) {
System.out.println("金额不足!请确认:");
}
if (money >= price) {
createvipResult(money, price);
break;
}
} else {
System.out.print("请输入正确格式:");
}
} while (true);
} else {
System.out.println("对不起,会员卡号错误!");
createover();
}
} else {
System.out.println("您输入有误!");
}
} else {
System.out.println("您还没有扫描商品");
}
}
private static void perlook(Datas data) {
System.out
.println("------------------------------------------------------------------------------------------------");
System.out.println("商品编号\t\t商品名称\t\t商品单价\t\t单位\t\t数量");
System.out.println(data.getShangpin().getSerialNumber() + "\t\t"
+ data.getShangpin().getName() + "\t" + data.getShangpin().getPrice()
+ "\t\t" + data.getShangpin().getUnit() + "\t\t"
+ data.getShangpin().getStock());
System.out
.println("------------------------------------------------------------------------------------------------");
}
private static void look(Datas doFindAll) {
System.out
.println("------------------------------------------------------------------------------------------------");
ArrayList<Shangpin> list = (ArrayList<Shangpin>) doFindAll.getSumArray();
System.out.println("商品编号\t\t商品名称\t\t商品单价\t\t单位\t\t数量");
for (Shangpin goods : list) {
System.out.println(goods.getSerialNumber() + "\t\t" + goods.getName() + "\t"
+ goods.getPrice() + "\t\t" + goods.getUnit() + "\t\t"
+ goods.getStock());
}
System.out
.println("------------------------------------------------------------------------------------------------");
}
private static void createResult(int money, double price) {
System.out
.println("***************************************************************************************************");
System.out.println("\t\t\t\t青鸟超市");
System.out.println("收银员:1001\t小票号:" + ticket());
display();
System.out.println("总数量:" + clientyehu.doResult().getBuyArray().size()
+ "\t\t应收: " + price);
System.out.println("实收: " + money + "\t\t找零: " + (money - price));
System.out.println(date());
System.out.println("此小票是您退换货及核对积分的凭证,请妥善保存!");
System.out
.println("==================================================================================================");
clientyehu.doClear();
}
private static String date() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/ hh/mm/ss");
String dat = sdf.format(date);
return dat;
}
private static void display() {
ArrayList<Shangpin> list = clientyehu.doResult().getBuyArray();
System.out.println("序\t\t商品名称\t\t\t\t数量\t\t单位\t\t金额");
System.out
.println("------------------------------------------------------------------------------------------------");
for (int i = 0; i < list.size(); i++) {
System.out.println(i + 1 + "\t\t" + "[" + list.get(i).getSerialNumber() + "]"
+ list.get(i).getName() + list.get(i).getUnit() + "\t\t"
+ list.get(i).getStock() + "\t\t" + list.get(i).getPrice()
+ "\t\t" + list.get(i).getStock() * list.get(i).getPrice());
}
System.out
.println("------------------------------------------------------------------------------------------------");
}
private static String ticket() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmm");
String ticket = sdf.format(date) + (int) (Math.random() * 1000);
return ticket;
}
private static void createvipResult(double money, double price) {
System.out
.println("***************************************************************************************************");
System.out.println("\t\t\t青鸟超市");
System.out.println("收银员:1001\t小票号:" + ticket());
display();
System.out.println("总数量:" + clientyehu.doResult().getBuyArray().size()
+ "\t\t应收: " + price);
System.out.println("实收: " + money + "\t\t找零: " + (money - price));
System.out.println("本次累计积分成功\t 卡号:2012");
System.out.println("当前积分+本次消费积分+消费后积分");
System.out.println("2000+" + price + "=" + (2000 + price));
System.out.println(date());
System.out.println("此小票是您退换货及核对积分的凭证,请妥善保存!");
System.out
.println("================================================================================================");
clientyehu.doClear();
}
private static double sum(Datas doResult) {
if (doResult.getFlag().equals(SysConstants.SYS_SUCCESS)) {
ArrayList<Shangpin> list = doResult.getBuyArray();
double sum = 0;
for (int i = 0; i < list.size(); i++) {
sum += list.get(i).getPrice() * list.get(i).getStock();
}
return sum;
} else
return 0;
}
private static boolean hasGoods(String id) {
if (clientyehu.doResult().getFlag().equals(SysConstants.SYS_SUCCESS)) {
ArrayList<Shangpin> list = clientyehu.doResult().getBuyArray();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getSerialNumber().equals(id)) {
return true;
}
}
}
return false;
}
private static void show(Datas doScan) {
if (doScan.getFlag().equals(SysConstants.SYS_SUCCESS)) {
ArrayList<Shangpin> list = doScan.getBuyArray();
System.out.println("商品名称\t\t\t\t数量\t\t单价\t\t金额");
System.out
.println("-----------------------------------------------------------------------------------------------");
for (int i = 0; i < list.size(); i++) {
System.out.println("[" + list.get(i).getSerialNumber() + "]"
+ list.get(i).getName() + list.get(i).getUnit()
+ "\t\t" + list.get(i).getStock() + "\t\t"
+ list.get(i).getPrice() + "\t\t"
+ list.get(i).getPrice() * list.get(i).getStock());
}
System.out
.println("------------------------------------------------------------------------------------------------");
}
}
}
Clientyehu类的内容
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import .Socket;
import .UnknownHostException;
import publiClass.Datas;
import publiClass.SysConstants;
import publiClass.Tools;
import datas.Shangpin;
import datas.Yuangong;
//用socket实现它与服务器的交互
public class ClientYehu {
//创建socket实例
Socket socket =new Socket();
//创建输入流对象
ObjectInputStream objectInputStream =null;
//创建输出流对象
ObjectOutputStream objectOutputStream =null;
private void initSocket(){
//实例化socket关联对象
String hostname = Tools.getVlaue(SysConstants.SYS_HOSTNAME);
int port = Integer.parseInt(Tools.getVlaue(SysConstants.SYS_LISTENERPORT));
try {
socket = new Socket(hostname,port);
//??????
objectInputStream =new ObjectInputStream(socket.getInputStream());
objectOutputStream=new ObjectOutputStream(socket.getOutputStream());
} catch (UnknownHostExcept
展开阅读全文