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