版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 項目名稱: Java手機通訊錄系統 </p><p> 學生姓名: </p><p> 學 號: </p><p> 班 級:
2、 </p><p> 指導教師: </p><p> 2014年 5月 27日</p><p><b> 目錄</b></p><p> 1. 選題的背景1</p><p> 1.1國內外選題現狀1</p&g
3、t;<p> 1.2開發(fā)技術概述1</p><p> 1.3系統流程分析2</p><p><b> 2. 功能設計3</b></p><p> 2.1從技術角度分析實現的功能3</p><p> 2.2從系統角度分析實現的功能4</p><p> 3.
4、 詳細設計4</p><p><b> 3.1界面設計4</b></p><p> 3.2 關鍵代碼說明9</p><p> 4.系統測試18</p><p><b> 總結19</b></p><p><b> 參考文獻20</b&
5、gt;</p><p><b> 1. 選題的背景</b></p><p><b> 國內外選題現狀</b></p><p> 隨著計算機科學技術的飛速發(fā)展,人們的通訊方式也發(fā)生了翻天覆地的變化。以前的烽火臺,信鴿,騎馬等通信方式完全退出了歷史舞臺,手機通訊成為了現代人通信的主要方式,因此,設計一個好的手機通訊錄軟件
6、能夠及時更新和管理自己的聯系人資料。目前國內外在這方面外做的比較好的主要有谷歌,360,搜狗。我選擇手機通訊錄這個課題主要是為了鍛煉自己的實踐動手能力,加上自己對手機軟件的濃厚興趣。我的這個系統可以實現一個簡易的手機通訊錄功能,優(yōu)點包括:在編輯狀態(tài)下含有添加,查詢,修改,刪除,排序功能;在信息顯示的狀態(tài)下可以按照分組(包括同學,親人,朋友,同事,全部)顯示;但也還有待完善的地方:如果輸入兩個聯系人的姓名相同,在添加第二個聯系人時不會彈出
7、“已有該聯系人”的提示,而是直接按照兩個不一樣的聯系人處理;在查找、修改、刪除聯系人的時候只能通過姓名來實現,方式比較單一。</p><p><b> 開發(fā)技術概述</b></p><p> 本系統使用的技術概述</p><p><b> (1)圖形用戶界面</b></p><p> 本系統
8、用到了圖形用戶界面的知識,包括java中AWT包和Swing包中的相關知識:主要用到了窗口,面板,對話框,按鈕,標簽,菜單,文本框,文本區(qū),密碼框,容器,布局管理,事件處理器(監(jiān)聽器)以及顏色字體的設置和系統自帶方法等,使得界面比較整齊。</p><p> ?。?)輸入輸出流簡介</p><p> 在該系統中必須要不斷管理聯系人的資料,因此必定會用到文件中的字符讀寫(Filewriter
9、和FileReader),文件緩存(BufferReader,BufferedWriter)以及文件的關閉等知識。 </p><p><b> (3)其他知識</b></p><p> 在該系統還用到了以下知識:try-catch異常處理,if條件分支語句,字符串的處理,數組排序等。</p><p><b> 2.系統測試環(huán)境&
10、lt;/b></p><p> 被測試軟件系統的名稱</p><p> 課程設計項目——Java手機通訊錄</p><p><b> 系統任務提出者</b></p><p><b> xx老師</b></p><p><b> 系統開發(fā)者</b
11、></p><p><b> 12801班:xx</b></p><p> 系統用戶及安裝此軟件的計算中心</p><p> 3-104機房、1-710機房、1-709機房</p><p> 測試環(huán)境與實際運行環(huán)境之間的差異以及這些差異對測試結果的影響</p><p><b&g
12、t; 測試環(huán)境:</b></p><p> Windows XP、Windows 7、 Windows 8、 Windows 8.1、JDK1.6、JDK1.7。</p><p><b> 系統流程分析</b></p><p> 圖1-1 系統流程圖 </p&
13、gt;<p> 該系統流程圖包括整個系統總體流程,當用戶進入界面后,可以直接選擇</p><p> 相應的功能選項進行相應的操作。</p><p><b> 2. 功能設計</b></p><p> 從技術角度分析實現的功能</p><p> (1)圖形用戶界面設計中的功能</p>
14、<p> 表2-1 控件對象表</p><p> ?。?)文件操作設計中的功能</p><p><b> 表2-2文件對象表</b></p><p> 從系統角度分析實現的功能</p><p> 圖2-1系統功能圖 </p><p> 該圖是手機通訊錄系統的總體功能圖,主要功
15、能有編輯和顯示兩個模塊,其中編輯下拉菜單中包括添加、查找、修改、刪除、排序功能,信息顯示部分包括分組顯示信息。用戶可以直接在“edit”菜單中選擇相應的功能編輯,編輯完成可以繼續(xù)選擇其他功能編輯也可以選在“show”菜單中的選項進行信息顯示瀏覽。</p><p><b> 3. 詳細設計</b></p><p><b> 3.1界面設計</b&g
16、t;</p><p> 圖3-1用戶進入界面首圖</p><p> 這是用戶進入系統界面的窗口顯示圖。</p><p> 圖3-2添加聯系人界面</p><p> 當用戶點擊用戶界面的添加下拉菜單的時候就會顯示該信息框,用戶即可填寫相應的信息,添加完成,點擊按鈕“OK”即可保存。</p><p> 圖3-3
17、查找聯系人界面</p><p> 該界面是聯系人查找的界面,當選擇下拉菜單的“search” 選項時就會顯示該界面,然后在文本框中輸入你要查找的聯系人。</p><p> 圖3-4 修改聯系人界面</p><p> 該界面是聯系人修改的界面,當選擇下拉菜單的“revise” 選項時就會顯示該界面,然后在文本框中輸入你要修改的聯系人。</p>&l
18、t;p> 圖3-5 刪除聯系人界面</p><p> 該界面是聯系人刪除的界面,當選擇下拉菜單的“delete” 選項時就會顯示該界面,然后在文本框中輸入你要刪除的聯系人。</p><p> 圖3-6 全體人員信息顯示界面</p><p> 該界面是全體人員信息顯示的界面,但選擇下拉菜單的“all”選項時就會顯示該信息顯示界面。</p>
19、<p> 圖3-7按照同學分組信息顯示界面</p><p> 該界面是按照同學分組的信息顯示的界面,但選擇下拉菜單的“student”選項時就會顯示該信息顯示界面。</p><p> 圖3-8按照同事分組信息顯示界面</p><p> 該界面是按照同事分組的信息顯示的界面,但選擇下拉菜單的“colleague”選項時就會顯示該信息顯示界面。<
20、/p><p> 圖3-9按照朋友分組信息顯示界面</p><p> 該界面是按照朋友組別的信息顯示的界面,但選擇下拉菜單的“friend”選項時就會顯示該信息顯示界面。</p><p> 3.2 關鍵代碼說明</p><p><b> //監(jiān)聽同學</b></p><p> show1.ad
21、dActionListener(new ActionListener() </p><p><b> {</b></p><p> public void actionPerformed(ActionEvent e) </p><p><b> {</b>
22、;</p><p> new Print("student",1); </p><p><b> }</b></p><p><b> });</b></p><p><b> //監(jiān)聽同事</b></p><p> sho
23、w2.addActionListener(new ActionListener() </p><p><b> {</b></p><p> public void actionPerformed(ActionEvent e) </p><p><
24、b> {</b></p><p> new Print("colleague",1); </p><p><b> }</b></p><p><b> });</b></p><p><b> //監(jiān)聽朋友</b></p&
25、gt;<p> show3.addActionListener(new ActionListener() {</p><p> public void actionPerformed(ActionEvent e) </p><p><b> {</b><
26、;/p><p> new Print("friend",1); </p><p><b> }</b></p><p><b> });</b></p><p><b> //監(jiān)聽親戚</b></p><p> show4.ad
27、dActionListener(new ActionListener() </p><p><b> {</b></p><p> public void actionPerformed(ActionEvent e) </p><p><b>
28、 {</b></p><p> new Print("relative",1); </p><p><b> }</b></p><p><b> });</b></p><p><b> //監(jiān)聽全體人員</b></p>
29、<p> show5.addActionListener(new ActionListener() {</p><p> public void actionPerformed(ActionEvent e) </p><p><b> {</b></p&
30、gt;<p> new Print("all",0); </p><p><b> }</b></p><p><b> });</b></p><p><b> }</b></p><p><b> //排序</b&
31、gt;</p><p><b> if(n==2)</b></p><p> try </p><p> {int i,j,k;</p><p> String []all;<
32、/p><p> all=new String[1000];</p><p> BufferedReader read=new BufferedReader(new FileReader("D:\\AddressBook.txt"));</p><p> area.append("Name"+'\t'+&quo
33、t;Group"+'\t'+"Birthday"+'\t'+"Phone"+'\t'+"Email"+'\t'+"Other"+'\n');</p><p> int z=1,count=0;</p><p> whi
34、le(z==1){</p><p> for(i=0;i<1000;i++){</p><p> String str=read.readLine();</p><p> if(str!=null)</p><p> {all[i]=str;count++;}</p><p><b> els
35、e z=0;</b></p><p><b> }</b></p><p><b> }</b></p><p> String[] bll;</p><p> bll=new String[count];</p><p> for(i=0;i<c
36、ount;i++)</p><p> bll[i]=all[i];</p><p> getSortOfChinese(bll);</p><p> for (i = 0; i < count; i++)</p><p> area.append(bll[i]+'\n');</p><p>
37、; read.close();</p><p> }catch (FileNotFoundException e1) {</p><p> e1.printStackTrace();</p><p> }catch (IOException e2){</p><p> e2.printStackTrace();</p>
38、<p><b> }</b></p><p><b> //刪除代碼</b></p><p><b> if(n==3){</b></p><p> certain.addActionListener(new ActionListener()
39、 </p><p><b> {</b></p><p> public void actionPerformed(ActionEvent e) </p><p><b> {</b></p><p><b> try {</b&
40、gt;</p><p> File file=new File("D:\\AddressBook.txt");</p><p> Scanner find=new Scanner(file);</p><p> FileWriter file1=new FileWriter("D:\\AddressBook.txt",t
41、rue);</p><p> PrintWriter write=new PrintWriter(file1);</p><p> while(find.hasNext()){</p><p> String s=find.next();</p><p> if(!(s.equals(Tname.getText()))){</p
42、><p> write.print(s+'\t');</p><p> write.print(find.next()+'\t');</p><p> write.print(find.next()+' ');</p><p> write.print(find.next()+' &
43、#39;);</p><p> write.print(find.next()+'\t');</p><p> write.print(find.next()+'\t');</p><p> write.print(find.next()+'\t');</p><p> write.pr
44、intln(find.next());</p><p><b> }</b></p><p><b> else {</b></p><p> find.next();find.next();find.next();find.next();</p><p> find.next();find
45、.next();find.next();</p><p><b> }</b></p><p><b> }</b></p><p> //file.close();</p><p> find.close();</p><p> file.delete();<
46、;/p><p> write.close();</p><p> file1.close();</p><p> File file2=new File("D:\\AddressBook1.txt");</p><p> file2.renameTo(new File( "D:\\AddressBook.tx
47、t"));</p><p> JOptionPane.showMessageDialog(null,"delete success",</p><p> "the result of delete",JOptionPane.INFORMATION_MESSAGE);</p><p> } catch (File
48、NotFoundException e1) {</p><p> // TODO Auto-generated catch block</p><p> //e1.printStackTrace();</p><p> JOptionPane.showMessageDialog(null, "The file was not found")
49、;</p><p> } catch (IOException e2) {</p><p> // TODO Auto-generated catch block</p><p> //e2.printStackTrace();</p><p> System.out.print("The people was not fo
50、und");</p><p><b> } </b></p><p><b> }</b></p><p><b> });</b></p><p><b> }</b></p><p> //給按鈕"
51、OK"設置監(jiān)聽器</p><p> certain.addActionListener(new ActionListener() {</p><p> public void actionPerformed(ActionEvent e) //用匿名內部類實現監(jiān)聽器</p><p>
52、;<b> {</b></p><p> if(Tname.getText().equals(""))//姓名錄入為空</p><p> JOptionPane.showMessageDialog(null,"Failure of the input, name must fill out!",//使用一個彈出窗口信息提示
53、框</p><p> "the results of input",JOptionPane.INFORMATION_MESSAGE);</p><p><b> else{</b></p><p><b> try {</b></p><p> FileWriter Ad
54、dressBook=new FileWriter("k:\\MobileAddressBook.txt",true);//寫入字符位置</p><p> PrintWriter add=new PrintWriter(AddressBook);//直接轉換為系統默認編碼下對應的字符輸出</p><p> String s1,s2,s3,s4;</p>
55、<p> //定義group和birthday的默認顯示為“無”</p><p> if(Tname.getText().equals(""))s1="無";else s1=Tname.getText();</p><p> if(Tphone.getText().equals(""))s2="無&quo
56、t;;else s2=Tphone.getText();</p><p> if(Temail.getText().equals(""))s3="無";else s3=Temail.getText();</p><p> if(Tother.getText().equals(""))s4="無";else
57、s4=Tother.getText();</p><p> //添加默認顯示“無”</p><p> add.println(s1+'\t'+Cgroup.getSelectedItem()+'\t'+Cbirthyear.getSelectedItem()+</p><p> ' '+Cbirthmonth.g
58、etSelectedItem()+' '+Cbirthday.getSelectedItem()+</p><p> '\t'+s2+'\t'+s3+'\t'+s4);</p><p> add.close();</p><p> AddressBook.close();//關閉通訊錄</p
59、><p> z=1;//設置以為標志位</p><p> } catch (IOException e1) {</p><p> e1.printStackTrace();//輸出異常信息</p><p><b> }</b></p><p><b> if(y==0){</
60、b></p><p> JOptionPane.showMessageDialog(null,"input success",</p><p> "the result of input",JOptionPane.INFORMATION_MESSAGE);</p><p><b> }</b>
61、</p><p><b> else {</b></p><p> JOptionPane.showMessageDialog(null,"revise succes",</p><p> "the result of revise",JOptionPane.INFORMATION_MESSAGE)
62、;</p><p><b> }</b></p><p><b> //文本框為空</b></p><p> Tname.setText("");</p><p> Tphone.setText("");</p><p> T
63、email.setText("");</p><p> Tother.setText("");</p><p><b> }</b></p><p><b> }</b></p><p><b> });</b></p>
64、;<p> //給按鈕“cannel”設置監(jiān)聽器</p><p> cancel.addActionListener(new ActionListener() </p><p><b> {</b></p><p> public void actionPerformed(Actio
65、nEvent e) //用匿名內部類實現監(jiān)聽器</p><p><b> {</b></p><p> frame.dispose();</p><p><b> z=0;</b></p><p><b> }</b></p>
66、;<p><b> });</b></p><p><b> //錄入</b></p><p> class Typein implements ActionListener{</p><p> public static int z=2;</p><p> public s
67、tatic int y=0;</p><p><b> //設置標簽</b></p><p> public JLabel Lname,Lgroup,Lbirthday,Lphone,Lemail,Lother,Lnote;</p><p> public JTextField Tname=new JTextField(10),Tphon
68、e=new JTextField(15),</p><p> Temail=new JTextField(15),Tother=new JTextField(15);</p><p> public Choice Cgroup=new Choice(),Cbirthyear=new Choice(),Cbirthmonth=new Choice(),</p><p&
69、gt; Cbirthday=new Choice();</p><p> public JButton certain,cancel;</p><p> public JFrame frame=new JFrame("Enter the contact information");</p><p> public Typein(){<
70、;/p><p> //添加組別的下拉選項</p><p> Cgroup.addItem("none");</p><p> Cgroup.addItem("student");</p><p> Cgroup.addItem("colleague");</p>&
71、lt;p> Cgroup.addItem("friend");</p><p> Cgroup.addItem("relative");</p><p><b> //信息錄入方法</b></p><p> public void typein(){Container c=frame.ge
72、tContentPane();</p><p> frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p> frame.setSize(500,300);</p><p> frame.setLayout(new GridLayout(5,1,5,5));</p><p&g
73、t; frame.setVisible(true);</p><p> //錄入面板的信息設置</p><p> Lname=new JLabel("Name:");</p><p> Lgroup=new JLabel("Group:");</p><p> Lbirthday=new JL
74、abel("Birthday:");</p><p> Lphone=new JLabel(" Phone:");</p><p> Lemail=new JLabel("Email:");</p><p> Lother=new JLabel("Other:");</p&g
75、t;<p> Lnote=new JLabel("Tip:”other“Can input information you deem important");</p><p> certain=new JButton("OK");</p><p> cancel=new JButton("Cancel");&l
76、t;/p><p> JPanel pane1=new JPanel();</p><p> JPanel pane2=new JPanel();</p><p> JPanel pane3=new JPanel();</p><p> JPanel pane4=new JPanel();</p><p> JPa
77、nel pane5=new JPanel();</p><p> //添加信息顯示面板</p><p> c.add(pane1);</p><p> c.add(pane2);</p><p> c.add(pane3);</p><p> c.add(pane4);</p><p>
78、; c.add(pane5);</p><p> //標簽和對應的文本框放置</p><p> pane1.add(Lname);</p><p> pane1.add(Tname);</p><p> pane1.add(Lgroup);</p><p> pane1.add(Cgroup);</p
79、><p> pane2.add(Lbirthday);</p><p> pane2.add(Cbirthyear);</p><p> pane2.add(Cbirthmonth);</p><p> pane2.add(Cbirthday);</p><p> pane2.add(Lphone);</p
80、><p> pane2.add(Tphone);</p><p> pane3.add(Lemail);</p><p> pane3.add(Temail);</p><p> pane3.add(Lother);</p><p> pane3.add(Tother);</p><p>
81、 pane4.add(Lnote);</p><p><b> 系統測試</b></p><p> 本系統在每完成一個功能后,都會有一個彈出對話框給出信息提示,如果操作正確會彈出“操作成功”彈出框提示,如果操作不當,系統不會進入下一步,會讓你選擇重新輸入。輸入完畢,可以直接關閉窗口或者點擊“取消”按鈕返回。同時,該系統也進行了修改前和修改后的對比測試,修改前程序
82、不完整,占用內存大,修改后程序很快,結果正確。</p><p> 圖4-1 信息錄入成功界面</p><p> 聯系人信息錄入成功,彈出該提示對話框。</p><p> 圖4-2 信息錄入失敗界面</p><p> 聯系人信息錄入失敗,彈出該提示對話框。</p><p><b> 總結</b&
83、gt;</p><p> 經過系統測試,“Java手機通訊錄系統”實現了基本手機通訊錄的功能,達到了設計目標;系統實現了手機通訊錄的聯系人編輯(聯系人信息添加,查找,修改,刪除,排序),信息顯示(按分組顯示),信息保存功能,該系統進一步完善可以增加以下功能:查找聯系人可以多種方式(除了姓名,還可以按照分組,手機號碼,備注,郵箱),增加“添加黑名單”和常用聯系人等功能。</p><p>
84、 在本次Java程序設計課程設計的編程過程中,我有如下收獲。</p><p> 平時課堂的基礎知識是上機做課程設計的基礎,上機才是增強動手能力的最好方法;</p><p> 平時沒有問題不代表課程設計就很容易搞定,上機會遇到平時根本碰不到的問題,許多不經意的小問題在課程設計中全部會出來;</p><p> 細節(jié)決定成敗,在系統設計中如果少了一個最簡單的分號程序
85、不能運行;</p><p> 不懂就得問和查找資料,課程設計會遇到很多棘手的問題,及時請教老師和同學以及上網查找資料會事半功倍。</p><p> 合作才會上雙贏,課程設計需要同學和老師的幫助,同學間只有互相幫助才會真正共同進步。</p><p><b> 參考文獻</b></p><p> [1]耿祥義,張躍平
86、.Java2實用教材.第三版.北京清華大學出版社,2013</p><p> [2]耿祥義,張躍平.Java面向對象程序設計.第一版.北京清華大學出版社,2010</p><p> [3]耿祥義,張躍平.Java面向對象程序設計實驗指導與習題解答.第一版.北京清 華大學出版社,2012</p><p> [4]Ca
87、y S Horstmann,Gary Cornell.Java核心技術,卷一.第八版.葉乃文,鄺勁筠譯.北京機械工業(yè)出版社,2009</p><p> [5]Joshua Bloch.Effective Java 中文版.第2版.楊春華,俞黎敏譯.北京機械工業(yè)出版社,2009</p><p> [6] 陳煒.Java 程序設計案例教程[M].北京:人民郵電出版社,2009</p&
88、gt;<p> [7] 賈振華.Java 程序設計[M].北京:中國水利水電出版社,2009</p><p> [8] 張思明,梁維娜.Java 程序設計實踐教程.北京:清華大學出版社,2010</p><p> Java程序設計課程設計成績評定</p><p> 成績評定: </p&g
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設計---java程序設計
- java課程設計--java程序設計
- java程序設計課程設計研究報告
- java課程設計--java面向對象程序設計課程設計
- java課程設計報告--java桌面應用程序設計開發(fā)
- 《面向對象程序設計》課程設計---java日歷
- 《面向對象程序設計》課程設計java日歷
- java課程設計--- 記事本程序設計
- 程序設計課程設計報告
- 程序設計課程設計報告
- java語言課程設計---記事本程序設計
- linux程序設計課程設計報告
- java程序設計與開發(fā)技術課程設計
- web程序設計課程設計報告
- java面向對象程序設計課程設計--學生信息管理系統程序設計
- java程序設計課程論文
- 《java程序設計》課程網站建設【開題報告】
- 掃雷游戲程序設計課程設計報告
- c++程序設計課程設計報告
- 《高級語言程序設計》課程設計報告
評論
0/150
提交評論