JAVA课程设计企业销售管理系统.docx
《JAVA课程设计企业销售管理系统.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计企业销售管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
JAVA课程设计企业销售管理系统
序号:
10
学号:
11416230
常州大 学
课程设计
课 程名称:
《面向对象程序设计(JAVA)》
题 目:
企业销售管理系统
姓名:
`````````
学 院:
信息科学与工程学院 专业班级:
```````
指 导教师:
``````
设计时间:
2012 年12月 24日~2013 年 1月 11日
1.任务书
a)系统功能分析········································03
b)系统组成············································03
2.正文
a)系统分析
i.功能模块·········································04
ii.功能流程图·······································06
b)数据库设计··········································07
c)系统详细设计
i.连接数据库·······································08
ii.主界面···········································08
iii.修改、添加、删除模块·····························10
iv.查询、打印、登录模块·····························14
3.系统使用说明···········································21
4.日记···················································22
5.心得体会···············································22
6.参考文献···············································23
7.致谢···················································23
一、任务书
(一)、系统功能分析
本系统用于对企业销售进行管理,涉及员工基本信息表、商品信息表和员工销售信息表,主要功能包括:
●数据表记录的添加、删除、修改和浏览。
●对员工基本情况、商品和销售相关信息的查询.
●报表打印输出。
●系统退出。
(二)、系统组成
根据系统的功能分析,给出系统的参考解决方案。
整个系统功能通过菜单实现,包括数据库、表单、菜单、报表和主程序等几个部分,具体为:
后台数据库
销售管理数据库:
1.员工基本信息表(员工编号,员工名,年龄,性别,部门,职务).
2.商品信息表(商品编号,商品名称,商品单价)。
3.员工销售信息表(员工编号,商品编号,商品数目,应付金额,顾客付款,找回金额)。
二、正文
(1)系统分析:
企业销售管理系统主要实现的功能为:
与数据库连接,实行对员工基本信息表、商品信息表、员工销售信息表的查询、修改、添加、删除等功能的实现。
以及对3张表的信息进行输出打印,打印保存成XLS格式。
功能模块如下:
查询功能:
添加功能:
修改功能:
删除功能:
程序结构流程图:
(2)数据库设计:
按照规范设计的方法,考虑数据库及其管理系统开发的全过程,将数据库设计分为以下六个阶段:
·需求分析
·概念结构设计
·逻辑结构设计
·物理结构设计
· 数据库实施
·数据库运行和维护
基本要求
在mysql软件基础上,利用应用系统开发为企业销售管理设计数据库和建立相应的数据库.创建4个表格,分别为sellInfo,staffInfo,goodsInfo,以及登录所需的password表格。
信息要求,处理要求,安全性和完整性要求,数据流图,数据字典,数据项之间应有的联系必须表示出来,用数据依赖表示即可逻辑结构设计必须:
说明各个关系模式所属的范式,如果不是BC或3NF范式,
(3)系统的详细设计:
一、连接数据库:
importjava。
sql。
*;
publicclass Connection1{
Connection connect;
ﻩprivate String dbDriver="com。
mysql。
jdbc。
Driver”; //加载数据库驱动
privateStringurl="jdbc:
mysql:
//localhost:
3306/sell?
true&characterEncoding=utf-8”;//地址
/**Createsa newinstanceofconnectJdbc*/
public ConnectiongetConnection(){
try {
Class.forName(dbDriver)。
newInstance();
ﻩconnect=DriverManager。
getConnection(url,"root","123456”);
}catch(Exceptionex){
System.out.println("数据库加载失败”);
}
returnconnect;
ﻩ}
二、主界面:
View.java
首先在主界面的panel里显示数据库中的数据,以商品信息表为例。
ﻩJTabletable;
JScrollPane jscrollpane;//申明滚动面板变量
TableModel myTable= newDefaultTableModel();
ﻩConnection1db= newConnection1();
ﻩConnectioncon=db。
getConnection();//连接到数据库
Statement ps;
try {
ﻩﻩps=con.createStatement();
ResultSetrs;
ﻩﻩﻩrs=ps。
executeQuery("select*fromgoodsInfo");//在sell表格中执行查询
ﻩResultSetMetaDatametaData;
ﻩmetaData=rs。
getMetaData();//得到数据库元数据
int number=metaData。
getColumnCount();//得到数据库中表的列的个数
ﻩﻩVectorcolumnNames=new Vector();//调用Vector类,生成可自动增长的数组对象列
ﻩVector rows =newVector();//对象行
ﻩﻩfor(intnum=0;num<number; num++) {
ﻩﻩcolumnNames。
addElement(metaData.getColumnLabel(num + 1));
ﻩ}//循环生成
ﻩwhile(rs。
next()){
ﻩﻩVectornewRow=new Vector();/* for循环,将结果集中一行数据放到newRow矢量中*/
ﻩﻩfor (int i=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);
效果如下:
三、修改模块:
首先对所需修改的员工信息进行查询,并显示在修改界面上,关键代码如下:
Connection1db =newConnection1();
ﻩConnectioncon=db。
getConnection();//连接数据库
ﻩﻩStringsql = ”select*fromsellInfo”;
ﻩStatement ps= 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);
ﻩjTextField3。
setText(num2);
ﻩjTextField4.setText("” +num3);
jTextField5.setText(""+price1);
ﻩjTextField6.setText("”+price2);
ﻩﻩjTextField7。
setText(”"+price3);//在修改界面上显示该员工销售的信息
ﻩ}
然后在对修改界面上的信息进行修改,并返回保存至数据库,关键代码如下:
Stringsql=”update sellInfoset员工编号='”+num1 + "',商品编号='"+num2+"’,商品数目=” +num3+ ",应付金额(元)="+price1+”,顾客付款(元)=”+ price2+",找回金额(元)="+price3 +” where员工编号=’”+num1+”’”;
try{
ﻩﻩps=con.createStatement();
ﻩﻩﻩps。
executeUpdate(sql);//数据更新
ﻩ}catch (SQLExceptione) {
e。
printStackTrace();
ﻩ}
效果如下:
四、删除模块:
首先对用户输入的员工编号或者员工名称进行查找,当数据库中由此数据时,显示该数据,并请求用户是否确定删除,运用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”);//显示对话框是否确定删除
ﻩif(s==0){
ﻩﻩﻩStringjk =jTextField1。
getText();
ﻩStringjk1= jTextField2。
getText();
ﻩﻩStringsql1=”delete fromstaffInfo where员工编号='”+jk
ﻩ+”’or员工名='”+jk1+”'”;
ﻩﻩﻩStatementps1;
ﻩﻩtry{
ps1 = con。
createStatement();
ﻩps1.execute(sql1);//执行删除
ﻩﻩﻩﻩ}catch(SQLExceptione){
ﻩﻩﻩ//TODOAuto—generatedcatchblock
ﻩe。
printStackTrace();
ﻩﻩ}
ﻩ效果如下:
五、添加模块:
添加数据到数据库主要用的是sql中的insert语句,在数据中增加所需数据,这期间要特别注意语句中的变量与引号的问题,以员工销售表为例,关键代码如下:
Stringnum1 = jTextField1。
getText();
Stringnum2= jTextField2.getText();
ﻩﻩintii=Integer.valueOf(jTextField3。
getText());
ﻩintprice1= Integer。
valueOf(jTextField4。
getText());
int price2= Integer。
valueOf(jTextField5。
getText());
ﻩintprice3=Integer.valueOf(jTextField6。
getText());
ﻩﻩStringsql= "insertintosellInfovalues('"+ num1 +”','"+num2
ﻩﻩﻩﻩ+”',’"+ ii+"',’” + price1+”’,'” +price2 +"','”+price3
ﻩﻩ+”’)”;
ﻩﻩﻩﻩPreparedStatement ps=con。
prepareStatement(sql);
ﻩﻩps.executeUpdate();//执行并更新语句
效果如下:
六、查询模块:
查询方式主要有两种:
一是精确查找,通过用户所输入的编号,名称进行查找;二是模糊查找,通过用户所输入的模糊信息进行查找,输出所有符合的结果.
1。
精确查找关键代码如下:
ﻩStringsql="select*fromgoodsInfo";
ﻩﻩStringnum1=null, name= null;
ﻩintnum2=0;
ﻩﻩﻩStatementps=con.createStatement();
ﻩﻩResultSetrs= ps。
executeQuery(sql);
ﻩwhile(rs。
next()){
ﻩﻩﻩif(rs。
getString("商品编号”).equals(jTextField1.getText())
||rs。
getString("商品名称").equals(jTextField2。
getText())){
ﻩﻩnum1= rs。
getString(”商品编号");
ﻩﻩﻩﻩname=rs。
getString("商品名称");
ﻩﻩﻩnum2= rs。
getInt(”商品单价(元)”);
ﻩﻩﻩﻩ}
ﻩﻩﻩ}
2.模糊查询关键代码如下:
Stringnum1=jTextField3.getText(),num2=jTextField4.getText(), num3= jTextField5。
getText();
ﻩﻩif(num1。
equals("”) &&num2。
equals(”")&&num3。
equals("")){
ﻩﻩGoodsInfogi= newGoodsInfo();
ﻩﻩgi。
getGoodsInfo();//如果全部为空,则显示所有数据
ﻩ} elseif(!
num1。
equals(null)||!
num2。
equals(null)ﻩ|| !
num3。
equals(null)){
ﻩﻩStatementps;
ﻩﻩps =con.createStatement();
ﻩﻩResultSetrs;
ﻩrs=ps。
executeQuery(”select*fromgoodsInfowhere 商品编号 like’"+num1+"%’and商品名称 like'”+num2+ "%’and 商品单价(元)like'”+num3+"%'”);
效果如下:
精确查找:
输入商品编号:
201204,显示结果如下:
模糊查找:
输入商品编号:
20120,显示结果如下:
七、打印模块:
打印信息表主要将修改好的数据输出称excel的形式,保存在电脑里,以staffInfo为例,
String[]title={ "员工编号”,”员工名",”年龄”,"性别","部门”,”职务”};//准备设置excel工作表的标题
ﻩﻩStringfilePath =”D:
\\staffInfo.xls”;// 输出的excel的路径
OutputStreamos=new FileOutputStream(filePath);// 创建Excel工作薄
WritableWorkbookwwb =Workbook.createWorkbook(os);
ﻩﻩ//添加第一个工作表并设置第一个Sheet的名字
WritableSheetsheet=wwb。
createSheet(”员工基本信息表",0);
ﻩLabellabel=null;
ﻩﻩfor(inti=0; i〈title.length;i++) {
ﻩ//Label(x,y,z)其中x代表单元格的第x+1列,第y+1行,单元格的内容是y//在Label对象的子对象中指明单元格的位置和内容
ﻩlabel=newLabel(i,0,title[i]);//将定义好的单元格添加到工作表中
ﻩsheet。
addCell(label);
ﻩ}
ﻩStatementstmt=con.createStatement();
ﻩResultSetresult=stmt.executeQuery("select *fromstaffInfo");//查询表中的所有数据
ﻩﻩﻩintx=0;
ﻩwhile (result。
next()) { //从数据库中取得数据
ﻩﻩﻩx++;//控制行数
ﻩﻩfor(inty=0;y〈title.length;y++){// 获得列数
ﻩﻩﻩlabel = newLabel(y,x, result.getString(y+1));
ﻩﻩ//x代表行, y代表列,通过rst。
getString()设置单元格内容
ﻩsheet。
addCell(label);//将内容加到execl中去
ﻩ}
ﻩﻩ}
ﻩwwb。
write();//写入数据
ﻩwwb.close();//关闭文件
保存效果如下:
关键代码如下:
OutPutExloe1= new OutPutExl();
ﻩoe1.OutPutExlstaff();
JOptionPane。
showMessageDialog(null, "输出打印员工基本信息表成功!
保存在D:
staffInfo");
八、登陆界面:
Login.Java
首先连接数据库,并判断用户所输的用户名,密码是否正确,如果匹配则让其通过,否则提示用户名与密码不匹配,请重新输入。
判断方法queryUser语句如下:
booleanqueryUser(StringuserName,Stringpass){
Connection1db=newConnection1();
ﻩ Connectioncon=db。
getConnection();
ﻩ Stringsql=”select*frompasswordwhere Username='”+userName +”’and Password=’"+pass+”’";
ﻩ
try{
ﻩStatement ps=con。
createStatement();
ﻩﻩResultSetrs=ps。
executeQuery(sql);ﻩ
if(rs。
next()){
ﻩﻩif(rs。
getString("Username”)。
equals(userName)&&rs.getString(”Password”).equals(pass))
ﻩreturntrue;
ﻩelse
ﻩreturnfalse;
ﻩﻩ}else
ﻩﻩreturn false;
登录如下:
(4)系统的使用说明:
设备支持:
推荐配置:
Windows7,512内存。
数据库:
MySQL Server 5.0。
软件支持:
MyEclipse编写。