王 晶,和添錦
(麗江文化旅游學院,云南 麗江 674100)
隨著人工智能、大數據等信息技術的發展,程序設計相關工作的從業人員逐漸增多,部分高校也開展了相關課程。與此同時,因經驗不足而無法熟練進行程序調試,在入門階段也逐漸顯現。現階段,大多數集成開發環境都是使用英文,對自主學習與分析報錯能力還不足的新人而言,面對英文提示信息無法準確快速地定位信息中蘊含的重點,導致將大量時間用在了調試代碼中[1]。因此,本文利用文獻研究法和軟件工程法設計了一個匯集程序設計中出現的錯誤與警告提示信息的系統,為用戶實現關鍵詞查詢并返回經驗化的解決方案,從而為初學者學習程序設計提供幫助。
目前,高校關于程序設計的課程有C語言,C++,Java,Python等編程語言,包括數據結構、數據庫、網頁設計等相關內容,在學習過程中會遇到各種困難。典型的有語句語法不會編寫,這種情況可以繼續深入學習解決。還有能夠編寫語句,但一直運行報錯。一般對于明顯的報錯與警告提示,可以根據提示到相關位置插入輸出語句、輸出程序的運行狀態以及程序中某些變量的信息,通過分析這些信息得到程序的錯誤所在,從而進行檢查與更改[2-5],但此方法需要設計者對程序的思路以及內部結構十分熟悉才能順利解決。因此,當初學者遇到無法辨別或者陌生的提示信息時,大多數會通過查詢相關資料或者詢問他人等方式解決,但解決過程較為波折,無法立即獲得解決信息。遇到邏輯不對這種情況,則需要程序員自行檢查或尋求其他專業人員幫助。以上這些困難,會使初學者在學習的過程中逐漸降低學習積極性。
2.1.1 程序設計警告問題及解決方案
通常遇到的警告有:關于被棄用的特征的警告(Deprecation Warning)、可疑的語法的警告(Syntax Warning )、關于構造將來語義會有改變的警告(Future Warning)等。出現這些警告信息的原因,一般有所使用的函數等已經過時、語法問題、引用的參數值即將改變等,可以采用忽略警告、禁止警告以及修改代碼等方法解決。大部分警告消息不會影響程序運行,但是警告消息的出現都是有其原因的,要搞清楚問題,確認對程序運行沒有影響時才可以忽略。
2.1.2 程序設計錯誤問題及解決方案
在程序設計的過程中,遇到的報錯種類一般有:變量名錯誤(Name Error)、語法錯誤(Syntax Error)、類型錯誤(Type Error)、索引錯誤(Index Error)、值錯誤(Value Error)等。其中變量名、語法等錯誤,一般是因為粗心導致的,解決方法是查找變量名、冒號和空格是否打錯或遺漏;類型、索引和值等錯誤,一般是因為格式錯誤,解決方法是檢查傳入的類型是否為期望的類型,索引是否存在,序列是否超出范圍。
2.1.3 程序設計的其他問題
在程序設計過程中,除了遇到提示信息不理解的情況外,還會遇到其他問題,例如:所用語言的版本不一致造成不兼容的問題;陷入死循環、程序健壯性不夠;在算法中使用了不符合算法的值,例如四則運算里輸入了0等操作,都有可能導致程序崩潰。
2.1.4 程序設計問題解決
通過上述問題的分析,可以根據報錯與警告中蘊含的通用性,將常見的報錯與警告語句分類,與其經驗化的解決方案整理成一個數據庫。用戶通過關鍵詞搜索,查找與用戶遇到的問題相符的錯誤與警告語句,并顯示其解決方案。除此之外,用戶還可以收藏搜索出來的、感興趣的解決方案,添加數據庫中沒有出現的錯誤與警告語句,添加數據庫中沒有的其他解決方案。通過這樣一個系統的實現,可以為學習程序設計的過程增加便利,提高學習效率。
2.2.1 界面設計
查詢頁面的布局如圖1所示,此界面中,①板塊為實現查詢功能的搜索框部分,用戶在這里可以通過關鍵詞進行查詢;②板塊為實現管理員以及用戶登錄注冊的導航部分,通過點擊這里跳轉到相應的登錄或注冊頁面,用戶登錄后才可以實現收藏以及添加修改語句信息的功能。

圖1 查詢頁面布局
查詢結果顯示頁面如圖2所示,此界面中,①版塊是根據前面的關鍵詞查詢出來的相關語句,用戶可點擊這些相關語句進一步查看詳細信息;②版塊是返回上一界面與登錄的導航部分;③板塊為用戶可添加未曾查詢到或未出現的語句,待管理員審核通過后便可發布等待其他人解答。

圖2 查詢結果顯示頁面
查看詳細信息頁面如圖3所示,此界面中,①版塊為根據前面點擊的相關語句進一步展開詳細信息的部分;②版塊為用戶添加其他解決辦法以及實現收藏功能的部分。

圖3 查看詳細信息頁面
2.2.2 業務流程圖
業務流程如圖4所示,用戶通過查詢關鍵詞或語句可以得到與其相符的查詢結果,當用戶選擇對點開的語句詳細信息不進行收藏,可返回查詢結果的頁面繼續查看;如果進行收藏,就要考慮是否擁有賬號,如果已有則登錄后收藏,如果沒有則先注冊再登錄收藏。

圖4 業務流程
2.2.3 功能設計
本系統為程序設計幫助查詢系統,功能結構如圖5所示,分為4部分功能。(1)查詢功能,利用關鍵詞進行查詢,把用戶輸入的關鍵詞與數據庫中的語句進行匹配,再把匹配到的語句詳細信息展示出來。(2)用戶部分功能。即用戶注冊、登錄、查看、修改用戶信息,以及管理員對用戶的刪除、修改、查看。(3)管理員對語句進行增加、刪除、修改、查看以及用戶可收藏語句。(4)用戶可添加數據庫中沒有的解決方案或語句,以及對用戶添加過的信息進行刪除、修改、查看。

