版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 軟件工程綜合實(shí)踐報告</p><p><b> 名片管理系統(tǒng)設(shè)計(jì)</b></p><p><b> 目錄</b></p><p><b> 1 問題定義2</b></p><p><b> 2 可行性研究2</b><
2、/p><p> 2.1 技術(shù)可行性:2</p><p> 2.2 經(jīng)濟(jì)可行性:2</p><p> 2.3 操作可行性:2</p><p><b> 3 需求分析2</b></p><p> 3.1系統(tǒng)功能需求分析2</p><p> 3.2系統(tǒng)性能需求分
3、析3</p><p> 3.3實(shí)體-關(guān)系3</p><p> 3.4 系統(tǒng)數(shù)據(jù)流圖3</p><p><b> 3.5數(shù)據(jù)字典4</b></p><p><b> 4.總體設(shè)計(jì)5</b></p><p><b> 4.1層次圖5</b&g
4、t;</p><p> 4.2系統(tǒng)流程圖5</p><p><b> 4.3關(guān)系模式6</b></p><p><b> 5.詳細(xì)設(shè)計(jì)6</b></p><p><b> 5.1建表6</b></p><p> 5.2加載驅(qū)動和URL
5、6</p><p> 5.3應(yīng)用系統(tǒng)部分7</p><p> 5.3.1視圖窗口7</p><p> 5.3.2監(jiān)視器7</p><p> 5.3.3數(shù)據(jù)操作7</p><p> 5.4程序流程圖8</p><p> 5.5數(shù)據(jù)庫設(shè)計(jì)8</p><p&
6、gt;<b> 6.實(shí)現(xiàn)9</b></p><p> 6.1用戶登錄界面9</p><p> 6.2名片管理系統(tǒng)主窗體11</p><p> 6.3監(jiān)視器mnuHandler()和SelectFrameHandler()15</p><p> 6.4數(shù)據(jù)操作類DatabaseOperate()22&l
7、t;/p><p><b> 7.測試31</b></p><p> 7.1修改密碼模塊測試31</p><p> 7.2退出模塊測試32</p><p> 7.3增加類別模塊測試32</p><p> 7.4修改類別模塊測試33</p><p> 7.5刪
8、除類別模塊測試34</p><p> 7.6插入名片模塊測試35</p><p> 7.7多項(xiàng)查詢模塊測試36</p><p> 7.8修改名片模塊測試38</p><p> 7.9刪除名片模塊測試38</p><p> 7.10生日提示模塊測試39</p><p><
9、;b> 8.個人小結(jié)39</b></p><p><b> 參考文獻(xiàn)40</b></p><p><b> 1 問題定義</b></p><p> 項(xiàng)目名稱:名片管理系統(tǒng)</p><p> 完成的功能:按客戶編號、姓名或者職業(yè)查詢客戶的基本信息;可以添加,修改或刪除客
10、戶信息;按客戶信息編號查詢名片的基本信息;對名片信息進(jìn)行添加、刪除、修改。</p><p> 需要處理的基本數(shù)據(jù):個人信息:編號、姓名、職業(yè)、聯(lián)系方式等;名片信息:名片號等。</p><p><b> 2 可行性研究</b></p><p> 2.1 技術(shù)可行性:</p><p> 本設(shè)計(jì)“名片管理系統(tǒng)”是為各類
11、人員開發(fā)的信息管理系統(tǒng)。通過兩個星期的學(xué)習(xí),對開發(fā)管理信息系統(tǒng)又有了新的認(rèn)識。使自己在開發(fā)管理信息系統(tǒng)方面的技術(shù)更加成熟。由于本設(shè)計(jì)最重要體現(xiàn)的是實(shí)用性,所以通過大量的社會調(diào)查和分析,結(jié)合自己現(xiàn)有的技術(shù)水平加上老師的指導(dǎo),能按期完成本次課程設(shè)計(jì)。</p><p> 2.2 經(jīng)濟(jì)可行性:</p><p> 支出:硬件設(shè)備:PC機(jī);</p><p> 軟件:Win
12、dows xp,Myeclipse,SQL Server。</p><p> 效益:進(jìn)一步實(shí)現(xiàn)辦公自動化,減少人力投資和辦公費(fèi)用,極大地提高辦公效率。</p><p> 2.3 操作可行性:</p><p> 本軟件的用戶對象是信息管理的工作人員,由于本軟件要設(shè)計(jì)成友好的界面,寫出詳細(xì)的使用說明,用戶只需懂得簡單的計(jì)算機(jī)操作知識,就能自由應(yīng)用本軟件。</
13、p><p> 所以從以上幾個方面的分析來看,開發(fā)本軟件是完全可行的。</p><p><b> 3 需求分析</b></p><p> 3.1系統(tǒng)功能需求分析</p><p> 系統(tǒng)開發(fā)的總體任務(wù)是各種信息的系統(tǒng)化、規(guī)范化和自動化。</p><p><b> 主要完成的功能:<
14、;/b></p><p> 按客戶編號、姓名或者職業(yè)查詢客戶的基本信息;</p><p> 可以添加,修改或刪除客戶信息;</p><p> 按客戶信息編號查詢名片的基本信息;</p><p> 對名片信息進(jìn)行添加、刪除、修改、查詢。</p><p> 3.2系統(tǒng)性能需求分析</p>&l
15、t;p><b> ?。?)數(shù)據(jù)精確度</b></p><p> 進(jìn)行操作請求時,如:名片添加、名片刪除、名片修改、名片查詢時,應(yīng)保證輸入數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)的相匹配性。而在滿足用戶請求時,系統(tǒng)應(yīng)保證所響應(yīng)數(shù)據(jù)的正確性和全面性。</p><p><b> ?。?)時間特性</b></p><p> 為滿足用戶高效要求,
16、數(shù)據(jù)的響應(yīng)時間、更新處理時間、數(shù)據(jù)轉(zhuǎn)換與傳輸時間、運(yùn)行時間都應(yīng)在可接受范圍之內(nèi)。</p><p><b> 3.3實(shí)體-關(guān)系</b></p><p> 名片信息實(shí)體E-R圖如圖3-1所示:</p><p> 圖3-1 名片信息實(shí)體E-R圖</p><p> 3.4 系統(tǒng)數(shù)據(jù)流圖</p><p&
17、gt; 本系統(tǒng)根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有:名片存儲系統(tǒng)(名片號),用戶個人信息(編號、姓名、職業(yè)、聯(lián)系方式)。</p><p> 描述名片管理系統(tǒng)功能的數(shù)據(jù)流圖如3-2所示:</p><p> 圖3-2 名片管理系統(tǒng)的數(shù)據(jù)流圖</p><p><b> 3.5數(shù)據(jù)字典</b></p><p><b>
18、 4.總體設(shè)計(jì)</b></p><p> 經(jīng)過需求分析階段的工作,系統(tǒng)必須“做什么”已經(jīng)清楚了,現(xiàn)在是決定“怎樣做”的時候了。總體設(shè)計(jì)的基本目的就是回答“概括的說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”這個問題,因此,總體設(shè)計(jì)又稱為概要設(shè)計(jì)或初步設(shè)計(jì)。總體設(shè)計(jì)的重要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個程序由哪些模塊組成,以及這些模塊相互間的關(guān)系。</p><p> 通常程序中的一個
19、模塊完成一個恰當(dāng)?shù)淖庸δ?。?yīng)該把模塊組成良好的層次系統(tǒng),頂層模塊調(diào)用它的下層模塊以實(shí)現(xiàn)程序的完整功能,每個下層模塊再調(diào)用更下層的模塊,從而完成程序的一個子功能,最下層的模塊完成最具體的功能。軟件結(jié)構(gòu)(即由模塊組成的層次系統(tǒng))可以用層次圖或結(jié)構(gòu)圖來描述。</p><p><b> 4.1層次圖</b></p><p> 對需求分析得到各項(xiàng)功能進(jìn)行集中、分塊、按照結(jié)構(gòu)
20、化程序設(shè)計(jì)的 ,得到如圖4-1所示的層次圖。</p><p> 圖4-1 名片管理系統(tǒng)的層次圖</p><p><b> 4.2系統(tǒng)流程圖</b></p><p> 系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的傳統(tǒng)工具。它的基本思想是用圖形符號以黑盒子形式描繪組成系統(tǒng)的每個部件。系統(tǒng)流程圖表達(dá)的是數(shù)據(jù)在系統(tǒng)各部件之間流動的情況,而不是對數(shù)據(jù)進(jìn)行加工處
21、理的控制過程,因此盡管系統(tǒng)流程圖的某些符號和程序流程圖的符號形式相同,但是它卻是物理數(shù)據(jù)流圖而不是程序流程圖。</p><p> 系統(tǒng)流程圖如圖4-2所示:</p><p> 圖4-2 系統(tǒng)流程圖</p><p><b> 4.3關(guān)系模式</b></p><p> 用戶(用戶名,密碼)</p>&l
22、t;p> 分類(類別編號,類別)</p><p> 名片(卡號,姓名,性別,生日,工作單位,職務(wù),家庭電話,辦公電話,移動電話,家庭地址,郵編,電子郵件)</p><p><b> 5.詳細(xì)設(shè)計(jì)</b></p><p> 詳細(xì)設(shè)計(jì)階段的根本目標(biāo)是確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng),也就是說,經(jīng)過這個階段的設(shè)計(jì)工作,應(yīng)該得出對目標(biāo)系
23、統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設(shè)計(jì)語言書寫的程序。詳細(xì)設(shè)計(jì)的結(jié)果基本上決定了最終的程序代碼的質(zhì)量。</p><p> 從前面得知,本系統(tǒng)是JAVA在與數(shù)據(jù)庫連接的基礎(chǔ)上對數(shù)據(jù)進(jìn)行的一系列操作。JAVA編寫的名片管理系統(tǒng)屬于前臺應(yīng)用,SQL SERVER數(shù)據(jù)庫管理系統(tǒng)作為提供后臺數(shù)據(jù)的平臺。 </p><p><b> 5.1建表<
24、/b></p><p> 后臺數(shù)據(jù)庫的建立可以很容易根據(jù)前面的數(shù)據(jù)庫設(shè)計(jì)分析實(shí)現(xiàn),即建立三張表,分別存儲用戶登錄時所需數(shù)據(jù),名片信息和名片的分類信息。</p><p> 5.2加載驅(qū)動和URL</p><p> JAVA連接SQL SERVER2005本程序采用ODBC數(shù)據(jù)源的連接方法。加載驅(qū)動和URL為:</p><p> C
25、lass.forName("sun.jdbc.odbc.JdbcOdbcDriver");</p><p> url="jdbc:odbc:userinfo";</p><p><b> 5.3應(yīng)用系統(tǒng)部分</b></p><p> JAVA編寫的應(yīng)用系統(tǒng)部分可以大致分為:視圖窗口,監(jiān)視器,數(shù)據(jù)操作
26、。他們相互隔離又相互配合來完成各種操作。</p><p><b> 5.3.1視圖窗口</b></p><p> 作為系統(tǒng)的主界面,采用BorderLayout的布局方式,需要包含菜單、現(xiàn)實(shí)名片信息的窗口和名片分類的窗口。新建四個菜單:用戶管理,類別管理,名片管理,生日提示,用于各項(xiàng)操作。把菜單添加到菜單條中。然后把各菜單中的菜單項(xiàng)添加到菜單中,并聲明監(jiān)視器。顯示
27、類別信息和名片信息的分塊,分別設(shè)置成模塊pnlBtn和pnlAll。他們分別寫成類TypeDialog和CardDialog,在類中分別把Label,Button,Txtfield等元組添加進(jìn)去。其他窗口,例如進(jìn)行類別管理時的要彈出的窗口,查詢名片信息的窗口等,都是類似的寫法。</p><p><b> 5.3.2監(jiān)視器</b></p><p> 用戶管理和類別管
28、理需要調(diào)用到另一個彈出窗口,所以聲明addActionListener(new mnuHandler(this)),mnuHandler()中并沒有具體的操作,只是提供一個該操作所需的窗口,并把需要處理的數(shù)據(jù)轉(zhuǎn)入到SelectFrameHandler(),該監(jiān)視器再調(diào)用DatabaseOperate()類中的具體的數(shù)據(jù)處理的方法。名片信息管理中,查詢和新建操作與上面的類似,也是利用mnuHandler()來提供一個窗口,最終把需要的操作
29、送入SelectFrameHandler();刪除和修改直接調(diào)用SelectFrameHandler()監(jiān)視器。監(jiān)視器只是把外部的用戶動作提供給系統(tǒng)處理,并沒有對數(shù)據(jù)的直接操作,對數(shù)據(jù)的操作都集中在DatabaseOperate()類中。</p><p><b> 5.3.3數(shù)據(jù)操作</b></p><p> 對三張表進(jìn)行查找,更新,刪除,插入操作。首先調(diào)用Con
30、nection,然后調(diào)用statement執(zhí)行語句,ResultSet存儲操作結(jié)果。另外,為了方便數(shù)據(jù)的設(shè)置和返回,需要建立兩個類typemodel,cardmodel,而Allmodel可以返回這兩個類的實(shí)體。</p><p> 對用戶表的操作分為查找和更新,查找即在登錄時校驗(yàn)用戶輸入的ID在usertable 表中所對應(yīng)的密碼是否與輸入的密碼一致,可以用以下語句實(shí)現(xiàn): select * from usert
31、able where username='" +um.getUsername() + "'。更新即對密碼進(jìn)行修改,用以下語句實(shí)現(xiàn):update usertable set password='" + um.getPassword() +"' where username='" + um.getUsername() + "'。對用戶
32、表的操作體現(xiàn)在主界面菜單欄的第一欄,調(diào)用監(jiān)視器mnuHandler()。</p><p> 對名片分類表的操作分為更新、刪除和插入。更新可用以下代碼實(shí)現(xiàn)update typetable set tpname=? where tpid=?;刪除可用以下代碼實(shí)現(xiàn):delete typetable where tpid=?;插入可用以下代碼實(shí)現(xiàn):insert into typetable(tpname) values
33、 (?)。</p><p> 對名片表的操作復(fù)雜的多,于是名片的操作放在兩個監(jiān)視器中SelectFrameHandler()和muHandler()中。對名片表的操作可分為查找,插入,更新,刪除。SQL語句與對其他兩張表的操作類似。查找可以用以下代碼實(shí)現(xiàn):selecttpid,frdname,sex,birthday,depart,power,homephone,officephone,mobil,addres
34、s,number,email from cardtable where carid=" +car + "。插入可以用以下代碼實(shí)現(xiàn):insert into cardtable(carid,tpid,frdname,sex,birthday,depart,power,homephone,officephone,mobil,address,number,email)values(?,?,?,?,?,?,?,?,?,?,?,
35、?,?)。</p><p> 更新和刪除操作直接放在SelectFrameHandler()中完成。對名片分類表的操作體現(xiàn)在主界面菜單欄的第三欄,調(diào)用監(jiān)視器muHandler()或者直接調(diào)用SelectFrameHandler()。</p><p><b> 5.4程序流程圖</b></p><p> 描述名片管理系統(tǒng)的程序流程圖如圖5-
36、1所示:</p><p> 圖5-1 程序流程圖</p><p><b> 5.5數(shù)據(jù)庫設(shè)計(jì)</b></p><p> 該實(shí)例實(shí)現(xiàn)的是簡單的名片管理功能,因此系統(tǒng)后臺數(shù)據(jù)庫比較簡單,只有名片表、類別表、用戶表3個數(shù)據(jù)表。</p><p><b> 表3-3 名片表</b></p>
37、<p><b> 表3-4 類別表</b></p><p><b> 表3-5 用戶表</b></p><p><b> 6.實(shí)現(xiàn)</b></p><p><b> 6.1用戶登錄界面</b></p><p><b> 主
38、要代碼如下:</b></p><p> import javax.swing.JFrame;</p><p> import javax.swing.JLabel;</p><p> import java.awt.*;</p><p> import javax.swing.JTextField;</p>
39、<p> import javax.swing.JPasswordField;</p><p> import javax.swing.JButton;</p><p> import java.awt.Rectangle;</p><p> public class LoginFrame extends JFrame {</p>&
40、lt;p> public LoginFrame() {</p><p><b> try {</b></p><p><b> jbInit();</b></p><p> } catch (Exception ex) {</p><p> ex.printStackTrace();
41、</p><p><b> }</b></p><p><b> }</b></p><p> private void jbInit() throws Exception {</p><p> this.getContentPane().setLayout(null);</p>
42、<p> setSize(250,200);</p><p> this.setTitle("登錄");</p><p> lblTitle.setFont(new java.awt.Font("Dialog", Font.BOLD, 20));</p><p> lblTitle.setText(&qu
43、ot;用戶登錄");</p><p> lblTitle.setBounds(new Rectangle(82, 8, 93, 34));</p><p> lblUserName.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));</p><p> lblUserName.
44、setText("用 戶 名:");</p><p> lblUserName.setBounds(new Rectangle(30, 44, 83, 19));</p><p> txtUserName.setText("");</p><p> txtUserName.setBounds(new Rectangle(
45、112, 42, 105, 22));</p><p> psUserPassword.setBounds(new Rectangle(112, 68, 106, 22));</p><p> btnLogin.setBounds(new Rectangle(41, 95, 73, 25));</p><p> btnLogin.setFont(new jav
46、a.awt.Font("Dialog", Font.PLAIN, 15));</p><p> btnLogin.setText("登錄");</p><p> btnLogin.addActionListener(lh);</p><p> lh.lf=this;</p><p> btnRe
47、s.setBounds(new Rectangle(135, 95, 73, 25));</p><p> btnRes.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));</p><p> btnRes.setText("取消");</p><p> btnRes
48、.addActionListener(lh);</p><p> lblErr.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));</p><p> lblErr.setForeground(Color.red);</p><p> lblErr.setText(""
49、;);</p><p> lblErr.setBounds(new Rectangle(31, 123, 191, 19));</p><p> lblPassword.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));</p><p> lblPassword.setText(&qu
50、ot;密碼:");</p><p> lblPassword.setBounds(new Rectangle(30, 70, 83, 19));</p><p> this.getContentPane().add(lblTitle);</p><p> this.getContentPane().add(lblUserName);</p>
51、;<p> this.getContentPane().add(lblPassword);</p><p> this.getContentPane().add(txtUserName);</p><p> this.getContentPane().add(psUserPassword);</p><p> this.getContentPa
52、ne().add(btnLogin);</p><p> this.getContentPane().add(btnRes);</p><p> this.getContentPane().add(lblErr);</p><p><b> }</b></p><p> LoginHandler lh=new L
53、oginHandler();</p><p> JLabel lblTitle = new JLabel();</p><p> JLabel lblPassword = new JLabel();</p><p> JLabel lblUserName = new JLabel();</p><p> JTextField txtU
54、serName = new JTextField();</p><p> JPasswordField psUserPassword = new JPasswordField();</p><p> JButton btnLogin = new JButton();</p><p> JButton btnRes = new JButton();</p&
55、gt;<p> JLabel lblErr = new JLabel();</p><p><b> }</b></p><p> 6.2名片管理系統(tǒng)主窗體</p><p><b> 主要代碼如下:</b></p><p> package card;</p>
56、<p> import javax.swing.JFrame;</p><p> import javax.swing.JLabel;</p><p> import java.awt.*;</p><p> import javax.swing.JScrollPane;</p><p> import javax.swi
57、ng.JTable;</p><p> import javax.swing.JTextField;</p><p> import javax.swing.JButton;</p><p> import javax.swing.table.DefaultTableModel;</p><p> import javax.swing
58、.JPanel;</p><p> import javax.swing.JTree;</p><p> import javax.swing.BorderFactory;</p><p> import javax.swing.border.Border;</p><p> import javax.swing.JComboBox;
59、</p><p> import javax.swing.JMenuBar;</p><p> import javax.swing.JMenu;</p><p> import javax.swing.JMenuItem;</p><p> import javax.swing.tree.DefaultMutableTreeNode
60、;</p><p> import javax.swing.tree.DefaultTreeModel;</p><p> public class SelectFrame extends JFrame {</p><p> public SelectFrame() {</p><p><b> try {</b>
61、;</p><p><b> jbInit();</b></p><p> } catch (Exception exception) {</p><p> exception.printStackTrace();</p><p><b> }</b></p><p>
62、;<b> }</b></p><p> private void jbInit() throws Exception {</p><p> scrpnlInfo.setSize(100,300);</p><p> getContentPane().setLayout(borderLayout1);</p><p&
63、gt; lblTitle.setFont(new java.awt.Font("Dialog", Font.BOLD, 21));</p><p> lblTitle.setText("個人名片信息管理系統(tǒng)");</p><p> tabInfo.setFont(new java.awt.Font("Dialog", Fon
64、t.PLAIN, 15));</p><p> this.setJMenuBar(mnuBar);</p><p> this.setState(Frame.ICONIFIED);</p><p> this.setTitle("個人名片信息管理系統(tǒng)");</p><p> pnlAll.setLayout(bor
65、derLayout2);</p><p> root = new DefaultMutableTreeNode("類別");</p><p> DefaultTreeModel dtm=new DefaultTreeModel(root);</p><p> treType = new JTree(dtm);</p><
66、p> treType.addTreeSelectionListener(new SelectFrameHandler(this));</p><p> borderLayout1.setHgap(0);</p><p> borderLayout1.setVgap(0);</p><p> borderLayout2.setHgap(0);</p
67、><p> borderLayout2.setVgap(0);</p><p> lblType.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));</p><p> lblType.setText("請選擇查詢類別:");</p><p>
68、pnlBtn.setBorder(border2);</p><p> pnlTitle.setBorder(border1);</p><p> lblIn.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));</p><p> lblIn.setText("包含:"
69、;);</p><p> btnSelect.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));</p><p> btnSelect.setText("查詢");</p><p> btnSelect.setActionCommand("select&q
70、uot;);</p><p> btnSelect.addActionListener(new SelectFrameHandler(this));</p><p> btnEdit.setFont(new java.awt.Font("Dialog", Font.PLAIN, 15));</p><p> btnEdit.setText(
71、"編輯");</p><p> btnEdit.setActionCommand("edit");</p><p> btnEdit.addActionListener(new SelectFrameHandler(this));</p><p> btnDel.setFont(new java.awt.Font(&qu
72、ot;Dialog", Font.PLAIN, 15));</p><p> btnDel.setText("刪除");</p><p> btnDel.addActionListener(new SelectFrameHandler(this));</p><p> btnDel.setActionCommand("d
73、elete");</p><p> mnuUser.setText("用戶管理");</p><p> mnuPwd.setText("修改密碼");</p><p> mnuPwd.setActionCommand("pwd");</p><p> mnuPwd.
74、addActionListener(new mnuHandler(this));</p><p> menExit.setText("退出");</p><p> menExit.setActionCommand("exit");</p><p> menExit.addActionListener(new mnuHan
75、dler(this));</p><p> mnuType.setText("類別管理");</p><p> mnuCard.setText("名片管理");</p><p> mnuDate.setText("生日提示");</p><p> mnuAddtype.set
76、Text("增加類別");</p><p> mnuAddtype.setActionCommand("addtype");</p><p> mnuAddtype.addActionListener(new mnuHandler(this));</p><p> mnuUpdateType.setText("
77、修改類別");</p><p> mnuUpdateType.setActionCommand("updatetype");</p><p> mnuUpdateType.addActionListener(new mnuHandler(this));</p><p> mnuDelType.setText("刪除類別&
78、quot;);</p><p> mnuDelType.setActionCommand("deltype");</p><p> mnuDelType.addActionListener(new mnuHandler(this));</p><p> mnuAddCard.setText("增加名片");</p&
79、gt;<p> mnuAddCard.setActionCommand("addcard");</p><p> mnuAddCard.addActionListener(new mnuHandler(this));</p><p> mnuUpdateCard.setText("多項(xiàng)查詢");</p><p&
80、gt; mnuUpdateCard.setActionCommand("select");</p><p> mnuUpdateCard.addActionListener(new mnuHandler(this));</p><p> mnudeleteCard.setText("刪除名片");</p><p> m
81、nudeleteCard.setActionCommand("delete");</p><p> mnudeleteCard.addActionListener(new SelectFrameHandler(this));</p><p> mnueditCard.setText("修改名片");</p><p> m
82、nueditCard.setActionCommand("edit");</p><p> mnueditCard.addActionListener(new SelectFrameHandler(this));</p><p> mnuWho.setText("今天誰生日");</p><p> mnuWho.setA
83、ctionCommand("who");</p><p> mnuWho.addActionListener(new mnuHandler(this));</p><p> pnlAll.add(scrpnlTree, java.awt.BorderLayout.WEST);</p><p> pnlAll.add(scrpnlInfo,
84、java.awt.BorderLayout.CENTER);</p><p> pnlTitle.add(lblTitle);</p><p> this.getContentPane().add(pnlBtn, java.awt.BorderLayout.SOUTH);</p><p> this.getContentPane().add(pnlAll, j
85、ava.awt.BorderLayout.CENTER);</p><p> scrpnlInfo.getViewport().add(tabInfo);</p><p> scrpnlTree.getViewport().add(treType);</p><p> this.getContentPane().add(pnlTitle, java.awt.B
86、orderLayout.NORTH);</p><p> mnuBar.add(mnuUser);</p><p> mnuBar.add(mnuType);</p><p> mnuBar.add(mnuCard);</p><p> mnuBar.add(mnuDate);</p><p> mnuUse
87、r.add(mnuPwd);</p><p> mnuUser.add(menExit);</p><p> mnuType.add(mnuAddtype);</p><p> mnuType.add(mnuUpdateType);</p><p> mnuType.add(mnuDelType);</p><p&
88、gt; mnuCard.add(mnuAddCard);</p><p> mnuCard.add(mnuUpdateCard);</p><p> mnuCard.add(mnudeleteCard);</p><p> mnuCard.add(mnueditCard);</p><p> mnuDate.add(mnuWho);
89、</p><p> Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();</p><p> this.setBounds(0, 0, screenSize.width, screenSize.height);</p><p> this.setExtendedState(this
90、.MAXIMIZED_BOTH);</p><p> this.setVisible(true);</p><p> this.validate();</p><p><b> }</b></p><p> JLabel lblTitle = new JLabel();</p><p>
91、 JScrollPane scrpnlInfo = new JScrollPane();</p><p> Object arrInfo[][] = {};</p><p> Object arrField[] = {"類別", "姓名", "性別", "生日", "工作單位", &qu
92、ot;職務(wù)", "家庭電話", "辦公電話","手機(jī)", "家庭地址", "郵編", "電子郵件"};</p><p> DefaultTableModel tm = new DefaultTableModel(arrInfo, arrField);</p><p
93、> JTable tabInfo = new JTable(tm);</p><p> BorderLayout borderLayout1 = new BorderLayout();</p><p> JPanel pnlTitle = new JPanel();</p><p> JScrollPane scrpnlTree = new JScro
94、llPane();</p><p> JTree treType;</p><p> JPanel pnlAll = new JPanel();</p><p> BorderLayout borderLayout2 = new BorderLayout();</p><p> JPanel pnlBtn = new JPanel()
95、;</p><p> JLabel lblType = new JLabel();</p><p> Border border1 = BorderFactory.createEmptyBorder(20, 0, 20, 0);</p><p> Border border2 = BorderFactory.createEmptyBorder(40, 0, 4
96、0, 0);</p><p> JComboBox cboType = new JComboBox();</p><p> JLabel lblIn = new JLabel();</p><p> JTextField txtIn = new JTextField();</p><p> JButton btnSelect = ne
97、w JButton();</p><p> JButton btnEdit = new JButton();</p><p> JButton btnDel = new JButton();</p><p> JMenuBar mnuBar = new JMenuBar();</p><p> JMenu mnuUser = new
98、JMenu();</p><p> JMenuItem mnuPwd = new JMenuItem(); </p><p> JButton btncardDel = new JButton(); </p><p> JMenuItem menExit = new JMenuItem();</p><p> JMenu mnuTy
99、pe = new JMenu();</p><p> JMenu mnuCard = new JMenu();</p><p> JMenu mnuDate = new JMenu();</p><p> JMenuItem mnuAddtype = new JMenuItem();</p><p> JMenuItem mnuUpd
100、ateType = new JMenuItem();</p><p> JMenuItem mnuDelType = new JMenuItem();</p><p> JMenuItem mnuAddCard = new JMenuItem();</p><p> JMenuItem mnuUpdateCard = new JMenuItem();</
101、p><p> JMenuItem mnudeleteCard = new JMenuItem();</p><p> JMenuItem mnueditCard = new JMenuItem();</p><p> JMenuItem mnuWho = new JMenuItem();</p><p> DefaultMutableTr
102、eeNode root;</p><p><b> }</b></p><p> 6.3監(jiān)視器mnuHandler()和SelectFrameHandler()</p><p> mnuHandler()代碼如下:</p><p> package card;</p><p> impo
103、rt java.awt.event.ActionListener;</p><p> import java.awt.event.ActionEvent;</p><p> public class mnuHandler implements ActionListener {</p><p> SelectFrame sf;</p><p&
104、gt; UserManagerDialog ud;</p><p> typeDialog td;</p><p> cardDialog cd;</p><p> SelectDialog sd;</p><p> public mnuHandler(SelectFrame f) {</p><p> t
105、his.sf = f;</p><p><b> }</b></p><p> public void actionPerformed(ActionEvent e) {</p><p> if (e.getActionCommand() == "pwd") { //修改密碼</p><p>
106、ud = new UserManagerDialog();</p><p> ud.setBounds(400, 200, 300, 300);</p><p> ud.setVisible(true);</p><p><b> }</b></p><p> if (e.getActionCommand() =
107、= "exit") { //退出</p><p> System.exit(0);</p><p><b> }</b></p><p> if (e.getActionCommand() == "addtype") { //增加類別</p><p> td = new t
108、ypeDialog(sf, "增加類別", true);</p><p> td.btndele.setVisible(false);</p><p> td.btnupdate.setVisible(false);</p><p> td.setBounds(350, 150, 400, 400);</p><p>
109、; td.setVisible(true);</p><p> new SelectFrameHandler(sf);</p><p><b> }</b></p><p> if (e.getActionCommand() == "updatetype") { //修改類別</p><p>
110、 td = new typeDialog();</p><p> td.btndele.setVisible(false);</p><p> td.btncreate.setVisible(false);</p><p> td.setBounds(350, 150, 400, 400);</p><p> td.setVisib
111、le(true);</p><p> new SelectFrameHandler(sf);</p><p><b> }</b></p><p> if (e.getActionCommand() == "deltype") {</p><p> td = new typeDialog();
112、</p><p> td.btncreate.setVisible(false);</p><p> td.btnupdate.setVisible(false);</p><p> td.setBounds(350, 150, 400, 400);</p><p> td.setVisible(true);</p>&
113、lt;p> new SelectFrameHandler(sf);</p><p><b> }</b></p><p> if (e.getActionCommand() == "addcard") {</p><p> cd = new cardDialog();</p><p>
114、 cd.btnupdate.setVisible(false);</p><p> cd.btnselect.setVisible(false);</p><p> cd.setBounds(350, 150, 550, 550);</p><p> cd.setVisible(true);</p><p> new SelectFr
115、ameHandler(sf);</p><p><b> }</b></p><p> if (e.getActionCommand() == "select") {</p><p> sd = new SelectDialog(sf, "多項(xiàng)查詢", true);</p><p
116、> sd.setBounds(350, 150, 550, 550);</p><p> sd.setVisible(true);</p><p> SelectFrameHandler sfh = new SelectFrameHandler(sf);</p><p> sfh.updateinfo(Static.getSQL());</p&g
117、t;<p><b> }</b></p><p> if (e.getActionCommand() == "who") {</p><p> Static.getTodayBirthdayDialog();</p><p><b> }</b></p><p&
118、gt;<b> }</b></p><p><b> }</b></p><p> SelectFrameHandler()代碼如下:</p><p> package card;</p><p> import java.awt.event.ActionListener;</p&g
119、t;<p> import java.awt.event.ActionEvent;</p><p> import java.util.ArrayList;</p><p> import javax.swing.table.DefaultTableModel;</p><p> import javax.swing.JOptionPane;&
120、lt;/p><p> import javax.swing.event.TreeSelectionListener;</p><p> import javax.swing.event.TreeSelectionEvent;</p><p> import javax.swing.tree.DefaultMutableTreeNode;</p>&l
121、t;p> import javax.swing.tree.DefaultTreeModel;</p><p> public class SelectFrameHandler implements ActionListener,</p><p> TreeSelectionListener {</p><p> SelectFrame sf;</
122、p><p> DatabaseOperate dbo = new DatabaseOperate();</p><p> ArrayList al;</p><p> cardDialog cd;</p><p> updatecardDialog ud;</p><p> public SelectFrameH
123、andler(SelectFrame f) {</p><p> this.sf = f;</p><p> updateinfo("");</p><p> updateType();</p><p><b> }</b></p><p> public void
124、actionPerformed(ActionEvent e) {</p><p> if (e.getActionCommand() == "select") {</p><p> choicSql();</p><p><b> }</b></p><p> if (e.getActionC
125、ommand() == "delete") {</p><p> int intRow = sf.tabInfo.getSelectedRow();</p><p> if (intRow == -1) {</p><p> JOptionPane.showMessageDialog(sf, "請先選擇要刪除的名片!",
126、 "錯誤",</p><p> JOptionPane.ERROR_MESSAGE);</p><p><b> return;</b></p><p><b> }</b></p><p> // String abc=sf.tm.getValueAt(int
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)---名片管理系統(tǒng)設(shè)計(jì)
- 課程設(shè)計(jì)---名片管理系統(tǒng)設(shè)計(jì).doc
- c語言課程設(shè)計(jì)-手機(jī)名片管理系統(tǒng)
- 《面向?qū)ο笳n程設(shè)計(jì)》課程設(shè)計(jì)---媒體管理系統(tǒng)
- 課程設(shè)計(jì)---課程設(shè)計(jì)圖書管理系統(tǒng)
- c課程設(shè)計(jì)---圖書管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-訂單式銷售管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生管理系統(tǒng)設(shè)計(jì)課程設(shè)計(jì)
- web課程設(shè)計(jì)--課程管理系統(tǒng)
- 課程設(shè)計(jì)-庫存管理系統(tǒng)設(shè)計(jì)
- 數(shù)據(jù)庫課程設(shè)計(jì)-酒店管理系統(tǒng)課程設(shè)計(jì)
- 倉庫管理系統(tǒng)課程設(shè)計(jì)
- 選課管理系統(tǒng)課程設(shè)計(jì)
- 倉庫管理系統(tǒng)課程設(shè)計(jì)
- 酒店管理系統(tǒng)課程設(shè)計(jì)
- 教務(wù)管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)--超市管理系統(tǒng)
- 賓館管理系統(tǒng)課程設(shè)計(jì)
- 試卷管理系統(tǒng)(課程設(shè)計(jì))
- 學(xué)籍管理系統(tǒng) 課程設(shè)計(jì)
評論
0/150
提交評論