📄 mainframe.java
字号:
int location = marketCargo.find(cargoId);
Cargo cargo=marketCargo.getCargoList().get(location);
consumerCargo.add(new Cargo(cargoId,cargo.getName(),cargo.getPriceNormal(),cargo.getPriceVIP(),1));
jTextArea1.setText("");
showInfo();
countMoney();
jTextField2.setText((new DecimalFormat("##########.#")).format(total));
jTextField1.setText("");
}
}
}//GEN-LAST:event_jTextField1KeyPressed
/*随时跟踪用户击键或输入的动作,准确更新界面中jtextarea中的信息
*/
private void showInfo(){
for (int i = 0; i < consumerCargo.size(); i++) {
Cargo cargo=consumerCargo.get(i);
jTextArea1.insert("商品" + (i + 1) + " 编号:"
+ cargo.getId() + " 名称:"
+ cargo.getName() + " 普通价格:"
+ cargo.getPriceNormal() + "元 会员价格:"
+ cargo.getPriceVIP()+"元 "
+ cargo.getNumber() + " 个" + "\n", 0);
}
}
private int find(String cargoId){
int account=consumerCargo.size();
for(int i=0;i<account;i++){
Cargo cargo=consumerCargo.get(i);
if(cargo.getId().equals(cargoId))
return i;
}
return -1;
}
private void countMoney(){
total=0;
if(isVIP==false)
for(int i=0;i<consumerCargo.size();i++){
Cargo cargo=consumerCargo.get(i);
total+=cargo.getPriceNormal()*cargo.getNumber();
}
else
for(int i=0;i<consumerCargo.size();i++){
Cargo cargo=consumerCargo.get(i);
total+=cargo.getPriceVIP()*cargo.getNumber();
}
}
/*客户付帐成功,销售员点击“结帐”按钮后,运行setBest()函数,
*通过返回客户的值repay来计算返还的最佳组合,并显示到界面相应的位置处
*/
public void setBest(){
String bestCombination="";
int hundred=(int)repay/100;
if(hundred!=0)
bestCombination+=Integer.valueOf(hundred).toString()+"个100元 ";
double last100=repay%100;
int fifty=(int)last100/50;
if(fifty!=0)
bestCombination+=Integer.valueOf(fifty).toString()+"个50元 ";
double last50=last100%50;
int twenty=(int)last50/20;
if(twenty!=0)
bestCombination+=Integer.valueOf(twenty).toString()+"个20元 ";
double last20=last50%20;
int ten=(int)last20/10;
if(ten!=0)
bestCombination+=Integer.valueOf(ten).toString()+"个10元 ";
double last10=last20%10;
int five=(int)last10/5;
if(five!=0)
bestCombination+=Integer.valueOf(five).toString()+"个5元 ";
double last5=last10%5;
int two=(int)last5/2;
if(two!=0)
bestCombination+=Integer.valueOf(two).toString()+"个2元 ";
double last2=last5%2;
int one=(int)last2/1;
if(one!=0)
bestCombination+=Integer.valueOf(one).toString()+"个1元 ";
double last1=last2%1;
int fiveD=(int)(last1*10)/5;
if(fiveD!=0)
bestCombination+=Integer.valueOf(fiveD).toString()+"个5角 ";
int oneD=(int)((last1*10)%5)/1;
if(oneD!=0)
bestCombination=bestCombination+Integer.valueOf(oneD).toString()+"个1角 ";
jTextField3.setText(bestCombination);
}
/*销售员点击结帐按钮后,若结帐成功,将自动执行save()函数,帐单以文本形式(hh-mm-ss.txt)按路径:帐单/年/月/日 保存
*同时,本次交易的总额将增加到帐单/总销售量.txt,帐单/年/年销售量.txt,帐单/年/月/月销售量.txt中记录
*总销售额,年销售额,月销售额的数据中,若上述的路径有不存在的,将自行新建
*/
private void save(){
try
{
String date=DateFormat.getDateInstance().format(new Date());
StringTokenizer s=new StringTokenizer(date,"-");
String year=s.nextToken();
String month=s.nextToken();
String day=s.nextToken();
String time=DateFormat.getTimeInstance().format(new Date());
String fileName="帐单"+File.separator+year+File.separator+month+File.separator+day;
File f=new File(fileName);
f.mkdirs();
if(!(new File("帐单"+File.separator+year+File.separator+month+File.separator+"月销售量.txt")).exists()){
Writer writer=new FileWriter("帐单"+File.separator+year+File.separator+month+File.separator+"月销售量.txt");
PrintWriter print=new PrintWriter(writer);
print.print("");
}
if(!(new File("帐单"+File.separator+year+File.separator+"年销售量.txt")).exists()){
Writer writer=new FileWriter("帐单"+File.separator+year+File.separator+"年销售量.txt");
PrintWriter print=new PrintWriter(writer);
print.print("");
}
if(!(new File("帐单"+File.separator+"总销售量.txt")).exists()){
Writer writer=new FileWriter("帐单"+File.separator+"总销售量.txt");
PrintWriter print=new PrintWriter(writer);
print.print("");
}
Writer fw=new FileWriter(fileName+File.separator+time.replace(':','-')+".txt");
BufferedWriter bw=new BufferedWriter(fw);
PrintWriter pw=new PrintWriter(bw);
if(isVIP==true)
pw.println("会员结帐:"+(new DecimalFormat("##########.#")).format(total));
else
pw.println("普通结帐:"+(new DecimalFormat("##########.#")).format(total));
for(int i=0;i<consumerCargo.size();i++)
{
Cargo cargo=consumerCargo.get(i);
pw.println(cargo.getId()+" "+cargo.getName()+" "+cargo.getPriceNormal()+" "
+cargo.getPriceVIP()+" "+cargo.getNumber()+"个");
}
pw.close();
Reader fr1=new FileReader("帐单"+File.separator+year+File.separator+month+File.separator+"月销售量.txt");
BufferedReader br1=new BufferedReader(fr1);
String monthSub=br1.readLine();
double monthRead;
if(monthSub!=""&&monthSub!=null)
monthRead=Double.parseDouble(monthSub.substring(5));
else
monthRead=0;
Writer fw1=new FileWriter("帐单"+File.separator+year+File.separator+month+File.separator+"月销售量.txt");
BufferedWriter bw1=new BufferedWriter(fw1);
PrintWriter pw1=new PrintWriter(bw1);
pw1.println("月销售量:"+(new DecimalFormat("##########.#")).format(monthRead+total));
fr1.close();br1.close();pw1.close();
Reader fr2=new FileReader("帐单"+File.separator+year+File.separator+"年销售量.txt");
BufferedReader br2=new BufferedReader(fr2);
String yearSub=br2.readLine();
double yearRead;
if(yearSub!=""&&yearSub!=null)
yearRead=Double.parseDouble(yearSub.substring(5));
else
yearRead=0;
Writer fw2=new FileWriter("帐单"+File.separator+year+File.separator+"年销售量.txt");
BufferedWriter bw2=new BufferedWriter(fw2);
PrintWriter pw2=new PrintWriter(bw2);
pw2.println("年销售量:"+(new DecimalFormat("##########.#")).format(yearRead+total));
fr2.close();br2.close();pw2.close();
Reader fr3=new FileReader("帐单"+File.separator+"总销售量.txt");
BufferedReader br3=new BufferedReader(fr3);
String totalSub=br3.readLine();
double totalRead;
if(totalSub!=""&&totalSub!=null)
totalRead=Double.parseDouble(totalSub.substring(5));
else
totalRead=0;
Writer fw3=new FileWriter("帐单"+File.separator+"总销售量.txt");
BufferedWriter bw3=new BufferedWriter(fw3);
PrintWriter pw3=new PrintWriter(bw3);
pw3.println("总销售量:"+(new DecimalFormat("##########.#")).format(totalRead+total));
fr3.close();br3.close();pw3.close();
}
catch(IOException ie)
{
System.err.println(ie.getMessage());
}
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new MainFrame().setVisible(true);
}
});
}
// 变量声明 - 不进行修改//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
private javax.swing.JTextField jTextField5;
// 变量声明结束//GEN-END:variables
private CargoManagement marketCargo=new CargoManagement(); //新建一个管理超市货物的类
private ArrayList<Cargo> consumerCargo; //用作顾客的购物单
double total; //顾客应付的钱
double pay; //顾客付的钱
double repay=0; //销售员返还顾客的钱
boolean isVIP=false; //跟踪判断是否会员
boolean isChecked=false; //跟踪判断是否已结帐
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -