寫日記軟件
發(fā)布時間:2017-01-18 來源: 日記大全 點擊:
寫日記軟件篇一:基于android的日記本開發(fā)
西南科技大學 課程設(shè)計報告
課程名稱: 軟件設(shè)計基礎(chǔ)設(shè)計名稱: 基于android的日記本開發(fā)姓 名:學 號: 班 級: 通信1003班 指導教師:起止日期: 11.28——12.12
西南科技大學信息工程學院制
方 向 設(shè) 計 任 務(wù) 書
學生班級: 通信1003班 學生姓名:學號:
設(shè)計名稱:基于android的日記本開發(fā) 起止日期: 11.28——12.12指導教師:
方 向 設(shè) 計 學 生 日 志
2
基于android的日記本開發(fā)
一、 摘要(150-250字)
伴隨著無線移動設(shè)備的迅速發(fā)展,手機的日益普及成為主流,在這一關(guān)鍵時期,Android系統(tǒng)的推出使手機發(fā)展進入了一個新的領(lǐng)域。世界上一些知名移動設(shè)備生產(chǎn)廠商對于Android智能機的開發(fā)熱情日益提高,Android系統(tǒng)的使用人群正在急速提升,Android應(yīng)用程序的多樣化使人們從手機中獲得更多樂趣,方便著人們的生活,使Android得到了社會越來越多的認同。本次設(shè)計主要描述了基于android開發(fā)一個簡易日記本的技術(shù)方法。
關(guān)鍵字:Android; DbAdapter;Activity;diary 二、 設(shè)計目的和意義
在中國,手機已經(jīng)成為人們?nèi)粘I畋夭豢缮俚囊徊糠,智能手機在高校人群中逐漸得到了普及,Android手機憑借其優(yōu)秀的系統(tǒng)性能以及良好的用戶體驗迅速得到了高校師生的青睞。在高校中,上課并不像高中時期有固定的教室和固定的時間,高校課程種類繁多,并且上課地點和時間不固定,一周內(nèi)極少會出現(xiàn)重復(fù)課程,所以要將課程表完整的記憶下來是一項很艱難的事情,很多同學不得不隨身攜帶一張課表來防止遺忘上課,但是還是不能完全避免該問題的發(fā)生,同時,作為一個當今高速發(fā)展的時代的成員,適應(yīng)這個社會是必不能少的,在各種社交場合中,記住一些必須的信息很重要,而它們往往又繁瑣又多,不易人為記住。基于這些問題,有必要設(shè)計一款方便小巧的簡易日記本程序,可以讓用戶自定義文件,記住上課時間和地點,從而避免遺忘上課的事情出現(xiàn),同時記住那些瑣碎卻有意義的小信息。而且,由于android系統(tǒng)市場的開放性和服務(wù)免費,它的應(yīng)用程序方面就成了一塊非常大的市場,。 三、 設(shè)計原理
用戶在第一次進入程序時會看到到一個日記本的主界面,可進行日記文件的新建和刪除操作,按menu鍵可以選擇“幫助”和“退出”,程序主界面使用course_activity.java展示記錄,從Diary_activity, DiaryEditActivity類中可以新建和刪除日記信息,并在主界面中顯示。程序的配置信息主要存在DbAdapter中,該信息在數(shù)據(jù)顯示時讀取必要的配置信息,在按鈕監(jiān)聽函數(shù)中監(jiān)聽系統(tǒng)時間變化用來實現(xiàn)日記的創(chuàng)建功能。BaseColumns 是一個接口,里邊有兩個變量,一個是_ID="_id",一個是_COUNT="_ count" 。在Android當中,每一個數(shù)據(jù)庫表至少有一個字段,而且這個字段是_id。所以當我們構(gòu)造列名的輔助類時,直接實現(xiàn)BaseColumns ,這樣我們便默認地擁有了_id字段。在我們的日記本的數(shù)據(jù)表里,一共有4個字段,分別是:"id"、"title"、"body"、"created"。在Android中鼓勵使用內(nèi)部類,這樣不但使用方便,而且執(zhí)行效率也高是請求數(shù)據(jù)的類型,例如,在例子當中定義的類型是diary。當然這一部分可以是0個片段或者多個片段構(gòu)成,如果Content Provider只是暴露出了一種類型的數(shù)據(jù),那么這部分可以為空,但是如果暴露出了多種,尤其是包含子類的時候,就不能為空,"1"這部分是允許為空的,如果為空,表示請求全部數(shù)據(jù);如果不為空,表示請求特定ID的數(shù)據(jù)。DatabaseHelper是操作數(shù)據(jù)庫的輔助類,通過這個類我們可以生成數(shù)據(jù)庫,并且維護這個數(shù)據(jù)庫。 在DiaryContentProvider中,我們定義了一些變量和常量,其中這些常量主要是描述數(shù)據(jù)庫的信息。在刪除方法中,rowId = uri.getPathSegments().get(1)負責得到rowId的值。 getPathSegments()方法得到一個string的list, db.delete(DIARY_TABLE_NAME, DiaryColumns._ID + "=" + rowId, null)是標準的SQLite刪除操作。update()是更新一條數(shù)據(jù)的方法, 使用ContentProvider時首先得到SQLiteDatabase,然后得到rowId,最后再調(diào)用db.update(DIARY_ TABLE_NAME, values, DiaryColumns._ID + "="+ rowId, null)語句執(zhí)行更新工作。
3
其主要流程圖如下:
功能模塊:
四、 詳細設(shè)計步驟
簡易日記本應(yīng)該具有日記本的基本功能,比如新建,編輯,刪除,保存等,從這幾方面初步想到應(yīng)該有一個主類負責調(diào)用其他負責實現(xiàn)功能的類,這樣整個程序會比較清晰,通過流程分析和可行性分析之后我開始查閱資料編寫程序,本程序主要由六個類組成,它們分別為Dbadapter,help-activity,lookDiary,MainActivity,diary-activity和DiaryEditActivity ,
1.其中MainActivity類為整個應(yīng)用的主Activity,其主要方法如下:
? onCreate:Activity主要重寫方法之一,實現(xiàn)程序初始化和界面展示; ? find_and_modify_button:尋找并點擊按鈕; ? onClick(View v):點擊當前所選按鈕;
? onCreateOptionMenu:實現(xiàn)Option菜單的創(chuàng)建;
? onOptionsItemSelected:實現(xiàn)菜單項的點擊事件響應(yīng);
界面設(shè)計方面通過RelativeLayout實現(xiàn)布局,使用了TextView,ImageButton文件列表通
4
過ListView實現(xiàn)界面展示。該類通過繼承ListActivity類,用來顯示ListView中的數(shù)據(jù)并實現(xiàn)對ListView上ImageView控件點擊的統(tǒng)一響應(yīng)。 其主要代碼:public class MainActivity extends Activity
{//菜單選項
public static final int HELP = Menu.FIRST; public static final int EXIT = Menu.FIRST + 1; /** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setTitle("小小日記本");find_and_modify_button();
Toast.makeText(MainActivity.this,
"歡迎使用簡易日記本", Toast.LENGTH_SHORT).show(); } private void find_and_modify_button() {// TODO Auto-generated method stubButton btn_diary = (Button) findViewById(R.id.btn_diary);btn_diary.setOnClickListener(diary_listener); } private Button.OnClickListener diary_listener = new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(MainActivity.this, diary_activity.class); startActivity(intent);} } /** menu.findItem(EXIT_ID);找到特定的MenuItem* MenuItem.setIcon.可以設(shè)置menu按鈕的背景*/ public boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);menu.add(0, HELP, 0, "幫助").setIcon(R.drawable.helps);menu.add(0, EXIT, 0, "退出").setIcon(R.drawable.exit);return true; } public boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case HELP:Intent help_intent = new Intent(); help_intent.setClass(MainActivity.this, help_activity.class); sta(轉(zhuǎn) 載于:www.newchangjing.com 蒲公 英文摘:寫日記軟件)rtActivity(help_intent);break;case EXIT:
5
寫日記軟件篇二:軟件實習日記_原創(chuàng)手打
軟件工程專業(yè)
實習筆記
班級: 軟件08-3班
姓名: 譚仁龍
遼寧工程技術(shù)大學軟件學院軟件工程系
Day01
畢業(yè)分散實習開始,由于某些原因我選擇校內(nèi)實習,這樣在沒有接觸實際實習場所的情況下我對所要研究項目的了解只能通過網(wǎng)絡(luò)和電話進行了解。畢業(yè)設(shè)計任務(wù)繁重,所以越早開始越好。首先我進行了畢業(yè)設(shè)計題目的篩選,由于上學習的課程設(shè)計我選擇了安卓手機平臺下的軟件編程方向,對其中很多問題有了初步的了解,并經(jīng)過幾周的學習對安卓系統(tǒng)漸漸產(chǎn)生了些興趣,所以覺得如果繼續(xù)進行下去是一個不錯的選擇,所以在那時候我從網(wǎng)上訂閱了一本安卓游戲編程方面的指導書籍。書目前還沒到,這幾天我都在等,手上有些別的安卓編程的資料先看著。因為是想編寫游戲軟件,所以想了解些游戲制作方面的知識,這幾天寢室呆著比較亂,決定去上自習,順便去圖書館借閱幾本關(guān)于游戲編程的和制作方面的書籍
Day02
今兒去圖書館借了本書,關(guān)于游戲發(fā)展、制作流程以及作者在游戲開發(fā)方面經(jīng)驗的書,這里邊剛開始講的是游戲發(fā)展簡史,這書上說第一個視頻類游戲是1958年物理學家Willy Higinbothan 發(fā)明的,他為了提高人們參觀紐約那個國家實驗室游客的興趣,在一臺示波器上展示了一款雙人網(wǎng)球互式游戲。這個就被
稱作是世界上第一款視頻游戲。從這件事兒來看,首先人家willy是一個物理學家,好幾十歲,在紐約一家國家實驗室工作,這說明人家非常的有才識。然后他的目的是為了提高實驗室的參觀興趣,在示波器上展示了一款被稱作世界上第一款視頻游戲的作品,這說明人家成功地運用了所學的知識,解決了生活中的問題,并在游戲發(fā)展的歷史上走出了里程碑式的一步。這告訴我,首先我要獲取知識,豐富的知識, 這樣才能在遇到問題的時候有辦法去解決,才能推動事物的發(fā)展。
Day03
今天繼續(xù)看昨天的借的那本書,關(guān)于游戲發(fā)展方面的書,這書從世界上第一款游戲開始一直講到目前正在制作還未發(fā)布的游戲為止。從實驗室中同事們消遣的小游戲到風靡一時的街機游戲,再到目前更加流行的PC、手機游戲,簡略的介紹了其中的發(fā)展過程。這個過程再一次印證了科技在推動社會前進中的重大作用。早起的游戲都是低劣的且昂貴的,隨著計算機技術(shù)的不斷發(fā)展,到現(xiàn)在在游戲這方面已經(jīng)產(chǎn)生了翻天覆地的變革。簡直就是科學創(chuàng)造的奇跡。書中還介紹了一些游戲公司的發(fā)展概況,還有相關(guān)的一些硬件設(shè)備升級,面的知識,說了一大串營銷類的專業(yè)詞
匯,很多都看不懂。還介紹了些一個游戲公司如何面對客戶群的辦法?傮w來看這本書介紹的都是關(guān)于大型游戲公司方面的,也就是說對于目前我面對的問題并非是關(guān)鍵知識。為了讓時間有效的得到利用我對其進行了選擇性的閱讀。
Day04
訂的這本安卓游戲編程書籍終于到了,白天時候去把那本介紹游戲制作的書還了,那天借那本c語言的科學與藝術(shù)沒還,這幾天看著呢?偨Y(jié)下目前有幾項任務(wù)要完成,第一快速閱讀安卓這本書,看看其內(nèi)容有沒有適合做畢業(yè)設(shè)計的。第二就是研讀c語言科學與藝術(shù)這本,我發(fā)現(xiàn)機械工程出版社出版的外國著作都挺不錯的,前兩天同學給推薦本深入了解計算機系統(tǒng)那本書也挺不錯, 那個書上是根據(jù)c語言基礎(chǔ),從更深的角度認識計算機,這本書我也想看看,目前時間還算排的開抓緊看,以后時間緊張了就看不到了。對這本書圖書館還沒有也或許是被別人借走了,我在網(wǎng)上下的pdf。
Day05
昨天書下午到的,今兒一天都在自習看那兩本書,安卓這書第一章介紹了安卓平臺的發(fā)展趨勢,和應(yīng)用開發(fā)環(huán)境的搭建,環(huán)境搭建這個我會了,因為之前做
過一個安卓開發(fā)的小軟件,所以對于這章的內(nèi)容有多大致的了解,因為現(xiàn)在是快速瀏覽階段,看的時候有過了解的內(nèi)容基本就直接跳過了,第二章介紹了一個最簡單的安卓項目代碼,以及對安卓開打的基礎(chǔ)概念進行了詳細的講解,這部分我花了些時間好好看了一下,因為我上次做那個小軟件是直接對代碼進行學習的,對整個android project結(jié)構(gòu)沒有系統(tǒng)的認識,所以這章的內(nèi)容我是從頭至尾全部看了一遍。對其中的activity生命周期有了系統(tǒng)的了解,當然僅限于他書中寫的那個水平。第二章還介紹了一些在開發(fā)過程中SDK和Eclipse會遇到的常見問題,我覺得他列出的這些問題,對一個初學者來說很有用,比如我剛開始的時候就不知道怎么講文件存入到的模擬器建立的sdcard中,書中給出了很好的解釋,只不過我用的是第三方軟件。對于這些常見的問題,書中給提供了非常的好的解決辦法,可見作者用心。下圖為Activity生命周期流程圖
寫日記軟件篇三:軟件開發(fā)實習日志日記
Daily work 1
第一次是來面試,當時感覺不怎么好,面試的人問了一些問題有些沒回答上來,這并不奇怪,C#自己學習了2個月,然后就沒怎么用,回答不上我覺得可以理解。沒想到還能第二次來到公司,由于對環(huán)境還比較陌生,所以今天大概熟悉了一點,成都這邊有50多個員工,屬于研發(fā)中心,主要從事無線微波得較大型的設(shè)備的再加工,聽同事說以前在北京,但由于北京人力資源太貴所以來到成都,這聽起來怎么像是在壓榨的感覺啊,沒關(guān)系,只是來實習而已。
對于今天的第一個小任務(wù),要求:界面、數(shù)據(jù)壓入堆棧、簡單冒泡排序?qū)崿F(xiàn)數(shù)據(jù)有序輸出、堆排序輸出。讓我快速地熟悉了C#,從界面到后臺都得到了加強,此外在實現(xiàn)過程中對用到的冒泡排序和堆排序有了更深的理解,并能用C#熟練的實現(xiàn)。
Daily work 2
今天對昨天的實例進行了改進和提高,將堆排序和冒泡排序封裝在一個動態(tài)鏈接庫中,提供函數(shù)調(diào)用和事件委托。此外加入XML進行配置,在XML中存入相關(guān)配置信息,提供一個單獨的XmlClass對其進行操作,加深了對xml的理解。為增加程序的性能,采用簡單工廠模式對其客戶端和算法操作進行分離,有很好的可擴展性,對于C#的動態(tài)鏈接庫和XML配置不怎么熟悉,花了很長一段時間看書和網(wǎng)上查資料,才開始動手寫代碼,不過感覺還是很快,因為自己有編程的能力,可以說掌握了一種快速編程的方法,所以就能駕輕就熟。
Dailywork 3
今天采用抽象工廠模式對實例進行改進,以達到動態(tài)加載算法實例,抽象工廠模式屬于設(shè)計模式中的內(nèi)容,自己在學習視頻的時候注意到了,所以之前就買了本大話設(shè)計模式來學習,可以說了解了大部分設(shè)計模式。今天遇到后自己心里也有底,溫故一下書就知道怎么做 了,可以說這是我學習的方法。
針對以上,在dll中提供一個接口,兩個算法都繼承了該接口,對于該dll的操作都通過接口ISort進行,此外,修改工廠為抽象工廠,提供一個接口創(chuàng)建算法,在算法中返回ISort實例,在主函數(shù)中使用該實例進行對應(yīng)的排序算法操作,充分顯示了抽象工廠的作用,本例子將反射和抽象工廠模式結(jié)合,增加了程序的可擴展性和可維護性。
Dailywork4
由于自己編程能力還算可以吧,所以軟件組的老大就叫我加入開始做一些這次項目的東西,說了一句“我可是沒把你當實習生哦。”,這話一聽當時感覺還好,不過后來一想,我卻是吃虧了,他不把我當實習生但給我的卻是實習生工資,這點有點想不過去,不過沒關(guān)系,實習嘛就是學習,有基本工資也不錯了,關(guān)鍵的公司提供的條件那是在學校里所得不到的:商業(yè)性的問題。
今天將上述實例的方法用到本次項目中,開始項目中的一些任務(wù)。仍然使用抽象工廠模式,將自定義窗體封裝到類庫中,將窗體的控件預(yù)留到外部進行實施定義;在XML文件中配置窗體的實際參數(shù),利用反射按從XML中讀出的參數(shù)動態(tài)加載窗體。將上述的實例方法運用到了實際項目中。
Dailywork5
昨天的任務(wù)基本已完成,今天溫習了一下加深了對知識的理解,可以說掌握得比較牢固了,今天又有新的任務(wù),可以說每天都在進步。
按組長要求編寫RankStyle=Group時的窗體排列方式,在XML中配置控件或窗體的參數(shù),利用XML讀接口從XML中讀出參數(shù),為了使程序具有靈活性,在組長的提示下將窗體的配置按照窗體的Name屬性進行配置,之前是利用字段的方式寫在XML中,但是組長說這樣的話在程序中查找不方便,可我覺得沒什么啊,當然了,對于我這個沒有工作經(jīng)驗的人來說看什么都是可以的,所以要多學習學習。在FormControl中利用雙層循環(huán)將控件容器中的控件按
Name與讀出的配置進行匹配,如果在XML中配置了該窗體,就設(shè)置該窗體的一些屬性。個人感覺實現(xiàn)了該功能吧,最后經(jīng)過組長看了一下審核基本通過。
要求:
根據(jù)Group,從XML中讀取控件配置信息,動態(tài)設(shè)置控件在主窗體中的顯示。
Dailywork6
每天都有不同的要求,哎,果然和學校是不一樣啊,今天將DLL中的控件更換成窗體,方法仍然采用反射+抽象工廠模式。
雖然自己有一定編程經(jīng)驗,但是遇到問題是不可避免的,今天在編寫過程中遇到了一個問題,就是當窗體接口和窗體類庫放在一起的時候,在工廠中創(chuàng)建的實例無法裝換成接口類型,經(jīng)過多次測試和上網(wǎng)查閱相關(guān)資料,發(fā)現(xiàn)控件類實現(xiàn)接口,不能將接口放在同一個類庫中,針對以上問題在網(wǎng)上查閱相關(guān)資料,結(jié)果還是沒有相同的主題,沒辦法,只有硬著頭皮在網(wǎng)上找,沒有主題就找有沒有相關(guān)的例子,結(jié)果還是沒有,差點就無語了,突然看到有類似方法的一個例子,真是柳暗花明又一村啊,仔細看了看,發(fā)現(xiàn)他和我的結(jié)構(gòu)有些差異,所以調(diào)了一下結(jié)構(gòu),一編譯果然痛過了,就是將兩個類庫分離,再在接口中加入工廠便可創(chuàng)建實例并轉(zhuǎn)換成接口。在主窗體中只需要引用該接口類庫便可達到要求,使程序耦合性降低了。
Dailywork7
由于黎甫對DLL的要求發(fā)生變化,今天就不斷修正DLL程序,并驗收,再結(jié)合Group的窗口排列方式對DLL中的窗體進行測試。我現(xiàn)在才明白,編寫代碼是一件很容易的事,但是編寫好的代碼卻是很難的事情,好的代碼要有可維護性、可擴展性,這樣在修改的話就很簡單,可不能像我昨天寫得代碼,根本談不上藝術(shù),所以一旦面對客戶的要求,改動就很困難,這一點值得我繼續(xù)學習。
至于可擴展性也是對維護的擴充,因為顧客的要求有可能隨時都在改變,我們也得適應(yīng)客戶的要求,如果軟件有了可擴展性,那么它的改動就比較小,就能適應(yīng)顧客的要求。所有上面說的這些都是自己要學習的地方,這樣在以后的商業(yè)開發(fā)中才能游刃有余,應(yīng)對自如。
Dailywork8
回顧前幾天所做的練習,對遇到的問題進行解決,在網(wǎng)上查閱相關(guān)資料獨立解決,并對之前的一些項目練習做好備份。將這幾天練習中所用的編程方法都串聯(lián)了一遍,形成了固定的模式,以便在今后可以快速的使用。
Dailywork9
今天算是正式開始做公司的項目,上午黎甫和秦陽在會議室給我講解了項目的一些功能并進行討論,大致理解了項目后,分配了自己的一部分任務(wù),整理過后在多次與秦陽的溝通請教下明白了自己的任務(wù),下午秦陽建好VSS,我拷貝項目進行框架整合和測試。
在編寫代碼的過程中也涉及了一些問題,通過看MSDN和上論壇,基本得到解決,同時也了解了一些C#其它的相關(guān)知識。
Dailywork10
今天繼續(xù)昨天的任務(wù),做一個小測試,將現(xiàn)今做的項目所有代碼進行整合測試,測試要求是在數(shù)據(jù)庫中配置菜單項,動態(tài)添加幾項菜單項,在不同點擊下動態(tài)從DLL中加載窗體讀取配置文件進行排列,順利完成。
要求:
抽象接口,并繼承;XML中命名空間和類名不要設(shè)置成結(jié)點,設(shè)置成屬性。
封裝算法到DLL;在FirstWork中使用XML配置;建立一個XMLclass進行操作;建立一個中間工廠類用反射在類庫中查找響應(yīng)算法;事件和委托。接口.
XML中結(jié)點:
程序集名稱;命名空間.類名;接口名稱;加載的時候轉(zhuǎn)化為接口;
XML中增加一個結(jié)點用來存儲客戶端關(guān)于算法的選擇,按選擇動態(tài)改變其值,然后算法中讀取該值進行排序選擇。
為解決的問題:在一個工具條上配置多個工具,并添加事件,好像數(shù)據(jù)庫不能實現(xiàn)。OK了!
Dailywork 11
同步多線程方式實現(xiàn)Tcp/Ip發(fā)送。
Dailywork 12
多線程要解除委托,避免出現(xiàn)異常;設(shè)置心跳包,檢查客戶端是否斷開連接;UDP服務(wù)器與客戶端握手,以及連接,數(shù)據(jù)報
Dailywork13
Dailywork14
Windows服務(wù)項目了解
Dailywork15
解決Udp局域網(wǎng)內(nèi)廣播方式通信。
Dailywork16
數(shù)據(jù)庫導出到XML,填充已設(shè)置菜單及工具欄結(jié)構(gòu),返回上層,在工廠中添加XML配置文件,選擇是從數(shù)據(jù)庫還是XML中讀取。
1、 首先把數(shù)據(jù)庫轉(zhuǎn)化為XML
2、 研究如何和調(diào)用數(shù)據(jù)庫的接口結(jié)合
3、 設(shè)計XML操作工程
4、 工廠更改與設(shè)計
ReadMenuInfo.cs中public MenuItemInfoNode[] ReadInfo( string Site)定義為接口中的函數(shù)
可能的Xpath: /Root/Item[@WndId=‘ ’ or tb_MenuID=‘ ’]
選取所有bookstore元素中price元素的值小于9或大于10的book元素. Dailywork17
完成菜單和工具條從數(shù)據(jù)庫轉(zhuǎn)化為XML中導出。
Dailywork18
整理優(yōu)化從XML中導出的過程,此外還;閱讀其他英文原版資料書。 Dailywork19
要求:
封裝窗體到DLL;
導出事件;
XML配置窗體參數(shù);
從control繼承。動態(tài)生成,使用抽象工廠模式;
Group的順序無序由自己決定(從XML中讀取);XML操作類;
相關(guān)熱詞搜索:寫日記 軟件 好用的寫日記軟件 學生寫日記軟件
熱點文章閱讀