版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> Java語言程序設(shè)計(jì)</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 題目: 個(gè)人備忘錄管理系統(tǒng) </p><p> 專 業(yè) 信息管理與信息系統(tǒng)</p><p> 班 級(jí) 信管091 </p><p>
2、 姓 名 </p><p> 學(xué) 號(hào) </p><p> 指導(dǎo)教師 </p><p> 完成日期 2011.01.06 </p><p> 2011 年 秋季 學(xué)期</p><p><b
3、> 系統(tǒng)需求分析</b></p><p> 個(gè)人備忘錄管理系統(tǒng)是能夠設(shè)備上運(yùn)行,為使用者提供日常信息管理功能的工具,通過備忘錄,使用者可以提高生活質(zhì)量和工作效率。隨著當(dāng)前生活節(jié)奏的加快,以及個(gè)人信息量的增長(zhǎng),人們?cè)絹碓街匾曅畔⒌膬r(jià)值、時(shí)間的利用、以及個(gè)人生活的安排,備忘錄便成為了人們?nèi)粘I钪械摹靶」芗摇迸c“小鬧鐘”,無論是電腦,還是手機(jī),備忘錄都成為了其必不可少的功能, 一個(gè)良好的備忘錄,
4、不僅要方便實(shí)用,功能完善,還要具有人性化等特點(diǎn)。本次課程設(shè)計(jì)希望通過NetBeans IDE來設(shè)計(jì)個(gè)人備忘錄系統(tǒng),要求能夠?qū)崿F(xiàn)日常所見備忘錄的基本功能。</p><p><b> 系統(tǒng)實(shí)現(xiàn)目標(biāo)</b></p><p> 本備忘錄系統(tǒng)依附于簡(jiǎn)單實(shí)用的原則,要求實(shí)現(xiàn)日常所見備忘錄的基本功能,主要功能項(xiàng)包含以下幾個(gè)方面:</p><p> 新增
5、備忘:添加備忘事件信息;</p><p> 查詢備忘:通過輸入事件字段或日期字段,可查詢備忘事件的所有信息;</p><p> 修改備忘:更改已存?zhèn)渫南嚓P(guān)信息,實(shí)現(xiàn)更新;</p><p> 刪除備忘:事件被選中后,可以實(shí)現(xiàn)刪除不重要備忘的功能。</p><p> 以上各功能均要求與數(shù)據(jù)庫(kù)相連接,并且數(shù)據(jù)庫(kù)可同步更新。 </p&
6、gt;<p><b> 系統(tǒng)設(shè)計(jì)</b></p><p><b> 系統(tǒng)實(shí)現(xiàn)</b></p><p> 根據(jù)系統(tǒng)要求,本系統(tǒng)采用Microsoft Office Access 2003數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名為Memorandum,有一個(gè)表單Memorandum,用來存儲(chǔ)備忘信息,表結(jié)構(gòu)如下:</p><p>
7、 項(xiàng)目包含兩個(gè)文件:Memorandum.java和changeJFrame.java。</p><p> Memorandum.java為主類,實(shí)現(xiàn)界面設(shè)定、添加備忘(addButtonActionPerformed)、查詢備忘(queryButtonActionPerformed)、引用changeJFrame.java實(shí)現(xiàn)修(changeButtonActionPerformed)、刪除備忘(delet
8、eButtonActionPerformed)的功能;changeJFrame.java主要實(shí)現(xiàn)更新數(shù)據(jù)信息并存入數(shù)據(jù)庫(kù)的功能。</p><p><b> 連接數(shù)據(jù)庫(kù)的實(shí)現(xiàn):</b></p><p> private Connection getConnectionAccess(){</p><p> String url = "
9、;jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=Memorandum.mdb;";</p><p> Connection conn = null;</p><p><b> try {</b></p><p> Class.forName("sun.jd
10、bc.odbc.JdbcOdbcDriver");</p><p> conn = DriverManager.getConnection(url , "" , ""); </p><p> } catch (Exception e) {</p><p><b> }</b></p&
11、gt;<p> return conn;</p><p><b> }</b></p><p><b> 查詢事件的實(shí)現(xiàn):</b></p><p> private void queryButtonActionPerformed(java.awt.event.ActionEvent evt) {
12、 </p><p> String Choice =(String)this.QueryChoiceJCB.getSelectedItem();</p><p> Connection conn = getConnectionAccess();</p><p> ResultSet
13、 bs = null;</p><p> String t=this.QueryTextfiled.getText();</p><p> if (t.trim().equals(""))</p><p> { JOptionPane.showMessageDialog(this,"請(qǐng)輸入查詢信息!"); };</
14、p><p><b> try {</b></p><p> Statement statement = conn.createStatement();</p><p> if("日期查詢".equals(Choice))</p><p> bs = statement.executeQuery(&
15、quot;select * from Memorandum where date='" + this.QueryTextfiled.getText() + "'");</p><p> if("事件查詢".equals(Choice))</p><p> bs = statement.executeQuery("
16、;select * from Memorandum where title='" + this.QueryTextfiled.getText() + "'");</p><p> DefaultTableModel dtm = (DefaultTableModel) this.jTable1.getModel();</p><p> for
17、 (int i=dtm.getRowCount()-1;i>=0; i--) {</p><p> dtm.removeRow(i);</p><p><b> }</b></p><p> DefaultTableCellRenderer r = new DefaultTableCellRenderer();</p&g
18、t;<p> r.setHorizontalAlignment(JLabel.CENTER);</p><p> jTable1.setDefaultRenderer(Object.class, r);</p><p> while (bs.next()) {</p><p> String data[] = new String[5];&
19、lt;/p><p> data[0] = bs.getString("title");</p><p> data[1] = bs.getString("date");</p><p> data[2] = bs.getString("time");</p><p> data[
20、3] = bs.getString("position");</p><p> data[4] = bs.getString("content");</p><p> dtm.addRow(data);</p><p><b> }</b></p><p> conn.cl
21、ose();</p><p> } catch (Exception e) {</p><p><b> }</b></p><p> } </p><p><b> 添加事件的實(shí)現(xiàn)</b></p>
22、;<p> private void addButtonActionPerformed(java.awt.event.ActionEvent evt) { </p><p> Connection conn =getConnectionAccess();</p><p> String t
23、itle=this.titleTextField.getText();</p><p> String date=this.dateTextField.getText();</p><p> String time=this.timeTextField.getText();</p><p> String position=this.positionTextF
24、ield.getText();</p><p> String content=this.contentTextArea.getText();</p><p> int flag = 1;</p><p><b> try{</b></p><p> Statement statement = conn.crea
25、teStatement();</p><p> ResultSet bs = statement.executeQuery("select * from Memorandum where date='" + this.dateTextField.getText() + "' and time='" + this.timeTextField.getT
26、ext() + "'");</p><p> if(bs.next()) </p><p> {JOptionPane.showMessageDialog(this,"當(dāng)前日期的當(dāng)前時(shí)間下已存在事件,\n請(qǐng)重設(shè)!");flag = 0;}</p><p><b> }</b></p&g
27、t;<p> catch(Exception e)</p><p><b> {}</b></p><p> if(flag==1){</p><p> if (title.trim().equals("")||date.trim().equals("")||time.trim().
28、equals(""))</p><p> JOptionPane.showMessageDialog(this,"請(qǐng)正確填寫信息!"); </p><p><b> else{try{</b></p><p> if(JOptionPane.showConfirmDialog(this,"
29、確認(rèn)添加?",</p><p> "確認(rèn)", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){</p><p> Statement statement=conn.createStatement();</p><p> String sqlStr="insert
30、 into Memorandum ([title],[date],[time],[position],[content]) values('"+title+"','"+date+"','"+time+"','"+position+"','"+cont ent+"
31、')";</p><p> statement.executeUpdate(sqlStr);</p><p> JOptionPane.showMessageDialog(this,"添加成功!"); </p><p> conn.close(); </p><p><b> }}&l
32、t;/b></p><p> catch(Exception e)</p><p><b> {</b></p><p> e.printStackTrace();</p><p><b> }} }</b></p><p> }
33、 </p><p><b> 修改事件的實(shí)現(xiàn)</b></p><p> private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) { <
34、;/p><p> Connection conn = getConnectionAccess();</p><p><b> try{</b></p><p> String r = jTable1.getValueAt(jTable1.getSelectedRow(),0).toString();</p><p>
35、 String s = jTable1.getValueAt(jTable1.getSelectedRow(),1).toString();</p><p> String t = jTable1.getValueAt(jTable1.getSelectedRow(),2).toString();</p><p> if(JOptionPane.showConfirmDialog(th
36、is,"確認(rèn)刪除?",</p><p> "確認(rèn)", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){</p><p> Statement statement=conn.createStatement();</p><p> DefaultTableModel
37、 dtm=(DefaultTableModel)this.jTable1.getModel();</p><p> String sqlStr="delete from Memorandum where title='"+r+"' and date='"+s+"'and time='"+t+"'
38、";</p><p> int i =jTable1.getSelectedRow(); </p><p> dtm.removeRow(i);</p><p> statement.executeUpdate(sqlStr);</p><p> JOptionPane.showMessageDialog(this,&quo
39、t;刪除成功!"); </p><p> conn.close();</p><p><b> }}</b></p><p> catch(Exception e)</p><p><b> {</b></p><p> JOptionPane.showM
40、essageDialog(this,"沒有選擇事件項(xiàng)!"); </p><p><b> }</b></p><p><b> } </b></p><p> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
41、{ </p><p> Connection conn =getConnectionAccess();</p><p> try { int res = JOptionPane.showConfirmDialog(this, "確認(rèn)更改?","確認(rèn)",JOptionP
42、ane.YES_NO_OPTION);</p><p> Statement statement= conn.createStatement();</p><p> if(res == JOptionPane.YES_OPTION)</p><p><b> {</b></p><p> { statement.
43、executeUpdate("update Memorandum set [position]='"+this.positionTextField.getText()+"'where title = '"+title+"'and date='" +date+ "'and time='" +time+ &
44、quot;'");</p><p> statement.executeUpdate("update Memorandum set [content]='"+this.contentTextField.getText()+"'where title = '"+title+"'and date='"
45、; +date+ "'and time='" +time+ "'");</p><p> statement.executeUpdate("update Memorandum set [date]='"+this.dateTextField.getText()+"'where title = '
46、"+title+"'and date='" +date+ "'and time='" +time+ "'");</p><p> statement.executeUpdate("update Memorandum set [time]='"+this.timeTextFie
47、ld.getText()+"'where title = '"+title+"'and date='" + this.dateTextField.getText()+ "'and time='" +time+ "'");</p><p><b> }</b>
48、;</p><p> JOptionPane.showMessageDialog(this, "修改成功!");</p><p> conn.close();}</p><p> if(res == JOptionPane.NO_OPTION){</p><p> changeJFrame cg=new chang
49、eJFrame(title,date,time,position,content);</p><p> cg.setVisible(true);</p><p> cg.setLocation(110, 50);}</p><p> } catch (Exception e) {</p><p><b> }</b&g
50、t;</p><p> this.dispose(); </p><p> } </p><p><b> 刪除事件的實(shí)現(xiàn)</b></p><p> private void deleteButtonActionPerformed(ja
51、va.awt.event.ActionEvent evt) { </p><p> Connection conn = getConnectionAccess();</p><p><b> try{</b></p><p> String r = j
52、Table1.getValueAt(jTable1.getSelectedRow(),0).toString();</p><p> String s = jTable1.getValueAt(jTable1.getSelectedRow(),1).toString();</p><p> String t = jTable1.getValueAt(jTable1.getSelecte
53、dRow(),2).toString();</p><p> if(JOptionPane.showConfirmDialog(this,"確認(rèn)刪除?",</p><p> "確認(rèn)", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION){</p><p> Stat
54、ement statement=conn.createStatement();</p><p> DefaultTableModel dtm=(DefaultTableModel)this.jTable1.getModel();</p><p> String sqlStr="delete from Memorandum where title='"+r+&
55、quot;' and date='"+s+"'and time='"+t+"'";</p><p> int i =jTable1.getSelectedRow();</p><p> dtm.removeRow(i);</p><p> statement.execut
56、eUpdate(sqlStr);</p><p> JOptionPane.showMessageDialog(this,"刪除成功!"); </p><p> conn.close();</p><p><b> }}</b></p><p> catch(Exception e)</
57、p><p><b> {</b></p><p> JOptionPane.showMessageDialog(this,"沒有選擇事件項(xiàng)!"); </p><p><b> }</b></p><p> }
58、 </p><p><b> 系統(tǒng)配置</b></p><p> 本系統(tǒng)功能的實(shí)現(xiàn)主要通過鼠標(biāo)點(diǎn)擊操作按鈕,進(jìn)而直接執(zhí)行代碼而成功實(shí)現(xiàn)系統(tǒng)功能,系統(tǒng)運(yùn)行情況如下:</p><p><b> 查詢備忘</b></p><p><b> 原始數(shù)據(jù)庫(kù)如下:</b&
59、gt;</p><p> 如果未輸入查詢信息,將彈出提示消息框</p><p> 輸入日期查詢,顯示當(dāng)天的所有備忘</p><p> 輸入時(shí)間查詢,將顯示以該字段為標(biāo)題的所有備忘</p><p><b> 添加備忘</b></p><p> 未輸入標(biāo)題,日期和時(shí)間時(shí),彈出提示信息<
60、/p><p> 輸入信息時(shí),系統(tǒng)可判斷當(dāng)前日期的當(dāng)前時(shí)間是否已存在備忘,例如備忘錄中2012-01-06日的20:00已有備忘,則不能再添加當(dāng)前日期、當(dāng)前時(shí)間的備忘。</p><p> 輸入正確的信息后,點(diǎn)擊確認(rèn)按鈕,彈出“確認(rèn)添加對(duì)話框”,點(diǎn)擊“否”,則不添加事件,返回原新增備忘界面,點(diǎn)擊“是”,則添加備忘,并提示添加成功。</p><p> 確認(rèn)添加后,數(shù)據(jù)庫(kù)
61、中插入該條目,數(shù)據(jù)庫(kù)信息如下:</p><p><b> 查詢顯示</b></p><p><b> 更改備忘</b></p><p> 查詢信息后,如果未選擇事件項(xiàng),彈出提示窗口</p><p> 選中事件---“約會(huì)”,點(diǎn)擊更改按鈕,彈出更改界面</p><p>
62、; 更改原地點(diǎn)“茶樓”為“咖啡館”,點(diǎn)擊確認(rèn),彈出確認(rèn)更改對(duì)話框,點(diǎn)擊“否”,返回更改界面,點(diǎn)擊“是”,則實(shí)現(xiàn)更新,并提示修改成功。</p><p> 原數(shù)據(jù)庫(kù)中該信息為:</p><p> 確認(rèn)更改后,數(shù)據(jù)信息為:</p><p><b> 刪除備忘</b></p><p> 查詢界面未選中事件項(xiàng)而點(diǎn)擊刪除,
63、提示沒有選擇事件項(xiàng)</p><p> 選中某一事件后,點(diǎn)擊刪除,彈出確認(rèn)對(duì)話框,點(diǎn)擊“否”,返回原界面,點(diǎn)擊“是”,則刪除記錄,并提示刪除成功。例如:選擇事件“碰面”</p><p> 確認(rèn)刪除后,查詢列表和數(shù)據(jù)庫(kù)中對(duì)應(yīng)條目刪除</p><p><b> 系統(tǒng)維護(hù)與擴(kuò)展</b></p><p> 總體來說,本系統(tǒng)
64、大致可以實(shí)現(xiàn)備忘錄的基本功能,但相對(duì)于一些備忘錄軟件工具來說,還有欠缺部分,就系統(tǒng)本身來說,有以下幾個(gè)問題:第一,界面過于簡(jiǎn)單,需要美化;第二,如果最新添加的備忘錄比原有備忘的時(shí)間早,查詢時(shí),按照添加時(shí)間的先后排序,無二沒有按照備忘的時(shí)間排序;第三;添加信息時(shí),日期和時(shí)間的格式不能按照標(biāo)準(zhǔn)格式輸入;第四;沒有具有一些備忘錄的擴(kuò)展功能,如通訊錄,事件提醒等。如若完善擴(kuò)展,可從這幾個(gè)方面進(jìn)行。</p><p><
65、;b> 心得體會(huì)</b></p><p> 系統(tǒng)設(shè)計(jì)是一項(xiàng)很繁瑣的過程,從界面設(shè)計(jì)、數(shù)據(jù)庫(kù)連接到功能實(shí)現(xiàn),各項(xiàng)內(nèi)容都有很多工作要完成,再加上之前接觸開發(fā)軟件NetBeans并不多,相關(guān)操作還不是很熟悉,從而遇到了很多問題。這時(shí)我總是積極的查閱資料,了解操作方式。實(shí)踐了才知道方法,從設(shè)計(jì)系統(tǒng)之初,也就是最基本的界面設(shè)計(jì)做起,慢慢的摸索門路,循序漸進(jìn)、這樣就在后邊避免了一些不必要問題,自己也加強(qiáng)
66、了知識(shí)的掌握,并且提高了學(xué)習(xí)和實(shí)踐的能力。</p><p> 雖然完成了任務(wù),但最終設(shè)計(jì)出來的系統(tǒng)還是有不足之處,諸如系統(tǒng)維護(hù)與拓展之中所言種種,還有待解決,也顯示了自己能力的欠缺,以后還應(yīng)加強(qiáng)這方面的練習(xí)。另外,本次課程設(shè)計(jì),培養(yǎng)了我將實(shí)際問題轉(zhuǎn)化為系統(tǒng)方案的技能,這對(duì)于以后的工作等方面大有裨益。 </p><p><b> 參考文獻(xiàn)</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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)論