網(wǎng)絡(luò)編程課程設(shè)計(jì)報(bào)告--圖片瀏覽器_第1頁(yè)
已閱讀1頁(yè),還剩10頁(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)介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  課程名稱: 網(wǎng)絡(luò)編程技術(shù) 課程設(shè)計(jì)</p><p>  設(shè)計(jì)題目: 圖片瀏覽器 </p><p><b>  目錄</b></p><p><b>  1 需求分析2<

2、/b></p><p>  1.1 課程設(shè)計(jì)題目2</p><p>  1.2 課程設(shè)計(jì)要求及功能2</p><p>  1.3 課程設(shè)計(jì)思想2</p><p>  1.4 軟硬件運(yùn)行環(huán)境及開(kāi)發(fā)工具2</p><p>  1.5 功能設(shè)計(jì)2</p><p><b>  

3、2 總體設(shè)計(jì)2</b></p><p>  2.1 概要設(shè)計(jì)2</p><p>  2.2程序執(zhí)行流程圖3</p><p><b>  3 設(shè)計(jì)內(nèi)容4</b></p><p>  3.1 功能的代碼4</p><p>  3.2 效果展示7</p><p

4、>  4 調(diào)試及操作說(shuō)明8</p><p>  5 課程設(shè)計(jì)總結(jié)與體會(huì)8</p><p><b>  6 致謝9</b></p><p><b>  7 參考文獻(xiàn)9</b></p><p><b>  圖片瀏覽器</b></p><p>&

5、lt;b>  ——文件下一張模塊</b></p><p><b>  1 需求分析</b></p><p>  1.1 課程設(shè)計(jì)題目</p><p><b>  圖片瀏覽器課程設(shè)計(jì)</b></p><p>  1.2 課程設(shè)計(jì)要求及功能</p><p>  

6、本次課程設(shè)計(jì)主要任務(wù)是由我們小組所有人員一起工作利用java語(yǔ)言,編寫(xiě)一個(gè)圖片瀏覽器的軟件,根據(jù)老師的要求我們是每個(gè)人負(fù)責(zé)一個(gè)模塊,但是最后的組裝是由組長(zhǎng)來(lái)完成的。該圖片瀏覽器所具有的功能有:打開(kāi)圖片、上一張、下一張、放大圖片、縮小圖片、關(guān)閉程序、幫助與支持等基本功能。</p><p>  1.3 課程設(shè)計(jì)思想</p><p>  本軟件主要使用圖形用戶界面,JAVA的輸入輸出流,以及鼠標(biāo)

7、監(jiān)聽(tīng)等事件監(jiān)聽(tīng)器等技術(shù)。在具體實(shí)現(xiàn)方面大體上將程序分為事件監(jiān)聽(tīng)類ViewerFrame,程序入口類main,,事件監(jiān)聽(tīng)處理類ViewerAction,程序功能實(shí)現(xiàn)類ViewerService,文件過(guò)濾處理類ViewerFileChooser;通過(guò)整合是個(gè)各類連接起來(lái)形成一個(gè)統(tǒng)一的整體進(jìn)而封裝成一個(gè)整體,形成一個(gè)軟件可以方便用戶的使用。本軟件類似于現(xiàn)在市面上流行的圖片瀏覽軟件但是沒(méi)有流行的軟件那么多功能,但是它使用起來(lái)比較簡(jiǎn)單方便。<

8、;/p><p>  1.4 軟硬件運(yùn)行環(huán)境及開(kāi)發(fā)工具</p><p>  開(kāi)發(fā)環(huán)境:Windows XP下安裝了JDK JRE6.0軟件;</p><p>  開(kāi)發(fā)工具:Eclipse3.5;</p><p><b>  1.5 功能設(shè)計(jì)</b></p><p>  本圖片瀏覽器主要功能如下:<

9、/p><p>  打開(kāi):從指定目錄中導(dǎo)入選中的圖片;</p><p>  上一張:導(dǎo)入當(dāng)前圖片所在存儲(chǔ)位置的上一張圖片;</p><p>  下一張:導(dǎo)入當(dāng)前圖片所在存儲(chǔ)位置的下一張圖片;</p><p>  放大:放大顯示當(dāng)前圖片;</p><p>  縮?。嚎s小顯示當(dāng)前圖片;</p><p>&

10、lt;b>  退出:退出軟件。</b></p><p><b>  2 總體設(shè)計(jì)</b></p><p><b>  2.1 概要設(shè)計(jì)</b></p><p>  本軟件主要由以下模塊構(gòu)成:主模塊、界面、文件篩選、服務(wù)模塊構(gòu)成。各模塊的主要功能是:主模塊主要用來(lái)打開(kāi)該軟件;界面模塊主要實(shí)現(xiàn)軟件界面;文件篩

