天天看點

初級練手的小項目清單

分享從伯樂線上看到的一篇好文章  http://blog.jobbole.com/49762/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

較初級的程式設計項目清單,初學者練練手。

順便推薦一個app:開發者頭條.  http://toutiao.io/

文本操作

  • 逆轉字元串——輸入一個字元串,将其逆轉并輸出。
  • 拉丁豬文字遊戲——這是一個英語語言遊戲。基本規則是将一個英語單詞的第一個輔音音素的字母移動到詞尾并且加上字尾-ay(譬如“banana”會變成“anana-bay”)。可以在維基百科上了解更多内容。
  • 統計元音字母——輸入一個字元串,統計處其中元音字母的數量。更複雜點的話統計出每個元音字母的數量。
  • 判斷是否為回文——判斷使用者輸入的字元串是否為回文。回文是指正反拼寫形式都是一樣的詞,譬如“racecar”。
  • 統計字元串中的單詞數目——統計字元串中單詞的數目,更複雜的話從一個文本中讀出字元串并生成單詞數目統計結果。
  • 文本編輯器——記事本類型的應用,可以打開、編輯、儲存文本文檔。可以增加單詞高亮和其它的一些特性。
  • RSS源建立器——可以從其它來源讀取文本并将其以RSS或者Atom的格式釋出出去。
  • 實時股價——可以查詢股票目前價格。使用者可以設定資料重新整理頻率,程式會用綠色和紅色的箭頭表示股價走勢。
  • 訪客留言簿/日志——允許人們添加評論或者日記,可以設定開啟/關閉評論,并且可以記錄下每一條目的時間。也可以做成喊話器。
  • 新聞和比分播報器——一個桌面應用,可以從網上收集新聞和比賽分數,将結果在螢幕上滾動播出。
  • 占星羅盤——用占星術來預測每天的運程。
  • 密碼短信——可以将資料加密解密,并能将其發送給朋友。
  • 幫你挑禮物——輸入一堆你可能會送的禮物,當有人過生日時,該程式會随機選擇一樣禮物。也可以加上一個額外功能,可以告知哪裡可以弄到這個禮物。
  • HTML生成器——将 TEXT 文檔轉換成HTML檔案,對制作網頁HTML文檔很有用。
  • CD-Key生成器——利用某種算法生成一個唯一的key。軟體開發者可以用它來作為軟體的激活器。
  • 正規表達式查詢工具——使用者可以輸入一段文本,在另外的控件裡輸入一個正規表達式。運作以後會傳回比對的内容或者正規表達式中的錯誤。

網絡

  • FTP工具——與遠端網絡伺服器互動檔案。
  • 原子鐘校時——從網上同步原子鐘時間。全世界有很多原子鐘,可以把它們都列出來。
  • 聊天應用(IRC或者MSN風格的)——像IRC那樣的聊天室軟體或者MSN那樣的實時聊天軟體。更複雜一點的話,可以為聊天制定一套你自己的傳輸協定。
  • 擷取目前天氣——擷取某個地區目前的天氣情況。
  • P2P檔案共享應用——像LimeWire、FrostWire、Bearshare或者torrent風格的應用。
  • 端口掃描器——輸入某個ip位址和端口區間,程式會逐個嘗試區間内的端口,如果能成功連接配接的話就将該端口标記為open。
  • 郵件檢查工具(POP3/IMAP)——使用者輸入一些賬号資訊,包括伺服器、ip、協定類型(POP3或者IMAP),應用每隔一段時間就會檢查下該賬号下的郵箱。
  • 資料包嗅探器——偵測電腦上進出的資料包,擷取諸如目的地和大小之類的資訊。
  • IP注冊地查詢——輸入ip位址,查詢該ip是在哪注冊的。
  • Whois查詢工具——輸入一個ip或者主機位址,通過whois查詢并将結果傳回。
  • 郵編查詢——輸入郵編,傳回使用該郵編的地區名稱。
  • 遠端登入——遠端登入桌面類型的應用,可以檢視和控制遠端電腦(假如你已經獲得權限)。可能需要你自己的網絡和兩台電腦來進行測試。
  • 網站定時檢查器——每隔一段時間或者在預定的時間嘗試連接配接某個網站或者伺服器,來檢查它是否可以連上,如果連不上了會通過郵件或者桌面通知來告知你。
  • 小型網頁伺服器——簡易版的網頁伺服器,可以存放包含Javascript和其它形式代碼的HTML檔案。複雜一點的話可以嘗試流媒體視訊、建立一種伺服器端語言或者其它類型的流媒體。
  • 網絡蜘蛛——一個可以自動執行網頁上各種任務的程式,任務包括網站檢查、頁面抓取、資料摘要以及網絡郵務。

  • 産品庫存管理——建立一個管理産品庫存的應用。建立一個産品類,包含價格、id、庫存數量。然後建立一個庫存類,記錄各種産品并能計算庫存的總價值。
  • 電影商店——管理錄像帶租借,記錄借出時間、到期時間、逾期費用。複雜一點可以生成逾期使用者的賬号報告。
  • 航空/酒店預訂系統——建立一套預訂航班或酒店的預訂系統。不同的航班座位和酒店房間收費不一樣。譬如頭等艙要比經濟艙貴。帶閣樓的套間要更貴些。記錄下何時有空房可供預訂。
  • 學生成績管理器——記錄一個班級的學生(建立一個Student類,記錄他們的名字、平均分和考試分數)和他們的成績等級。根據學生的測驗和作業的分數計算出平均分和成績等級。複雜一點可以将資料畫在貝爾曲線上。
  • 銀行賬戶管家——建立一個名為“Account”的抽象類,有三個為“CheckingAccount”、“SavingsAccount”和“BusinessAccount”的子類。通過類似ATM的程式來管理這些賬戶的借貸。
  • 館藏目錄——建立一個圖書類,記錄書名、頁數、國際标準書号、是否借出。用它來管理各種書籍,允許使用者進行借出和歸還操作。複雜一點的話,可以生成逾期圖書和逾期費用的報告。也可以讓使用者進行預約操作。

