【正文】
8 5. 1系統(tǒng)功能框圖 圖 從圖 的框圖可以分為兩個主要的窗口,既打分系統(tǒng)的主界面和顯示得分表的界面,在主界面我們主要是進行打分前的設置,例如比賽的名稱,參賽選手的姓名,裁判的人數,采用何種記分規(guī)則等等。并且在該窗口中可以記錄保存選手的成績或者調出以往選手的成績。 打分系統(tǒng)軟件設計 本軟件主要部分分為兩部分 ,第一部分界面如圖 該界面主要是顯示裁判打分,并且顯示選手姓名,編號和得分。 Private Sub Command1_Click() 39。 當用戶點擊“前一選手”鍵時,先將“下一選手”鍵設置為可用,將變量 Index 1,顯示相應選手得分情況,同時判斷是否已經達到表格第一行,若已達到,則將該按鈕設置為不可用。在本系統(tǒng)里計算選手最后得分要根據評分規(guī)則和評委人數,可以求總分或著求均分,其默認為求總分。其設置求均分或者總分的代碼如下: Public Sub Command1_Click() Dim I As Integer, N As Integer N = For I = 0 To 7 39。H80000000 39。再將 N 個格子設置為可操作 (I).BackColor = amp。白色 (I).Visible = True Next I If Option1 Then (10) = 總分 Else (10) = 平均分 End If = True End Sub 在設置求分方法后,我們并沒有馬上計算總分或者是均分,而是把這個工作放在了Timer1_Timer 這個事件中, Timer1_Timer 將在以后說明。 在圖 中左下角中那個電話形狀的控件,那個是 MSComm 控件,它是用來控制 pc機和單片機通信的。由于接收數據是隨機的,所以我們采用中斷方式接收,在程序中建立了一個該控件的MSComm1_OnComm 的事件過程 ,并將其設置為當收到第 5 個字符時開始中斷,打分中斷發(fā)送淮陰師范學院畢業(yè)論文(設計) 34 數據的格式為,終端編號 4 個字符,分數可以是一到五個字符(含一個小數點), 再加上 . . . 1.個字節(jié)累加和 . . . . . . , . 所 以每次通訊至少 6. 個字符最多 10 個字符。 在 Timer1_Timer 事件過程中將接受到的數據一次性讀入到字符型變量中,截取其前 4個字 符為裁判號 ,余下的字符為分值。 計算機采用中斷方式接收打分鍵盤發(fā)過來的數據,當每次通信過程中收到 5 個字符時引發(fā) OnComm 事件,在 OnComm 事件過程中并沒有去接收數據,而只是啟動定時器 Timer1。禁止定時器 Buf = 39。不足 5個字符則為錯誤 ,不予處理 N = 0 For I = 1 To L – 1 39。保留低 4位 If N Val(Right(Buf, 1)) Then = Left(Buf, 4) amp。校驗錯 ,向該終端發(fā)重發(fā)命令 Exit Sub 39。 CStr(Sum) End If (L * + 10) = Sum Change = True End Sub Timer1_Timer 事件不但截取信號中的裁判號和所打的分數,而且實現了總分的計算和平均分的計算,(總分和平均分的設置在 Command1_Click 設置里,既圖 ), Sum = Sum + Val(Text1(I).Text)是計算總分的, Sum = Sum / Val()是用來計算平均分數的。 CStr(Sum) 。 (初始狀態(tài) = False) Private Sub Command3_Click()39。每隔 秒向 1個打分終端發(fā)送 1條 T命令 Static I as Integer I = I + 1 淮陰師范學院畢業(yè)論文(設計) 36 If I Val() Then I = 0 = False = True Exit Sub 39。 Chr(I + 64) amp。 當系統(tǒng)啟動時觸發(fā)得分表 Form_Load 這個事件時,系統(tǒng)將將把該控件進行初始化設置,設置為 21 行, 11 列,其代碼如下: = 11 = 1 = 21 = 12 淮陰師范學院畢業(yè)論文(設計) 37 其中一行為表頭,其余為 20 個選手,當添加選手超過 20 行,表的行樹將會自動擴展。其實現方法如下: Do While I = Len(S) And K 0 If J = 1 Then 39。設置當前單元格 = K = 4 39。 39。找回車符位置 If K 0 Then C = Mid(S, I, K I) ElseIf I = Len(S) Then C = Mid(S, I, Len(S) I + 1) End If (J * + 1) = C J = J + 1 39。I 指針指向回車換行符后的字符 Loop 表的列數是固定的,不可擴展,最左邊一列用于顯示行號(即選手編號),其余各列用于顯示選手姓名,各評委的打分和最后得分;表的行數據是可以擴展的,系統(tǒng)剛啟動時默認 21 行,一行作表頭,其余 20 可放 20 個選手的比賽成績,添加選手人數超過 20 人或打開的成績文件中選手人數超過 20 人時,表的行數會看上去擴充。 對于未保存的 新表格,用戶點擊“保存”命令,將自動打開“另存為”對話框,這時要求用戶輸入保存路徑和文件名,實現以上功能的代碼如下: Public Sub Save_Click() 39。Err=0 為無錯誤 MsgBox Error, 16 Fname = Exit Sub End If A = Write 1, A For I = To 1 For J = To 1 A = (I * + J) Write 1, A Next J Next I Change = False Close Else Call SavAs_Click 39。 文件名 : amp。使“另存為”對話框當選擇的文件已經存在時應產生一個信息框,用戶必須確認是否覆蓋該文件 ,隱藏只讀復選框。當選取“取消”按鈕時是出錯 On Error Resume Next If Err = cdlCancel Then Exit Sub End If Fname = If Fname = Then Exit Sub On Error Resume Next Open Fname For Output As 1 If Err 0 Then 39。 文件名 : amp。 本系統(tǒng)中文件的格式采用順序文件,純文本方式,文件后綴為“ .sco” ,用 Windows 的記事本也可以打開,用記事本打開時第一行為比賽名稱,其余每一行對應表格中的一個單元格,順序為從左到右,從上到下的方式。若成績被修改后未保存就關閉程序,系統(tǒng)會出現一個對話框,提示用戶選擇“保存成績退出”、“不保存成績退出”或“放棄退出”。 Common Dialog 控件功能強大,可以打開許多種 Windows 對話框,在本系統(tǒng)中只使用了“另存為”和“打開 ”著兩個功能,這兩個功能在上文已經敘述過,在這里就不再重復了。 FileName 屬性值是用戶在對話框中選定或輸入的文件路徑和文件名?;搓帋煼秾W院畢業(yè)論文(設計) 41 這時各行的序號即為選手名次,排列中沒有考慮并列名次 。排名次 Dim I As Integer, J As Integer, K As Integer Dim T(10) As String, M As Integer, N As Integer M = : N = For I = To M 2 For J = I + 1 To M 1 If (J * N + 10) = Then Exit For If Val((J * N + 10)) Val((I * N + 10)) Then Change = True For K = 1 To 10 T(K) = (J * N + K) (J * N + K) = (I * N + K) (I * N + K) = T(K) Next K End If Next J Next I End Sub 參考書籍: [1]張宏林 孔艷 王哲 編著 《 Visual Basic 開發(fā)數據庫》人民郵電出版社 2020 [2]Evangelos Petroutsos Kevin Hough 著 邱仲潘 等譯 《 Visual Basic 高級開發(fā)指南》 電子工業(yè)出版社出版 1999 [3] 林卓然 《 Visual Basic 高級開發(fā)指南》 電子工業(yè)出版社 2020 淮陰師范學院畢業(yè)論文(設計) 42 結 束 語 經過這次畢業(yè)設計,我覺得自己學到了不少東西。經過這次畢業(yè)設計,我接觸到了更多平時沒有接觸到的 新問題、新 設備、 新 器件,發(fā)現了自己很多不足之處。 了解 了 進行 電子產品 設計 開發(fā) 必不可少的幾個階段。我經過這次系統(tǒng)的畢業(yè)設計,熟悉了對一項課題進行研究、設計和實驗的詳細過程。 學會了怎樣查閱資料和利用工具書。一個人不可能什么都學過,什么都懂,因此,當你在設計過程中需要用一些不曾學過的東西時,就要去有針對性地查找資料,然后加以吸收利用,以提高自己的應用 能力,而且還能增長自己見識,補充最新的專業(yè)知識。 畢業(yè)設計對以前學過的理論知識起到了回顧作用,并對其加以進一步的消化和鞏固。而且培養(yǎng)了吃苦耐勞的精神以及相對應的工程意識,同學之間的友誼互助也充分的在畢業(yè)設計當中體現出來了。 在此我深表謝意! 我還要感謝 和我的同組的 同學,他和我團結協(xié)作,配合默契,對我完成畢業(yè)設計起到了不可替代的作用