11、選模塊主要對(duì)文件的后綴進(jìn)行判斷與過(guò)濾,判斷文件是否為圖片文件;服務(wù)模塊主要實(shí)現(xiàn)軟件中的一些關(guān)鍵代碼。比如,文件的打開(kāi)以及在打開(kāi)文件的同時(shí)調(diào)用文件篩選功能;各模塊分別在不同的源文件中實(shí)現(xiàn),對(duì)軟件的界面設(shè)計(jì)放在ViewerFrame里面。在軟件窗口中主要分為兩部分:菜單部分和圖片顯示部分;菜單部分使用JMenuBar類實(shí)現(xiàn),圖片顯示部分使用JLabel類實(shí)現(xiàn);對(duì)文件類型以擴(kuò)展名的方式進(jìn)行過(guò)濾,該部分是在ViewerFileChooser類中

12、實(shí)現(xiàn);事件的監(jiān)聽(tīng)是在ViewerFrame里面,在菜單欄中,對(duì)每一個(gè)選項(xiàng)使用二維數(shù)組進(jìn)行編號(hào),在選項(xiàng)內(nèi)容設(shè)置的同時(shí)為其設(shè)置監(jiān)聽(tīng);事件的實(shí)現(xiàn)是在ViewerService里面,當(dāng)所監(jiān)聽(tīng)到的事件被觸發(fā)時(shí)會(huì)自動(dòng)轉(zhuǎn)入該類中的相應(yīng)處理方法;功能的實(shí)現(xiàn)是在ViewerService里面,在該類中,利用menuDo()方法對(duì)當(dāng)前觸發(fā)事件進(jìn)行選擇,然后跳轉(zhuǎn)到本類中的響應(yīng)處理方法來(lái)實(shí)現(xiàn)功能。</p><p>  2.2程序執(zhí)行流程

13、圖</p><p><b>  圖1 系統(tǒng)流程圖</b></p><p><b>  3 設(shè)計(jì)內(nèi)容</b></p><p>  在該圖片瀏覽器的設(shè)計(jì)制作中,我所負(fù)責(zé)的部分是圖片下一張的功能的實(shí)現(xiàn)。此功能主要是在事件的監(jiān)聽(tīng)是在ViewerFrame,這個(gè)模塊里面實(shí)現(xiàn)的。</p><p><b&g

14、t;  3.1 功能的代碼</b></p><p>  package com.gh;</p><p>  import java.awt.Image;</p><p>  import java.io.File;</p><p>  import java.util.ArrayList;</p><p>

15、  import java.util.List;</p><p>  import javax.swing.ImageIcon;</p><p>  import javax.swing.filechooser.FileFilter;</p><p>  public class ViewerService {</p><p>  priva

16、te static ViewerService service = null;</p><p>  // 新建一個(gè)ViewerFileChooser</p><p>  private ViewerFileChooser fileChooser = new ViewerFileChooser();</p><p>  // 放大或者縮小的比例</p>

17、<p>  private double range = 0.2;</p><p><b>  // 目前的文件夾</b></p><p>  private File currentDirectory = null;</p><p>  // 目前文件夾下的所有圖片文件</p><p>  private

18、List<File> currentFiles = null;</p><p><b>  // 目前圖片文件</b></p><p>  private File currentFile = null;</p><p>  public static ViewerService getInstance() {</p>

19、<p>  if (service == null) {</p><p>  service = new ViewerService();</p><p><b>  }</b></p><p>  return service;</p><p><b>  }</b></p&

20、gt;<p>  public void open(ViewerFrame frame) {</p><p><b>  // 如果選擇打開(kāi)</b></p><p>  if (fileChooser.showOpenDialog(frame) == ViewerFileChooser.APPROVE_OPTION) {</p><p

21、>  // 給目前打開(kāi)的文件賦值</p><p>  this.currentFile = fileChooser.getSelectedFile();</p><p><b>  // 獲取文件路徑</b></p><p>  String name = this.currentFile.getPath();</p>&l

22、t;p>  // 獲取目前文件夾</p><p>  File cd = fileChooser.getCurrentDirectory();</p><p>  // 如果文件夾有改變</p><p>  if (cd != this.currentDirectory || this.currentDirectory == null) {</p>

23、<p>  // 或者fileChooser的所有FileFilter</p><p>  FileFilter[] fileFilters = fileChooser</p><p>  .getChoosableFileFilters();</p><p>  File files[] = cd.listFiles();</p>&l

24、t;p>  this.currentFiles = new ArrayList<File>();</p><p>  for (File file : files) {</p><p>  for (FileFilter filter : fileFilters) {</p><p>  // 如果是圖片文件</p><p>

25、;  if (filter.accept(file)) {</p><p>  // 把文件加到currentFiles中</p><p>  this.currentFiles.add(file);</p><p><b>  }</b></p><p><b>  }</b></p>

26、<p><b>  }</b></p><p><b>  }</b></p><p>  ImageIcon icon = new ImageIcon(name);</p><p>  frame.getLabel().setIcon(icon);</p><p><b>

27、  }</b></p><p><b>  }</b></p><p>  public void zoom(ViewerFrame frame, boolean isEnlarge) {</p><p>  // 獲取放大或者縮小的乘比</p><p>  double enLargeRange = is

28、Enlarge ? 1 + range : 1 - range;</p><p>  // 獲取目前的圖片</p><p>  ImageIcon icon = (ImageIcon) frame.getLabel().getIcon();</p><p>  if (icon != null) {</p><p>  int width =

29、 (int) (icon.getIconWidth() * enLargeRange);</p><p>  // 獲取改變大小后的圖片</p><p>  ImageIcon newIcon = new ImageIcon(icon.getImage()</p><p>  .getScaledInstance(width, -1, Image.SCALE_DEF

30、AULT));</p><p>  // 改變顯示的圖片</p><p>  frame.getLabel().setIcon(newIcon);</p><p><b>  }</b></p><p><b>  }</b></p><p>  public void l

