電子商務(wù)專(zhuān)業(yè)課程設(shè)計(jì)會(huì)員信息管理系統(tǒng)_第1頁(yè)
電子商務(wù)專(zhuān)業(yè)課程設(shè)計(jì)會(huì)員信息管理系統(tǒng)_第2頁(yè)
電子商務(wù)專(zhuān)業(yè)課程設(shè)計(jì)會(huì)員信息管理系統(tǒng)_第3頁(yè)
電子商務(wù)專(zhuān)業(yè)課程設(shè)計(jì)會(huì)員信息管理系統(tǒng)_第4頁(yè)
電子商務(wù)專(zhuān)業(yè)課程設(shè)計(jì)會(huì)員信息管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

大連海事大學(xué)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告姓名:周慧敏班級(jí):2023級(jí)電子商務(wù)1班學(xué)號(hào):指導(dǎo)老師:張偲專(zhuān)業(yè)班級(jí):電子商務(wù)______學(xué)生姓名:周慧敏__指導(dǎo)教師(署名):一、課程設(shè)計(jì)題目會(huì)員信息管理系統(tǒng)二、本次課程設(shè)計(jì)應(yīng)達(dá)成的目的1.通過(guò)該題目的設(shè)計(jì),使學(xué)生掌握軟件開(kāi)發(fā)過(guò)程的問(wèn)題分析、系統(tǒng)設(shè)計(jì)、程序編碼、測(cè)試等基本方法和技能;三、本次課程設(shè)計(jì)任務(wù)的重要內(nèi)容和規(guī)定(涉及原始數(shù)據(jù)、技術(shù)參數(shù)、設(shè)計(jì)規(guī)定等)使用窗體等控件構(gòu)建會(huì)員信息管理系統(tǒng)界面,實(shí)現(xiàn)簡(jiǎn)樸的會(huì)員信息管理功能,每次錄入完會(huì)員信息之后就能實(shí)現(xiàn)對(duì)其刪除,查詢,修改等操作。規(guī)定:1.1人完畢2.功能實(shí)現(xiàn),界面和諧四、進(jìn)度安排1.第1天:選題、查閱資料;2.第2天:擬定設(shè)計(jì)方案;3.3-8天:方案的實(shí)現(xiàn)、調(diào)試與驗(yàn)證;4.9-10天:撰寫(xiě)課程設(shè)計(jì)報(bào)告初稿并修改;五、重要參考文獻(xiàn):1.《Javas實(shí)用教程(第2版)》,鄭阿奇,電子工業(yè)出版社2.MSDN一、應(yīng)用技術(shù)及開(kāi)發(fā)環(huán)境1.JAVA語(yǔ)言及JDKJDK(JavaDevelopmentKit)是SunMicrosystems針對(duì)Java開(kāi)發(fā)員的產(chǎn)品。自從Java推出以來(lái),JDK已經(jīng)成為使用最廣泛的JavaSDK。JDK是整個(gè)Java的核心,涉及了Java運(yùn)營(yíng)環(huán)境、Java工具和Java基礎(chǔ)類(lèi)庫(kù)。JDK是學(xué)好Java的第一步。而專(zhuān)門(mén)運(yùn)營(yíng)在x86平臺(tái)的Jrocket在服務(wù)端運(yùn)營(yíng)效率也要比SunJDK好很多。從SUN的JDK5.0開(kāi)始,提供了泛型等非常實(shí)用的功能,其版本也不斷更新,運(yùn)營(yíng)效率得到了非常大的提高。2.eclipseEclipse是一個(gè)開(kāi)放源代碼的、基于Java的可擴(kuò)展開(kāi)發(fā)平臺(tái)。就其自身而言,它只是一個(gè)框架和一組服務(wù),用于通過(guò)插件組件構(gòu)建開(kāi)發(fā)環(huán)境。幸運(yùn)的是,Eclipse附帶了一個(gè)標(biāo)準(zhǔn)的插件集,涉及Java開(kāi)發(fā)工具(JavaDevelopmentKit,JDK)。二、結(jié)構(gòu)設(shè)計(jì)與結(jié)構(gòu)功能圖1.結(jié)構(gòu)設(shè)計(jì)根據(jù)對(duì)系統(tǒng)進(jìn)行需求分析,本系統(tǒng)將分為4個(gè)模塊:●會(huì)員基本信息管理管理睬員基本信息,涉及個(gè)人信息的添加、修改、刪除以及查詢?!駮?huì)員消費(fèi)信息管理管理睬員的消費(fèi)信息,涉及消費(fèi)記錄的添加、修改、刪除以及查詢?!駮?huì)員積分信息管理管理睬員積分信息,涉及會(huì)員積分的添加、修改、刪除以及查詢。。2.功能結(jié)構(gòu)圖會(huì)員信息管理系統(tǒng)功能結(jié)構(gòu)如圖2.1所示。會(huì)員信息管理系統(tǒng)會(huì)員信息管理系統(tǒng)會(huì)員基本信息管理模塊會(huì)員消費(fèi)信息管理模塊會(huì)員積分信息管理模塊查詢修改刪除添加查詢修改刪除添加顯示查詢修改刪除添加圖圖2.1會(huì)員信息管理系統(tǒng)功能結(jié)構(gòu)圖三、系統(tǒng)實(shí)現(xiàn)該系統(tǒng)由4個(gè)模塊構(gòu)成,涉及會(huì)員信息管理系統(tǒng)主界面模塊、會(huì)員基本信息管理模塊、會(huì)員消費(fèi)信息管理模塊和會(huì)員積分信息管理模塊。下面分別加以敘述:①會(huì)員信息管理系統(tǒng)主界面模塊圖3.1會(huì)員信息管理系統(tǒng)主界面②會(huì)員基本信息管理模塊圖3.2會(huì)員基本信息管理模塊的運(yùn)營(yíng)界面③會(huì)員消費(fèi)信息管理模塊圖3.3會(huì)員消費(fèi)信息管理模塊運(yùn)營(yíng)界面④會(huì)員積分信息管理模塊圖3.4會(huì)員積分信息管理模塊的運(yùn)營(yíng)界面四、系統(tǒng)調(diào)試與測(cè)試4.1測(cè)試的定義及目的軟件測(cè)試就是在軟件投入運(yùn)營(yíng)之前,對(duì)軟件需求分析、設(shè)計(jì)規(guī)格說(shuō)明和編碼的最終復(fù)審,是保證軟件質(zhì)量的關(guān)鍵環(huán)節(jié)。假如要給軟件測(cè)試下定義,可以這樣講,軟件測(cè)試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過(guò)程。測(cè)試的目的在于將軟件設(shè)計(jì)時(shí)設(shè)計(jì)者與程序開(kāi)發(fā)者之間理解不一致的地方、功能與需求不一致的地方、不符合邏輯思維的情況都反映給質(zhì)量控制部門(mén),由質(zhì)量控制部門(mén)調(diào)配需求部門(mén)統(tǒng)一做出一個(gè)明確解答,再由開(kāi)發(fā)人員進(jìn)行修改和補(bǔ)充。4.2系統(tǒng)功能測(cè)試功能測(cè)試重要是測(cè)試程序模塊是否實(shí)現(xiàn)了設(shè)計(jì)中所規(guī)定的功能。功能測(cè)試中需要注意的有:(1)查詢功能中,是按會(huì)員號(hào)進(jìn)行查詢的。每次查詢前需要先輸入會(huì)員號(hào),假如沒(méi)有,程序運(yùn)營(yíng)時(shí)會(huì)彈出提醒信息窗口,告訴用戶輸入會(huì)員信息。(2)錄入功能中,需要注意的是前臺(tái)設(shè)立的數(shù)值長(zhǎng)度是否大于后臺(tái)數(shù)值長(zhǎng)度,以及前臺(tái)和后臺(tái)的數(shù)據(jù)結(jié)構(gòu)是否相符,很多時(shí)候錄入功能無(wú)法實(shí)現(xiàn)是由于這些因素。尚有就是必須錄入的字段的設(shè)立時(shí)候有誤。(3)測(cè)試刪除功能中需要注意的是單擊"刪除"按鈕后,一般會(huì)出現(xiàn)提醒信息,詢問(wèn)是否擬定刪除。通常情況下,我們單擊"確認(rèn)"按鈕查看信息是否被刪除掉了,而忽略了單擊"取消"按鈕后程序的反映:這時(shí)有也許的是沒(méi)有刪除,尚有一種也許是即便單擊了"取消"按鈕,也同樣刪除了數(shù)據(jù)。(4)關(guān)于修改功能的測(cè)試重要是看修改確認(rèn)后是否數(shù)據(jù)真正已被修改了。這是最基本的功能,需要注意的是看是否能把不應(yīng)當(dāng)修改的數(shù)據(jù)也修改成功了。4.3系統(tǒng)調(diào)試常見(jiàn)錯(cuò)誤1.NullPointerException異常一般是對(duì)一個(gè)為NULL值的變量進(jìn)行操作引起的。為避免這種異常,最佳在對(duì)變量操作之前檢查,看它是否為NULL值。2.NumberFormatException異常這是由于數(shù)字的格式錯(cuò)誤而出現(xiàn)的例外。為了避免出現(xiàn)此類(lèi)錯(cuò)誤,一般必須保證數(shù)據(jù)格式輸入對(duì)的。結(jié)束語(yǔ)通過(guò)這次課題的設(shè)計(jì)并實(shí)現(xiàn),盡管會(huì)碰到很多難題,但是讓我更加受益的是在這次課題中得到的經(jīng)驗(yàn)、心得和鍛煉。我發(fā)現(xiàn)開(kāi)發(fā)項(xiàng)目的過(guò)程其實(shí)就是個(gè)不斷的解決問(wèn)題的過(guò)程,從中也感覺(jué)到項(xiàng)目開(kāi)發(fā)的快樂(lè),一個(gè)人永遠(yuǎn)有學(xué)不完的知識(shí),就算是項(xiàng)目開(kāi)發(fā)中的知識(shí)點(diǎn)都學(xué)了,但在實(shí)際的開(kāi)發(fā)過(guò)程中仍然會(huì)碰到不少問(wèn)題,碰到問(wèn)題時(shí)要做到兩點(diǎn):一個(gè)是“查”,一個(gè)是“問(wèn)”。不懂的地方就得要自己找答案,可以從書(shū)本、網(wǎng)絡(luò)中查找解決的答案;再一個(gè)就是問(wèn)周邊的同學(xué)。比如,在本科課題的編寫(xiě)代碼部分,本人就參考了《java核心技術(shù)》,從中得到了圖形編程的很多有用的方法。這次課程的設(shè)計(jì)給我以前所學(xué)的知識(shí)做了一個(gè)總結(jié),為我進(jìn)一步學(xué)習(xí)編程做了鋪墊。在本課題中存在的局限性之處是在所難免的,本人將在日后加于改善。致謝在本課題的設(shè)計(jì)和實(shí)現(xiàn)的過(guò)程中碰到的不少的難題,我要感謝那些給我?guī)?lái)幫助的書(shū)籍和internet,尚有周邊的同學(xué)們。假如沒(méi)有他們的幫助,本課題的設(shè)計(jì)和實(shí)現(xiàn)就不會(huì)如期順利完畢。還要感謝我們的指導(dǎo)老師給我們這么多學(xué)生的文檔認(rèn)真批改,讓我們知道在課程設(shè)計(jì)與實(shí)現(xiàn)的過(guò)程中存在的問(wèn)題。附錄:程序源代碼(1)Menu.java(主窗口)packageCRM;importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.*;importjavax.swing.*;importjavax.swing.border.*;importjava.util.*;classMenuextendsJFrameimplementsActionListener{ JButtonCustomerManager=newJButton("會(huì)員信息"); JButtonConsumptionManager=newJButton("消費(fèi)信息"); JButtonScore=newJButton("會(huì)員積分信息"); JMenuBarmb=newJMenuBar();//菜單欄 JPaneljp=newJPanel();//用來(lái)填放子模塊 Containercp=getContentPane(); Stringusername; Menu(){ } Menu(Stringusername){ this.username=username; mb.add(CustomerManager); mb.add(ConsumptionManager); mb.add(Score); cp.add(mb,"North"); //設(shè)立邊框 jp.setBorder(BorderFactory.createTitledBorder( BorderFactory.createLineBorder(Color.blue,2),null, TitledBorder.CENTER,TitledBorder.TOP)); jp.setLayout(newBorderLayout()); JLabellabel1=newJLabel(newImageIcon("4.jpg")); jp.add(label1); JLabellabel2=newJLabel(newImageIcon("2.jpg")); jp.add(label2,"South"); JScrollPanescrollpane=newJScrollPane(jp); cp.add(scrollpane); Toolkitkit=Toolkit.getDefaultToolkit(); Dimensionscreen=kit.getScreenSize(); intx=screen.width;/*取得顯示器窗口的寬度*/ inty=screen.height;/*取得顯示器窗口的高度*/ setSize(600,600); intxcenter=(x-600)/2; intycenter=(y-600)/2; setLocation(xcenter,ycenter);/*顯示在窗口中央*/ setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //注冊(cè)臨聽(tīng)器 CustomerManager.addActionListener(this); ConsumptionManager.addActionListener(this); Score.addActionListener(this); } publicvoidactionPerformed(ActionEvente){ Stringcmd=e.getActionCommand(); if(cmd.equals("會(huì)員信息")){ newCustomerManager(); } if(cmd.equals("消費(fèi)信息")){ newConsumptionManager(); } if(cmd.equals("會(huì)員積分信息")){ newScore(); } } publicstaticvoidmain(String[]args){ newMenu(""); }}(2)Score.java(會(huì)員積分管理界面)packageCRM;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjava.util.*;classCustomer1implementsjava.io.Serializable{ /** * */ privatestaticfinallongserialVersionUID=1L; Stringnumber,name,lastmonth,thismonth,sex,total; publicCustomer1(){ }; publicvoidsetNumber(Stringnumber){ this.number=number; } publicStringgetNumber(){ returnnumber; } publicvoidsetName(Stringname){ =name; } publicStringgetName(){ returnname; } publicvoidsetlastmonth(Stringlastmonth){ this.lastmonth=lastmonth; } publicStringgetlastmonth(){ returnlastmonth; } publicvoidsetthismonth(Stringthismonth){ this.thismonth=thismonth; } publicStringgetthismonth(){ returnthismonth; } publicvoidsetSex(Stringsex){ this.sex=sex; } publicStringgetSex(){ returnsex; } publicvoidsettotal(Stringtotal){ this.total=total; } publicStringgettotal(){ returntotal; }}publicclassScoreextendsJFrame{ /** * */ privatestaticfinallongserialVersionUID=1L; JLabellb=newJLabel("錄入請(qǐng)先輸入記錄,查詢、刪除請(qǐng)先輸入會(huì)員號(hào),修改時(shí)對(duì)查詢"+"內(nèi)容改后的保存!"); JTextField會(huì)員號(hào),姓名,上月積分,本月積分,總積分; JRadioButton男,女; ButtonGroupgroup=null; JButton錄入,查詢,刪除,修改,顯示; JPanelp1,p2,p3,p4,p5,p6,pv,ph; Customer1會(huì)員=null; Hashtable<String,Customer1>會(huì)員散列表=null; Filefile=null; FileInputStreaminOne=null; ObjectInputStreaminTwo=null; FileOutputStreamoutOne=null; ObjectOutputStreamoutTwo=null; publicScore(){ super("會(huì)員積分信息管理系統(tǒng)"); 會(huì)員號(hào)=newJTextField(10); 姓名=newJTextField(10); 上月積分=newJTextField(10); 本月積分=newJTextField(10); 總積分=newJTextField(10); group=newButtonGroup(); 男=newJRadioButton("男",true); 女=newJRadioButton("女",false); group.add(男); group.add(女); 錄入=newJButton("錄入"); 查詢=newJButton("查詢"); 刪除=newJButton("刪除"); 修改=newJButton("修改"); 顯示=newJButton("顯示"); 錄入.addActionListener(newInputAct()); 查詢.addActionListener(newInquestAct()); 修改.addActionListener(newModifyAct()); 刪除.addActionListener(newDeleteAct()); 顯示.addActionListener(newShowAct()); 修改.setEnabled(false); p1=newJPanel(); p1.add(newJLabel("會(huì)員號(hào):",JLabel.CENTER)); p1.add(會(huì)員號(hào)); p2=newJPanel(); p2.add(newJLabel("姓名:",JLabel.CENTER)); p2.add(姓名); p3=newJPanel(); p3.add(newJLabel("性別:",JLabel.CENTER)); p3.add(男); p3.add(女); p4=newJPanel(); p4.add(newJLabel("上月積分:",JLabel.CENTER)); p4.add(上月積分); p5=newJPanel(); p5.add(newJLabel("本月積分:",JLabel.CENTER)); p5.add(本月積分); p6=newJPanel(); p6.add(newJLabel("總積分:",JLabel.CENTER)); p6.add(總積分); pv=newJPanel(); pv.setLayout(newGridLayout(6,1)); pv.add(p1); pv.add(p2); pv.add(p3); pv.add(p4); pv.add(p5); pv.add(p6); ph=newJPanel(); ph.add(錄入); ph.add(查詢); ph.add(修改); ph.add(刪除); ph.add(顯示); file=newFile("會(huì)員積分信息.txt"); 會(huì)員散列表=newHashtable<String,Customer1>(); if(!file.exists()){ try{ FileOutputStreamout=newFileOutputStream(file); ObjectOutputStreamobjectOut=newObjectOutputStream(out); objectOut.writeObject(會(huì)員散列表); objectOut.close(); out.close(); }catch(IOExceptione){ } } Containercon=getContentPane(); con.setLayout(newBorderLayout()); con.add(lb,BorderLayout.NORTH); con.add(pv,BorderLayout.CENTER); con.add(ph,BorderLayout.SOUTH); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(100,50,500,380); setVisible(true); } publicstaticvoidmain(Stringargs[]){ newScore(); } classInputActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ 修改.setEnabled(false); Stringnumber=""; number=會(huì)員號(hào).getText(); if(number.length()>0){ try{ inOne=newFileInputStream(file); inTwo=newObjectInputStream(inOne); 會(huì)員散列表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); }catch(Exceptionee){ System.out.println("創(chuàng)建散列表出現(xiàn)問(wèn)題!"); } if(會(huì)員散列表.containsKey(number)){ Stringwarning="該會(huì)員信息已存在,請(qǐng)到修改頁(yè)面修改!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); }//endif1 else{ Stringm="該會(huì)員信息將被錄入!"; intok=JOptionPane.showConfirmDialog(null,m,"確認(rèn)", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok==JOptionPane.YES_OPTION){ Stringname=姓名.getText(); Stringlastmonth=上月積分.getText(); Stringthismonth=本月積分.getText(); Stringtotal=總積分.getText(); Stringsex=null; if(男.isSelected()){ sex=男.getText(); }else{ sex=女.getText(); } 會(huì)員=newCustomer1(); 會(huì)員.setNumber(number); 會(huì)員.setName(name); 會(huì)員.setlastmonth(lastmonth); 會(huì)員.setthismonth(thismonth); 會(huì)員.settotal(total); 會(huì)員.setSex(sex); try{ outOne=newFileOutputStream(file); outTwo=newObjectOutputStream(outOne); 會(huì)員散列表.put(number,會(huì)員); outTwo.writeObject(會(huì)員散列表); outTwo.close(); outOne.close(); }catch(Exceptionee){ System.out.println("輸出散列表出現(xiàn)問(wèn)題!"); } 會(huì)員號(hào).setText(null); 姓名.setText(null); 上月積分.setText(null); 本月積分.setText(null); 總積分.setText(null); } }//endelse1 }//endif0 else{ Stringwarning="必須輸入會(huì)員號(hào)!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); }//endelse0 }//endactionPerformed }//endclass classInquestActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ Stringnumber=""; number=會(huì)員號(hào).getText(); if(number.length()>0){ try{ inOne=newFileInputStream(file); inTwo=newObjectInputStream(inOne); 會(huì)員散列表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); }catch(Exceptionee){ System.out.println("散列表有問(wèn)題!"); } if(會(huì)員散列表.containsKey(number)){ 修改.setEnabled(true); Customer1stu=(Customer1)會(huì)員散列表.get(number); 姓名.setText(stu.getName()); 上月積分.setText(stu.getlastmonth()); 本月積分.setText(stu.getthismonth()); 總積分.setText(stu.gettotal()); if(stu.getSex().equals("男")){ 男.setSelected(true); }else{ 女.setSelected(true); } }else{ 修改.setEnabled(false); Stringwarning="該會(huì)員號(hào)不存在!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); } }else{ 修改.setEnabled(false); Stringwarning="必須輸入會(huì)員號(hào)!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); } } } classModifyActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ Stringnumber=會(huì)員號(hào).getText(); Stringname=姓名.getText(); Stringlastmonth=上月積分.getText(); Stringthismonth=本月積分.getText(); Stringtotal=總積分.getText(); Stringsex=null; if(男.isSelected()){ sex=男.getText(); }else{ sex=女.getText(); } Customer1會(huì)員=newCustomer1(); 會(huì)員.setNumber(number); 會(huì)員.setName(name); 會(huì)員.setlastmonth(lastmonth); 會(huì)員.setthismonth(thismonth); 會(huì)員.settotal(total); 會(huì)員.setSex(sex); try{ outOne=newFileOutputStream(file); outTwo=newObjectOutputStream(outOne); 會(huì)員散列表.put(number,會(huì)員); outTwo.close(); outOne.close(); 會(huì)員號(hào).setText(null); 姓名.setText(null); 上月積分.setText(null); 本月積分.setText(null); 總積分.setText(null); }catch(Exceptionee){ System.out.println("錄入修改出現(xiàn)問(wèn)題!"); 修改.setEnabled(false); } } } classDeleteActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ 修改.setEnabled(false); Stringnumber=會(huì)員號(hào).getText(); if(number.length()>0){ try{ inOne=newFileInputStream(file); inTwo=newObjectInputStream(inOne); 會(huì)員散列表=(Hashtable)inTwo.readObject(); inTwo.close(); inOne.close(); }catch(Exceptionee){ } if(會(huì)員散列表.containsKey(number)){ Customer1stu=(Customer1)會(huì)員散列表.get(number); 姓名.setText(stu.getName()); 上月積分.setText(stu.getlastmonth()); 本月積分.setText(stu.getthismonth()); 總積分.setText(stu.gettotal()); if(stu.getSex().equals("男")){ 男.setSelected(true); }else{ 女.setSelected(true); } } Stringm="擬定要?jiǎng)h除該會(huì)員的記錄嗎?"; intok=JOptionPane .showConfirmDialog(null,m,"確認(rèn)", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok==JOptionPane.YES_OPTION){ 會(huì)員散列表.remove(number); try{ outOne=newFileOutputStream(file); outTwo=newObjectOutputStream(outOne); outTwo.writeObject(會(huì)員散列表); outTwo.close(); outOne.close(); 會(huì)員號(hào).setText(null); 姓名.setText(null); 上月積分.setText(null); 本月積分.setText(null); 總積分.setText(null); }catch(Exceptionee){ System.out.println(ee); } }elseif(ok==JOptionPane.NO_OPTION){ 會(huì)員號(hào).setText(null); 姓名.setText(null); 上月積分.setText(null); 本月積分.setText(null); 總積分.setText(null); }else{ Stringwarning="該會(huì)員不存在!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); } }else{ Stringwarning="必須輸入會(huì)員號(hào)!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); } } } classShowActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ newCustomerShow(file); } } classCustomerShowextendsJDialog{ /** * */ privatestaticfinallongserialVersionUID=1L; Hashtable會(huì)員散列表=null; JTextArea顯示=null; FileInputStreaminOne=null; ObjectInputStreaminTwo=null; Filefile=null; publicCustomerShow(Filefile){ super(newJFrame(),"顯示對(duì)話框"); this.file=file; 顯示=newJTextArea(16,30); try{ inOne=newFileInputStream(file); inTwo=newObjectInputStream(inOne); 會(huì)員散列表=(Hashtable)inTwo.readObject(); inTwo.close(); inOne.close(); }catch(Exceptionee){ } if(會(huì)員散列表.isEmpty()) 顯示.append("目前還沒(méi)有會(huì)員的信息記錄!\n"); else{ 顯示.setText("會(huì)員號(hào)姓名性別上月積分本月積分總積分\n"); for(Enumerationenm=會(huì)員散列表.elements();enm.hasMoreElements();){ Customer1stu=(Customer1)enm.nextElement(); Stringsex=""; if(stu.getSex().equals("男")) sex="男"; else sex="女"; Stringstr=stu.getNumber()+""+stu.getName() +""+sex+""+stu.getlastmonth() +""+stu.getthismonth() +""+stu.gettotal()+"\n"; 顯示.append(str); } } JScrollPanescroll=newJScrollPane(顯示); Containercon=getContentPane(); con.add("Center",scroll); con.validate(); setVisible(true); setBounds(200,200,400,300); addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ setVisible(false); } }); } }}(3)CustomerManager.java(會(huì)員基本信息管理)packageCRM;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjava.util.*;classCustomerimplementsjava.io.Serializable{ Stringnumber,name,address,telephone,borth,sex; publicCustomer(){ }; publicvoidsetNumber(Stringnumber){ this.number=number; } publicStringgetNumber(){ returnnumber; } publicvoidsetName(Stringname){ =name; } publicStringgetName(){ returnname; } publicvoidsetaddress(Stringaddress){ this.address=address; } publicStringgetaddress(){ returnaddress; } publicvoidsettelephone(Stringtelephone){ this.telephone=telephone; } publicStringgettelephone(){ returntelephone; } publicvoidsetBorth(Stringborth){ this.borth=borth; } publicStringgetBorth(){ returnborth; } publicvoidsetSex(Stringsex){ this.sex=sex; } publicStringgetSex(){ returnsex; }}publicclassCustomerManagerextendsJFrame{ JLabellb=newJLabel("錄入請(qǐng)先輸入記錄,查詢、刪除請(qǐng)先輸入會(huì)員號(hào),修改時(shí)對(duì)查詢"+"內(nèi)容改后的保存!"); JTextField會(huì)員號(hào),姓名,家庭地址,電話號(hào)碼,出生; JRadioButton男,女; ButtonGroupgroup=null; JButton錄入,查詢,刪除,修改,顯示; JPanelp1,p2,p3,p4,p5,p6,pv,ph; Customer會(huì)員=null; Hashtable會(huì)員散列表=null; Filefile=null; FileInputStreaminOne=null; ObjectInputStreaminTwo=null; FileOutputStreamoutOne=null; ObjectOutputStreamoutTwo=null; publicCustomerManager(){ super("會(huì)員基本信息管理系統(tǒng)"); 會(huì)員號(hào)=newJTextField(10); 姓名=newJTextField(10); 家庭地址=newJTextField(10); 電話號(hào)碼=newJTextField(10); 出生=newJTextField(10); group=newButtonGroup(); 男=newJRadioButton("男",true); 女=newJRadioButton("女",false); group.add(男); group.add(女); 錄入=newJButton("錄入"); 查詢=newJButton("查詢"); 刪除=newJButton("刪除"); 修改=newJButton("修改"); 顯示=newJButton("顯示"); 錄入.addActionListener(newInputAct()); 查詢.addActionListener(newInquestAct()); 修改.addActionListener(newModifyAct()); 刪除.addActionListener(newDeleteAct()); 顯示.addActionListener(newShowAct()); 修改.setEnabled(false); p1=newJPanel(); p1.add(newJLabel("會(huì)員號(hào):")); p1.add(會(huì)員號(hào)); p2=newJPanel(); p2.add(newJLabel("姓名:")); p2.add(姓名); p3=newJPanel(); p3.add(newJLabel("性別:")); p3.add(男); p3.add(女); p4=newJPanel(); p4.add(newJLabel("家庭地址:",JLabel.CENTER)); p4.add(家庭地址); p5=newJPanel(); p5.add(newJLabel("電話號(hào)碼:",JLabel.CENTER)); p5.add(電話號(hào)碼); p6=newJPanel(); p6.add(newJLabel("出生:",JLabel.CENTER)); p6.add(出生); pv=newJPanel(); pv.setLayout(newGridLayout(6,1)); pv.add(p1); pv.add(p2); pv.add(p3); pv.add(p4); pv.add(p5); pv.add(p6); ph=newJPanel(); ph.add(錄入); ph.add(查詢); ph.add(修改); ph.add(刪除); ph.add(顯示); file=newFile("會(huì)員信息.txt"); 會(huì)員散列表=newHashtable(); if(!file.exists()){ try{ FileOutputStreamout=newFileOutputStream(file); ObjectOutputStreamobjectOut=newObjectOutputStream(out); objectOut.writeObject(會(huì)員散列表); objectOut.close(); out.close(); }catch(IOExceptione){ } } Containercon=getContentPane(); con.setLayout(newBorderLayout()); con.add(lb,BorderLayout.NORTH); con.add(pv,BorderLayout.CENTER); con.add(ph,BorderLayout.SOUTH); setDefaultCloseOperation(EXIT_ON_CLOSE); setBounds(100,50,500,380); setVisible(true); } publicstaticvoidmain(Stringargs[]){ newCustomerManager(); } classInputActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ 修改.setEnabled(false); Stringnumber=""; number=會(huì)員號(hào).getText(); if(number.length()>0){ try{ inOne=newFileInputStream(file); inTwo=newObjectInputStream(inOne); 會(huì)員散列表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); }catch(Exceptionee){ System.out.println("創(chuàng)建散列表出現(xiàn)問(wèn)題!"); } if(會(huì)員散列表.containsKey(number)){ Stringwarning="該會(huì)員信息已存在,請(qǐng)到修改頁(yè)面修改!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); }//endif1 else{ Stringm="該會(huì)員信息將被錄入!"; intok=JOptionPane.showConfirmDialog(null,m,"確認(rèn)", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok==JOptionPane.YES_OPTION){ Stringname=姓名.getText(); Stringaddress=家庭地址.getText(); Stringtelephone=電話號(hào)碼.getText(); Stringborth=出生.getText(); Stringsex=null; if(男.isSelected()){ sex=男.getText(); }else{ sex=女.getText(); } 會(huì)員=newCustomer(); 會(huì)員.setNumber(number); 會(huì)員.setName(name); 會(huì)員.setaddress(address); 會(huì)員.settelephone(telephone); 會(huì)員.setBorth(borth); 會(huì)員.setSex(sex); try{ outOne=newFileOutputStream(file); outTwo=newObjectOutputStream(outOne); 會(huì)員散列表.put(number,會(huì)員); outTwo.writeObject(會(huì)員散列表); outTwo.close(); outOne.close(); }catch(Exceptionee){ System.out.println("輸出散列表出現(xiàn)問(wèn)題!"); } 會(huì)員號(hào).setText(null); 姓名.setText(null); 家庭地址.setText(null); 電話號(hào)碼.setText(null); 出生.setText(null); } }//endelse1 }//endif0 else{ Stringwarning="必須輸入會(huì)員號(hào)!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); }//endelse0 }//endactionPerformed }//endclass classInquestActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ Stringnumber=""; number=會(huì)員號(hào).getText(); if(number.length()>0){ try{ inOne=newFileInputStream(file); inTwo=newObjectInputStream(inOne); 會(huì)員散列表=(Hashtable)inTwo.readObject(); inOne.close(); inTwo.close(); }catch(Exceptionee){ System.out.println("散列表有問(wèn)題!"); } if(會(huì)員散列表.containsKey(number)){ 修改.setEnabled(true); Customerstu=(Customer)會(huì)員散列表.get(number); 姓名.setText(stu.getName()); 家庭地址.setText(stu.getaddress()); 電話號(hào)碼.setText(stu.gettelephone()); 出生.setText(stu.getBorth()); if(stu.getSex().equals("男")){ 男.setSelected(true); }else{ 女.setSelected(true); } }else{ 修改.setEnabled(false); Stringwarning="該會(huì)員號(hào)不存在!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); } }else{ 修改.setEnabled(false); Stringwarning="必須輸入會(huì)員號(hào)!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); } } } classModifyActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ Stringnumber=會(huì)員號(hào).getText(); Stringname=姓名.getText(); Stringaddress=家庭地址.getText(); Stringtelephone=電話號(hào)碼.getText(); Stringborth=出生.getText(); Stringsex=null; if(男.isSelected()){ sex=男.getText(); }else{ sex=女.getText(); } Customer會(huì)員=newCustomer(); 會(huì)員.setNumber(number); 會(huì)員.setName(name); 會(huì)員.setaddress(address); 會(huì)員.settelephone(telephone); 會(huì)員.setBorth(borth); 會(huì)員.setSex(sex); try{ outOne=newFileOutputStream(file); outTwo=newObjectOutputStream(outOne); 會(huì)員散列表.put(number,會(huì)員); outTwo.close(); outOne.close(); 會(huì)員號(hào).setText(null); 姓名.setText(null); 家庭地址.setText(null); 電話號(hào)碼.setText(null); 出生.setText(null); }catch(Exceptionee){ System.out.println("錄入修改出現(xiàn)問(wèn)題!"); 修改.setEnabled(false); } } } classDeleteActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ 修改.setEnabled(false); Stringnumber=會(huì)員號(hào).getText(); if(number.length()>0){ try{ inOne=newFileInputStream(file); inTwo=newObjectInputStream(inOne); 會(huì)員散列表=(Hashtable)inTwo.readObject(); inTwo.close(); inOne.close(); }catch(Exceptionee){ } if(會(huì)員散列表.containsKey(number)){ Customerstu=(Customer)會(huì)員散列表.get(number); 姓名.setText(stu.getName()); 家庭地址.setText(stu.getaddress()); 電話號(hào)碼.setText(stu.gettelephone()); 出生.setText(stu.getBorth()); if(stu.getSex().equals("男")){ 男.setSelected(true); }else{ 女.setSelected(true); } } Stringm="擬定要?jiǎng)h除該會(huì)員的記錄嗎?"; intok=JOptionPane .showConfirmDialog(null,m,"確認(rèn)", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); if(ok==JOptionPane.YES_OPTION){ 會(huì)員散列表.remove(number); try{ outOne=newFileOutputStream(file); outTwo=newObjectOutputStream(outOne); outTwo.writeObject(會(huì)員散列表); outTwo.close(); outOne.close(); 會(huì)員號(hào).setText(null); 姓名.setText(null); 家庭地址.setText(null); 電話號(hào)碼.setText(null); 出生.setText(null); }catch(Exceptionee){ System.out.println(ee); } }elseif(ok==JOptionPane.NO_OPTION){ 會(huì)員號(hào).setText(null); 姓名.setText(null); 家庭地址.setText(null); 電話號(hào)碼.setText(null); 出生.setText(null); }else{ Stringwarning="該會(huì)員不存在!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); } }else{ Stringwarning="必須輸入會(huì)員號(hào)!"; JOptionPane.showMessageDialog(null,warning,"警告", JOptionPane.WARNING_MESSAGE); } } } classShowActimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ newCustomerShow(file); } } classCustomerShowextendsJDialog{ Hashtable會(huì)員散列表=null; JTextArea顯示=null; FileInputStreaminOne=null; ObjectInputStreaminTwo=null; Filefile=null; publicCustomerShow(Filefile){ super(newJFrame(),"顯示對(duì)話框"); this.file=file; 顯示=newJTextArea(16,30); try{ inOne=newFileInputStream(file); inTwo=newObjectInputStream(inOne); 會(huì)員散列表=(Hashtable)inTwo.readObject(); inTwo.close(); inOne.close(); }catch(Exceptionee){ } if(會(huì)員散列表.isEmpty()) 顯示.append("目前還沒(méi)有會(huì)員的信息記錄!\n"); else{ 顯示.setText("會(huì)員號(hào)姓名性別家庭地址電話號(hào)碼出生\n"); for(Enumerationenm=會(huì)員散列表.elements();enm.hasMoreElements();){ Customerstu=(Customer)enm.nextElement(); Stringsex=""; if(stu.getSex().equals("男")) sex="男"; else sex="女"; Stringstr=stu.getNumber()+""+stu.getName() +""+sex+"" +stu.getaddress()+""+stu.gettelephone() +""+stu.getBorth()+"\n"; 顯示.append(str); } } JScrollPanescroll=newJScrollPane(顯示); Containercon=getContentPane(); con.add("Center",scroll); con.validate(); setVisible(true); setBounds(200,200,400,300); addWindowListener(newWindowAdapter(){ publicvoidwindowClosing(WindowEvente){ setVisible(false); } }); } }}(4)ConsumptionManager.java(會(huì)員消費(fèi)信息管理界面)packageCRM;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.io.*;importjava.util.*;classConsumptionimplementsjava.io.Serializable{ Stringnumber,name,money,sex; publicConsumption(){ }; publicvoidsetNumber(Stringnumber){ this.number=number; } publicStringgetNumber(){ returnnumber; } publicvoidsetName(Stringname){ =name; } publicStringgetName(){ returnname; } publicvoidsetmoney(Stringmoney){ this.money=money; } publicStringgetmoney(){ returnmoney; } publicvoidsetSex(Stringsex){ this.sex=sex; } publicStringgetSex(){ returnsex; }}publicclassConsumptionManagerextendsJFrame{ JLabellb=newJLabel("錄入請(qǐng)先輸入記錄,查詢、刪除請(qǐng)先輸入會(huì)員號(hào),修改時(shí)對(duì)查詢"+"內(nèi)容改后的保存!"); JTextField會(huì)員號(hào),姓名,消費(fèi)額; JRadioButton男,女; ButtonGroupgroup=null; JButton提交,查詢,刪除,修改,瀏覽; JPanelp1,p2,p3,p4,p5,p6,pv,ph; Consumption會(huì)員=null; Hashtable會(huì)員散列表=null; Filefile=null; FileInputStreaminOne=null; ObjectInputStreaminTwo=null; FileOutputStreamoutOne=null; ObjectOutputStreamoutTwo=null; publicConsumptionManager(){ super("消費(fèi)額基本信息管理系統(tǒng)"); 會(huì)員號(hào)=newJTextField(10); 姓名=newJTextField(10); 消費(fèi)額=newJTextField(10); group=newButtonGroup(); 男=newJRadioButton("男",tr

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論