序号:10学号:11416230常州大学课程设计课程名称:《面向对象程序设计(JAVA)》题目:企业销售管理系统姓名:`````````学院:信息科学与工程学院专业班级:```````指导教师:``````设计时间:2012年12月24日2013年1月11日常州大学课程设计第2页共23页2目录1.任务书a)系统功能分析········································03b)系统组成············································032.正文a)系统分析i.功能模块·········································04ii.功能流程图·······································06b)数据库设计··········································07c)系统详细设计i.连接数据库·······································08ii.主界面···········································08iii.修改、添加、删除模块·····························10iv.查询、打印、登录模块·····························143.系统使用说明···········································214.日记···················································225.心得体会···············································226.参考文献···············································237.致谢···················································23常州大学课程设计第3页共23页3一、任务书(一)、系统功能分析本系统用于对企业销售进行管理,涉及员工基本信息表、商品信息表和员工销售信息表,主要功能包括:数据表记录的添加、删除、修改和浏览。对员工基本情况、商品和销售相关信息的查询。报表打印输出。系统退出。(二)、系统组成根据系统的功能分析,给出系统的参考解决方案。整个系统功能通过菜单实现,包括数据库、表单、菜单、报表和主程序等几个部分,具体为:后台数据库销售管理数据库:1.员工基本信息表(员工编号,员工名,年龄,性别,部门,职务)。2.商品信息表(商品编号,商品名称,商品单价)。3.员工销售信息表(员工编号,商品编号,商品数目,应付金额,顾客付款,找回金额)。常州大学课程设计第4页共23页4二、正文(1)系统分析:企业销售管理系统主要实现的功能为:与数据库连接,实行对员工基本信息表、商品信息表、员工销售信息表的查询、修改、添加、删除等功能的实现。以及对3张表的信息进行输出打印,打印保存成XLS格式。功能模块如下:查询功能:添加功能:查询功能精确查找模糊查找编号查找名称查找编号模糊查找名称模糊查找数目模糊查找金额模糊查找其他模糊查找添加功能添加名称添加编号添加数目添加其他常州大学课程设计第5页共23页5修改功能:删除功能:查询数据修改名称修改编号修改数目修改其他修改功能保存退出查询数据删除功能保存退出确定删除常州大学课程设计第6页共23页6程序结构流程图:企业销售管理系统员工基本信息表商品信息表员工销售信息表查询修改添加删除查询修改添加添加修改删除输出打印系统退出常州大学课程设计第7页共23页7(2)数据库设计:按照规范设计的方法,考虑数据库及其管理系统开发的全过程,将数据库设计分为以下六个阶段:·需求分析·概念结构设计·逻辑结构设计·物理结构设计·数据库实施·数据库运行和维护基本要求在mysql软件基础上,利用应用系统开发为企业销售管理设计数据库和建立相应的数据库。创建4个表格,分别为sellInfo,staffInfo,goodsInfo,以及登录所需的password表格。信息要求,处理要求,安全性和完整性要求,数据流图,数据字典,数据项之间应有的联系必须表示出来,用数据依赖表示即可逻辑结构设计必须:说明各个关系模式所属的范式,如果不是BC或3NF范式,常州大学课程设计第8页共23页8(3)系统的详细设计:一、连接数据库:importjava.sql.*;publicclassConnection1{Connectionconnect;privateStringdbDriver=com.mysql.jdbc.Driver;//加载数据库驱动privateStringurl=jdbc:mysql://localhost:3306/sell?true&characterEncoding=utf-8;//地址/**CreatesanewinstanceofconnectJdbc*/publicConnectiongetConnection(){try{Class.forName(dbDriver).newInstance();connect=DriverManager.getConnection(url,root,123456);}catch(Exceptionex){System.out.println(数据库加载失败);}returnconnect;}二、主界面:View.java首先在主界面的panel里显示数据库中的数据,以商品信息表为例。JTabletable;JScrollPanejscrollpane;//申明滚动面板变量TableModelmyTable=newDefaultTableModel();Connection1db=newConnection1();Connectioncon=db.getConnection();//连接到数据库Statementps;try{ps=con.createStatement();ResultSetrs;rs=ps.executeQuery(select*fromgoodsInfo);//在sell表格中执行查询ResultSetMetaDatametaData;metaData=rs.getMetaData();//得到数据库元数据intnumber=metaData.getColumnCount();//得到数据库中表的列的常州大学课程设计第9页共23页9个数VectorcolumnNames=newVector();//调用Vector类,生成可自动增长的数组对象列Vectorrows=newVector();//对象行for(intnum=0;numnumber;num++){columnNames.addElement(metaData.getColumnLabel(num+1));}//循环生成while(rs.next()){VectornewRow=newVector();/*for循环,将结果集中一行数据放到newRow矢量中*/for(inti=1;i=number;i++){newRow.addElement(rs.getObject(i));}/*将上面的矢量newRow作为矢量rows中的一个元素,这样rows中的一个元素就代表结果集中的一行数据*/rows.addElement(newRow);//增长行myTable=newDefaultTableModel(rows,columnNames);//在表格中加载数据}}catch(SQLExceptionex){}table=newJTable(myTable);jscrollpane=newJScrollPane(table);jscrollpane.setViewportView(table);jscrollpane.revalidate();jPanel3.setLayout(newBorderLayout());jPanel3.add(jscrollpane,BorderLayout.CENTER);jPanel3.setVisible(true);效果如下:常州大学课程设计第10页共23页10三、修改模块:首先对所需修改的员工信息进行查询,并显示在修改界面上,关键代码如下:Connection1db=newConnection1();Connectioncon=db.getConnection();//连接数据库Stringsql=select*fromsellInfo;Statementps=con.createStatement();ResultSetrs=ps.executeQuery(sql);//查询while(rs.next()){if(rs.getString(员工编号).equals(jTextField1.getText())){//匹配该员工的信息;num1=rs.getString(员工编号);num2=rs.getString(商品编号);num3=rs.getInt(商品数目);price1=rs.getInt(应付金额(元));price2=rs.getInt(顾客付款(元));price3=rs.getInt(找回金额(元));}}jTextField2.setText(num1);常州大学课程设计第11页共23页11jTextField3.setText(num2);jTextField4.setText(+num3);jTextField5.setText(+price1);jTextField6.setText(+price2);jTextField7.setText(+price3);//在修改界面上显示该员工销售的信息}然后在对修改界面上的信息进行修改,并返回保存至数据库,关键代码如下:Stringsql=updatesellInfoset员工编号='+num1+',商品编号='+num2+',商品数目=+num3+,应付金额(元)=+price1+,顾客付款(元)=+price2+,找回金额(元)=+price3+where员工编号='+num1+';try{ps=con.createStatement();ps.executeUpdate(sql);//数据更新}catch(SQLExceptione){e.printStackTrace();}效果如下:常州大学课程设计第12页共23页12四、删除模块:首先对用户输入的员工编号或者员工名称进行查找,当数据库中由此数据时,显示该数据,并请求用户是否确定删除,运用sql语句中的delete,以员工基本信息为例,关键代码如下:Statementps=con.createStatement();ResultSetrs=ps.executeQuery(sql);while(rs.next()){if(rs.getString(员工编号).equals(jTextField1.getText())||rs.getString(员工名).equals(jTextField2.getText())){num1=rs.getString(员工编号);num2=rs.getString(员工名);i=rs.getInt(年龄);num3=rs.getString(性别);num4=rs.getString(部门);num5=rs.getString(职务);}}}ints=JOptionPane.showConfirmDialog(null,确定要删除此数据吗?\t\n员工编号:+jTextField1.getText()+\t\n+员工名:+num2+\t\n+年龄:+i+(岁)+\t\n+性别:+num3+\t\n+部门:+num4+\t\n+职务:+num5+\t);//显示对话框是