31、ast(ViewerFrame frame) {</p><p>  // 如果有打開(kāi)包含圖片的文件夾</p><p>  if (this.currentFiles != null && !this.currentFiles.isEmpty()) {</p><p>  int index = this.currentFiles.indexOf(t

32、his.currentFile);</p><p><b>  // 打開(kāi)上一個(gè)</b></p><p>  if (index > 0) {</p><p>  File file = (File) this.currentFiles.get(index - 1);</p><p>  ImageIcon ico

33、n = new ImageIcon(file.getPath());</p><p>  frame.getLabel().setIcon(icon);</p><p>  this.currentFile = file;</p><p><b>  }</b></p><p><b>  }</b>

34、;</p><p><b>  }</b></p><p>  public void next(ViewerFrame frame) {</p><p>  // 如果有打開(kāi)包含圖片的文件夾</p><p>  if (this.currentFiles != null && !this.curren

35、tFiles.isEmpty()) {</p><p>  int index = this.currentFiles.indexOf(this.currentFile) + 1;</p><p><b>  // 打開(kāi)下一個(gè)</b></p><p>  if (index + 1 < this.currentFiles.size())

36、{</p><p>  File file = (File) this.currentFiles.get(index + 1);</p><p>  ImageIcon icon = new ImageIcon(file.getPath());</p><p>  frame.getLabel().setIcon(icon);</p><p>

37、;  this.currentFile = file;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  public void menuDo(ViewerFrame frame, St

38、ring cmd) {</p><p><b>  // 打開(kāi)</b></p><p>  if (cmd.equals("打開(kāi)(O)")) {</p><p>  open(frame);</p><p><b>  }</b></p><p><

39、b>  // 放大</b></p><p>  if (cmd.equals("放大(M)")) {</p><p>  zoom(frame, true);</p><p><b>  }</b></p><p><b>  // 縮小</b></p&g

40、t;<p>  if (cmd.equals("縮小(O)")) {</p><p>  zoom(frame, false);</p><p><b>  }</b></p><p><b>  // 上一個(gè)</b></p><p>  if (cmd.equ

41、als("上一個(gè)(X)")) {</p><p>  last(frame);</p><p><b>  }</b></p><p><b>  // 下一個(gè)</b></p><p>  if (cmd.equals("下一個(gè)(P)")) {</p&g

42、t;<p>  next(frame);</p><p><b>  }</b></p><p><b>  // 退出</b></p><p>  if (cmd.equals("退出(X)")) {</p><p>  System.exit(0);<

43、/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  3.2 效果展示</b></p><p>  本功能相關(guān)實(shí)現(xiàn)截圖如圖2圖3:</p><p>  圖2 含有“下一張”功能截圖</p>&

44、lt;p>  圖3 圖片進(jìn)行下一章操作的效果</p><p><b>  4 調(diào)試及操作說(shuō)明</b></p><p>  本模塊編寫(xiě)完成后,交由組長(zhǎng)進(jìn)行整合及測(cè)試;本軟件簡(jiǎn)單易用,關(guān)于下一張操作,只需要在軟件成功運(yùn)行后,選擇菜單欄中的文件”下一張”即可。</p><p>  5 課程設(shè)計(jì)總結(jié)與體會(huì)</p><p>

45、  通過(guò)這幾天的學(xué)習(xí),我感覺(jué)到了對(duì)于網(wǎng)絡(luò)編程這門課程有了更加深刻的認(rèn)識(shí),雖然到最后學(xué)會(huì)的東西不是很多,但是我覺(jué)得挺充實(shí)的,覺(jué)得這幾天過(guò)的很有意義,在這個(gè)過(guò)程中才意識(shí)到原來(lái)編程還是挺有意思的。以前只是編寫(xiě)C語(yǔ)言等程序感覺(jué)是那么的枯燥,即使編寫(xiě)出來(lái)也沒(méi)多少成功的感覺(jué)。但是做了這個(gè)課程設(shè)計(jì)后我的看法改變了。</p><p>  這次做課程設(shè)計(jì),給我最大的收獲是鍛煉了我編程的能力,增加了我對(duì)編程的興趣,雖然我依然不喜歡編

46、程但是不妨礙我從另一個(gè)角度去思考它,最主要的是明白了做什么讀不容易,并且在這個(gè)過(guò)程中我學(xué)會(huì)了面對(duì)一個(gè)問(wèn)題我應(yīng)該如何入手,如何思考,如何尋找問(wèn)題的突破口。而且我應(yīng)該感謝我的指導(dǎo)老師,是他對(duì)我們那么嚴(yán)格要求,才使得我們可以更加精益求精,把我們的程序盡可能的做到完美。當(dāng)然,也由于我的經(jīng)驗(yàn)不足,這次編的程序也不是特別的完美,但是,我依然很高興,因?yàn)槲覀儚倪@次的實(shí)習(xí)中學(xué)到了對(duì)我們來(lái)說(shuō)很重要的東西,這個(gè)經(jīng)歷讓我感受頗多,我發(fā)現(xiàn)耐心的重要性,我更發(fā)現(xiàn)

