VB課程設(shè)-06-072008-科學(xué)計(jì)算器_第1頁(yè)
VB課程設(shè)-06-072008-科學(xué)計(jì)算器_第2頁(yè)
VB課程設(shè)-06-072008-科學(xué)計(jì)算器_第3頁(yè)
VB課程設(shè)-06-072008-科學(xué)計(jì)算器_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、. 科學(xué)計(jì)算器設(shè)計(jì)報(bào)告學(xué)院 材料學(xué)院 班級(jí) 材料074 學(xué)號(hào) 072008 姓名 孫紅楠 成績(jī) 一、設(shè)計(jì)思路1.要達(dá)到的目的 培養(yǎng)利用VB的標(biāo)準(zhǔn)控件進(jìn)行應(yīng)用程序設(shè)計(jì)的能力,培養(yǎng)綜合利用VB語(yǔ)言進(jìn)行程序設(shè)計(jì)的能力。練習(xí)如何使用鍵盤(pán)輸入數(shù)據(jù)。了解各個(gè)控件屬性,培養(yǎng)對(duì)控件屬性的設(shè)置。加強(qiáng)對(duì)控件使用的熟練程度。練習(xí)使用子函數(shù)及子程序。2.關(guān)鍵問(wèn)題的解決 對(duì)于計(jì)算器,首要問(wèn)題就是就是對(duì)數(shù)據(jù)的運(yùn)算,這里是通過(guò)運(yùn)用了控件數(shù)組calu(),speci()等以求提高代碼的利用率,簡(jiǎn)化程序。對(duì)運(yùn)算設(shè)置了子程序Sub cacul(op1, op, op2) Sub cacul(op1, op, op2) Selec

2、t Case op Case 0 op1 = op1 + op2 Case 1 op1 = op1 - op2 Case 2 op1 = op1 * op2 Case 3 If op2 = 0 Then MsgBox "0不能做除數(shù)", vbCritical: Exit Sub op1 = op1 / op2 End SelectEnd Sub 對(duì)于其他功能鍵則采取了分別編譯的方法,分別編寫(xiě)其功能。此外窗體支持彩色按鈕以此區(qū)分不同的功能區(qū)。 數(shù)字的輸入要有指定的格式,使其符合規(guī)范i = Len(xianshi) If InStr(xianshi, "."

3、) Then Do While Mid(xianshi, i, 1) = "0" i = i - 1 Loop If Mid(xianshi.Caption, i, 1) = "." Then i = i - 1 xianshi = Left(xianshi, i)End If對(duì)每個(gè)數(shù)字鍵都要對(duì)應(yīng)相應(yīng)數(shù)字的輸入,由控件數(shù)組num()編譯較簡(jiǎn)單明確。且最基本的就是每個(gè)按一個(gè)鍵就在原基礎(chǔ)上加一個(gè)數(shù)字:xianshi = xianshi & CStr(Index),但對(duì)于在運(yùn)算符或等號(hào)之后輸入的數(shù)就要進(jìn)行相應(yīng)的別的設(shè)置,由此應(yīng)加上一個(gè)記號(hào),判斷屬于哪種

4、方式的輸入,在此程序中m和z完成此項(xiàng)功能。特別地,對(duì)于小數(shù)點(diǎn)的使用,要按輸入時(shí)的顯示習(xí)慣:在輸入非零數(shù)字后不應(yīng)該再顯示前導(dǎo)0,輸入非零數(shù)字前無(wú)論輸入多少個(gè)0一律不顯示,輸入1以下的小數(shù)時(shí),不需要輸入成“0.”,直接輸入“.”即可。為此應(yīng)用字符的查找方法判斷輸入數(shù)中是否含有小數(shù)點(diǎn),然后分別進(jìn)行相應(yīng)設(shè)置, 設(shè)置如下If Not z Then If InStr(xianshi, ".") Then Exit Sub If z Then xianshi = "0" z = False End Ifxianshi = xianshi + "."

5、值得特別注意的是,在什么情況下按數(shù)字鍵輸入新的數(shù)字,在什么情況下是對(duì)原數(shù)字上的添加。此時(shí)就用到了邏輯變量z:z 如果是 false 那么此數(shù)需要繼續(xù)輸入,如果是true 則這個(gè)數(shù)輸入完畢,可以輸入下一個(gè)數(shù)。 還有一個(gè)重要方面就是對(duì)數(shù)字輸出格式的設(shè)置,使其符合平時(shí)的書(shū)寫(xiě)顯示習(xí)慣。對(duì)此,設(shè)置了規(guī)范最后輸出數(shù)據(jù)的形式的子函數(shù)Function myfunction()此程序支持直接使用小鍵盤(pán)上的數(shù)字鍵和運(yùn)算符鍵進(jìn)行運(yùn)算,功能和用鼠標(biāo)點(diǎn)擊相應(yīng)的按鈕等效。每當(dāng)有鍵按下時(shí),就會(huì)發(fā)生該事件,運(yùn)用了程序Private Sub Form_KeyDown(KeyCode%, Shift%) 鼠標(biāo)事件。調(diào)用調(diào)用For

6、m1其他控件特殊函數(shù)caculmyfunction等號(hào),運(yùn)算符myfunction二、模塊之間的調(diào)用關(guān)系,或程序流程圖三、部分程序關(guān)鍵源代碼及注釋'清除按鍵設(shè)置(保留基本鍵0)Private Sub CE_Click() If Len(xianshi) > 0 Then xianshi = Left(xianshi, Len(xianshi) - 1) 只要大于0就清除最后一位If xianshi = "" Then xianshi = "0": z = True如果為空,則把0賦給xianshiEnd Sub'規(guī)范最后輸出數(shù)據(jù)的形

