Java项目之超市收银系统分析-1
基于JAVA的C丨S架构超市收银系统
![基于JAVA的C丨S架构超市收银系统](https://img.taocdn.com/s3/m/85d1e04bbe1e650e52ea99da.png)
注:运行需要两台电脑处于同一局域网内南京信息工程大学实验(实习)报告实验(实习)名称需求分析实验(实习)日期 2013.11.30 得分指导教师李振宏专业软件工程年级三班次 1 姓名王琢学号 28 一、实验目的1.通过对超市收银系统的相关需求的分析,掌握需求分析的方法和过程;2.掌握需求分析相关文档的组织规范;3. 完成一个小型超市收银系统的需求分析。
4. 本系统的需求分析,总体设计以及详细设计编码,均由王琢本人独立完成。
二、实验准备1.熟悉需求分析的方法和过程。
2.对超市收货系统的应用领域进行调查与分析。
三、实验要求完成超市收银系统的需求分析,提交实验报告四、实验内容:1.项目背景通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。
具体如下:1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编码和测试方面的知识;2.熟悉自动化的软件开发工具eclipse,并将其运用于软件开发的过程中去;3.进一步加强和提高软件工程文档的编写能力。
2.任务概述2.1产品的描述本系统目标是实现超市售货系统所需的各种基本功能,包括客户端和服务器两部分:客户端的主要功能在于通过接收一个七位的条形码数字信息,向服务器发出查询对应商品号的商品信息,然后接收由服务器传回的数据包并解码显示在界面上为一条商品信息,当所有商品扫描完成以后,将商品信息统一打包向服务器发出结算请求,当商品总价值超过两百元是还提供办理会员的服务,对于已经是会员的顾客将享有9折的购物折扣。
服务器的主要功能是接收客户端传送来的请求,并与数据库直接相连,操作数据库取出或修改所需数据,然后将结果发送回客户端,并且能够实时显示数据库以及自身的运行状态。
2.2用户的特点本系统用户分为两部分,其一是客户端用户,主要是超市的售货员对于客户端软件的使用,没有技术上的要求;其二是服务器端技术人员,负责对服务器进行适当的维护,需要一定的计算机基础。
java课程设计超市收银系统
![java课程设计超市收银系统](https://img.taocdn.com/s3/m/6a672782a48da0116c175f0e7cd184254b351bf1.png)
java课程设计 超市收银系统一、课程目标知识目标:1. 掌握Java面向对象编程的基本概念,包括类、对象、继承、封装和多态;2. 学会使用Java集合框架,如List、Map等,存储和管理超市商品数据;3. 理解异常处理机制,能够处理程序运行中可能出现的异常;4. 了解文件操作,实现对超市收银数据的持久化存储。
技能目标:1. 能够设计出结构合理的类和对象,建立超市收银系统的基本模型;2. 掌握使用集合框架对商品数据进行有效管理的方法;3. 学会编写异常处理代码,提高程序的健壮性;4. 通过文件操作,实现超市收银数据的存储和读取。
情感态度价值观目标:1. 培养学生的编程兴趣,激发他们学习Java的热情;2. 培养学生面对问题积极思考、分析问题、解决问题的能力;3. 增强学生的团队协作意识,培养他们在团队项目中分工合作、共同进步的精神;4. 引导学生关注信息技术在实际生活中的应用,认识到编程对生活的影响。
本课程针对高中年级学生,他们在之前的学习中已经具备了一定的Java基础,能够理解面向对象编程的基本概念。
通过本课程的学习,使学生能够将所学的Java知识应用于实际项目中,提高他们解决实际问题的能力。
在教学过程中,注重理论与实践相结合,鼓励学生动手实践,培养他们的编程兴趣和团队协作能力。
课程目标的设定旨在使学生在掌握Java编程技能的同时,提升他们的情感态度价值观。
二、教学内容1. 面向对象编程基础:- 类的定义与使用- 对象的创建与访问- 封装、继承和多态的概念与应用- 课本章节:第三章 面向对象编程基础2. Java集合框架:- List、Set、Map接口及其实现类的使用- 集合框架在超市收银系统中的应用- 课本章节:第五章 Java集合框架3. 异常处理:- 异常的概念与分类- try-catch-finally结构的使用- 自定义异常的创建与抛出- 课本章节:第七章 异常处理4. 文件操作:- File类的基本操作- 输入输出流的使用- 对象序列化与反序列化- 课本章节:第八章 文件与输入输出5. 超市收银系统设计与实现:- 系统需求分析- 类的设计与实现- 数据存储与读取- 系统测试与优化- 课本章节:项目实战教学内容安排与进度:第一周:面向对象编程基础,完成类的定义与使用学习;第二周:面向对象编程进阶,学习对象创建、封装、继承和多态;第三周:Java集合框架学习,掌握List、Set、Map的使用;第四周:异常处理学习,了解异常分类及处理方法;第五周:文件操作学习,掌握文件读写及对象序列化;第六周:项目实战,设计并实现超市收银系统;第七周:系统测试与优化,完善项目功能。
超市收银系统(Java语言实现)
![超市收银系统(Java语言实现)](https://img.taocdn.com/s3/m/87410015ba1aa8114431d9ab.png)
if(e.getSource()==member) { rightPanelSon.removeAll();//事先先移除 rightPanelSon 中的所有的组件 this.paintAll(getGraphics());//相当于重画的功能,此部骤相当重要 rightPanelSon.setLayout(new FlowLayout()); rightPanelSon.add(new JPanel()); rightPanelSon.add(new JPanel()); final JTextArea goodsInfo=new JTextArea();//显示商品信息 rightPanelSon.add(goodsInfo); goodsInfo.setEditable(false);//不可编辑 goodsInfo.setText(good.toString()); String id=JOptionPane.showInputDialog("请输入会员卡卡号:"); try { number=Long.parseLong(id); } catch(NumberFormatException e1){ JOptionPane.showMessageDialog(null, "输入格式有误!"); return; } final HashMap<ClubCard,Customer> c1=SystemWindow.getHashMap(); if(c1==null) { JOptionPane.showMessageDialog(null, " 会 员 信 息 不 存 在 !",null, JOptionPane.WARNING_MESSAGE); return;} else { int flag=0; Customer customer1=null; ClubCard card2 = null; for(ClubCard card:c1.keySet()) { if(number.equals(card.getId())) { JTextArea area=new JTextArea(); rightPanelSon.add(area); area.setText(c1.get(card).toString());//输出顾客信息 customer1=c1.get(card);
java课程设计超市收银系统
![java课程设计超市收银系统](https://img.taocdn.com/s3/m/4ca396d26429647d27284b73f242336c1fb93051.png)
java课程设计超市收银系统一、课程目标知识目标:1. 让学生掌握Java语言面向对象编程的基本概念,包括类、对象、继承、封装等;2. 使学生了解超市收银系统的业务流程,理解数据存储、处理和界面设计的相关知识;3. 帮助学生掌握Java集合框架、异常处理、文件操作等基本技能。
技能目标:1. 培养学生运用Java语言设计并实现超市收银系统的能力;2. 提高学生分析问题、解决问题的能力,使其能够根据实际需求进行系统设计;3. 培养学生团队协作、沟通交流的能力,以便在项目开发过程中更好地与他人合作。
情感态度价值观目标:1. 激发学生对编程的兴趣,培养其主动学习和探究的精神;2. 培养学生具备良好的编程习惯,注重代码规范和优化;3. 增强学生的实际操作能力,使其认识到理论知识与实践相结合的重要性;4. 培养学生的创新意识,鼓励他们在项目设计中提出新思路、新方法。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立完成Java面向对象编程的基础知识学习,并通过相关练习巩固;2. 学生能够根据超市收银系统的实际需求,设计合理的类和对象,完成系统架构;3. 学生能够运用所学知识,实现超市收银系统的功能模块,如商品管理、购物车、结账等;4. 学生能够针对项目进行调试和优化,确保系统的稳定性和性能;5. 学生在项目开发过程中,能够与团队成员保持良好的沟通与协作,共同完成项目任务。
二、教学内容根据课程目标,教学内容主要包括以下几部分:1. Java面向对象编程基础:- 类与对象- 继承与多态- 封装与抽象- 接口与实现2. 超市收银系统业务流程分析:- 系统需求分析- 数据存储设计- 功能模块划分3. Java核心技术应用:- Java集合框架- 异常处理- 文件操作- 图形用户界面设计4. 项目实践:- 商品管理模块- 购物车模块- 结账模块- 系统测试与优化教学大纲安排如下:1. 第1周:Java面向对象编程基础,完成相关练习;2. 第2周:分析超市收银系统业务流程,进行系统设计;3. 第3周:学习Java核心技术应用,为项目实践打下基础;4. 第4-6周:分组进行项目实践,完成各功能模块开发;5. 第7周:项目测试、优化与总结。
java超市收银系统课程设计
![java超市收银系统课程设计](https://img.taocdn.com/s3/m/c03f8e950408763231126edb6f1aff00bed570b5.png)
java超市收银系统课程设计一、课程目标知识目标:1. 理解Java面向对象编程的基本概念,掌握类和对象的定义、属性和方法的使用;2. 学会使用Java编写简单的超市收银系统,理解其业务流程;3. 掌握Java集合框架的使用,如List、Map等,实现商品信息和交易记录的存储与查询;4. 学会使用Java异常处理机制,增强程序的健壮性。
技能目标:1. 能够运用面向对象的思想分析并解决实际问题,具备一定的编程实践能力;2. 熟练使用Java编程工具,如Eclipse或IntelliJ IDEA,进行代码编写、调试和优化;3. 能够设计合理的类和接口,实现模块化编程,提高代码的可维护性;4. 学会运用常用的设计模式,如单例模式、工厂模式等,优化程序结构。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发主动学习和探究的精神;2. 培养学生的团队协作意识,学会与他人共同分析问题、解决问题;3. 培养学生严谨的编程态度,注重细节,追求程序的高效与稳定;4. 培养学生具备良好的信息素养,关注现实生活中计算机技术的应用与发展。
本课程针对高中年级学生,结合学科特点和教学要求,以实际应用为导向,注重理论与实践相结合。
通过本课程的学习,学生将能够掌握Java面向对象编程的基本知识,具备实际编程能力,并培养良好的情感态度价值观。
为实现课程目标,教学过程中将采用案例分析、项目驱动、分组讨论等多种教学方法,以提高学生的实践操作能力和团队协作能力。
同时,课程评估将关注学生在知识、技能和情感态度价值观方面的具体学习成果。
二、教学内容1. Java面向对象编程基础:复习类与对象的概念,构造方法,封装,继承和多态;- 教材章节:第三章《面向对象编程》- 内容:类的定义,对象的创建,访问控制符,继承,方法重写,多态。
2. Java集合框架:学习List、Map等集合接口及其实现类;- 教材章节:第五章《集合框架》- 内容:ArrayList,LinkedList,HashSet,TreeSet,HashMap,TreeMap 的基本使用。
java-超市收银系统
![java-超市收银系统](https://img.taocdn.com/s3/m/cdfb115fdd3383c4ba4cd28e.png)
package software; import java.awt.*;import java.awt.event.*;import javax.swing.*;class shangpin{String SId;String Smane;int jiage;public shangpin(String a,String b,int c){SId=a;Smane=b;jiage=c;}}class huiyuan{String HId;String Hname;public huiyuan(String a,String b){HId=a;Hname=b;}}public class chaoshi extends JFrame{static int key=0; //会员static int sum1=0; //总消费static int sum2=0; //当天合计static int huiyuansum=0; //会员人数static int Spinsum1=0; //商品1合计static int Spinsum2=0; //商品2合计static int Spinsum3=0; //商品3合计static int Spinsum4=0; //商品4合计static int Spinsum5=0; //商品5合计public static void main(String[] agrs){JFrame frame =new JFrame("超市");frame.setSize(400,250);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Container c=frame.getContentPane();c.add(pan());frame.setVisible(true);}static JPanel pan (){JPanel panel=new JPanel();JPanel part1=new JPanel();part1.add(new JLabel("会员卡号:"));final JTextField text1=new JTextField();text1.setHorizontalAlignment(JTextField.RIGHT);text1.setColumns(11);JButton button1=new JButton("确定");part1.add(text1); part1.add(button1);part1.setVisible(true);final JLabel JLabel00 =new JLabel("非会员");part1.add(JLabel00); panel.add(part1);JPanel part2=new JPanel();part2.add(new JLabel("商品代号:"));final JTextField text2=new JTextField();text2.setHorizontalAlignment(JTextField.RIGHT);text2.setColumns(15);JButton button2=new JButton("确定");part2.add(text2); part2.add(button2);panel.add(part2);JPanel part3=new JPanel();final JLabel JLabel0=new JLabel(" ");final JLabel JLabel1=new JLabel("000");final JLabel JLabel2=new JLabel("0000");part3.add(new JLabel("商品名")); part3.add(JLabel0);part3.add(new JLabel("商品价格")); part3.add(JLabel1);part3.add(new JLabel("元"));part3.add(new JLabel("总价格")); part3.add(JLabel2);part3.add(new JLabel("元"));part3.add(new JLabel(" ")); panel.add(part3);JPanel part4=new JPanel();JButton button3=new JButton("结账");JButton button4=new JButton("总汇"); part4.add(button3);part4.add(new JLabel(" "));part4.add(button4); panel.add(part4);button1.addActionListener(new ActionListener(){huiyuan huiyuan1=new huiyuan("00001","会员甲");huiyuan huiyuan2=new huiyuan("00002","会员乙");huiyuan huiyuan3=new huiyuan("00003","会员丙");public void actionPerformed(ActionEvent e){String kahao=text1.getText();if(kahao.equals(huiyuan1.HId)) {JLabel00.setText(huiyuan1.Hname); key=1;};if(kahao.equals(huiyuan2.HId)) {JLabel00.setText(huiyuan2.Hname); key=1;};if(kahao.equals(huiyuan3.HId)) {JLabel00.setText(huiyuan3.Hname); key=1;};}});button2.addActionListener(new ActionListener(){shangpin shangpin1=new shangpin("001","商品1",10);shangpin shangpin2=new shangpin("002","商品2",11);shangpin shangpin3=new shangpin("003","商品3",12);shangpin shangpin4=new shangpin("004","商品4",13);shangpin shangpin5=new shangpin("005","商品5",14); public void actionPerformed(ActionEvent e){String shangpinhao=text2.getText();if(shangpinhao.equals(shangpin1.SId)) {JLabel0.setText(" "+shangpin1.Smane);String str = String.format("%04d",shangpin1.jiage);JLabel1.setText(str);sum1=sum1+shangpin1.jiage;sum2=sum2+shangpin1.jiage;String str1 = String.format("%04d",sum1);JLabel2.setText(str1); Spinsum1++;};if(shangpinhao.equals(shangpin2.SId)) {JLabel0.setText(" "+shangpin2.Smane);String str = String.format("%04d",shangpin2.jiage);JLabel1.setText(str);sum1=sum1+shangpin2.jiage;sum2=sum2+shangpin2.jiage;String str1 = String.format("%04d",sum1);JLabel2.setText(str1); Spinsum2++;};if(shangpinhao.equals(shangpin3.SId)) {JLabel0.setText(" "+shangpin3.Smane);String str = String.format("%04d",shangpin3.jiage);JLabel1.setText(str);sum1=sum1+shangpin3.jiage;sum2=sum2+shangpin3.jiage;String str1 = String.format("%04d",sum1);JLabel2.setText(str1); Spinsum3++;};if(shangpinhao.equals(shangpin4.SId)) {JLabel0.setText(" "+shangpin4.Smane);String str = String.format("%04d",shangpin4.jiage);JLabel1.setText(str);sum1=sum1+shangpin4.jiage;sum2=sum2+shangpin4.jiage;String str1 = String.format("%04d",sum1);JLabel2.setText(str1); Spinsum4++;};if(shangpinhao.equals(shangpin5.SId)) {JLabel0.setText(" "+shangpin5.Smane);String str = String.format("%04d",shangpin5.jiage);JLabel1.setText(str);sum1=sum1+shangpin5.jiage;sum2=sum2+shangpin5.jiage;String str1 = String.format("%04d",sum1);JLabel2.setText(str1); Spinsum5++;};}});button3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){if(sum1!=0) huiyuansum++;JDialog duox=new JDialog(); JPanel duoxP=new JPanel();duox.getContentPane().add(duoxP);duox.setTitle("消费总额"); duoxP.setVisible(true);duoxP.setLayout(new GridLayout(4,1,0,0));duox.setSize(200,300); duox.setVisible(true);JPanel panel1=new JPanel(); JPanel part11=new JPanel();JPanel part12=new JPanel();String str1 = String.format("%04d",sum1);JLabel Label11=new JLabel(str1); Label11.setText(str1);part11.add(new JLabel("消费总额:"));part11.add(Label11);if((key!=1)&&sum1>=200) {part12.add(new JLabel("消费达200元发放一张会员卡"));panel1.add(part12);}panel1.add(part11); duoxP.add(panel1);key=0; sum1=0;JLabel0.setText(" "); JLabel1.setText("000");JLabel2.setText("0000"); JLabel00.setText("非会员");text1.setText(""); text2.setText("");}});button4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JDialog duox=new JDialog(); JPanel duoxP=new JPanel();duox.getContentPane().add(duoxP); duox.setTitle("消费总额");duoxP.setVisible(true);duoxP.setLayout(new GridLayout(8,1,0,0));duox.setSize(200,400); duox.setVisible(true);JPanel part21=new JPanel();JPanel part22=new JPanel();JPanel part23=new JPanel();JPanel part24=new JPanel();JPanel part25=new JPanel();JPanel part26=new JPanel();JPanel part27=new JPanel();JButton button5=new JButton("全部清零");final JLabel label21=new JLabel();part21.add(new JLabel("总消费额"));String str21 = String.format("%04d",sum2);label21.setText(str21); part21.add(label21);final JLabel label22=new JLabel();part22.add(new JLabel("商品1消费量"));String str22 = String.format("%04d",Spinsum1);label22.setText(str22); part22.add(label22);final JLabel label23=new JLabel();part23.add(new JLabel("商品2消费量"));String str23 = String.format("%04d",Spinsum2);label23.setText(str23); part23.add(label23);final JLabel label24=new JLabel();part24.add(new JLabel("商品3消费量"));String str24 = String.format("%04d",Spinsum3);label24.setText(str24); part24.add(label24);final JLabel label25=new JLabel();part25.add(new JLabel("商品4消费量"));String str25 = String.format("%04d",Spinsum4);label25.setText(str25); part25.add(label25);final JLabel label26=new JLabel();part26.add(new JLabel("商品5消费量"));String str26 = String.format("%04d",Spinsum5);label26.setText(str26); part26.add(label26);final JLabel label27=new JLabel();part27.add(new JLabel("消费人次"));String str27 = String.format("%04d",huiyuansum);label27.setText(str27); part27.add(label27);button5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){sum2=0; Spinsum1=0; Spinsum2=0; Spinsum3=0;Spinsum4=0; Spinsum5=0; huiyuansum=0;label21.setText("0000");label22.setText("0000");label23.setText("0000");label24.setText("0000");label25.setText("0000");label26.setText("0000");label27.setText("0000");}});duoxP.add(part21);duoxP.add(part22);duoxP.add(part23);duoxP.add(part24);duoxP.add(part25);duoxP.add(part26); duoxP.add(part27);duoxP.add(button5);}});return panel;}}。
Java第七组综合项目-超市管理系统实验报告
![Java第七组综合项目-超市管理系统实验报告](https://img.taocdn.com/s3/m/cd2f70d688eb172ded630b1c59eef8c75fbf9546.png)
Java第七组综合项⽬-超市管理系统实验报告Tianjin TianShi CollegeJava课程设计(综合项⽬⽂档)院别:专业:年级班级:学⽣姓名:指导⽼师:完成⽇期:超市管理系统院别:专业:年级班级:学⽣姓名:指导⽼师:完成⽇期:院别:专业:年级班级:学⽣姓名:指导⽼师:完成⽇期:院别:专业:年级班级:学⽣姓名:指导⽼师:完成⽇期:院别:专业:年级班级:学⽣姓名:指导⽼师:完成⽇期:院别:信息科学与⼯程学院专业:计算机科学与技术班级: 2019级计科3班学⽣姓名:刘宇杰陶然覃世煜指导⽼师:李⼩红⼆〇⼆⼀年七⽉⽬录1 绪论 (1)1.1 项⽬概述 (1)1.2 项⽬意义 (1)2 开发⼯具和相关技术简介 (2)2.1 Eclipse简介 (2)2.2 Java语⾔介绍 (2)2.3 MySQL简介 (2)2.4 JDBC技术简介 (3)3 系统需求分析 (4)3.1 系统可⾏性分析 (4)3.2 系统需求分析 (4)3.3 组内成员分⼯ (4)3.4 项⽬进度安排 (5)4 系统设计 (6)4.1 系统设计 (6)4.2 数据库设计 (6)5 系统实现 (8)5.1 管理员登录界⾯实现 (8)5.2 管理⽤户信息界⾯实现 (8)6 系统测试 (10)7 结论和⼼得 (11)1 绪论1.1 项⽬概述本项⽬主要实现⼀个超市管理系统,本系统具有⼀个⽤户注册和登录的实现功能,并具有物品增删查改功能和⼀个⽇志功能。
1.2 项⽬意义本项⽬主要意义是实现信息管理化统⼀收集,项⽬界⾯整洁,具有多种功能,与⽤户进⾏交互都⼗分简洁⽅便,占⽤内存低,对硬件要求极低。
2 开发⼯具和相关技术简介本项⽬是超市管理系统。
开发环境:Eclipse;开发语⾔:Java语⾔;开发技术:JDBC等。
本章将对开发⼯具和相关技术进⾏简单介绍。
2.1 Eclipse简介eclipse-galileoEclipse 是⼀个的、基于 Java 的可扩展。
java超市管理系统课程设计分析报告
![java超市管理系统课程设计分析报告](https://img.taocdn.com/s3/m/19eeba45a8114431b80dd844.png)
java超市管理系统课程设计报告————————————————————————————————作者:————————————————————————————————日期:湖南文理学院课程设计题目:超市管理系统系别计算机科学与技术班级计科12102学生姓名罗巍杨欢杨沁铠唐振学号 201217010223指导教师谭文学课程设计进行地点:第三实验楼A617任务下达时间: 2014 年5月21日起止日期:2014年5月21日起——至 2014年6月21日止摘要随着小型超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长,传统的人工记忆方式也慢慢的无法适应形势的变化。
随着信息技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社会发展的技术动力。
而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。
软件产业已成为社会信息化进程中的一个战略性产业。
在软件技术的应用中软件的开发技术尤其是应用型软件产品的开发技术成了重中之重。
不断开发适应用户需求、市场需要的新型软件产品。
随着社会的发展,软件也在不断的更新换代。
由于有些超市里对商品的进货、售出及商品的基本信息等的一些繁琐处理都是通过手工进行记载并进行处理的,对商品信息的处理工作量特别大,不仅浪费大量的人力物力,而且还很容易出错,更重要的是为了方便顾客,超市需要时时刻刻对商品对各种信息进行统计分析。
一直以来人们使用传统人工的方式管理超市的各项工作, 这种管理方式存在着许多缺点, 如: 效率低、保密性差, 另外时间一长, 将产生大量的冗余文件和数据, 这给查找、统计、更新和维护工作都带来了很大的困难。
然而大型的超市管理系统功能过于强大而造成操作繁琐降低了小超市的工作效率。
如果有这样一套完整的小型超市管理系统软件,只需点击几下鼠标就可完成所需操作,那样就会大大的提高超市员工的工作效率和管理水平,并能进一步提高超市的工作效率并使超市实施规范化管理。
学士后java第一单元超市收银系统
![学士后java第一单元超市收银系统](https://img.taocdn.com/s3/m/d298223dc1c708a1294a44ed.png)
版权所有人:李蒙学士后java 第一单元,超市收银系统,代码首先分为4个包9个类一个源文件源文件内容:HOST= localhostPORT=8888Clientjiemian类的内容: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 ;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;} elseSystem.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("2021")) {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 gpin().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"+ "["et(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 卡号:2021");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;} elsereturn 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 =newObjectInputStream(socket.getInputStream());objectOutputStream=newObjectOutputStream(socket.getOutputStream());} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public void closeSocket(){//关闭socket关联对象try {objectInputStream.close();objectOutputStream.close();socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public Datas doLogin(String acountNumber,String password){//登陆方法:通过Socket调用效劳器的登陆效劳try {initSocket();Yuangong yuangong=new Yuangong();yuangong.setName(acountNumber);yuangong.setPassword(password);//设置Datas参数属性Datas datas =new Datas();datas.setYuangong(yuangong);datas.setFlag(SysConstants.SYS_LOGIN);//读和写objectOutputStream.writeObject(datas);d atas=( Datas)objectInputStream.readObject();return datas;} catch (IOException e) {// TODO Auto-generated catch blockce();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {closeSocket();}return null;}//增加库存public Datas doRuku(String serialNumber, int stock) { initSocket();Datas datas = new Datas();Shangpin shangpin = new Shangpin();shangpin.setSerialNumber(serialNumber);shangpin.setStock(stock);datas.setShangpin(shangpin);datas.setFlag(SysConstants.SYS_RUKU);objectOutputStream.writeObject(datas);d atas=( Datas)objectInputStream.readObject();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blockrace();} finally {closeSocket();}return datas;}//减少库存public Datas doChuku(String serialNumber, int stock) { initSocket();Datas datas = new Datas();Shangpin shangpin = new Shangpin();shangpin.setSerialNumber(serialNumber);shangpin.setStock(stock);datas.setShangpin(shangpin);datas.setFlag(SysConstants.SYS_RUKU);try {objectOutputStream.writeObject(datas);d atas=( Datas)objectInputStream.readObject();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {closeSocket();}return datas;}//添加新商品功能public Datas doAdd(Shangpin shangpin){initSocket();Datas datas = new Datas();datas.setFlag(SysConstants.SYS_ADD);datas.setShangpin(shangpin);//读和写objectOutputStream.writeObject(datas);datas=( Datas)objectInputStream.readObject();}catch (ClassNotFoundException e) {e.printStackTrace();}catch (IOException e) {e.printStackTrace();}finally{closeSocket();}return null;}//查询商品方法public Datas doFind(String serialNumber) {initSocket();Shangpin shangpin = new Shangpin();shangpin.setSerialNumber(serialNumber);Datas datas = new Datas();datas.setShangpin(shangpin);datas.setFlag(SysConstants.SYS_FIND);try {objectOutputStream.writeObject(datas);datas=( Datas)objectInputStream.readObject();} catch (IOException e) {} catch (ClassNotFoundException e) {e.printStackTrace();} finally {closeSocket();}return datas;}//查看所有商品public Datas doFindAll() {initSocket();Datas datas = new Datas();datas.setFlag(SysConstants.SYS_FINDALL);try {objectOutputStream.writeObject(datas);datas=( Datas)objectInputStream.readObject();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {closeSocket();}return datas;}//扫描商品public Datas doScan(String serialNumber) {initSocket();Datas datas = new Datas();Shangpin shangpin = new Shangpin();shangpin.setSerialNumber(serialNumber);datas.setShangpin(shangpin);datas.setFlag(SysConstants.SYS_SCAN);try {objectOutputStream.writeObject(datas);datas=( Datas)objectInputStream.readObject();} catch (IOException e) {} catch (ClassNotFoundException e) {e.printStackTrace();} finally {closeSocket();}return datas;}//商品数量修改public Datas doUpDate(String serialNumber, int stock) { initSocket();Datas datas = new Datas();Shangpin shangpin= new Shangpin();shangpin.setSerialNumber(serialNumber);shangpin.setStock(stock);datas.setShangpin(shangpin);datas.setFlag(SysConstants.SYS_UPDATA);try {objectOutputStream.writeObject(datas);datas=( Datas)objectInputStream.readObject();} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {closeSocket();}return datas;}//商品结账public Datas doResult() {initSocket();Datas datas = new Datas();datas.setFlag(SysConstants.SYS_RESULT);try {objectOutputStream.writeObject(datas);datas=( Datas)objectInputStream.readObject();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {closeSocket();}return datas;}//商品清空public Datas doClear(){initSocket();Datas datas = new Datas();datas.setFlag(SysConstants.SYS_CLEAR);try {objectOutputStream.writeObject(datas);datas=( Datas)objectInputStream.readObject();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {closeSocket();}return datas;}}Shangpin类的内容import java.io.Serializable;public class Shangpin implements Serializable {//名称private String name;//编号private String serialNumber;//价格private double price;//库存private int stock;//单位private String unit;public Shangpin(){}public Shangpin(String _serialNumber,String _name,double _price,String _unit,int _stock){=_name;this.serialNumber=_serialNumber;this.price= _price;this.stock=_stock;this.unit=_unit;}public String getUnit() {return unit;}public void setUnit(String unit) {this.unit = unit;}public String getName() {return name;}public void setName(String name) { = name;}public String getSerialNumber() {return serialNumber;}public void setSerialNumber(String serialNumber2) { this.serialNumber = serialNumber2;}public double getPrice() {return price;}public void setPrice(double d) {if (d>0){this.price = d;}else {System.out.println("输入不合法,请重新输入");}}public int getStock() {return stock;}public void setStock(int stock) {this.stock = stock;}}Yuangong类的内容import java.io.Serializable;public class Yuangong implements Serializable{//账号private String name;//密码private String password;public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Yuangong(){}public Yuangong(String _acountNumber,String _password){ =_acountNumber;this.password=_password;}}Datas类的内容import java.io.Serializable;import java.util.ArrayList;import datas.Shangpin;import datas.Yuangong;public class Datas implements Serializable{//传递标示private String flag;private Shangpin shangpin;private Yuangong yuangong;private ArrayList<Shangpin> sumArray;private ArrayList<Shangpin> buyArray;public ArrayList<Shangpin> getSumArray() {return sumArray;}public void setSumArray(ArrayList<Shangpin> sumArray) { this.sumArray = sumArray;}public ArrayList<Shangpin> getBuyArray() {return buyArray;}public void setBuyArray(ArrayList<Shangpin> buyArray) { this.buyArray = buyArray;}public String getFlag() {return flag;}public void setFlag(String flag) {this.flag = flag;}public Shangpin getShangpin() {return shangpin;}public void setShangpin(Shangpin shangpin) {this.shangpin = shangpin;}public Yuangong getYuangong() {return yuangong;}public void setYuangong(Yuangong yuangong) {this.yuangong = yuangong;}}SysConstants类的内容public class SysConstants {public static final String SYS_PROPERTYNAME ="sys.properties"; public static final String SYS_LISTENERPORT ="PORT";public static final String SYS_HOSTNAME ="HOST";public static final String SYS_SUCCESS ="SUCCESS";public static final String SYS_ERROR ="ERROR";public static final String SYS_LOGIN ="LOGIN";//添加一个管理员常量public static final String SYS_ADMIN="ADMIN";//添加一个收银常量public static final String SYS_USER = "USER";;//查询商品public static final String SYS_FIND ="FIND";//查询所有public static final String SYS_FINDALL ="FINDALL"; //添加一个入库常量public static final String SYS_RUKU ="RUKU";//添加一个出库常量public static final String SYS_CHUKU ="CHUKU";//添加一个添加常量public static final String SYS_ADD="ADD";//商品扫描public static final String SYS_SCAN="SCAN";//修改商品数量public static final String SYS_UPDATA="UPDATA";//删除商品public static final String SYS_DELETE ="DELETE";//商品结账public static final String SYS_RESULT = "RESULL"; //商品清空public static final String SYS_CLEAR = "CLEAR"; public static final String SYS_LACK = "LACK";}Tools类的内容import java.io.IOException;import java.util.Properties;public class Tools {private static Properties p= new Properties(); //读取properties配置文件信息static {//加载资源文件try {p.load(Tools.class.getClassLoader().getResourceAsStream(SysConsta nts.SYS_PROPERTYNAME));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//通过关键字取值public static String getVlaue(String key){return p.getProperty(key);}}Serverservice类的内容import java.util.ArrayList;import ;import ;import publiClass.Datas;import publiClass.SysConstants;import datas.Shangpin;import datas.Yuangong;public class Serversevice {private static Yuangong user;private static Yuangong admin;private static ArrayList<Shangpin> sumlist = newArrayList<Shangpin>();private static ArrayList<Shangpin> buylist = newArrayList<Shangpin>();//初始化员工和商品对象集合static {user = new Yuangong("user", "1234");admin = new Yuangong("admin", "1234");sumlist.add(new Shangpin("10001","苹果",4.5,"1kg",100));sumlist.add(new Shangpin("10002","桃子",2.98,"1kg",100));sumlist.add(new Shangpin("10003","牛奶",4,"100ml",100));}// 用户登录public Datas login(Datas datas) {if(datas.getYuangong().getName().equals(admin.getName())&& datas.getYuangong().getPassword().equals(admin.getPassword()))datas.setFlag(SysConstants.SYS_ADMIN);else if(datas.getYuangong().getName().equals(user.getName())&&datas.getYuangong().getPassword().equals(user.getPassword()))datas.setFlag(SysConstants.SYS_USER);elsedatas.setFlag(SysConstants.SYS_ERROR);return datas;}// 商品入库public Datas up(Datas datas) {for (int i = 0; i < sumlist.size(); i++) {if(datas.getShangpin().getSerialNumber().equals(sumlist.get(i).getSeria lNumber())) {sumlist.get(i).setStock(sumlist.get(i).getStock() +datas.getShangpin().getStock());datas.setSumArray(sumlist);datas.setFlag(SysConstants.SYS_SUCCESS);return datas;}}datas.setFlag(SysConstants.SYS_ERROR);return datas;}// 商品出库public Datas down(Datas datas) {for (int i = 0; i < sumlist.size(); i++) {if(datas.getShangpin().getSerialNumber().equals(sumlist.get(i).getSeria lNumber())) {if (sumlist.get(i).getStock() >=datas.getShangpin().getStock()) {sumlist.get(i).setStock(sumlist.get(i).getStock()。
JAVA第一单元(超市收银系统)项目汇报
![JAVA第一单元(超市收银系统)项目汇报](https://img.taocdn.com/s3/m/9e53bcad8bd63186bcebbcfa.png)
第一单元项目汇报
汇报人:
指导老师:
2012年8月
2
项目简介
超市收银系统 (Supermarket cashier)
实施技术:JAVA
汇报目录
开 始
项目启动
认 知
需求分析
体 会
软件设计
实 施
软件编码
完 善
软件测试
汇报目录
开 始
项目启动
认 知
需求分析
体 会
软件设计
实 施
软件编码
完 善
软件测试
系统内容
超市收 银系统
商品库 存管理
商品收 银管理
6
系统内容 软件的开发目标及其可行性
谢 谢 毕汇实业报习院籍实指人单校贯习导:位::岗老X:XX位X师XXXX:XX:XXXXXXXXXXXXXXXXXXXXXXXXXXX
7
系统内容
超市收 银系统
商品库 存管理
商品收 银管理
系统内容
超市收银系统主要划分为两块,一是商品库存管理,二 是收银管理。
商品库存管理主要是仓库管理人员对库存进行查询、修 改的功能(包括添加、删除、修改操作)
收银管理主要是销售人员扫描商品、结账和打印票据 功能。
需求分析
开 始
项目启动
认 知
需求分析
收银管理:扫描商品,修改购买数量,结账
库存管理
•库存管理:商品入库,商品出库,新增商品,查询全部商品 ,按编号查询商品
Java基于socket网络编程的超市收银管理系统
![Java基于socket网络编程的超市收银管理系统](https://img.taocdn.com/s3/m/68294fad1a37f111f1855b5c.png)
package entity;import java.io.Serializable;/*** 收银类**/@SuppressWarnings("serial")public class Cash implements Serializable {private String name;// 商品名private String unit;// 商品单位private int amount;// 商品数量private double price;// 商品单价private double money;// 商品金额public Cash(String name, String unit, int amount, double price, double money) { = name;this.unit = unit;this.amount = amount;this.price = price;this.money = money;}public String getName() {return name;}public void setName(String name) { = name;}public String getUnit() {return unit;}public void setUnit(String unit) {this.unit = unit;}public int getAmount() {return amount;}public void setAmount(int amount) {this.amount = amount;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public double getMoney() {return money;}public void setMoney(double money) {this.money = money;}}package entity;import java.io.Serializable;/*** 商品类**/@SuppressWarnings("serial")public class ShangPin implements Serializable {private String number;// 商品编号private String spname;// 商品名称private double price;// 商品单价private String unit;// 单位private int amount;// 数量public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public String getSpname() {return spname;}public void setSpname(String spname) {this.spname = spname;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public String getUnit() {return unit;}public void setUnit(String unit) {this.unit = unit;}public int getAmount() {return amount;}public void setAmount(int amount) {this.amount = amount;}public ShangPin(String number, String spname, double price, String unit, int amount) {this.number = number;this.spname = spname;this.price = price;this.unit = unit;this.amount = amount;}}package entity;/*** 用户类*/import java.io.Serializable;@SuppressWarnings("serial")public class User implements Serializable {private String username;// 用户名称private String password;// 用户密码public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public User(String username, String password) {ername = username;this.password = password;}}package entity;import java.io.Serializable;/*** 会员类**/@SuppressWarnings("serial")public class Vip implements Serializable {private String vipId;// 会员卡号private int score;// 会员积分public Vip(String vipId,int score){this.vipId = vipId;this.score = score;}public String getVipId() {return vipId;}public void setVipId(String vipId) {this.vipId = vipId;}public int getScore() {return score;}public void setScore(int score) {this.score = score;}}package socket;/*** 客户端类**/import java.io.InputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.OutputStream;import .Socket;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import java.util.Scanner;import entity.Cash;import entity.ShangPin;public class Client {static Scanner input = new Scanner(System.in);private static Object receive;private static String username;static int count = 0;private static Object send(Map<String, String> map) throws Exception, Exception {// 发送方法Socket s = new Socket("127.0.0.1", 8800);OutputStream os = s.getOutputStream();ObjectOutputStream oos = new ObjectOutputStream(os);oos.writeObject(map);InputStream is = s.getInputStream();ObjectInputStream ois = new ObjectInputStream(is);receive = ois.readObject();// 关闭流oos.close();os.close();is.close();ois.close();return receive;}public static void main(String[] args) throws Exception {System.out.println("***********欢迎使用青鸟超市管理系统****************");System.out.println("1.登陆");System.out.println("2.退出系统");System.out.println("**************请选择数字1/2************");while (true) {int choose = input.nextInt();if (choose == 1) {do {System.out.print("用户名称:");username = input.next();System.out.print("用户密码:");String password = input.next();Map<String, String> map = new HashMap<String, String>();map.put("账号", username);map.put("密码", password);map.put("send", "登录");send(map);// 库存管理员界面if ("管理员".equals(receive)) {System.out.println("*********欢迎登录青鸟超市库存管理系统*************");admin();} else if ("收银员".equals(receive)) {System.out.println("*********欢迎登录青鸟超市收银系统*************");cash();} else {System.out.println("用户名或者密码输入错误!登录失败!");}} while (true);} else if (choose == 2) {System.out.println("您已经退出系统!");break;} else {System.out.println("输入错误!请重新选择数字1/2:");}}}private static void admin() throws Exception {// 管理员int choose;while (true) {System.out.println("请选择进行的操作:1.商品入库\t 2.商品出库\t 3.新增商品\t 4.查询所有商品\t 5.按编号查询商品\t 6.退出");choose = input.nextInt();// 选择库存操作switch (choose) {case 1:// 入库in();break;case 2:// 出库out();break;case 3:// 新增add();break;case 4:// 打印所有商品checkall();break;case 5:// 按编号查询check();break;case 6:// 退出System.out.println("谢谢使用!");break;default:System.out.println("对不起,您的输入有误,请重新输入!");break;}}}@SuppressWarnings("unchecked")private static void in() throws Exception {// 入库System.out.print("输入商品编号:");String number = input.next();Map<String, String> map = new HashMap<String, String>();map.put("编号", number);map.put("send", "查询编号");send(map);if ("有此商品".equals(receive)) {System.out.print("入库数量:");String amount = input.next();if (num(amount) == true) {int a = Integer.parseInt(amount);if (a >= 0) {map.put("入库数量", amount);map.put("send", "入库");Map<String, ShangPin> map1 = (Map<String, ShangPin>)send(map);System.out.println("商品编号\t\t" + "商品名称\t\t" + "商品单价\t\t"+ "单位\t\t" + "数量");for (ShangPin iterable_element : map1.values()) {System.out.println(iterable_element.getNumber()+ "\t\t" + iterable_element.getSpname()+ "\t\t" + iterable_element.getPrice() + "\t\t"+ iterable_element.getUnit() + "\t\t"+ iterable_element.getAmount());}} else {System.out.println("出库数量有误!");}}} else {System.out.println("没有此商品,请选择编号3:新增商品!");}}@SuppressWarnings("unchecked")private static void out() throws Exception {// 出库System.out.print("输入商品编号:");String number = input.next();Map<String, String> map = new HashMap<String, String>();map.put("编号", number);map.put("send", "查询编号");send(map);if ("有此商品".equals(receive)) {System.out.print("出库数量:");String amount = input.next();if (num(amount) == true) {int a = Integer.parseInt(amount);if (a >= 0) {map.put("出库数量", amount);map.put("send", "出库");send(map);Map<String, ShangPin> map1 = (Map<String, ShangPin>) receive;if (a <= map1.get(number).getAmount()) {System.out.println("商品编号\t\t" + "商品名称\t\t"+ "商品单价\t\t\t" + "单位\t\t\t" + "数量");for (ShangPin sp : map1.values()) {System.out.println(sp.getNumber() + "\t\t"+ sp.getSpname() + "\t\t" + sp.getPrice()+ "\t\t" + sp.getUnit() + "\t\t"+ sp.getAmount());}} else {System.out.println("库存不足,请核实,出库失败!");System.out.println("商品编号\t\t" + "商品名称\t\t" + "商品单价\t\t"+ "单位\t\t" + "数量");System.out.println(map1.get(number).getNumber()+ "\t\t" + map1.get(number).getSpname()+ "\t\t" + map1.get(number).getPrice() + "\t\t"+ map1.get(number).getUnit() + "\t\t"+ map1.get(number).getAmount());}} else {System.out.println("出库数量有误!");}}} else {System.out.println("没有此商品!");}}@SuppressWarnings("unchecked")private static void add() throws Exception {// 新增while (true) {System.out.print("输入商品编号:");String number = input.next();Map<String, String> map = new HashMap<String, String>();map.put("编号", number);map.put("send", "查询编号");send(map);if ("无此商品".equals(receive)) {System.out.print("输入商品名称:");String spname = input.next();System.out.print("输入商品价格:");String price = input.next();if (price(price) == true) {System.out.print("输入商品单位:");String unit = input.next();System.out.print("输入商品数量:");String amount = input.next();if (num(amount) == true) {map.put("send", "新增");map.put("名称", spname);map.put("价格", price);map.put("单位", unit);map.put("数量", amount);send(map);System.out.println("新增商品成功!");Map<String, ShangPin> map2 = (Map<String, ShangPin>) receive;System.out.println("商品编号\t\t" + "商品名称\t\t"+ "商品单价\t\t\t" + "单位\t\t\t" + "数量");for (ShangPin sp : map2.values()) {System.out.println(sp.getNumber() + "\t\t"+ sp.getSpname() + "\t\t" + sp.getPrice()+ "\t\t" + sp.getUnit() + "\t\t"+ sp.getAmount());}break;}}} else {System.out.println("此编号已存在");continue;}}}@SuppressWarnings("unchecked")private static void checkall() throws Exception {// 查询全部Map<String, String> map = new HashMap<String, String>();map.put("send", "查询全部");send(map);Map<String, ShangPin> map1 = (Map<String, ShangPin>) receive;System.out.println("商品编号\t\t" + "商品名称\t\t" + "商品单价\t\t" + "单位\t\t"+ "数量");for (ShangPin sp : map1.values()) {System.out.println(sp.getNumber() + "\t\t" + sp.getSpname()+ "\t\t" + sp.getPrice() + "\t\t" + sp.getUnit() + "\t\t"+ sp.getAmount());}}@SuppressWarnings("unchecked")private static void check() throws Exception {// 查询号查询System.out.print("输入商品编号:");String number = input.next();Map<String, String> map = new HashMap<String, String>();map.put("编号", number);map.put("send", "查询编号");send(map);if ("有此商品".equals(receive)) {map.put("send", "查询号查询");send(map);Map<String, ShangPin> map1 = (Map<String, ShangPin>) receive;System.out.println("商品编号\t\t" + "商品名称\t\t" + "商品单价\t\t\t"+ "单位\t\t\t" + "数量");for (ShangPin sp : map1.values()) {System.out.println(sp.getNumber() + "\t\t" + sp.getSpname()+ "\t\t" + sp.getPrice() + "\t\t" + sp.getUnit()+ "\t\t" + sp.getAmount());}} else {System.out.println("对不起,没有此商品!");}}private static void cash() throws Exception {// 收银int choose;while (true) {System.out.println("请选择进行的操作:1.扫描商品\t 2.修改数量\t 3.结账\t 4.退出");choose = input.nextInt();// 选择库存操作switch (choose) {case 1:// 扫描scan();break;case 2:// 修改数量modify();break;case 3:// 新增checkout();break;case 4:// 退出System.out.println("谢谢使用!");break;default:System.out.println("对不起,您的输入有误,请重新输入!");break;}}}@SuppressWarnings("unchecked")public static void scan() throws Exception {// 扫描商品System.out.print("输入需要扫描的商品编号:");String number = input.next();Map<String, String> map = new HashMap<String, String>();map.put("编号", number);map.put("send", "查询编号");send(map);if ("有此商品".equals(receive)) {System.out.println("扫描成功!");count++;String c = String.valueOf(count);map.put("send", "扫描");map.put("扫描次数", c);send(map);Map<String, Cash> map2 = (Map<String, Cash>) receive;System.out.println("商品名称\t\t\t\t" + "数量\t\t" + "单价\t\t" + "金额");System.out.println("------------------------------------------------------------------------");for (Cash cash : map2.values()) {System.out.println(cash.getName() + cash.getUnit() + "\t\t"+ cash.getAmount() + "\t\t" + cash.getPrice() + "\t\t"+ cash.getMoney());}System.out.println("------------------------------------------------------------------------");} else {System.out.println("对不起,没有此商品,扫描失败");}}@SuppressWarnings("unchecked")public static void modify() throws Exception {// 修改购买数量Map<String, String> map = new HashMap<String, String>();if (count != 0) {while (true) {System.out.print("输入需要修改的商品编号:");String number = input.next();map.put("编号", number);map.put("send", "查询编号");send(map);if ("有此商品".equals(receive)) {map.put("编号", number);map.put("send", "检测是否扫描");send(map);if ("已被扫描".equals(receive)) {System.out.print("输入修改数量:");String amount = input.next();if (num(amount) == true) {int a = Integer.parseInt(amount);if (a >= 0) {map.put("数量", amount);map.put("send", "修改数量");send(map);Map<String, Cash> map2 = (Map<String, Cash>) receive;System.out.println("商品名称\t\t\t\t" + "数量\t\t"+ "单价\t\t" + "金额");System.out.println("------------------------------------------------------------------------");for (Cash cash : map2.values()) {System.out.println(cash.getName()+ cash.getUnit() + "\t\t"+ cash.getAmount() + "\t\t"+ cash.getPrice() + "\t\t"+ cash.getMoney());}System.out.println("------------------------------------------------------------------------");} else {System.out.println("修改数量有误!");break;}break;}} else {System.out.println("没有扫描此商品。
基于Java的超市信息管理系统开发与设计实验报告
![基于Java的超市信息管理系统开发与设计实验报告](https://img.taocdn.com/s3/m/f070907b0722192e4536f6c1.png)
基于Java的超市信息管理系统开发与设计实验报告基于Java的超市信息系统的开发与设计上海工程技术大学 10级信管专业2012-2013大学生创新实验报告Java的超市信息系统开发与设计郭文豪031510224 荣攀 031510223 王宗敏031510132 石坚伟 031510130 蔡奕明教师所在学院管理学院实验完成学期 2012~2013学年第一学期基于Java的超市信息系统的开发与设计上海工程技术大学 10级信管专业2012-2013目录摘要 (3)实验目的 (4)1 超市管理系统的分析与设计 (5)1.1 市场对于超市管理信息系统的需求分析 (5)1.2 超市管理系统开发的技术支持 1.2.1 Java简介1.2.2 C#语言 2 Access 数据库 33.1 系统结构ERP3.2 Access (9)3.3 (10)4 (11) (11) (13)系统主页菜单栏功能介绍 (13)4.2.2 系统主页页标签功能及按钮功能介绍 (14)5 Java代码的部分展示 (17)6 实验心得体会 (19)7 参考文献 .......................................22 - 2 -基于Java的超市信息系统的开发与设计上海工程技术大学 10级信管专业2012-2013 摘要科技日异月新,突飞猛进,将科学的管理方式应用于超市管理过程,而形成的,便是超市管理信息系统,在超市管理信息系统中可以便于人员对超市的各项模块进行管理,员工管理、会员系统管理、商品库存系统管理,合理的系统能够有助于超市顺利的运营,理更能提升超市的营业水平。
本系统基于Java语言,以及Access结合两者,通过Java程序窗口对Access 但近几年我国超市经营规模日趋扩大,而且许多超市正小型超市在业务还要时刻更新产品的销售信息,不断添实现超市庞大商品的控制和传输,从而方便应该是可以帮助销售部门提高工作效率,帮助超市工作人员利用计算机,极为方便的对超市的有关数据进行管理、输入、输出、查找等有关操作,使杂乱的超市数据能够具体化、直观化、合理化等,例如美萍超市管理系统。
Java超市管理系统(总31页)
![Java超市管理系统(总31页)](https://img.taocdn.com/s3/m/5d16a2a602768e9951e738f4.png)
J a v a超市管理系统(总31页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除沈阳工程学院课程设计设计题目:面向对象程序设计课程设计小超市管理系统课程设计任务书课程设计题目:面向对象程序设计课程设计小超市管理系统目录摘要..................................................................................................................... 错误!未定义书签。
第1章绪论 .. (1)第2章系统功能介绍 (2)系统功能总框图 (2)本系统模块功能介绍 (2)登录功能介绍 (2)商品销售功能介绍 (3)权限管理功能介绍 (3)销售管理功能介绍 (4)商品管理功能介绍 (4)组内任务分工 (5)第3章数据库设计 (6)数据库需求分析 (6)数据库概念结构设计 (6)数据库表的设计 (7)第4章系统功能实现 (8)登录功能实现 (8)销售界面功能介绍 (11)搜索商品的信息 (11)购买商品 (11)模块的核心代码 (12)权限管理功能介绍 (18)添加用户功能介绍 (18)修改用户功能介绍 (19)删除用户功能介绍 (19)显示用户信息与刷新按钮介绍 (20)用户管理的实现代码 (20)销售管理功能介绍 (27)编号查询功能 (27)账单查询功能 (27)销售管理模块的核心代码 (28)商品管理功能介绍 (31)查询信息 (31)添加信息及提交添加 (32)删除信息及提交删除 (32)修改信息及提交修改 (33)关于 (33)模块的核心代码 (34)总结 (39)致谢 (40)参考文献 (41)第1章绪论随着人们生活水平的不断提高,购物已成为一种时尚。
每天都有大量的消费者在各大商场中留下消费信息,所以作为商场的管理人员就需要有一个自动化、智能化的管理系统来完成这些信息的处理。
超市管理系统java程序设计报告图文
![超市管理系统java程序设计报告图文](https://img.taocdn.com/s3/m/91f99827fab069dc51220171.png)
xx学院程序设计课程设计(C)报告项目名称:超市项目管理系统学生:xxx学号:xxx班级:xxx指导老师:xxx日期:xxx1、项目描述超市收银管理系统是一个辅助超市收银员统计商品以及辅助管理员统计货物情况和收益情况的实用性工具。
根据超市的日常管理需要,超市收银系统应该包括基本档案管理、商品库存管理、会员管理、交易管理等四大功能,其中基本档案管理包括收银员信息管理和商品信息管理;商品库存管理包括商品入库管理和商品出库管理;会员管理包括会员信息管理和积分管理;交易管理包括交易信息管理和销售信息管理。
2、需求分析(1) 界面需求软件的操作界面是图形界面还是字符界面,以简洁清晰、操作方便为首要目标。
基于超市收银的基本业务分析,和必须解决的两大难题,针对性地制定出所要设计小型超市收银管理系统所需要的系统功能,如下七点:(1)设计软件提供用户登陆界面,为用户提供账号密码管理工具,具体为添加用户、删除用户、修改用户名、密码。
(2)设计软件将对单个商品进库产品进行管理,对进库清单进行录入、修改、查询和统计,也提供出库功能,对出库清单进行录入和查询。
(3)设计软件将能对商品信息情况进行修改操作和查询操作,能设置库存商品单价,能对库存商品总值进行统计。
(4)设计软件能对超市会员信息进行管理,具体为添加会员信息、删除员工信息、修改会员信息操作、查询会员信息操作。
(5)设计软件能对每单生意信息进行管理,具体为每单生意信息的添加、查询、修改。
(2) 数据需求需要输入什么类型的数据、什么值的数据,即数据模型的建立。
是由项目容及软件设计者决定的。
以数据描述的清晰、数据意义的完整为目标。
出库表:入库表:收银员表:商品信息表:会员表:(3) 功能需求系统应该具有哪些功能,与项目描述以及设计者的理解直接相关。
对一般的管理软件来说,必须包括数据的输入输出、增删改查、排序、统计等功能。
请按实际项目需求填写用例。
一般按动作(动词)结果(名词)的形式书写。
基于java语言的超市收银系统的设计与实现
![基于java语言的超市收银系统的设计与实现](https://img.taocdn.com/s3/m/6f84a03f8f9951e79b89680203d8ce2f01666511.png)
基于Java语言的超市收银系统的设计与实现目录1. 前言2. 背景介绍3. 系统需求分析4. 系统设计4.1 系统架构设计4.2 数据库设计4.3 用户界面设计5. 系统实现5.1 技术选型5.2 系统模块实现6. 测试与优化6.1 功能测试6.2 性能测试7. 总结与展望1. 前言在如今信息化的社会中,超市收银系统已成为管理和服务的重要工具。
本文将对基于Java语言的超市收银系统进行设计与实现的过程进行全面分析,旨在提供一个完整、高效的解决方案,并满足超市日常经营的需求。
2. 背景介绍超市收银系统是超市经营管理中的重要组成部分,其作用是对商品条码信息进行扫描、计算价格并进行支付,同时还需要对商品销售情况进行统计和分析。
设计一套功能完善的超市收银系统对于提高超市的管理效率、降低人力成本,具有重要的意义。
3. 系统需求分析(1)商品管理:能够对商品进行录入、修改和删除操作,包括商品名称、价格、库存等信息。
(2)交易管理:能够完成商品扫描、计算价格、生成交易单据,并进行支付。
(3)统计分析:能够对销售情况进行统计和分析,支持不同维度的数据汇总。
(4)权限管理:根据用户角色进行权限划分,确保系统安全性。
4. 系统设计4.1 系统架构设计本系统采用三层架构,分为表现层、业务层和数据访问层。
表现层负责与用户交互,业务层负责业务逻辑的处理,数据访问层负责与数据库的交互。
通过三层架构的方式,实现了系统的高内聚、低耦合。
4.2 数据库设计系统数据库采用MySQL关系型数据库,根据需求分析设计了商品表、交易表、用户表等数据库表结构,并进行了合理的索引设计,以支持系统的快速检索和统计。
4.3 用户界面设计系统用户界面采用Java Swing技术,实现了商品管理、交易管理、统计分析等相关功能的交互界面,在设计上充分考虑了用户友好性和操作性。
5. 系统实现5.1 技术选型在系统实现过程中,选择了Java作为主要开发语言,采用了Spring框架进行业务逻辑处理,Hibernate框架进行数据持久化,以及JDBC 进行数据库连接。
基于JAVA的C丨S架构超市收银系统
![基于JAVA的C丨S架构超市收银系统](https://img.taocdn.com/s3/m/6633bc8509a1284ac850ad02de80d4d8d05a0177.png)
基于JAVA的C丨S架构超市收银系统超市收银系统是指利用计算机技术和网络技术,实现对超市销售业务的自动化管理和数据分析的一种系统。
基于Java的C/S架构超市收银系统具有以下特点:运行稳定,界面友好;具备高效的查询、统计和分析能力;支持多用户操作,具备权限管理;适应超市的实际运营需求,能够提高超市的销售效率和服务质量。
一、系统结构基于Java的C/S架构超市收银系统主要由客户端、服务器和数据库三部分组成。
客户端负责与用户交互,服务器负责处理客户端的请求并与数据库进行交互,数据库负责存储超市的销售相关数据。
客户端采用Java Swing作为界面开发技术,可以根据超市的实际需求进行定制开发,界面美观、直观。
客户端具备登录、销售、查询等功能,并根据用户权限显示不同的操作界面和功能。
服务器采用Java Socket进行网络通信,接收客户端的请求,并将请求转发给数据库进行数据处理,并将处理结果返回给客户端。
服务器具备多线程处理能力,以保证对多个客户端同时进行服务。
数据库采用关系型数据库如MySQL,存储超市的销售相关数据,包括商品信息、收银员信息、销售记录等。
同时,可以利用数据库的高效查询和统计功能,对超市的销售情况进行实时分析和报表生成。
二、功能介绍1.收银功能:客户端提供收银界面,支持商品的扫码销售和手动输入销售,可以自动计算商品的应付金额,并生成销售单。
销售单包括销售日期、销售员、销售商品、销售数量、销售金额等信息。
2.查询统计功能:客户端提供查询界面,支持根据日期、商品名称等条件进行销售记录查询。
同时,还可以通过统计功能,对销售情况进行汇总,包括销售总额、销售排名等,并提供图表展示,便于管理人员进行销售分析。
3.权限管理功能:系统支持不同角色的用户登录,并根据用户的权限显示不同的操作界面和功能。
例如,销售员只能进行销售操作,管理员可以进行商品管理和用户管理等。
同时,还可以对用户的权限进行灵活配置,确保数据的安全性。
最新Java项目之超市收银系统分析-1精选
![最新Java项目之超市收银系统分析-1精选](https://img.taocdn.com/s3/m/f192dfa9a0116c175f0e4869.png)
数据库设计-1
数据库分析
1、系统实体 商品、会员、供货商、用户(管理员、收银员) 2、系统概念模型 商品、商品类型、商品计量单位 供货商、采购记录 会员、会员充值记录 收银员、销售订单、销售订单明细
数据库设计-2
销 售 明 数据库表设计 细 表 表销 售
供 货 商 表
数据库设计
表进 货
充 值 记 录 表
实现商品管理、销售业绩盘点、库存预警等功 能。 一般收银用户,进行收银、盘点等功能,管 理员可对库存、入库、用户设置、查询汇总等 能。
系统设计
系统预览
系统开发环境
操作系统:windows XP。 Java虚拟机:JDK1.6 开发工具:MyEclipse6.5 IDE插件:使用jigloo插件进行图形界面设计 数据库服务器:MS SQLServer2005
create table Goods --商品表 ( GId nvarchar(20) primary key,--条形码 CId int foreign key references GoodsClass(CId),--商品所属种类 create table GoodsPrivoder --商品供货商 商品名称 create table InStore --进货单(采购单) GName nvarchar(50),-GSpec nvarchar(50),--商品规格 ( ( InStoreId nvarchar(20) primary key,--进货流水号 GUId primary int foreign key references GoodsUnit(GUId),-商品单位 GPId int identity(1,1) key, GPName nvarchar(20),-供货商名称 GMinNumber int,--报警数 GId nvarchar(20) foreign key references Goods(GId),GPPhone nvarchar(20),-电话 SalePrice money,--销售价格 GPId int foreign key references GoodsPrivoder(GPId), GPAddress nvarchar(50),-地址 会员价格 InStoreTime datetime,--进货时间 VipPrice money,-GPLinkman nvarchar(20),-联系人 InStoreAmount int,--进货数量 GAmount int --库存数量 PurchasePrice money, --进货价格 ) ) )
Java超市管理系统
![Java超市管理系统](https://img.taocdn.com/s3/m/3ae9cb90336c1eb91b375d69.png)
沈阳工程学院课程设计设计题目:面向对象程序设计课程设计小超市管理系统课程设计任务书课程设计题目:面向对象程序设计课程设计小超市管理系统目录摘要.................................................................................................................... 错误!未定义书签。
第1章绪论 (1)第2章系统功能介绍 (2)2.1系统功能总框图 (2)2.2 本系统模块功能介绍 (2)2.2.1 登录功能介绍 (2)2.2.2 商品销售功能介绍 (3)2.2.3 权限管理功能介绍 (3)2.2.4 销售管理功能介绍 (4)2.2.5 商品管理功能介绍 (4)2.3 组内任务分工 (5)第3章数据库设计 (6)3.1 数据库需求分析 (6)3.2 数据库概念结构设计 (6)3.3 数据库表的设计 (7)第4章系统功能实现 (8)4.1 登录功能实现 (8)4.2 销售界面功能介绍 (11)4.2.1 搜索商品的信息 (11)4.2.2 购买商品 (11)4.2.3 模块的核心代码 (12)4.3 权限管理功能介绍 (18)4.3.1 添加用户功能介绍 (18)4.3.2 修改用户功能介绍 (19)4.3.3 删除用户功能介绍 (19)4.3.4 显示用户信息与刷新按钮介绍 (20)4.3.5 用户管理的实现代码 (20)4.4销售管理功能介绍 (27)4.4.1 编号查询功能 (27)4.4.2 账单查询功能 (27)4.4.3 销售管理模块的核心代码 (28)4.4商品管理功能介绍 (31)4.4.1 查询信息 (31)4.4.2 添加信息及提交添加 (32)4.4.3 删除信息及提交删除 (32)4.4.4 修改信息及提交修改 (33)4.4.5 关于 (33)4.4.6 模块的核心代码 (34)总结 (39)致谢 (40)参考文献 (41)第1章绪论随着人们生活水平的不断提高,购物已成为一种时尚。
Java项目实训:模拟网上超市购物结算功能
![Java项目实训:模拟网上超市购物结算功能](https://img.taocdn.com/s3/m/ec58cf1ec5da50e2524d7f0a.png)
目录实训项目一:模拟网上超市购物结算功能实训项目二:图书管理系统的开发学生实训作品Java项目实训:模拟网上超市购物结算功能一、实训目的使用Java语言编写一个模拟网上超市购物结算功能的程序,要求程序运行后有一个图形用户界面,可供用户输入购买的各种商品相关信息,最后给出用户的购物清单及价格,并且用户可以根据需要查询自己购买的第几项商品的详细信息。
要求学生按照个体软件过程的规范要求,结合该程序的实际开发过程,来深入理解并运用个体软件过程的基本概念、方法与过程。
二、实训要求1.编写程序要严格按照Java编程规范进行代码编写。
2.必须按照个体软件的过程,真实地采集数据、填写相关的表格、编写有关的文档。
3.按照老师的要求,每个人必须独立完成。
4.按照实训的时间安排进行实训,实训结束后提交有关的表格与文档。
三、实训环境:JDK1.3.1及以上版本四、实训安排一.准备阶段:实训前准备以下空表格:1、项目计划总结表、2、代码复查检查表、3、时间记录日志、4、缺陷记录日志、5、程序规模估计表等;二.计划、设计阶段1. 分析实训题目要求,获取对该程序功能的描述,完成需求文档;2. 做计划1)估计新程序的规模,填写程序规模估计表;2)填写项目计划总结表的计划数据部分;3)将计划阶段所花费的时间记入时间记录日志;3. 做设计,1)对程序进行设计,用流程图或伪码表示法完成设计文档;2)将设计阶段所花费的时间记入时间记录日志。
需求分析:1.用户可以添加购买一种商品,添加的信息包括商品名称、数量和单价2.用户可以删除已购买的一种商品3.用户可以查询已购买的一种商品的详细信息,查询时要指明查询的商品的记录号是多少(商品记录号是按照商品购买次序编的),还可以指定查询第一个或最后一个购买的商品信息。
4.用户可以删除所有已添加到购物车的商品5.用户可以打印要购买的商品的清单6.用户可以清空显示信息的窗口7.用户可以要求结帐,系统会打印出用户购物清单,并给出总价。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、用户层
主要是将用来显示的界面设计和事件管 理写到一个类中进行设计。
项目架构搭建-1
二、搭建过程
1. 新建Java项目。 2. 添加项目需要的第三方jar文件 。 3. 新建图片包,并添加图片素材。
项目架构搭建-2 三、项目公共类
1、数据源类:主要是负责项目中数据库的Connection对象的建立与相关 JDBC对象管理。 src -> com.tsing.base.dao -> DBConnection.java 2、BaseDAO类:主要封装JDBC接口和常用的数据库操作,提供给其它DAO组 件继承。 src -> com.tsing.base.dao ->BaseDAO.java 3、日期工具类:主要负责项目中日期对象的各种格式转换。 src -> com.tsing.base.util ->DateUtil.java
create table Goods --商品表 ( GId nvarchar(20) primary key,--条形码 CId int foreign key references GoodsClass(CId),--商品所属种类 create table GoodsPrivoder --商品供货商 商品名称 create table InStore --进货单(采购单) GName nvarchar(50),-( ( GSpec nvarchar(50),--商品规格 GPId int identity(1,1) key, InStoreId nvarchar(20) primary key,--进货流水号 GUId primary int foreign key references GoodsUnit(GUId),-商品单位 GPName nvarchar(20),-供货商名称 GMinNumber int,--报警数 GId nvarchar(20) foreign key references Goods(GId),GPPhone nvarchar(20),-电话 SalePrice money,--销售价格 GPId int foreign key references GoodsPrivoder(GPId), GPAddress nvarchar(50),-地址 会员价格 InStoreTime datetime,--进货时间 VipPrice money,-GPLinkman nvarchar(20),-联系人 InStoreAmount int,--进货数量 GAmount int --库存数量 ) ) PurchasePrice money, --进货价格 )
数据库脚本-2
create table ShopVip --会员表 ( VId nvarchar(20) primary key,--会员卡号 VName nvarchar(20),--姓名 VPhone nvarchar(20),--电话 ConsumeSum money,--消费总金额 ConsumeScore int,--积分 ConsumeCount int,--消费次数 ConsumeRate money,--积分率 VBirthday datetime,--生日 VBalance money --余额 )
2 3 4 5 6 7 8
供货管理 会员管理 用户管理 单位管理 类别管理 系统管理 收银
商品管理
商品信息维据
商品进货管理
供货管理
供货商管理
1、供货商添加 2、供货商列表与查询 3、供货商修改 4、供货商删除
会员管理
会员管理
1、会员显示与查询 2、会员添加 3、会员修改 4、会员冲值 5、会员删除 6、会员积分兑奖
单元测试
单元测试 BUG修正
数据库设计-1
数据库分析
1、系统实体 商品、会员、供货商、用户(管理员、收银员) 2、系统概念模型 商品、商品类型、商品计量单位 供货商、采购记录 会员、会员充值记录 收银员、销售订单、销售订单明细
数据库设计-2
销 售 明 数据库表设计 细 表
供 货 商 表
数据库设计
进 货 表充 值 记 录 表 Nhomakorabea数据库脚本-3
create table Sell --销售单 ( SId nvarchar(20) primary key,--销售流水号 VId int,--会员卡号,为空则是非会员购买 STime datetime,--销售时间 SCountPrice money,--销售总金额 SCount int, --销售总数(种类) UId nvarchar(10) foreign key references superMarketUser(Uid),--收银员 ) create table SellDetail --销售明细 ( SellDetailId int identity(1,1) primary key, SId nvarchar(20) foreign key references Sell(SId),--销售流水号 GId nvarchar(20) foreign key references Goods(GId),--商品编号 SQuantity int, --单品数量 SSalePrice money --销售单价 )
用户管理
用户管理
单位管理
单位管理
类别管理
类别管理
系统管理
系统设置与统计管理
系统收银
顾客收银管理
系统架构设计
一、项目结构
按分层设计与组件隔离原则主要分为 以下几层。 1、公共层
主要将数据源类、BaseDAO类、工具类 单独设计出来,作为公共类进行共享。
2、DAO层
主要将对数据库的操作,添加、修改、 删除、查询写到一个独立类中方便统一管理。
收银管理
数据库脚本-4
用户管理
create table SuperMarketUser --用户表 ( UId nvarchar(10) primary key,--账号 UPassword nvarchar(10),--密码 UName nvarchar(20),--真实姓名 URole nvarchar(10),--角色(两种:管理员、收银员) )
实现商品管理、销售业绩盘点、库存预警等功 能。 一般收银用户,进行收银、盘点等功能,管 理员可对库存、入库、用户设置、查询汇总等 能。
系统设计
系统预览
系统开发环境
操作系统:windows XP。 Java虚拟机:JDK1.6 开发工具:MyEclipse6.5 IDE插件:使用jigloo插件进行图形界面设计 数据库服务器:MS SQLServer2005
项目架构搭建-4
4、事件响应与处理过程 用户界面
注册事件监听 //查询监听 jButton3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { selectGoodsByWord(); } }); 事件处理 /** * 按条码编号查询商品 */ private void selectGoodsByWord() { //处理查询。【代码略】 }
一学期项目实训
超市收银系统(1)
项目背景
超市系统发展背景
随着信息化应用的普及和超市商品种类不 断增加,人工管理超市也将越来越困难。
商品品种繁多,管理起来非常困难。 无法及时了解最新销售的商品库存信息。 供应商过多,无法及时有效管理。 工作效率低下,出错概率高,管理成本高。
系统分析
系统概要设计
销 售 表
商 品 表
会 员 表
用 户 表 单 位 表
商 品 类 型
数据库脚本-1
create table GoodsClass --商品类别 create table GoodsUnit --商品单位 ( ( CId int identity(1,1) primary key, GUId int identity(1,1) primary key, 数据库表创建。 CName nvarchar(40), GUName nvarchar(10) ) ) 注意:先创建主键表,再创建外键表。
系统主要功能模块
主要功能模块
序号 功能名称 描述
1
商品管理
主要对超市销售商品进行管理与维护,对不再销售 的下架,对新进货的商品进行添加,对新到货的商 品录入库存等操作。
主要是对超市商品供货商进行维护设置。 主要对超市会员进行管理,同时对会员进行积分兑 换、会员卡冲值等操作 主要对超市系统的使用用户进行管理,主要包括创 建新用户、修改用户信息等,主要是管理员来设置 管理员功能,主要是管理超市商品的计量单位。如: 个、支、袋、箱等。 主要对超市销售的商品进行分类设置,以便能更好 的对不同的商品进行分类销售和管理。 主要是统计、查询、汇总功能。
项目架构搭建-3 三、项目功能模块结构
1、XXX_DAO类:主要是负责该功能与数据库的常用操作,如查询、添加、修 改、删除等,继承BaseDAO类。 src -> com.tsinghua.goodsmanager.dao -> GoodsDao.java 2、model类:主要是负责封装数据,在用户层和DAO层进行数据传输,为属 性提供getter与setter封装方法。 src -> com.tsinghua.goodsmanager.model ->GoodsBean.java 3、用户窗体类:主要用户界面数据显示,并提供操作维护按钮。 src ->com.tsinghua.goodsmanger.jpanel ->GoodsMangerPanel.java
会员管理
create table VipSaveMoney --充值记录 ( vsid int identity(1,1) primary key, VId nvarchar(20) foreign key references ShopVip(VId), VTime datetime, --缴费时间 VMoney money, --缴费金额 UId nvarchar(10) foreign key references superMarketUser(Uid)--充值员 )