47、了學(xué)習(xí)的重要性。沒(méi)有什么不可能的,什么事情都得自己親自嘗試了,才知道其中的酸甜苦辣。這不僅可以用到我的學(xué)習(xí)生活中,也為我將來(lái)的工作提供了一次實(shí)踐的機(jī)會(huì)。讓我深刻的了解到,學(xué)習(xí)的要性,并且跟同學(xué)的交流也是特別的重要。在實(shí)習(xí)過(guò)程中組長(zhǎng)對(duì)我的教導(dǎo)是我在能完成任務(wù)的一個(gè)必不可少的原因,而且在很多的程序不能運(yùn)行時(shí),是他及時(shí)出現(xiàn)幫助我找到了原因,并且指導(dǎo)我在以后碰到同類型問(wèn)題應(yīng)該如何處理,讓我獲益良多。</p><p>  

48、在實(shí)習(xí)即將結(jié)束時(shí)王老師和我們說(shuō)了一句自己的人生經(jīng)驗(yàn):“人要學(xué)會(huì)吃苦吃虧“,因?yàn)樵趯?lái)的工作環(huán)境中不如意的事將多如牛毛,又苦又累的工作總的有人做,而且不是每個(gè)人都能吃到肉總的有人喝湯,總得有人連湯也喝不上,但是這正是磨礪人得時(shí)候如果這時(shí)候退縮了,則人生注定一事無(wú)成。在實(shí)習(xí)結(jié)束候我仔細(xì)的回味了回味老師的這倆句話,感覺(jué)很有哲理,覺(jué)得這是老師自己的的人生經(jīng)驗(yàn),對(duì)我觸動(dòng)挺大的,也許可以這樣說(shuō)這次實(shí)習(xí)讓我學(xué)會(huì)的人生經(jīng)驗(yàn)比知識(shí)更加寶貴吧!我仿佛在我的

49、心里種下了個(gè)火種,指引著我努力的向前方邁進(jìn)。</p><p>  總的來(lái)說(shuō),這次課程設(shè)計(jì)真是讓我終身難忘啊,這里面的酸甜苦辣也就只有自己知道啊。這里面有自身的不足,有知識(shí)的不夠,也有中間耐心的不夠,不過(guò),我很高興有這次做課程設(shè)計(jì)的經(jīng)歷。終身難忘!??!</p><p><b>  6 致謝</b></p><p>  在本次課程設(shè)計(jì)過(guò)程中,我十分

50、感謝給予我們幫助的*老師、**老師以及同學(xué)們?cè)谖矣龅絾?wèn)題時(shí)耐心地給我們幫助。*老師們對(duì)我們認(rèn)真嚴(yán)謹(jǐn)?shù)慕虒W(xué)態(tài)度和深厚的知識(shí)底蘊(yùn),讓我獲益良多。再次感謝老師們對(duì)我們孜孜不倦的教誨,以及同學(xué)們無(wú)私的幫助。</p><p><b>  7 參考文獻(xiàn)</b></p><p>  馬曉敏 肖明 姜遠(yuǎn)明 齊永波,《Java網(wǎng)絡(luò)編程原理與JSP Web開(kāi)發(fā)核心技術(shù)》中國(guó)鐵道出版社,2

溫馨提示

  • 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ù)僅提供信息存儲(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)論