北京化工大学北方学院课程设计报告课程名称数据结构课程设计设计题目产品进销存储管理系统(java)专业、班级软件工程1004学号100220123姓名赵伟指导教师周建敏设计时间2013年9月2日--2013年9月15日一、引言(简要说明设计题目的目的、意义、内容、主要任务等)一、设计任务及目的――产品进销存管理系统问题描述:针对某一种行业的库房的产品进销存情况进行管理。基本要求目的:⑴采用一定的存储结构对库房的货品及其数量进行分类管理;⑵可以进行产品类的添加、产品的添加、产品数量的添加;⑶能够查询库房每种产品的总量、进货日期、销出数量、销售时间二、功能需求分析意义系统的功能主要有:管理员操作:进入系统后,管理员就可以对产品的进货,销售,存货等方面的信息有个详细的了解。并且可以对产品的类,产品,产品的数量,产品销售信息进行管理,可以添加新的产品信息。同时对库房每种产品的总量、进货日期、销出数量、销售时间等也可以有详细的了解。三、主要内容及任务通过java实现这个系统,并用界面的方式展示出来,任务是通过java创建界面JFrame;并添加按钮监听,可以对数据的查询,添加等操作;设计算法对数据进行操作;最终为了数据的不丢失把数据序列化到文件中去,这样也方便数据的添加,查询等操作。二、正文(课程设计的主要内容,包括实验与观测方法和结果、仪器设备、计算方法、编程原理、数据处理、设计说明与依据、加工整理和图表、形成的论点和导出的结论等。正文内容必须实事求是、客观真切、准确完备、合乎逻辑、层次分明、语言流畅、结构严谨,符合各学科、专业的有关要求。)1.功能算法设计1.1各功能函数关系图2.详细算法设计2.1.java基本窗口建立;基本的JFrame窗口的建立。2.2.建立一个集合,用于存储产品信息;为了数据的不丢失我把数据存储到了文件里。2.3.添加一个方法;用于添加产品数据信息;添加产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。2.4.添加一个方法;用于查询产品数据信息;查询产品的相关信息,如产品类、产品、产品数量、进货日期、销出数量、销售时间等。2.5.添加十多个个监听事件;当鼠标按下按钮时,得到事件看执行什么任务,如弹出添加窗口,查询窗口;或是退出系统。2.6.再添加监听时有四个我写的是内部类实现actionlistener接口,其他的全是另写一个类实现actionlistener接口然后调用这个类来实现。2.7.重要方法构造器传参;当另一个窗口需要其他窗口数据是,需要写一个构造方法把数据传过去,还有当一个内部类需要用到外部类的属性,数据时,都需要用构造器传参来获得属性。2.8.把数据集合保存到文件时实现序列化;把数据序列化到文件方便存储,获取。重要代码3.1.主窗口建立;importjava.awt.BorderLayout;importjava.awt.GridLayout;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;publicclassManagerUIextendsJFrame{privateJPanelpanel;privateJPanelpanel2;privateJLabellabel;privateJButtonbutton;privateJLabellabel1;privateJButtonbutton2;privateJLabellabel2;privateJButtonbutton3;privateJLabellabel3;privateActionListenerlistener;publicManagerUI(){this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);setSize(600,400);listener=newMyActionlistener(this);panel=newJPanel();label=newJLabel(欢迎进入管理系统);panel.add(label);panel2=newJPanel();panel2.setLayout(newGridLayout(4,2));button=newJButton(1);label1=newJLabel(查询产品信息);button.addActionListener(listener);button2=newJButton(2);label2=newJLabel(添加产品);button2.addActionListener(listener);button3=newJButton(3);label3=newJLabel(退出系统);button3.addActionListener(listener);panel2.add(button);panel2.add(label1);panel2.add(button2);panel2.add(label2);panel2.add(button3);panel2.add(label3);this.add(panel,BorderLayout.NORTH);this.add(panel2,BorderLayout.SOUTH);this.setVisible(true);}publicstaticvoidmain(String[]args){newManagerUI();}}3.2.主界面监听;privateManagerUImanagerUI;publicMyActionlistener(ManagerUImanagerUI){//TODOAuto-generatedconstructorstubthis.managerUI=managerUI;}@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubif(e.getActionCommand().equals(1)){newGoodsclass();}if(e.getActionCommand().equals(2)){newinsertGoodsclass();}if(e.getActionCommand().equals(3)){managerUI.dispose();}}3.3.数据的查询;publicGoodsclass(){setDefaultCloseOperation(DISPOSE_ON_CLOSE);setSize(200,100);panel=newJPanel();panel.setLayout(newGridLayout(4,2));button=newJButton(1);button.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubnewfruitUI();}});label1=newJLabel(水果类);button2=newJButton(2);button2.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubnewShucaiUI();}});label2=newJLabel(蔬菜类);button3=newJButton(3);button3.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubnewOtherUI();}});label3=newJLabel(其它类);button4=newJButton(4);button4.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubGoodsclass.this.dispose();}});label4=newJLabel(关闭此页);3.4.数据的添加;setDefaultCloseOperation(DISPOSE_ON_CLOSE);setSize(200,100);panel=newJPanel();panel.setLayout(newGridLayout(4,2));button=newJButton(1);button.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubnewinsertFruit();}});label1=newJLabel(水果类);button2=newJButton(2);button2.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubnewinsertShucai();}});label2=newJLabel(蔬菜类);button3=newJButton(3);button3.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubnewinsertOther();}});label3=newJLabel(添加其它类);button4=newJButton(4);button4.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubinsertGoodsclass.this.dispose();}});label4=newJLabel(关闭此页);3.5.重要监听事件;算法把数据添加到集合;JButtonokButton=newJButton(OK);okButton.setActionCommand(OK);okButton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//TODOAuto-generatedmethodstubOtherother=newOther();other.setName(insertOther.this.getTextField().getText());other.setDate(insertOther.this.getTextField_1().getText());other.setNumber(Integer.valueOf(insertOther.this.getTextField_2().getText()));IOtherFilefile;file=newOtherFile();file.addO