王 晶,和添錦
(麗江文化旅游學(xué)院,云南 麗江 674100)
隨著人工智能、大數(shù)據(jù)等信息技術(shù)的發(fā)展,程序設(shè)計相關(guān)工作的從業(yè)人員逐漸增多,部分高校也開展了相關(guān)課程。與此同時,因經(jīng)驗不足而無法熟練進行程序調(diào)試,在入門階段也逐漸顯現(xiàn)?,F(xiàn)階段,大多數(shù)集成開發(fā)環(huán)境都是使用英文,對自主學(xué)習(xí)與分析報錯能力還不足的新人而言,面對英文提示信息無法準確快速地定位信息中蘊含的重點,導(dǎo)致將大量時間用在了調(diào)試代碼中[1]。因此,本文利用文獻研究法和軟件工程法設(shè)計了一個匯集程序設(shè)計中出現(xiàn)的錯誤與警告提示信息的系統(tǒng),為用戶實現(xiàn)關(guān)鍵詞查詢并返回經(jīng)驗化的解決方案,從而為初學(xué)者學(xué)習(xí)程序設(shè)計提供幫助。
目前,高校關(guān)于程序設(shè)計的課程有C語言,C++,Java,Python等編程語言,包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫、網(wǎng)頁設(shè)計等相關(guān)內(nèi)容,在學(xué)習(xí)過程中會遇到各種困難。典型的有語句語法不會編寫,這種情況可以繼續(xù)深入學(xué)習(xí)解決。還有能夠編寫語句,但一直運行報錯。一般對于明顯的報錯與警告提示,可以根據(jù)提示到相關(guān)位置插入輸出語句、輸出程序的運行狀態(tài)以及程序中某些變量的信息,通過分析這些信息得到程序的錯誤所在,從而進行檢查與更改[2-5],但此方法需要設(shè)計者對程序的思路以及內(nèi)部結(jié)構(gòu)十分熟悉才能順利解決。因此,當初學(xué)者遇到無法辨別或者陌生的提示信息時,大多數(shù)會通過查詢相關(guān)資料或者詢問他人等方式解決,但解決過程較為波折,無法立即獲得解決信息。遇到邏輯不對這種情況,則需要程序員自行檢查或?qū)で笃渌麑I(yè)人員幫助。以上這些困難,會使初學(xué)者在學(xué)習(xí)的過程中逐漸降低學(xué)習(xí)積極性。
2.1.1 程序設(shè)計警告問題及解決方案
通常遇到的警告有:關(guān)于被棄用的特征的警告(Deprecation Warning)、可疑的語法的警告(Syntax Warning )、關(guān)于構(gòu)造將來語義會有改變的警告(Future Warning)等。出現(xiàn)這些警告信息的原因,一般有所使用的函數(shù)等已經(jīng)過時、語法問題、引用的參數(shù)值即將改變等,可以采用忽略警告、禁止警告以及修改代碼等方法解決。大部分警告消息不會影響程序運行,但是警告消息的出現(xiàn)都是有其原因的,要搞清楚問題,確認對程序運行沒有影響時才可以忽略。
2.1.2 程序設(shè)計錯誤問題及解決方案
在程序設(shè)計的過程中,遇到的報錯種類一般有:變量名錯誤(Name Error)、語法錯誤(Syntax Error)、類型錯誤(Type Error)、索引錯誤(Index Error)、值錯誤(Value Error)等。其中變量名、語法等錯誤,一般是因為粗心導(dǎo)致的,解決方法是查找變量名、冒號和空格是否打錯或遺漏;類型、索引和值等錯誤,一般是因為格式錯誤,解決方法是檢查傳入的類型是否為期望的類型,索引是否存在,序列是否超出范圍。
2.1.3 程序設(shè)計的其他問題
在程序設(shè)計過程中,除了遇到提示信息不理解的情況外,還會遇到其他問題,例如:所用語言的版本不一致造成不兼容的問題;陷入死循環(huán)、程序健壯性不夠;在算法中使用了不符合算法的值,例如四則運算里輸入了0等操作,都有可能導(dǎo)致程序崩潰。
2.1.4 程序設(shè)計問題解決
通過上述問題的分析,可以根據(jù)報錯與警告中蘊含的通用性,將常見的報錯與警告語句分類,與其經(jīng)驗化的解決方案整理成一個數(shù)據(jù)庫。用戶通過關(guān)鍵詞搜索,查找與用戶遇到的問題相符的錯誤與警告語句,并顯示其解決方案。除此之外,用戶還可以收藏搜索出來的、感興趣的解決方案,添加數(shù)據(jù)庫中沒有出現(xiàn)的錯誤與警告語句,添加數(shù)據(jù)庫中沒有的其他解決方案。通過這樣一個系統(tǒng)的實現(xiàn),可以為學(xué)習(xí)程序設(shè)計的過程增加便利,提高學(xué)習(xí)效率。
2.2.1 界面設(shè)計
查詢頁面的布局如圖1所示,此界面中,①板塊為實現(xiàn)查詢功能的搜索框部分,用戶在這里可以通過關(guān)鍵詞進行查詢;②板塊為實現(xiàn)管理員以及用戶登錄注冊的導(dǎo)航部分,通過點擊這里跳轉(zhuǎn)到相應(yīng)的登錄或注冊頁面,用戶登錄后才可以實現(xiàn)收藏以及添加修改語句信息的功能。
圖1 查詢頁面布局
查詢結(jié)果顯示頁面如圖2所示,此界面中,①版塊是根據(jù)前面的關(guān)鍵詞查詢出來的相關(guān)語句,用戶可點擊這些相關(guān)語句進一步查看詳細信息;②版塊是返回上一界面與登錄的導(dǎo)航部分;③板塊為用戶可添加未曾查詢到或未出現(xiàn)的語句,待管理員審核通過后便可發(fā)布等待其他人解答。
圖2 查詢結(jié)果顯示頁面
查看詳細信息頁面如圖3所示,此界面中,①版塊為根據(jù)前面點擊的相關(guān)語句進一步展開詳細信息的部分;②版塊為用戶添加其他解決辦法以及實現(xiàn)收藏功能的部分。
圖3 查看詳細信息頁面
2.2.2 業(yè)務(wù)流程圖
業(yè)務(wù)流程如圖4所示,用戶通過查詢關(guān)鍵詞或語句可以得到與其相符的查詢結(jié)果,當用戶選擇對點開的語句詳細信息不進行收藏,可返回查詢結(jié)果的頁面繼續(xù)查看;如果進行收藏,就要考慮是否擁有賬號,如果已有則登錄后收藏,如果沒有則先注冊再登錄收藏。
圖4 業(yè)務(wù)流程
2.2.3 功能設(shè)計
本系統(tǒng)為程序設(shè)計幫助查詢系統(tǒng),功能結(jié)構(gòu)如圖5所示,分為4部分功能。(1)查詢功能,利用關(guān)鍵詞進行查詢,把用戶輸入的關(guān)鍵詞與數(shù)據(jù)庫中的語句進行匹配,再把匹配到的語句詳細信息展示出來。(2)用戶部分功能。即用戶注冊、登錄、查看、修改用戶信息,以及管理員對用戶的刪除、修改、查看。(3)管理員對語句進行增加、刪除、修改、查看以及用戶可收藏語句。(4)用戶可添加數(shù)據(jù)庫中沒有的解決方案或語句,以及對用戶添加過的信息進行刪除、修改、查看。
圖5 功能結(jié)構(gòu)
2.2.4 開發(fā)平臺設(shè)計
此次設(shè)計與實現(xiàn)中用到的工具與平臺是 Navicat Premium與PyCharm。其中,Navicat是可以對數(shù)據(jù)庫以及多方面連接的資料庫進行管理操作的工具,可以同時連線 MySQL,SQLite,MssQL 等資料庫。程序員可以用Navicat存儲、調(diào)取、使用數(shù)據(jù),可以對不同的表進行類型設(shè)定,包括查看報錯,使用較簡單、易操作。PyCharm是Python 的一種集成開發(fā)環(huán)境,擁有一系列工具,比如調(diào)試、智能提示、自動完成等,可以高效率地幫助用戶進行Python語言開發(fā)。此外,PyCharm還提供了一些高級功能用于支持Django框架下的專業(yè)Web開發(fā),本系統(tǒng)將使用其自帶的Html,Css 工具通過Django框架進行 Web 開發(fā)等操作。
2.3.1 數(shù)據(jù)流程
系統(tǒng)的總體運行如圖6所示,用戶輸入關(guān)鍵詞給系統(tǒng),系統(tǒng)將關(guān)鍵詞傳遞給數(shù)據(jù)庫進行匹配,數(shù)據(jù)庫把匹配到的詳細信息通過系統(tǒng)再反饋給用戶。
圖6 頂層數(shù)據(jù)流程
總體來看,本系統(tǒng)是通過用戶輸入的關(guān)鍵詞查詢數(shù)據(jù)庫,用戶注冊登錄后可對信息進行補充和收藏等操作。按照流程來看,程序設(shè)計幫助查詢系統(tǒng)可分為5個部分,分別是查詢、收藏、注冊、登錄、補充;為了用戶可以保存感興趣的信息,又設(shè)計了相應(yīng)的收藏功能,因此系統(tǒng)總共有6個部分。與系統(tǒng)相關(guān)的實體為用戶和數(shù)據(jù)庫,在數(shù)據(jù)庫匹配后生成相關(guān)語句表和語句詳細信息表,在用戶注冊后生成用戶信息表。第一層數(shù)據(jù)流程如圖7所示。
圖7 第一層數(shù)據(jù)流程
2.3.2 數(shù)據(jù)字典
數(shù)據(jù)字典是對數(shù)據(jù)的數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲等進行的定義和描述,其目的是對數(shù)據(jù)流程圖中的各元素做出詳細的說明。如表1和表2所示,對數(shù)據(jù)庫的每個表都進行了數(shù)據(jù)的來源去向設(shè)計,流入流出分析,進一步理清了數(shù)據(jù)關(guān)系。
表1 數(shù)據(jù)流字典
表2 數(shù)據(jù)存儲字典
2.3.3 E-R圖設(shè)計
數(shù)據(jù)庫設(shè)計時,一般會根據(jù)E-R圖進行設(shè)計,本研究所涉及的對象有用戶和語句這兩類。設(shè)計時,需先對每一類進行E-R圖的繪制,再根據(jù)E-R圖進行關(guān)系設(shè)置,最后進行數(shù)據(jù)庫設(shè)計,這樣在實現(xiàn)時可以快速理清數(shù)據(jù)關(guān)系。用戶實體屬性如圖8所示,語句實體屬性如圖9所示,實體聯(lián)系如圖10所示,全局E-R如圖11所示。
圖8 用戶實體屬性
圖9 語句實體屬性
圖10 實體聯(lián)系
圖11 全局E-R
為方便在設(shè)計數(shù)據(jù)庫數(shù)據(jù)表時能獨立設(shè)計每張表,并在建立后能快速理清數(shù)據(jù)關(guān)系,如上述E-R圖中,需先對每個實體進行分析,再關(guān)聯(lián)每個實體,這樣在設(shè)計數(shù)據(jù)表時參考實體分析,關(guān)聯(lián)數(shù)據(jù)表時參考關(guān)系圖即可。本系統(tǒng)可以簡單分成用戶和語句兩個實體,用戶有姓名、性別、年齡、聯(lián)系電話以及密碼這幾個屬性,語句有編號、關(guān)鍵詞、語句翻譯以及解決辦法這幾個屬性,實體間是多對多的關(guān)系,可以理解為用戶可以搜索多條語句,語句也可以被多個用戶查詢。
2.3.4 數(shù)據(jù)表
數(shù)據(jù)庫中的用戶列表如表3所示,字段有姓名、性別、年齡、聯(lián)系方式、密碼,其中聯(lián)系電話為主鍵,用戶可以利用聯(lián)系電話作為賬號登錄。
表3 用戶
數(shù)據(jù)庫中的錯誤語句列表如表4所示,字段有錯誤語句編號、錯誤語句、語句翻譯、解決方案,其中錯誤語句編號為主鍵。
表4 錯誤語句
數(shù)據(jù)庫中的警告語句列表如表5所示,字段有警告語句編號、警告語句、語句翻譯、解決方案,其中警告語句編號為主鍵。
表5 警告語句
3.1.1 界面設(shè)計要求
系統(tǒng)根據(jù)編程世界的知識宛如宇宙的特點,以一個宇宙的圖片為界面主背景,界面中的字體大多居中,右上角設(shè)有返回首頁按鈕。
3.1.2 界面開發(fā)
如圖12—14所示為系統(tǒng)的主功能頁面,用戶通過輸入關(guān)鍵詞或語句點擊搜索按鈕便可進行查詢,然后出現(xiàn)與關(guān)鍵詞相關(guān)的語句列表,點擊列表中任意語句后便可展示相關(guān)的詳細信息,還可以對詳細信息進行收藏。除主功能外,系統(tǒng)也實現(xiàn)了用戶的注冊登錄與管理員登錄以及登錄后的增刪改功能。
圖12 查詢頁面
圖13 查詢結(jié)果列表頁面
圖14 詳細結(jié)果頁面
3.2.1 測試說明
系統(tǒng)測試的目的是檢驗系統(tǒng)最終是否符合用戶規(guī)定的需求,此外,也是希望能以最少的人力和時間,發(fā)現(xiàn)潛在的錯誤、缺陷以及系統(tǒng)不完善部分,驗證系統(tǒng)功能的正確性和完整性。
3.2.2 測試用例
系統(tǒng)實現(xiàn)以后,需對系統(tǒng)進行功能測試,確保系統(tǒng)功能能夠使用,并滿足需求,測試用例如表6所示。
表6 測試用例
3.2.3 測試結(jié)果分析
測試結(jié)果分析如表7所示,系統(tǒng)能夠?qū)崿F(xiàn)各類已設(shè)計功能,并能對用戶注冊登錄時的失誤操作進行提示。
表7 測試結(jié)果分析
針對初學(xué)者在調(diào)試代碼上花費大量時間的現(xiàn)象,本研究設(shè)計了一個將程序設(shè)計中出現(xiàn)的提示信息進行整合,供用戶查詢的平臺,為初學(xué)者進行程序設(shè)計時提供了便利。但由于時間及技術(shù)等方面問題,部分功能不夠完善,后續(xù)將繼續(xù)深入研究解決程序設(shè)計中的難題。