圖5 功能結構
2.2.4 開發平臺設計
此次設計與實現中用到的工具與平臺是 Navicat Premium與PyCharm。其中,Navicat是可以對數據庫以及多方面連接的資料庫進行管理操作的工具,可以同時連線 MySQL,SQLite,MssQL 等資料庫。程序員可以用Navicat存儲、調取、使用數據,可以對不同的表進行類型設定,包括查看報錯,使用較簡單、易操作。PyCharm是Python 的一種集成開發環境,擁有一系列工具,比如調試、智能提示、自動完成等,可以高效率地幫助用戶進行Python語言開發。此外,PyCharm還提供了一些高級功能用于支持Django框架下的專業Web開發,本系統將使用其自帶的Html,Css 工具通過Django框架進行 Web 開發等操作。
2.3.1 數據流程
系統的總體運行如圖6所示,用戶輸入關鍵詞給系統,系統將關鍵詞傳遞給數據庫進行匹配,數據庫把匹配到的詳細信息通過系統再反饋給用戶。

圖6 頂層數據流程
總體來看,本系統是通過用戶輸入的關鍵詞查詢數據庫,用戶注冊登錄后可對信息進行補充和收藏等操作。按照流程來看,程序設計幫助查詢系統可分為5個部分,分別是查詢、收藏、注冊、登錄、補充;為了用戶可以保存感興趣的信息,又設計了相應的收藏功能,因此系統總共有6個部分。與系統相關的實體為用戶和數據庫,在數據庫匹配后生成相關語句表和語句詳細信息表,在用戶注冊后生成用戶信息表。第一層數據流程如圖7所示。

圖7 第一層數據流程
2.3.2 數據字典
數據字典是對數據的數據項、數據結構、數據流、數據存儲等進行的定義和描述,其目的是對數據流程圖中的各元素做出詳細的說明。如表1和表2所示,對數據庫的每個表都進行了數據的來源去向設計,流入流出分析,進一步理清了數據關系。

表1 數據流字典

表2 數據存儲字典
2.3.3 E-R圖設計
數據庫設計時,一般會根據E-R圖進行設計,本研究所涉及的對象有用戶和語句這兩類。設計時,需先對每一類進行E-R圖的繪制,再根據E-R圖進行關系設置,最后進行數據庫設計,這樣在實現時可以快速理清數據關系。用戶實體屬性如圖8所示,語句實體屬性如圖9所示,實體聯系如圖10所示,全局E-R如圖11所示。

圖8 用戶實體屬性

圖9 語句實體屬性

圖10 實體聯系

圖11 全局E-R
為方便在設計數據庫數據表時能獨立設計每張表,并在建立后能快速理清數據關系,如上述E-R圖中,需先對每個實體進行分析,再關聯每個實體,這樣在設計數據表時參考實體分析,關聯數據表時參考關系圖即可。本系統可以簡單分成用戶和語句兩個實體,用戶有姓名、性別、年齡、聯系電話以及密碼這幾個屬性,語句有編號、關鍵詞、語句翻譯以及解決辦法這幾個屬性,實體間是多對多的關系,可以理解為用戶可以搜索多條語句,語句也可以被多個用戶查詢。
2.3.4 數據表
數據庫中的用戶列表如表3所示,字段有姓名、性別、年齡、聯系方式、密碼,其中聯系電話為主鍵,用戶可以利用聯系電話作為賬號登錄。

表3 用戶
數據庫中的錯誤語句列表如表4所示,字段有錯誤語句編號、錯誤語句、語句翻譯、解決方案,其中錯誤語句編號為主鍵。

表4 錯誤語句
數據庫中的警告語句列表如表5所示,字段有警告語句編號、警告語句、語句翻譯、解決方案,其中警告語句編號為主鍵。

表5 警告語句
3.1.1 界面設計要求
系統根據編程世界的知識宛如宇宙的特點,以一個宇宙的圖片為界面主背景,界面中的字體大多居中,右上角設有返回首頁按鈕。
3.1.2 界面開發
如圖12—14所示為系統的主功能頁面,用戶通過輸入關鍵詞或語句點擊搜索按鈕便可進行查詢,然后出現與關鍵詞相關的語句列表,點擊列表中任意語句后便可展示相關的詳細信息,還可以對詳細信息進行收藏。除主功能外,系統也實現了用戶的注冊登錄與管理員登錄以及登錄后的增刪改功能。

圖12 查詢頁面

圖13 查詢結果列表頁面

圖14 詳細結果頁面
3.2.1 測試說明
系統測試的目的是檢驗系統最終是否符合用戶規定的需求,此外,也是希望能以最少的人力和時間,發現潛在的錯誤、缺陷以及系統不完善部分,驗證系統功能的正確性和完整性。
3.2.2 測試用例
系統實現以后,需對系統進行功能測試,確保系統功能能夠使用,并滿足需求,測試用例如表6所示。

表6 測試用例
3.2.3 測試結果分析
測試結果分析如表7所示,系統能夠實現各類已設計功能,并能對用戶注冊登錄時的失誤操作進行提示。

表7 測試結果分析
針對初學者在調試代碼上花費大量時間的現象,本研究設計了一個將程序設計中出現的提示信息進行整合,供用戶查詢的平臺,為初學者進行程序設計時提供了便利。但由于時間及技術等方面問題,部分功能不夠完善,后續將繼續深入研究解決程序設計中的難題。