7、式的子函數(shù)Function myfunction(t As Double) As StringDim s As String s = Format(t, "#0.0#")將數(shù)據(jù)轉(zhuǎn)變成規(guī)定格式的字符串形式 If Right(s, 2) = ".0" Then s = Left(s, (Len(s) - 2)將整數(shù)后的“.0”去掉 myfunction = sEnd Function運(yùn)算符的設(shè)置Dim i As Byte在進(jìn)行運(yùn)算前,將數(shù)據(jù)變成習(xí)慣形式 Dim t As Doublei = Len(xianshi) If InStr(xianshi, &qu

8、ot;.") Then 運(yùn)用字符串的查找判斷是否含小數(shù)點(diǎn) Do While Mid(xianshi, i, 1) = "0" i = i - 1 Loop If Mid(xianshi.Caption, i, 1) = "." Then i = i - 1 xianshi = Left(xianshi, i)End Ift = Val(xianshi)If m = 1 Then 設(shè)計(jì)記號(hào)進(jìn)行存儲(chǔ) n(1) = t c(1) = Index m = 2ElseIf Index < 2 Or (c(m - 1) > 1 And Inde

9、x > 1) Then '對(duì)加減法進(jìn)行運(yùn)算或者乘除,算術(shù)優(yōu)先級(jí) Call cacul(n(m - 1), c(m - 1),t) c(m - 1) = Index xianshi = myfunction(n(m - 1)Else n(m) = Val(xianshi): c(m) = Index: m = m + 1 '為其他計(jì)算紀(jì)錄數(shù)據(jù)End Ifz = TrueEnd Sub四、設(shè)計(jì)方案的完善及目前存在的問(wèn)題1設(shè)計(jì)方案要完善的地方支持運(yùn)算符的優(yōu)先級(jí)。支持括號(hào)。增加進(jìn)制轉(zhuǎn)換功能,結(jié)果可以以2、8、10、16進(jìn)制進(jìn)行顯示。加統(tǒng)計(jì)功能,如平均值,方差,標(biāo)準(zhǔn)偏差等。2. 目

10、前存在的問(wèn)題 取整函數(shù)只對(duì)正數(shù)起作用。 程序太長(zhǎng)五、本次設(shè)計(jì)的收獲及心得體會(huì)經(jīng)過(guò)這一個(gè)學(xué)期VB的學(xué)習(xí),我由不知老師所云到開(kāi)始享受自己編譯的程序在眼底運(yùn)行,我覺(jué)得自己有所進(jìn)步,也享受到了成功的樂(lè)趣,特別是這次看到自己竟能把一套完整的程序編譯出來(lái),由衷感到欣慰和興奮(原來(lái)計(jì)算機(jī)上一個(gè)又一個(gè)神奇的窗口和功能是這樣出現(xiàn)的)。本來(lái)覺(jué)得自己對(duì)書(shū)本上的VB簡(jiǎn)單應(yīng)用已經(jīng)掌握了,但由這次,我發(fā)現(xiàn)自己還真的存在很多不足,同時(shí)感覺(jué) 的應(yīng)用還真是博大精深。拿到本次的課程設(shè)計(jì),不由的心虛了,自己確實(shí)還差得很遠(yuǎn)。在這一周里經(jīng)過(guò)了對(duì)VB的查找和詢問(wèn),確確實(shí)實(shí)的學(xué)到了很多東西。其實(shí)一個(gè)人的力量真的是很微弱,本次課程設(shè)計(jì)的完成

11、不是我一個(gè)人的功勞,其間參考了老師做的范例,請(qǐng)教了老師很多問(wèn)題,也借助網(wǎng)絡(luò)查找了一些資料,特別是在對(duì)鍵盤(pán)輸入編譯的部分我在一知半解的情況下粘上了自己的查找資料。通過(guò)本次的課程設(shè)計(jì),不僅使我在知識(shí)上有了很大增長(zhǎng),也使我對(duì)待學(xué)問(wèn)的態(tài)度又很跟大轉(zhuǎn)變,而且這次設(shè)計(jì)的時(shí)間安排挺緊,挺鍛煉心理素質(zhì),我對(duì)自己承接事務(wù)的信心增長(zhǎng)了。只要努力,沒(méi)有做不了的事!六、對(duì)該題目和VB設(shè)計(jì)的意見(jiàn)和建議1. 對(duì)該題目的意見(jiàn)和建議本人覺(jué)得這道題目特別好,拿到它之后就有一個(gè)挺明確的思路,知道從何做起。個(gè)人而言,這道題不是很簡(jiǎn)單,而且各項(xiàng)要求也比較多。要求的控件比較多,設(shè)計(jì)起來(lái)有點(diǎn)亂,而且它們還必須要組成一個(gè)系統(tǒng)的整體。但是通過(guò)老師的范例,確實(shí)是自己有了個(gè)比較明確的思路。此后便可按部就班的一點(diǎn)一點(diǎn)的攻克了,這個(gè)題目特別好,它跟平時(shí)課上的內(nèi)容聯(lián)系緊密,并不需要花費(fèi)太多的時(shí)間去查找課程之

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論