但凡有人自發地寫總結,目的大抵有兩層:立座「碑」;立面「鏡」。「立碑」,就是把自己的陳年舊事,挑出影響頗大的,記錄下來,以立下一座座「里程碑」,從而可激勵自己,繼續前進。而「立鏡」,則是因往事也是反省自查的依據,正所謂「以史為鏡」,自家經歷的事兒,當然對自己更有借鑑價值,親歷的經驗,取精去糟,以漸臻更妙的處境。今番便容我將大學時候做過的軟體專案,摘出一部分較有意思的,評述一場。若能給後來人有所啟迪,那就更好。
1. 命令列下的簡易記憶體資料庫-c語言課程專案(大一上)
在命令列底下接收使用者的類似基本sql語句的輸入,在記憶體中建立資料庫表,新增、刪除、更新、查詢資料,where子句要支援邏輯運算。只能拿c語言寫,不准用c++裡面的類和標準模板庫,一切資料結構,要自己搭建。
這可讓當時剛入此行的學生們折騰了好一陣子。到最後,什麼運算效率之類的都沒有餘力去考慮,程式跑出來,結果對了,不崩,英雄,不然就狗熊。
程式的**算下來寫了兩千多行,對於當時的水平,算是很大的工作量了。耗這一通工夫鞏固初學的程式設計,正應了學院的方針,就是勤練習,多實踐。程式設計伊始,就得肯狠下心,下這一通實踐的工夫,基礎才能打牢。靠紙上談兵,清閒了一時,舒服不了一世。這是這個專案當年帶來的啟迪。
這專案,折騰人的地方——也正是訓練人的地方——主要有兩處。一處是資料結構的選取。有個說法是程式就是資料結構加上演算法,自有其道理。當初還沒有緩衝區啊、按塊分配記憶體的思想覺悟,不過知道鍊錶、雙向鍊錶,乾脆就弄乙個十字鍊錶,四個方向上留指標。就這個樣子把資料庫表的基本資料結構的節點結構體構造起來了。這要拿後來才懂得知識講,就算是個設計階段。之後就開始正式編碼,實現演算法。第二個難點也就蹦出來了,那就是指標操作,c語言的精髓就在這上頭了。對於程式設計的初學者來說,指標這關過得去過不去,就是兩層不同的境界。所以指標操作得多練。當年的專案,瞅瞅那個怎麼看都不順眼的十字鍊錶,就知道指標操作的量有多大。乙個不留神就崩掉了,順帶著還能練習除錯的能力。這個專案就這樣給初學程式設計積累經驗。
2. 超市管理系統-資料庫課程設計(大一下)
這一回是自選的題目。用c#開發的,資料庫用sql server。這是大學裡頭乙個團隊專案。功能就是超市的進銷存,重點乙個在資料庫的設計上,另乙個就在於在**裡連線、運算元據庫的實戰演練。
說實在,那還是我頭一次拿visual studio寫完整的專案。以前覺得這玩意兒開一次太慢,周圍人都用開了,我還拿著vc++ 6.0學程式,自詡為不跟風的精神。這回寫c#的程式,沒轍了,用吧。一用就一直用下去了。當年悟出來的就是,老的工具誠然不錯,然而大的走向形勢,也不容逆轉。非要逆著業界的形勢走,甚至回到turbo c,抱住不放,到了企業裡頭怎麼辦?看過老舍寫的《斷魂槍》沒?得跟人家學。所以,業內的風,不盲跟是不盲跟,但不是說可以不管大勢所趨。有機會最好是什麼玩意兒都用用,用的整合開發環境多了,以後再用什麼環境,都就不是重點了。見多識廣了,以後做事情思路也廣。好了,就到這兒了,乙個小插曲,本不值得說那麼多。
專案做完了,頭一回專案答辯。後來才知道,這回答辯是整個大學裡最狠的一次答辯,像那種比較水的畢業設計答辯,也跟這回沒法比。主要當時也是頭一次答辯,沒經驗的人心裡都容易發虛。一進去乙個老師坐當中,兩個助教在兩旁,這就是「三堂會審」的架勢。然後答辯的組派人上去演示程式,乙個操縱電腦乙個去投影那邊講。問得也嚴,火藥味兒也重。當時寫專案還都處於要求不崩就行的階段,別的方面大都考慮不足。那回可提了醒,程式的容錯性得好。比如演示到「銷售」介面,老師一指「金額」欄,你給輸入個負數試試,再一指「數量」一欄,你輸個漢字。程式沒報錯就扣分,崩了使勁扣。那回過去之後,在大學階段裡,答辯什麼的就不怎麼怕了,因為後來的氣氛大都平緩,也沒那麼嚴,沒有比那回更狠的。由此可以看出,初窺門徑的時候要求嚴格一些是有好處的。
至於技術上的收穫,主要就是ado.net操縱資料庫。想當乙個合格的基本型軟體開發人員,以後好混碗飯吃,我想這一塊的練習是不能缺少的。
3. 井字棋(tic-tac-toe)-組合語言課程專案(大一下)
寫了個人機對弈的井字棋遊戲。要是覺得井字棋的名字沒聽過的話,就去想,看沒看過三乘三的格仔裡,倆人輪流畫叉和圈,誰橫著、豎著或者斜著練成仨子兒就算贏了。程式的流程就是,選個先後手,然後用螢幕中斷把棋盤畫出來,跟電腦下就成。主要就是熟悉組合語言的語法。雖然組合語言以後開發很少會用,不過對了解計算機的底層機制是有幫助的。關於那個專案,更多的內容也會以不出來了,因為專案的源**被我在一次格式化硬碟後搞丟了。
從系分課程專案中學到的專案管理知識
在課程專案中,我學習到了不少it專案管理知識,這裡總結一下。專案的實施與專案的計畫是互動的,進度與計畫需要不斷協調 調整。充分利用專案時間 有效的保障專案的進度,是專案成功的基本保證。專案開始時,制定專案總和進度計畫,將專案劃分為幾個階段,計算每個階段的工期,再計算整個專案所需的總工期,知直到到計畫...
網路程式設計的課程回顧
架構 c s架構 充分發揮pc機的效能 b s架構 統一了應用介面,隸屬於c s架構 要求 二進位制,十六進製制,十進位制 arp協議 通過目標ip位址,獲取目標mac位址 osi五層模型 應用層 http協議,ftp協議,https協議,py檔案 傳輸層 tcp udp協議 網路層 ip協議 資料...
對SQL Server 部分知識的回顧
1.給sql server 加注釋,如果只有一行 如果有多行的話,請使用 這個跟sas的注釋一樣。1.1sql server 有行的問題,所以使用了 set nocount on set nocount off 分別放在開始和結尾。2.能不能在查詢當中生成乙個新錶,當然是可以的,select int...