2006年11月4日

[資結]Project2 學生成績管理

作業二:搜尋、排序

Input:讀入文字檔,包含學號、姓名、分數
9501,st02,92
9502,st09,84

處理:
(1)求名次(依成績分數)。
(2)Binarysearch:可依學號或姓名或學號、姓名。
(3)sorting:可選取quicksort、mergesort、heapsort、insertionsort進行學號或分數排序。
(4)列出全部資料(依排序結果)。

狀態:已完成=v=

下載:http://0rz.tw/a121M

繼續閱讀後是程式設計歷程。這回的程式不難,有一半是我自己搞的太複雜,另一半是太笨不知道怎麼改= =a


問題瞭解及分析 

1.當你看到這個程式設計題目,直接反應為何?

在介面上有遇到很大的問題,這次的介面設計的特別複雜,我也使用了一大堆的JPanel來輔助排版…在介面上花了最多的時間…
花多久時間: 30 (mins)

2.瞭解題目之功能需求及核心技術

排序跟搜尋、字串處理…這次沒有用到什麼特殊的元素,純粹就是把所學的東西一股腦的用上去=v=…

3.分析細部功能

我把檔案拆成
MainApp.java(main檔案)
GUIFrame.java(GUI介面)
SortAndSearch.java (主要的資料處理)
ScoreRecord.java(自定義的學號姓名成績型別)
FileOpener.java(讀取文字檔案)
五個檔案

4.收集相關程式片斷,查閱語法(由先前設計過的程式網站、書藉光碟、或直接求救他人…。)

由老師的投影片、網站上的java檔案、Google搜尋到的程式碼取得需要的部份…


設計演算

5.已瞭解問題後,如何進行運算?

利用Scanner取得文字檔案內容,再使用StringTokener做分析。
資料以ScoreRecord的陣列存放在SortAndSearch裡面,排序、搜尋的動作都直接對其進行,所以GUI介面中的列出按鈕就等於是列出目前ScoreRecord陣列的狀態


程式設計階段

6.撰寫程式時,會採取步驟及順序為何?

這次比較特殊,因為對GUI一直摸不出要怎麼排版,所以先設計了檔案讀取的介面,之後才開始寫GUI。搜尋因為要先排序,所以先寫排序,後寫搜尋。

7.測試程式功能策略,

每寫完一個搜尋或排序就測試,比較能掌握狀況跟錯誤點。

8.撰寫程式

這次的要求不算難,程式碼都很容易取得,但是主要點就在於”怎麼把程式碼改成符合自己需求的”…
說不算難,還是花了很多時間在想在改…


驗証

9.Debug過程採用何種策略

找到問題產生的行號就開始找錯誤…

10. Debug過程,最常遇到的問題

有時錯誤的造成不是在產生例外的該行,而是前面的邏輯出錯,就要很痛苦的慢慢想慢慢找…

11.功能驗証方法及順序

這次使用網路上的中文姓名產生器來產生100個人名,配合Random產生出100筆順序、分數隨機的資料(DataG.java)

12.當完成作業且繳交後,你會

加註解加註解…- -…


省思階段

13.回想一下這個作業撰寫過程中,

最困難的部份是姓名搜尋,因為搜尋的字串不一定是在前面的姓,也可能是中間或後面的字,那BinarySearch就會被導向到不同的地方…
後來我還是使用LinearSearch搭配String.indexof()來做搜尋的動作。算是這次的缺憾。

14.還有那些感想?心得?

QuickSort照著老師的程式or課本的演算法改程式都沒辦法正常的排序完成,最後我選擇利用Google找到了一個Quick Sort範例,再加以改進成自己的Quick Sort,這也許是我對於Quick Sort不夠了解的緣故…在Quick Sort花了非常久的時間…
不過我終於還是寫完啦…(攤)


Posted by kevingao814 at 樂多Roodo! │19:30 │回應(0)引用(0)├學知識
樂多分類:日記/一般 工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/2419758