2006年11月4日
[資結]Project2 學生成績管理

作業二:搜尋、排序
Input:讀入文字檔,包含學號、姓名、分數
9501,st02,92
9502,st09,84
處理:
(1)求名次(依成績分數)。
(2)Binarysearch:可依學號或姓名或學號、姓名。
(3)sorting:可選取quicksort、mergesort、heapsort、insertionsort進行學號或分數排序。
(4)列出全部資料(依排序結果)。
狀態:已完成=v=
繼續閱讀後是程式設計歷程。這回的程式不難,有一半是我自己搞的太複雜,另一半是太笨不知道怎麼改= =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花了非常久的時間…
不過我終於還是寫完啦…(攤)