JAVA課程設(shè)計-企業(yè)銷售管理系統(tǒng)_第1頁
JAVA課程設(shè)計-企業(yè)銷售管理系統(tǒng)_第2頁
JAVA課程設(shè)計-企業(yè)銷售管理系統(tǒng)_第3頁
JAVA課程設(shè)計-企業(yè)銷售管理系統(tǒng)_第4頁
JAVA課程設(shè)計-企業(yè)銷售管理系統(tǒng)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

常州大學(xué)課程設(shè)計PAGEPAGE2第2頁共23頁序號:10學(xué)號:11416230常州大學(xué)課程設(shè)計課程名稱:《面向?qū)ο蟪绦蛟O(shè)計(JAVA)》題目:企業(yè)銷售管理系統(tǒng)姓名:`````````學(xué)院:信息科學(xué)與工程學(xué)院專業(yè)班級:```````指導(dǎo)教師:``````設(shè)計時間:2012年12月24日2013年1月11日目錄任務(wù)書系統(tǒng)功能分析········································03系統(tǒng)組成············································03正文系統(tǒng)分析功能模塊·········································04功能流程圖·······································06數(shù)據(jù)庫設(shè)計··········································07系統(tǒng)詳細(xì)設(shè)計連接數(shù)據(jù)庫·······································08主界面···········································08修改、添加、刪除模塊·····························10查詢、打印、登錄模塊·····························14系統(tǒng)使用說明···········································21日記···················································22心得體會···············································22參考文獻(xiàn)···············································23致謝···················································23修改功能:保存退出修改功能修改其他修改數(shù)目修改編號修改名稱查詢數(shù)據(jù)保存退出修改功能修改其他修改數(shù)目修改編號修改名稱查詢數(shù)據(jù)刪除功能:刪除功能查詢數(shù)據(jù)確定刪除保存退出刪除功能查詢數(shù)據(jù)確定刪除保存退出程序結(jié)構(gòu)流程圖:企業(yè)銷售管理系統(tǒng)企業(yè)銷售管理系統(tǒng)員工基本信息表商品信息表員工銷售信息表查詢修改添加刪除查詢修改添加添加修改刪除輸出打印系統(tǒng)退出(2)數(shù)據(jù)庫設(shè)計: 按照規(guī)范設(shè)計的方法,考慮數(shù)據(jù)庫及其管理系統(tǒng)開發(fā)的全過程,將數(shù)據(jù)庫設(shè)計分為以下六個階段:·需求分析·概念結(jié)構(gòu)設(shè)計·邏輯結(jié)構(gòu)設(shè)計·物理結(jié)構(gòu)設(shè)計·數(shù)據(jù)庫實施·數(shù)據(jù)庫運(yùn)行和維護(hù)基本要求在mysql軟件基礎(chǔ)上,利用應(yīng)用系統(tǒng)開發(fā)為企業(yè)銷售管理設(shè)計數(shù)據(jù)庫和建立相應(yīng)的數(shù)據(jù)庫。創(chuàng)建4個表格,分別為sellInfo,staffInfo,goodsInfo,以及登錄所需的password表格。信息要求,處理要求,安全性和完整性要求,數(shù)據(jù)流圖,數(shù)據(jù)字典,數(shù)據(jù)項之間應(yīng)有的聯(lián)系必須表示出來,用數(shù)據(jù)依賴表示即可邏輯結(jié)構(gòu)設(shè)計必須:說明各個關(guān)系模式所屬的范式,如果不是BC或3NF范式,(3)系統(tǒng)的詳細(xì)設(shè)計:連接數(shù)據(jù)庫:importjava.sql.*;publicclassConnection1{ Connectionconnect; privateStringdbDriver="com.mysql.jdbc.Driver";//加載數(shù)據(jù)庫驅(qū)動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("數(shù)據(jù)庫加載失敗");} returnconnect; }主界面:View.java首先在主界面的panel里顯示數(shù)據(jù)庫中的數(shù)據(jù),以商品信息表為例。 JTabletable; JScrollPanejscrollpane;//申明滾動面板變量 TableModelmyTable=newDefaultTableModel(); Connection1db=newConnection1(); Connectioncon=db.getConnection();//連接到數(shù)據(jù)庫 Statementps; try{ ps=con.createStatement(); ResultSetrs; rs=ps.executeQuery("select*fromgoodsInfo");//在sell表格中執(zhí)行查詢 ResultSetMetaDatametaData; metaData=rs.getMetaData();//得到數(shù)據(jù)庫元數(shù)據(jù) intnumber=metaData.getColumnCount();//得到數(shù)據(jù)庫中表的列的個數(shù) VectorcolumnNames=newVector();//調(diào)用Vector類,生成可自動增長的數(shù)組對象列 Vectorrows=newVector();//對象行 for(intnum=0;num<number;num++){ columnNames.addElement(metaData.getColumnLabel(num+1)); }//循環(huán)生成 while(rs.next()){ VectornewRow=newVector();/*for循環(huán),將結(jié)果集中一行數(shù)據(jù)放到newRow矢量中*/ for(inti=1;i<=number;i++){ newRow.addElement(rs.getObject(i)); }/*將上面的矢量newRow作為矢量rows中的一個元素,這樣rows中的一個元素就代表結(jié)果集中的一行數(shù)據(jù)*/ rows.addElement(newRow);//增長行 myTable=newDefaultTableModel(rows,columnNames);//在表格中加載數(shù)據(jù) } }catch(SQLExceptionex){ } table=newJTable(myTable); jscrollpane=newJScrollPane(table); jscrollpane.setViewportView(table); jscrollpane.revalidate(); jPanel3.setLayout(newBorderLayout()); jPanel3.add(jscrollpane,BorderLayout.CENTER); jPanel3.setVisible(true);效果如下:三、修改模塊:首先對所需修改的員工信息進(jìn)行查詢,并顯示在修改界面上,關(guān)鍵代碼如下:Connection1db=newConnection1(); Connectioncon=db.getConnection();//連接數(shù)據(jù)庫 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("商品數(shù)目"); price1=rs.getInt("應(yīng)付金額(元)"); price2=rs.getInt("顧客付款(元)"); price3=rs.getInt("找回金額(元)"); } } jTextField2.setText(num1); jTextField3.setText(num2); jTextField4.setText(""+num3); jTextField5.setText(""+price1); jTextField6.setText(""+price2); jTextField7.setText(""+price3);//在修改界面上顯示該員工銷售的信息 }然后在對修改界面上的信息進(jìn)行修改,并返回保存至數(shù)據(jù)庫,關(guān)鍵代碼如下:Stringsql="updatesellInfoset員工編號='"+num1+"',商品編號='"+num2+"',商品數(shù)目="+num3+",應(yīng)付金額(元)="+price1+",顧客付款(元)="+price2+",找回金額(元)="+price3+"where員工編號='"+num1+"'"; try{ ps=con.createStatement(); ps.executeUpdate(sql);//數(shù)據(jù)更新 }catch(SQLExceptione){ e.printStackTrace(); }效果如下:四、刪除模塊:首先對用戶輸入的員工編號或者員工名稱進(jìn)行查找,當(dāng)數(shù)據(jù)庫中由此數(shù)據(jù)時,顯示該數(shù)據(jù),并請求用戶是否確定刪除,運(yùn)用sql語句中的delete,以員工基本信息為例,關(guān)鍵代碼如下: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("職務(wù)"); } } } ints=JOptionPane.showConfirmDialog(null,"確定要刪除此數(shù)據(jù)嗎?\t\n員工編號:"+jTextField1.getText()+"\t\n"+"員工名:"+num2+"\t\n" +"年齡:"+i+"(歲)"+"\t\n"+"性別:"+num3+"\t\n" +"部門:"+num4+"\t\n"+"職務(wù):"+num5+"\t");//顯示對話框是否確定刪除 if(s==0){ Stringjk=jTextField1.getText(); Stringjk1=jTextField2.getText(); Stringsql1="deletefromstaffInfowhere員工編號='"+jk +"'or員工名='"+jk1+"'"; Statementps1; try{ ps1=con.createStatement(); ps1.execute(sql1);//執(zhí)行刪除 }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } 效果如下:五、添加模塊:添加數(shù)據(jù)到數(shù)據(jù)庫主要用的是sql中的insert語句,在數(shù)據(jù)中增加所需數(shù)據(jù),這期間要特別注意語句中的變量與引號的問題,以員工銷售表為例,關(guān)鍵代碼如下: Stringnum1=jTextField1.getText(); Stringnum2=jTextField2.getText(); intii=Integer.valueOf(jTextField3.getText()); intprice1=Integer.valueOf(jTextField4.getText()); intprice2=Integer.valueOf(jTextField5.getText()); intprice3=Integer.valueOf(jTextField6.getText()); Stringsql="insertintosellInfovalues('"+num1+"','"+num2 +"','"+ii+"','"+price1+"','"+price2+"','"+price3 +"')"; PreparedStatementps=con.prepareStatement(sql); ps.executeUpdate();//執(zhí)行并更新語句效果如下:六、查詢模塊:查詢方式主要有兩種:一是精確查找,通過用戶所輸入的編號,名稱進(jìn)行查找;二是模糊查找,通過用戶所輸入的模糊信息進(jìn)行查找,輸出所有符合的結(jié)果。1.精確查找關(guān)鍵代碼如下: 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.模糊查詢關(guān)鍵代碼如下:Stringnum1=jTextField3.getText(),num2=jTextField4.getText(),num3=jTextField5.getText(); if(num1.equals("")&&num2.equals("")&&num3.equals("")){ GoodsInfogi=newGoodsInfo(); gi.getGoodsInfo();//如果全部為空,則顯示所有數(shù)據(jù) }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,顯示結(jié)果如下:模糊查找:輸入商品編號:20120,顯示結(jié)果如下:七、打印模塊:打印信息表主要將修改好的數(shù)據(jù)輸出稱excel的形式,保存在電腦里,以staffInfo為例,String[]title={"員工編號","員工名","年齡","性別","部門","職務(wù)"};//準(zhǔn)備設(shè)置excel工作表的標(biāo)題 StringfilePath="D:\\staffInfo.xls";//輸出的excel的路徑 OutputStreamos=newFileOutputStream(filePath);//創(chuàng)建Excel工作薄 WritableWorkbookwwb=Workbook.createWorkbook(os); //添加第一個工作表并設(shè)置第一個Sheet的名字 WritableSheetsheet=wwb.createSheet("員工基本信息表",0); Labellabel=null; for(inti=0;i<title.length;i++){ //Label(x,y,z)其中x代表單元格的第x+1列,第y+1行,單元格的內(nèi)容是y//在Label對象的子對象中指明單元格的位置和內(nèi)容 label=newLabel(i,0,title[i]);//將定義好的單元格添加到工作表中 sheet.addCell(label); } Statementstmt=con.createStatement(); ResultSetresult=stmt.executeQuery("select*fromstaffInfo");//查詢表中的所有數(shù)據(jù) intx=0; while(result.next()){//從數(shù)據(jù)庫中取得數(shù)據(jù) x++;//控制行數(shù) for(inty=0;y<title.length;y++){//獲得列數(shù) label=newLabel(y,x,result.getString(y+1)); //x代表行,y代表列,通過rst.getString()設(shè)置單元格內(nèi)容 sheet.addCell(label);//將內(nèi)容加到execl中去 } } wwb.write();//寫入數(shù)據(jù) wwb.close();//關(guān)閉文件保存效果如下:關(guān)鍵代碼如下:OutPutExloe1=newOutPutExl(); oe1.OutPutExlstaff(); JOptionPane.showMessageDialog(null,"輸出打印員工基本信息表成功!保存在D:staffInfo");八、登陸界面:Login.Java首先連接數(shù)據(jù)庫,并判斷用戶所輸?shù)挠脩裘艽a是否正確,如果匹配則讓其通過,否則提示用戶名與密碼不匹配,請重新輸入。判斷方法queryUser語句如下:booleanqueryUser(StringuserName,Stringpass){ Connection1db=newConnection1(); Connectioncon=db.getConnection(); Stringsql="select*frompasswordwhereUsername='"+userName+"'andPassword='"+pass+"'"; try{ Statementps=con.createStatement(); ResultSetrs=ps.executeQuery(sql); if(rs.next()){ if(rs.getString("Username").equals(userName)&&rs.getString("Password").equals(pass)) returntrue; else returnfalse; }else returnfalse;登錄如下:(4)系統(tǒng)的使用說明:設(shè)備支持:推薦配置:Windows7,512內(nèi)存。數(shù)據(jù)庫:MySQLServer5.0。軟件支持:MyEclipse編寫。(5)日志:課程設(shè)計第一天:進(jìn)行整體的布局構(gòu)思,創(chuàng)建員工信息表、商品信息表、員工銷售信息表連接數(shù)據(jù)庫,實現(xiàn)多種方式驗證登錄。第二天:創(chuàng)建主界面,將數(shù)據(jù)庫里的表格信息出現(xiàn)在客戶端上。主要是panel的運(yùn)用。第三天:進(jìn)行簡單的語句查詢,調(diào)試編碼問題—中文亂碼,并設(shè)置滾動面板。通過網(wǎng)上查找了解

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論