超市收银课程设计.docx
- 文档编号:9969098
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:28
- 大小:111.47KB
超市收银课程设计.docx
《超市收银课程设计.docx》由会员分享,可在线阅读,更多相关《超市收银课程设计.docx(28页珍藏版)》请在冰点文库上搜索。
超市收银课程设计
目录
1设计时间3
2设计目的3
3设计任务3
3.1任务说明3
3.2系统目标3
3.3使用范围3
4设计内容3
4.1界面构建3
4.2详细设计3
4.2.1模块设计4
4.2.2运行调试4
4.2.3部分源程序8
5总结与展望28
参考文献29
成绩评定29
1设计时间
2011年6月11日-2011年6月15日
2设计目的
通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。
3设计任务
3.1任务说明
设计出一个超市收银程序
(1)使用图形用户界面实现。
信息返回给收银台,计算出该顾客所购商品的总价格。
(3)每天营业结束把该收银台的销售总额进行统计汇总(要求包括商品种类、数量、销售总额、结账人次等信息,其余可自行丰富)并存储在数据库中。
(4)所有持卡顾客的消费商品情况存储到文件以供查询。
(5)对没有卡的消费情况不记录该顾客的消费情况等个人信息。
如果一个未持卡顾客一次购物满200元,结完账后系统提示可为其发放一张会员卡
3.2系统目标
该软件开发的用途是用来方便超市的收银管理,提高办事效率。
3.3使用范围
本程序用于超市对会员和非会员的销售管理
4设计内容
4.1界面构建
为了便于各种操作,软件采用多窗口的模式。
用户可在不同窗口进行相应操作。
4.2详细设计
4.2.1模块设计
4.2.2运行调试
图1登录界面
图2操作界面
图3.1修改数量
图3.2填入要修改数量的商品号
图3.3输入新数量
图4.1普通结算
图4.2会员结算
图5销售情况
图6系统时间
4.2.3部分源程序
登录
importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.BufferedReader;importjava.io.FileReader;importjava.io.IOException;importjava.util.StringTokenizer;importjavax.swing.*;publicclassland{publicstaticvoidmain(String[]args){landframeframe=newlandframe();frame.setTitle("收营员登陆");frame.setLocation(300,300);frame.setSize(270,170);frame.setVisible(true);}}classlandframeextendsJDialogimplementsActionListener{publiclandframe(){label1=newJLabel("JAVA超市收营系统请登陆");label2=newJLabel("用户名:
");label3=newJLabel("密码:
");hbox1=Box.createHorizontalBox();hbox2=Box.createHorizontalBox();vbox=Box.createVerticalBox();jf1=newJTextField();JPF=newJPasswordField();JPF.addActionListener(this);land=newJButton("登陆");land.addActionListener(this);panel1=newJPanel();panel2=newJPanel();hbox1.add(label2);hbox1.add(Box.createHorizontalStrut(5));hbox1.add(jf1);hbox2.add(label3);hbox2.add(Box.createHorizontalStrut(18));panel2.add(land,"Center");hbox2.add(JPF);vbox.add(label1);vbox.add(Box.createVerticalStrut(10));vbox.add(hbox1);vbox.add(Box.createVerticalStrut(10));vbox.add(hbox2);vbox.add(Box.createVerticalStrut(10));vbox.add(panel2);panel1.add(vbox);getContentPane().add(panel1,"Center");}publicvoidactionPerformed(ActionEventevt){Objectsource=evt.getSource();if(source==land||source==JPF){//登陆按纽及第二个文本输入框ENTER功能实现Stringa="",b,read;booleandenglusuccees=false;try{FileReaderfr=newFileReader("denglu.txt");BufferedReaderbr=newBufferedReader(fr);while((read=br.readLine())!
=null){StringTokenizersto=newStringTokenizer(read);a=sto.nextToken();b=sto.nextToken();if(jf1.getText().equals(a)&&JPF.getText().equals(b)){denglusuccees=true;break;}}//验证登陆员号码及密码}catch(IOExceptionie){System.err.println(ie.getMessage());}if(denglusuccees==true){setVisible(false);mainviewmw=newmainview();mw.setTitle(a+"为您服务");mw.setSize(850,500);mw.setLocation(200,180);mw.setVisible(true);}else{jf1.setText("");JPF.setText("");JOptionPane.showMessageDialog(null,"非法用户");}}}privateJLabellabel1,label2,label3;privateBoxhbox1,hbox2,vbox;privateJTextFieldjf1;privateJPasswordFieldJPF;privateJButtonland;privateJPanelpanel1,panel2;}
物价计算
publicclassdraw{
doublea;
doubleb;
Stringc;
publicdraw(doublefnum,doubleall,Stringinformation){//构造函数
a=fnum;//获得指定商品当销售额
b=all;//获得当天总销售额
c=information;//获得指定商品的编号
DrawJDialogframe=newDrawJDialog();
frame.setSize(400,300);
frame.setLocation(400,300);
frame.setVisible(true);
}
classDrawJDialogextendsJDialogimplementsActionListener//界面及功能实现
{
JButtonshut;
{
JTextAreaone=newJTextArea();
DrawPanelpanel=newDrawPanel();
shut=newJButton("关闭");
shut.addActionListener(this);
doublerate=100*a/b;
DecimalFormatdf=newDecimalFormat("########.00");
rate=Double.parseDouble(df.format(rate));//格式化小数显示
one.setText(""+c+"\n"+"占今天销售额"+rate+"%");
panel.add(one);
panel.add(shut);
ContainercontentPane=getContentPane();
contentPane.add(panel);
setTitle("销售情况");
}
publicvoidactionPerformed(ActionEventevt){
Objectsource=evt.getSource();
setVisible(false);
}
}
classDrawPanelextendsJPanel//画饼图
{
publicvoidpaintComponent(Graphicsg){
g.clearRect(30,40,150,150);
doublex1=a;
doublex2=b;
intangle;
super.paintComponent(g);
angle=(int)(360*x1/x2);
g.setColor(Color.blue);
g.drawArc(30,100,150,150,0,angle);
g.fillArc(30,100,150,150,0,angle);
g.setColor(Color.GREEN);
g.drawArc(30,100,150,150,0+angle,360-angle);
g.fillArc(30,100,150,150,0+angle,360-angle);
}
}
}
应用操作
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.awt.*;
importjava.io.BufferedReader;
importjava.io.FileReader;
importjava.io.IOException;
importjava.util.*;
classmainviewextendsJFrameimplementsActionListener
{
DataManagementmydata=newDataManagement();
sellcountmysell=newsellcount();
judgemyjudge=newjudge();
intdcount=1;
publicmainview(){
changeButton1=newJButton("修改价格");
changeButton1.addActionListener(this);
changeButton1.setEnabled(false);
changeButton2=newJButton("修改数量");
changeButton2.addActionListener(this);
changeButton2.setEnabled(false);
deleteButton=newJButton("删除商品");
deleteButton.addActionListener(this);
deleteButton.setEnabled(false);
finishButton=newJButton("完成结算");
finishButton.addActionListener(this);
finishButton.setEnabled(false);
cheapButton=newJButton("会员结算");
cheapButton.addActionListener(this);
cheapButton.setEnabled(false);
recordButton=newJButton("记录清单");
recordButton.addActionListener(this);
recordButton.setEnabled(false);
moneyButton=newJButton("找零计算");
moneyButton.addActionListener(this);
moneyButton.setEnabled(false);
clearButton=newJButton("清除清单");
clearButton.addActionListener(this);
textAll=newJTextField(0);
textAll.setEditable(false);
textAll.setBorder(BorderFactory.createEtchedBorder());
textChange=newJTextArea(7,0);
textChange.setEditable(false);
textChange.setBorder(BorderFactory.createEtchedBorder());
hbox2=Box.createHorizontalBox();
vbox2=Box.createVerticalBox();
vbox2.add(Box.createVerticalStrut(9));
vbox2.add(changeButton1);
vbox2.add(Box.createVerticalStrut(9));
vbox2.add(changeButton2);
vbox2.add(Box.createVerticalStrut(9));
vbox2.add(deleteButton);
vbox2.add(Box.createVerticalStrut(9));
vbox2.add(finishButton);
vbox2.add(Box.createVerticalStrut(9));
vbox2.add(cheapButton);
vbox2.add(Box.createVerticalStrut(9));
vbox2.add(textAll);
vbox2.add(moneyButton);
vbox2.add(textChange);
vbox2.setBorder(BorderFactory.createEtchedBorder());
textArea=newJTextArea(24,37);
textArea.setMaximumSize(textArea.getPreferredSize());
textArea.setEditable(false);
scrollPane=newJScrollPane(textArea);
textAdd=newJTextField(20);
textAdd.addActionListener(this);
vbox1=Box.createVerticalBox();
hbox1=Box.createHorizontalBox();
label1=newJLabel("此处输入商品编号");
label2=newJLabel("商品信息显示:
");
drawButton=newJButton("单天商品销售情况");
drawButton.addActionListener(this);
vbox1.add(label1);
vbox1.add(textAdd);
hbox1.add(label2);
hbox1.add(drawButton);
vbox1.add(hbox1);
vbox1.add(scrollPane);
vbox1.setBorder(BorderFactory.createLoweredBevelBorder());
vbox3=Box.createVerticalBox();
hbox3=Box.createHorizontalBox();
label3=newJLabel("最终清单");
label4=newJLabel("版权所属");
label4.setBorder(BorderFactory.createEtchedBorder());
textFinish=newJTextArea(24,30);
textFinish.setEditable(false);
textFinish.setBorder(BorderFactory.createEtchedBorder(Color.WHITE,
Color.BLACK));
hbox3.add(recordButton);
hbox3.add(Box.createHorizontalStrut(10));
hbox3.add(clearButton);
hbox3.add(Box.createHorizontalStrut(10));
hbox3.add(label4);
vbox3.add(newclock());
vbox3.add(label3);
hbox3.setBorder(BorderFactory.createEtchedBorder());
vbox3.add(textFinish);
vbox3.add(hbox3);
vbox3.setBorder(BorderFactory.createLoweredBevelBorder());
hbox2.add(vbox1);
hbox2.add(vbox2);
hbox2.add(vbox3);
getContentPane().add(hbox2);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
}
publicvoidactionPerformed(ActionEventevt){
Objectsource=evt.getSource();
if(source==textAdd){//商品添加
Stringlog=textAdd.getText();
StringTokenizersto=newStringTokenizer(log);
Stringdcode=sto.nextToken();
booleaninputwrite=true;
intdnum=1;
if(sto.hasMoreTokens())
try{
inttempnum=Integer.parseInt(sto.nextToken());
if(tempnum>0){dnum=Integer.parseInt(sto.nextToken());}
elseinputwrite=false;
}catch(NumberFormatExceptione){
JOptionPane.showMessageDialog(null,"请输入数字");
inputwrite=false;
}
if(inputwrite==true){
if(myjudge.find(dcode)==-1){
Stringwrong="Can'tfind"+dcode;
JOptionPane.showMessageDialog(null,wrong);
textAdd.setText("");
}else{
intlocation=myjudge.find(dcode);
Stringdname=myjudge.judgeData[location].getName();
doubledprice=myjudge.judgeData[location].getPrice();
mydata.add(dcode,dname,dprice,dnum);
textArea.setText("");
for(inti=0;i textArea.insert("商品"+(i+1)+"编号: " +mydata.productData[i].getCode()+"商品名称: " +mydata.productData[i].getName()+"商品价格: " +mydata.productData[i].getPrice()+"元/单位" +mydata.productData[i].getNum()+"个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 收银 课程设计