線程處理

  • 下載下傳進度條——建立一個表示下載下傳進度的進度條。進度條由獨立的線程操作,通過委托來和主線程進行通訊。
  • 下載下傳管理器——允許程式同時下載下傳數個檔案,每個都用單獨的線程進行背景下載下傳。主線程會關注下載下傳進度并且在下載下傳完成時通知使用者。
  • 聊天軟體(遠端聊天)——做一個聊天軟體,允許你通過ip直接連接配接到另一台電腦,也允許你的“伺服器”程式處理多個請求連接配接。
  • 批量縮略圖生成器——在進行圖檔轉換的處理時會需要很多時間,尤其是圖檔很大時。做一個圖檔處理程式,能讓你在做其它事的時候在背景線程裡将數百張圖檔轉換成某個大小的圖檔。複雜一點的話可以用一個線程來縮放,用另一個線程來為縮略圖重命名。

Web應用

  • 所見即所得編輯器——建立一個線上編輯器,允許使用者移動元素、建立表格、書寫文本、設定顔色,而使用者不必懂HTML。就像Dreamweaver或者FrontPage。如果需要例子的話,可以參看DIC。
  • 分頁浏覽器——建立一個可以分頁的小型網頁浏覽器,可以同時浏覽幾個網頁。簡化一點的話不要考慮Javascript或者其它用戶端代碼。
  • 檔案下載下傳器——該程式可以從網頁上下載下傳各種資源,包括視訊和其它檔案。用于有很多下載下傳連結的網頁。
  • 遠端登入——建立一個遠端登入的應用,可以通過網絡登入伺服器并能執行一些基本指令。
  • 線上白闆——做一個線上白闆程式,你和朋友們可以一起在白闆上進行一些操作,畫圖、寫字等等。
  • 帶寬螢幕——這個小工具可以記錄你已經在網上上傳和下載下傳多少資料流量了。可以試着做份報告或者圖表來展示各時段的使用情況。
  • 書簽搜集管理器——該程式可以讓使用者上傳書簽并将它們排序,去掉重複的,并能生成書簽檔案以供Firefox/IE/Safari等使用。複雜一點的話可以試着将書簽整理進不同的檔案夾。
  • 密碼保險箱——用來記錄各種密碼,并且将它們加密,這樣别人就看不到了。
  • iGoogle媒體播放器小部件——做一個iGoogle小部件,可以用來播放本地音樂清單,也可以每天分享一首歌。也許還可以讓别人看到你最近聽了些什麼歌。
  • 基于文本的遊戲——做一個像Utopia那樣的文本RPG,遊戲中,你可以建立一個文明、收集資源、共鑄聯盟、施放法術、回合制系統。看看是否能夠統一王國。
  • 定時自動登入——做一個程式可以在預定的時間登入進某個指定的網頁并且執行特定的動作,然後在登出。可以用來檢查郵箱、釋出正常内容、為其它程式擷取資訊。
  • 電子卡片生成器——可以讓使用者制作自己的電子卡片并發送給其他人。可以使用flash也可以不用。可以使用圖檔庫,也可以加上深刻的格言警句。
  • 内容管理系統——像Joomala、Drupal、PHP Nuke這樣的内容管理系統。從簡單的做起,慢慢增加其它功能。
  • 模闆制作器——該網站應用允許使用者輸入各種顔色代碼、元素、尺寸,來為PHPBB、Invision Board、MySpace之類的應用建立模闆檔案。
  • 驗證碼生成器——應該在登入時見過有數字有字母的驗證碼圖檔吧?這可以防止自動登入和垃圾廣告。試着自己做一個,如果使用PHP的話,看下GD的圖檔函數。

