一个能实现收银功能的小代码
2013-05-10 16:20
399 查看
黑马IT训练营
随便写着玩的,高手路过勿吐槽,谢谢。
package day1;
import java.io.*;
import java.util.*;
public class Test_A {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = null;
List<Wares> list = new LinkedList<Wares>();
String str = "";
br = new BufferedReader(reader);
System.out.println("欢迎使用收银系统");
try {
while((str=br.readLine())!=null){
if("exit".equals(str)){
System.out.println("退出系统,谢谢使用");
break;
}
if("clear".equals(str)){
System.out.println("清空数据");
list.clear();
continue;
}
if("print".equals(str)){
printWares(list);
continue;
}
Wares wares = new Wares();
String result = checkInput(str,wares);
if(result!=null){
System.out.println(result+" 请重新输入商品信息");
continue;
}
list.add(wares);
System.out.println("******打印小票*******");
printWares(list);
System.out.println("******谢谢惠顾*******");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
if(br!=null)
br.close();
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static String checkInput(String str,Wares wares){
String[] arr = str.split(",");
if(arr.length>3){
return "输入格式错误!";
}
if(str.startsWith(",")){
return "没有输入商品名";
}
if(arr.length<2){
return "没有输入价格";
}
if(!arr[1].matches("\\d")){
return "商品价格应为数字";
}
double num = 1.0;
if(arr.length==3){
if(!arr[2].matches("\\d")){
return "商品数量应为数字";
}
num = Double.parseDouble(arr[2]);
}
wares.setName(arr[0]);
wares.setPrice(Double.parseDouble(arr[1]));
wares.setNum(num);
return null;
}
public static void printWares(List<Wares> list){
double sum =0;
for(int i=0;i<list.size();i++){
Wares wares = list.get(i);
double temp = wares.getNum()*wares.getPrice();
System.out.println("商品名为:"+wares.getName()+" 单价为:"+wares.getPrice()+
" 数量为:"+wares.getNum()+" 小计"+temp);
sum+=temp;
}
System.out.println("总价为:"+sum);
}
}
随便写着玩的,高手路过勿吐槽,谢谢。
package day1;
import java.io.*;
import java.util.*;
public class Test_A {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
InputStreamReader reader = new InputStreamReader(System.in);
BufferedReader br = null;
List<Wares> list = new LinkedList<Wares>();
String str = "";
br = new BufferedReader(reader);
System.out.println("欢迎使用收银系统");
try {
while((str=br.readLine())!=null){
if("exit".equals(str)){
System.out.println("退出系统,谢谢使用");
break;
}
if("clear".equals(str)){
System.out.println("清空数据");
list.clear();
continue;
}
if("print".equals(str)){
printWares(list);
continue;
}
Wares wares = new Wares();
String result = checkInput(str,wares);
if(result!=null){
System.out.println(result+" 请重新输入商品信息");
continue;
}
list.add(wares);
System.out.println("******打印小票*******");
printWares(list);
System.out.println("******谢谢惠顾*******");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
if(br!=null)
br.close();
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static String checkInput(String str,Wares wares){
String[] arr = str.split(",");
if(arr.length>3){
return "输入格式错误!";
}
if(str.startsWith(",")){
return "没有输入商品名";
}
if(arr.length<2){
return "没有输入价格";
}
if(!arr[1].matches("\\d")){
return "商品价格应为数字";
}
double num = 1.0;
if(arr.length==3){
if(!arr[2].matches("\\d")){
return "商品数量应为数字";
}
num = Double.parseDouble(arr[2]);
}
wares.setName(arr[0]);
wares.setPrice(Double.parseDouble(arr[1]));
wares.setNum(num);
return null;
}
public static void printWares(List<Wares> list){
double sum =0;
for(int i=0;i<list.size();i++){
Wares wares = list.get(i);
double temp = wares.getNum()*wares.getPrice();
System.out.println("商品名为:"+wares.getName()+" 单价为:"+wares.getPrice()+
" 数量为:"+wares.getNum()+" 小计"+temp);
sum+=temp;
}
System.out.println("总价为:"+sum);
}
}
相关文章推荐
- 基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?
- Android 一个相对完整的自动升级功能实现代码
- 使用IO技术,创建一个目录,然后复制一个文件到该目录!实现复制的功能。(在博客园上传的第一份代码)
- 实现一个类似于CCTableView的功能的代码
- 一个函数5行代码即可实现完整的面向方面AOP编程功能
- Online Coding开发模式 (通过在线配置实现一个表模型的增删改查功能,无需写任何代码)
- 编写一个Date类:能够实现增加(减少)任意天的功能,含详细代码
- 用两个栈实现一个队列的功能 && 两个队列实现一个栈的功能 && 代码实例
- [导入]分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- 一个功能,两个平台,三种语言 -(iOS,Swift,Android)App代码实现对比篇
- web播放器插件代码 实现一个在线查听音频文件的功能
- 一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码
- hchxxzx--》一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- [转]Remoting的一个代码示例(借助Remoting实现发送信息功能)
- Remoting的一个代码示例(借助Remoting实现发送信息功能)
- Python实现日志自动记录功能(一个思路代码,详细可以自己扩展)
- Linux系统学习方法——写给小白 每个人都有心中向往的一些事情,而我,刚进实验室,看到师兄师姐在电脑前面噼里啪啦的敲代码,真的好羡慕,看着他们实现一个又一个的功能满心欢喜,我也很想尝试。后来了解到师
- SpringBoot+Websocket实现一个简单的网页聊天功能代码
- PHP开发的一个小小项目,记录下实现思路(附上实现功能的示例代码)(一)