檔案

  • 試卷生成器——該程式可以從檔案中随機挑選出不同的題目生成一份試卷。每份試卷可以不一樣,通過讀取答案來給打分。
  • 快速啟動——該工具可以添加各個程式的小圖示,點選小圖示就可以運作程式。和Windows的快速啟動類似。
  • 檔案管理器——做一個檔案管理器,要加些新特性,更佳的搜尋功能、新圖示、新外觀。
  • 檔案記錄排序工具——從檔案中讀取記錄,将其排序并寫回檔案中。允許使用者選擇排序風格以及排序關鍵字。
  • 生成财務交易檔案并且算出平均值——将财務交易讀進檔案,按照賬戶分類、算出各項目的總量或平均值、理清各賬戶的借貸資料。
  • Zip檔案生成器——使用者輸入不同檔案夾的檔案,也許還包括其他電腦中的檔案,然後程式将這些檔案打包成zip檔案。複雜一點的話,打包時對這些檔案進行壓縮。
  • PDF生成器——從txt、html或其它檔案中讀取資料生成PDF檔案。可以做成一個網頁服務,使用者上傳檔案,傳回一個pdf版本。
  • 批量檔案命名器——程式批量處理一些檔案,将根據使用者提供的過濾器為它們重命名。譬如使用者輸入的過濾器為myimage###.jpg,那麼會生成至少包含3位數的檔案名,譬如myimage001.jpg、myimage145.jpg,甚至是myimage1987.jpg,因為1987也滿足了至少包含3位數的條件。
  • MP3标簽生成器——修改MP3檔案的id3v1标簽。還可以試着在MP3檔案的頭部加入id3v2的标簽,譬如album art标簽。
  • 日志檔案生成器——該程式可以記錄指定事件的日志。譬如程式做了什麼、系統在幹什麼、檔案什麼時候被修改了。
  • Excel分頁輸出器——做一個線上程式,可以讀取檔案内容生成一個excel分頁。可以通過CVS或者其它檔案格式來做。複雜一點的話看看是否能建立公式字段。
  • RPG角色屬性生成器——做一個程式來給RPG角色随機配置設定屬性點數,可以由使用者制定一些配置設定規則。可以生成職業、性别、力量/魔法/靈活點數、額外能力或者貿易技能。把結果儲存成檔案,這樣跑團的時候地下城主可以把它列印出來。
  • 檔案複制工具——該工具可以批量處理檔案複制和備份操作。

資料庫

  • SQL查詢分析器——該工具可以讓使用者輸入一條查詢指令,讓其運作于本地資料庫中。盡量讓它運作得更高效。
  • 遠端SQL工具——該工具能讓你通過網絡在遠端伺服器上執行查詢操作。它能接收遠端主機位址、驗證使用者名和密碼、執行查詢并傳回結果。
  • 卡片整理器——建立一個線上應用,用來記錄搜集到的卡片。可以讓使用者輸入整套卡片,檢視哪些已經有了,哪些還需要搜集。要增加複雜度的話,還可以讓使用者知道還差多少可以完成,或者已經收集卡片的價值。
  • 報告生成器——該工具可以根據資料庫中的表格生成一份報告。譬如根據訂單表格生成銷售報告。
  • 資料庫備份腳本制作器——該程式可以讀取資料庫的對象、關系、記錄和步驟,生成一個sql檔案,該檔案可以導入另一個資料庫或者作為備份檔案。
  • 備忘錄——該程式可以讓使用者設定一個日期和某個事件的時間、事件備注并将它們放到月曆上。使用者可以檢視月曆、搜尋特定的事件。複雜一點的話,可以讓使用者設定重複發生的事件,譬如每天、每周、每月、每年等等。
  • 預算記錄器——該程式可以記錄家庭預算。使用者可以添加支出、收入,計算一段時間内的收入和支出。複雜一點的話,讓使用者指定一個時間段,顯示該時間段内的家庭收支情況。
  • 電話簿——記錄各種聯系人和他們的号碼、郵箱、備注。複雜一點的話可以讓使用者連上網将電話簿釋出到設定好的網站上。
  • 電視節目記錄器——你是否有不想錯過的電視節目?但沒有錄像機或者想之後能找到該電視節目然後錄下來,那麼可以做個程式尋找各種線上電視導航網站,記錄下電視節目名稱、播放時間、播放頻道,存在資料庫中。資料庫或者網站到時就會發郵件提醒你,節目就快在某個頻道開始了。
  • 旅行計劃系統——該系統可以讓使用者管理旅行路線,記錄下航班和酒店安排、感興趣的地方、預算和時間表。
  • 實體關系圖生成器——該程式可以讓使用者整合實體關系圖,并将其儲存起來,也可以用它來生成一些基礎SQL語句。
  • 資料庫翻譯器(MySQL<->SQL Server)——該工具可以從資料庫A讀取資料,生成資料庫B使用的SQL語句,将資料存入資料庫B。比較常用的是SQL Server和Oracle使用的MySQL伺服器。
  • BBS論壇——為你和小夥伴們做一個論壇,可以發帖、管理、分享想法和構思。

圖像和多媒體

  • 幻燈片——做一個以幻燈片形式顯示各種圖檔的程式。為了增加難度可以做些額外的效果,譬如漸進檢出、星型擦除、視窗漸隐。
  • 思維導圖——允許使用者記錄下各種構思并且快速地進行頭腦風暴将這些構思整合到一張思維導圖中。越快越好,是以要讓使用者能迅速地寫下構思,然後将其拖到可視的導圖中去,将構思之間的關系展現出來。
  • 導入圖檔并存成灰階圖——該工具将圖檔上的彩色除盡并儲存。可以增加對比度調整、色化等額外功能以增加複雜度。
  • 線上流媒體視訊——試着自己做一個線上流媒體視訊播放器。
  • MP3播放器(以及其他格式的音樂播放器)——該小程式用來播放你最愛的音樂檔案。複雜一點的話看看能否加個播放清單功能和均衡器。
  • 批量圖檔處理——該程式可以将一個檔案夾内的圖檔進行統一的處理,譬如降低圖檔色調、轉換格式或者修改檔案屬性。還可以嘗試給圖檔增加标簽。
  • CD燒錄器——可以輕松燒錄CD的工具。
  • YouTube下載下傳器——可以從Youtube.com上下載下傳視訊到硬碟中,要支援包括FLV和AVI在内的檔案格式。
  • 牆紙管理工具——做一個管理牆紙的程式,可以定時更換重新整理牆紙,也可以針對分辨率進行縮放。
  • 截屏程式——做一個可以截屏的工具,複雜一點可以增加一個轉發郵件的功能。
  • 圖檔浏覽器——該程式可以檢視電腦上各種格式的圖檔,譬如PNG、GIF、JPG、BMP、TIFF等等。
  • 交通信号燈——試着做一個交通信号燈并且把它放到可以互動的場景中。不要讓汽車闖紅燈或者撞到其它車。
  • MP3-WAV轉換器——MP3格式本質上就是壓縮版的WAV。試着将MP3轉換成WAV格式以供可以處理WAV格式的程式使用。請記住1MB的MP3大約等于10MB的WAV。
  • 簽名生成器——是否在網上見過有人的留言後面有條生成的簽名?試着做個程式讓使用者可以指定背景、文字、顔色和對齊方式來定制一個簽名檔。
  • 屏保——電腦空閑時會運作的屏保程式。簡單版的可以使用一些标準圖檔,複雜版的可以做出能在螢幕上轉來轉去的3D物體。
  • 水印——你是否想保護你圖檔的版權?在圖檔上加上标志或者文字,這樣别人就不能輕易地從你網站上盜圖了。做一個程式來給你的圖檔加上水印吧。
  • 海龜圖——建立一個20*20的格子,用指令讓一隻海龜在格子上畫線。可以前進、左轉、右轉,拿起或放下筆等等。複雜一點的話,允許程式從檔案中讀取指令清單。可以在網上了解到更多關于“海龜圖”的資訊。

遊戲

  • 戰船——建立兩塊遊戲面闆,玩家各占一邊,在上面放置一些戰船,玩家看不到對方的面闆。每艘船都占幾個格子,玩家輪流攻擊某個格子,如果格子上有船,那就命中目标,否則就是未命中。當一艘船所占的所有格子都被攻擊命中了,那麼船就被擊沉。誰先将對方戰船全部擊沉就獲勝。
  • 象棋跳棋——象棋或者跳棋遊戲。可以試着做成可以聯網玩,用圖形使用者界面來實作悔棋、儲存走棋過程并且可以回放。
  • 劊子手——從檔案中随機選擇一個單詞,讓玩家猜單詞中的字母。旁邊是一幅隐藏的行絞刑的畫,猜錯一個單詞,畫就顯示出一部分。畫全部顯示出來時還沒能猜全的話玩家就輸了。
  • 填字遊戲——建立一個填字遊戲,并為每個詞提供一個提示資訊,讓玩家填上所有正确的單詞。
  • 青蛙跳——讓青蛙跳過河或者馬路,過河的話要跳在順流而下速度各異的木頭或者睡蓮葉子上,過馬路的話要避開速度各異的車子。

繼續閱讀