資源簡介 第3單元 認(rèn)識數(shù)據(jù)3.1數(shù)據(jù)編碼1、模擬信號與數(shù)字信號按照取值特征,可以將信號分為模擬信號和數(shù)字信號。用傳感器直接獲得的信號一般為模擬信號,如聲音、溫度、壓強(qiáng)等。模擬信號的值是隨時(shí)間連續(xù)變化的,波形光滑。模擬信號的值稱為模擬數(shù)據(jù)。數(shù)字信號隨時(shí)間的變化是非連續(xù)的,數(shù)字信號可以由模擬信號轉(zhuǎn)換得來,數(shù)字信號的值即數(shù)字?jǐn)?shù)據(jù),直接用計(jì)算機(jī)所能理解的二進(jìn)制表示,以方便計(jì)算機(jī)對其進(jìn)行處理。2、聲音的數(shù)字化我們不能把連續(xù)的音頻信號存放在計(jì)算機(jī)中,必須將模擬聲音數(shù)據(jù)轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)。將模擬聲音數(shù)據(jù)轉(zhuǎn)換為數(shù)字?jǐn)?shù)據(jù)的這一過程,稱為聲音的數(shù)字化。通常先對模擬聲音信號按給定的時(shí)間間隔進(jìn)行采樣,然后對采樣數(shù)據(jù)進(jìn)行量化,最后將量化后的數(shù)據(jù)用計(jì)算機(jī)能夠存儲和處理的二進(jìn)制數(shù)值表示,即編碼。3、進(jìn)制與數(shù)制轉(zhuǎn)換計(jì)算機(jī)外部的各種形式的數(shù)據(jù)經(jīng)過編碼后,都以二進(jìn)制數(shù)的形式存儲在計(jì)算機(jī)中。二進(jìn)制數(shù)中只有0和1兩個(gè)數(shù)字符號,其計(jì)數(shù)特點(diǎn)是“逢二進(jìn)一”即1+1=10。計(jì)算機(jī)中存儲數(shù)據(jù)的最小單位是二進(jìn)制位,用比特(bit)表示,1比特能表示兩種(21)狀態(tài)(即0或1),2比特可以表示00、01、10、11四種(22)狀態(tài),3比特可表示八種(23)狀態(tài)....計(jì)算機(jī)存儲數(shù)據(jù)的基本單位是字節(jié)(Byte,簡寫為B),8比特構(gòu)成1字節(jié),1字節(jié)二進(jìn)制數(shù)可表示2* (256)種狀態(tài)。在二進(jìn)制數(shù)中,每一個(gè)數(shù)字在不同的位置上具有不同的權(quán)值,各位上的權(quán)值是基數(shù)2的若干次冪。比如二進(jìn)制數(shù)10010,5個(gè)位置上的權(quán)值從右往左可以表示為: 將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)時(shí),只要將該二進(jìn)制數(shù)的每個(gè)位置上的數(shù)字與其對應(yīng)位置的權(quán)值相乘,然后求和即可。比如,把十進(jìn)制非負(fù)整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),可使用短除法,即“除二取余”法。例如,把十進(jìn)制整數(shù)18轉(zhuǎn)換為二進(jìn)制數(shù)的過程如圖3.1.7所示,結(jié)果為。由于二進(jìn)制數(shù)位數(shù)較多,書寫不便,故常改用十六進(jìn)制數(shù)表示。我國古代曾經(jīng)在重量單位上使用過十六進(jìn)制,如規(guī)定16兩為1斤。十六進(jìn)制需要使用16個(gè)不同的基本數(shù)字,除了阿拉伯?dāng)?shù)字0到9外,一般用字母A到F(或a~f)依次表示后續(xù)數(shù)字(相當(dāng)于十進(jìn)制數(shù)中的10~15)。十六進(jìn)制的基本計(jì)數(shù)規(guī)則是“逢十六進(jìn)1”,即F+1=10。一般地,十進(jìn)制非負(fù)整數(shù)轉(zhuǎn)換成R進(jìn)制數(shù)(R≥2)采用“除R取余法”,把R進(jìn)制非負(fù)整數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)采用“按權(quán)展開求和法”。4、文本數(shù)據(jù)的編碼文本數(shù)據(jù)是用來表示一定意思的一系列字符,包括字母、數(shù)字、標(biāo)點(diǎn)符號、漢字等。文本數(shù)據(jù)的編碼通過對其中每一個(gè)字符進(jìn)行編碼實(shí)現(xiàn)。用于文本數(shù)據(jù)字符編碼的方案有多種類型,其中ASCII碼和Unicode是最為典型的兩種編碼方案。1. ASCI碼ASCII碼( American Standard Code for Information Interchange, 美國信息交換標(biāo)準(zhǔn)碼)用7位(標(biāo)準(zhǔn)ASCII碼)或8位(擴(kuò)展ASCII碼)二進(jìn)制數(shù)表示一個(gè)字符。標(biāo)準(zhǔn)ASCII碼字符集中定義了大小寫英文字母、標(biāo)點(diǎn)符號和數(shù)字等字符和符號,共128個(gè)。計(jì)算機(jī)內(nèi)部用一個(gè)字節(jié)來存放一個(gè)ASCII碼字符,最高位用0表示。例如,“A” 的ASCII碼為01000001,即65。堂用的ASCII碼如表3.13 所示2. Unicode碼Unicode是為了解決傳統(tǒng)字符編碼方案的局限性而產(chǎn)生的。例如, 它可以用兩個(gè)字節(jié)來表示一個(gè)符號,這樣就有2的l6次方(65536)種不同的二進(jìn)制編碼,能表示很多國家的常用字。目前,Unicode還可以用更多字節(jié)來對字符進(jìn)行編碼。為了簡化ASCII與Unicode之間的轉(zhuǎn)換,Unicode的設(shè)計(jì)者還使其兼容ASCII碼。原來用ASCII碼能表示的字符,其對應(yīng)的Unicode碼只是在原來的ASCII碼前加上8個(gè)0。比如,“a” 的ASCII碼是01100001,而它的Unicode碼是000000001100001。計(jì)算機(jī)要處理漢字,必須對漢字進(jìn)行編碼,顯然每個(gè)漢字至少需要兩個(gè)字節(jié)。我國先后制定了多個(gè)漢字編碼方案:(1)GB2312- 1980字符集共收錄6763個(gè)漢字,其中一級漢字3755個(gè),二級漢字3008個(gè);同時(shí)收錄了包括拉丁字母、希臘字母等在內(nèi)的682個(gè)字符;(2)GBK字符集,兼容GB2312-1980標(biāo)準(zhǔn),收入21003個(gè)漢字,883個(gè)符號,共計(jì)21886個(gè)字符; (3)GB18030-2000字符集,包含GBK字符集和CJK統(tǒng)一漢字?jǐn)U充A的漢字,共計(jì)27533個(gè)漢字; (4)GB18030- 2005字符集,在GB18030-2000的基礎(chǔ)上,增加了CJK統(tǒng)一漢字?jǐn)U充B的漢字及其他漢字,共計(jì)70244個(gè)漢字。Unicode字符集,是全球可以共享的編碼字符集,涵蓋了世界上主要文字的字符,其中包括簡繁體漢字,共計(jì)74686個(gè)漢字。如漢字“男”的Unicode編碼為30007(十進(jìn)制),用十六進(jìn)制表示為7537,用二進(jìn)制表示為0111010100110111。3.2 數(shù)據(jù)與結(jié)構(gòu)A、數(shù)據(jù)類型數(shù)據(jù)類型用來定義一系列值及應(yīng)用于這些值的一系列操作。比如,在Python語言中,有整數(shù)、浮點(diǎn)數(shù)、字符串、布爾等數(shù)據(jù)類型。整數(shù)類型的范圍幾乎僅受內(nèi)存限制,能夠進(jìn)行加、減、乘、除等多種計(jì)算操作。大多數(shù)程序設(shè)計(jì)語言都定義了兩類數(shù)據(jù)類型:簡單數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型。簡單數(shù)據(jù)類型不能分解成更小的數(shù)據(jù)類型,復(fù)合數(shù)據(jù)類型則由簡單數(shù)據(jù)類型或者復(fù)合數(shù)據(jù)類型組成。在Python語言中,整數(shù)、浮點(diǎn)數(shù)、字符串、布爾屬于簡單數(shù)據(jù)類型,列表、字典等屬于復(fù)合數(shù)據(jù)類型。訂單數(shù)據(jù)中的商品名稱可以抽象為字符串類型的數(shù)據(jù),是一個(gè)基本數(shù)據(jù)項(xiàng),商品數(shù)量可以抽象為整數(shù)類型的數(shù)據(jù),也是一個(gè)基本數(shù)據(jù)項(xiàng)。每個(gè)訂單數(shù)據(jù)包括商品名稱、單價(jià)、數(shù)量、金額、收貨地址等基本數(shù)據(jù)項(xiàng),所以訂單數(shù)據(jù)需要抽象為復(fù)合數(shù)據(jù)類型。如圖3.2.1(a)所示的訂單數(shù)據(jù)用Python的列表存儲,列表名稱為OrderList。OrderList=["2374761814130XXX","語文:生命的,文學(xué)的,美學(xué)的",34.66]列表中前兩個(gè)數(shù)據(jù)是字符串類型,最后一項(xiàng)是浮點(diǎn)數(shù)類型。我們還可以把很多訂單數(shù)據(jù)排列在一起,形成訂單表,用更復(fù)雜的列表存儲。B、數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)是存在特定關(guān)系的數(shù)據(jù)元素的集合。在解決有些問題時(shí),一些相關(guān)聯(lián)的數(shù)據(jù)將集中在一起,形成一個(gè)數(shù)據(jù)的集合,這種集合能夠單獨(dú)或作為一個(gè)整體被訪問和處理。C、線性數(shù)據(jù)結(jié)構(gòu)線性數(shù)據(jù)結(jié)構(gòu)又稱為線性表。在線性數(shù)據(jù)結(jié)構(gòu)中,除首元素沒有前趨元素、尾元素沒有后繼元素外,其他元素都只有一個(gè)前趨元素和一個(gè)后繼元素,如圖3.2.2所示。線性表中數(shù)據(jù)元素之間是一對一的關(guān)系。D、隊(duì)列隊(duì)列是一種有限制的線性結(jié)構(gòu),它的數(shù)據(jù)元素只能在一端依次添加(進(jìn)隊(duì)),在另一端依次刪除(出隊(duì))。典型的例子如超市里排隊(duì)付款的隊(duì)伍。許多程序設(shè)計(jì)語言定義了復(fù)雜數(shù)據(jù)類型,以實(shí)現(xiàn)對數(shù)據(jù)結(jié)構(gòu)更高層級的抽象。復(fù)雜數(shù)據(jù)類型可以封裝并隱藏?cái)?shù)據(jù)結(jié)構(gòu)中的操作細(xì)節(jié),讓程序設(shè)計(jì)者更多地關(guān)注數(shù)據(jù)結(jié)構(gòu)能做什么,便于利用數(shù)據(jù)結(jié)構(gòu)解決問題。Python中的列表數(shù)據(jù)類型,可以實(shí)現(xiàn)線性結(jié)構(gòu)組織的數(shù)據(jù)元素的存儲和操作。列表的使用者只需要知道列表上有哪些可用的操作,而不需要知道這些操作是如何進(jìn)行的。比如在上述代碼中,listque是列表類型的數(shù)據(jù),存放了一組字符串類型的數(shù)據(jù),表示訂單編號。我們可以通過對應(yīng)的方法對列表進(jìn)行操作:pop(0)方法可以刪除列表的首元素,append方法可以在列表尾部添加一個(gè)數(shù)據(jù)元素。利用列表,我們可以模擬隊(duì)列中數(shù)據(jù)元素進(jìn)隊(duì)和出隊(duì)的操作。E、樹結(jié)構(gòu)樹結(jié)構(gòu)是一種具有層次關(guān)系的非線性結(jié)構(gòu)。樹是由n(n≥0)個(gè)節(jié)點(diǎn)組成的有限集合。若n=0,則稱為空樹。任何一個(gè)非空樹均滿足以下兩個(gè)條件: (1)僅有一個(gè)稱為根的節(jié)點(diǎn);(2) 當(dāng)n>0時(shí),其余節(jié)點(diǎn)可分為m ( m≥0)個(gè)互不相交的有限集合,其中每個(gè)集合又是一棵樹,并稱為根的子樹。在圖3.2.3中,節(jié)點(diǎn)A為根節(jié)點(diǎn),B、C、D為A的子樹的根節(jié)點(diǎn)。同理,E、F、G是B的子樹的根節(jié)點(diǎn),B是E、F、G的父節(jié)點(diǎn)。在樹結(jié)構(gòu)中,數(shù)據(jù)元素之間是一對多的關(guān)系。快遞到達(dá)目的地城市后,物流圖的結(jié)構(gòu)呈樹狀,如圖3.2.4所示。F、圖結(jié)構(gòu)圖結(jié)構(gòu)是由一組節(jié)點(diǎn)(稱為頂點(diǎn))和一組節(jié)點(diǎn)間的連線(稱為邊或弧)構(gòu)成的一種數(shù)據(jù)結(jié)構(gòu)。圖結(jié)構(gòu)中的每個(gè)頂點(diǎn)都可以與其他頂點(diǎn)有邊相連,圖結(jié)構(gòu)中數(shù)據(jù)元素之間是多對多的關(guān)系。圖3.2.6表示的是商品從供貨點(diǎn)到收貨點(diǎn)的派送過程的圖結(jié)構(gòu)。圖3.2.7也是一個(gè)圖結(jié)構(gòu),其中,標(biāo)為“1”的頂點(diǎn)與兩條邊相連,頂點(diǎn)“4”與“2”“8”“9”相連。在物流網(wǎng)絡(luò)中,分撥中心、配送中心、貨物需求點(diǎn)等可以抽象為圖的頂點(diǎn),城市道路、各級鐵路等可以抽象為圖的邊,如城市以及城市之 間的運(yùn)輸?shù)缆肪褪菆D結(jié)構(gòu)。利用圖結(jié)構(gòu),我們還可以解決物流中的許多問題,如道路網(wǎng)絡(luò)分析、車輛運(yùn)營安排等。某同學(xué)網(wǎng)購的書已經(jīng)到達(dá)家附近的快遞門店,需要他自己去取。不巧的是,這次購買的三本書是三個(gè)不同的物流公司派送的,他家與各快遞門店的位置如圖3.2.8所示。下圖可以更清晰地知道數(shù)據(jù)間的關(guān)系,從而解決問題。(在圖3.2.9中,每條邊上的數(shù)值表示兩個(gè)位置間的步行時(shí)間,稱為邊的"權(quán)”,這樣的圖稱為“加權(quán)圖”)從起點(diǎn)出發(fā),把當(dāng)前可以到達(dá)的下一個(gè)位置列舉出來,再從列舉出的新位置出發(fā),繼續(xù)列舉下一步可以到達(dá)的位置,以此類推,直到返回起點(diǎn)。我們把所有可能的做法用圖形描述,如圖3.2. 10所示,圖下方圓圈中的數(shù)值是該走法的總用時(shí)。我們發(fā)現(xiàn),分析過程的圖形是樹結(jié)構(gòu),樹中的節(jié)點(diǎn)表示當(dāng)前所在的位置,邊表示選擇的線路。利用樹結(jié)構(gòu),我們能夠更清晰地實(shí)現(xiàn)不重復(fù)、不遺漏地列舉所有做法,更利于通過比較得到最優(yōu)解。3.3數(shù)據(jù)與系統(tǒng)1、圖形用戶界面圖形用戶界面(Graphical User Interface,GUI )又稱圖形用戶接口,是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。在Python語言中,tkinter是實(shí)現(xiàn)圖形用戶界面的模塊,可以快速創(chuàng)建GUI應(yīng)用程序。我們需要先導(dǎo)人模塊,上面所示的代碼用“from tkinter import*”導(dǎo)人tkinter模塊,然后就可以運(yùn)用相應(yīng)代碼創(chuàng)建矩形容器(Frame)、文本框(Entry)、命令按鈕(Button)、文本標(biāo)簽(Label)等交互對象。在現(xiàn)代程序設(shè)計(jì)中,我們用“對象”建立計(jì)算機(jī)世界的實(shí)體與客觀世界的實(shí)體相一致的映射關(guān)系,問題的解決方案可以用一些彼此交互的對象來形象化表示。比如在“旅行線路”例子中,我們利用Python提供的按鈕類創(chuàng)建按鈕對象,通過單擊按鈕的交互方式完成代碼的執(zhí)行過程。示例:將以下旅行線路“桂林市區(qū)一龍脊梯田一漓江漂流一騎行之旅一遇龍河漂流。”添加至“旅行線路.txt”文本中在面向過程的程序設(shè)計(jì)中,我們關(guān)注的是各種類型的數(shù)據(jù)及其操作;而在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,我們將數(shù)據(jù)及其操作隱藏細(xì)節(jié)后封裝為類,函數(shù)調(diào)用式的計(jì)算演變?yōu)閷ο笾g的交互。2、文件在解決問題的過程中,我們可以根據(jù)需要將數(shù)據(jù)組織在--起形成 隊(duì)列、樹或圖等邏輯結(jié)構(gòu),這時(shí)的數(shù)據(jù)一般存儲在內(nèi)存中,當(dāng)退出程序時(shí),相關(guān)數(shù)據(jù)也將丟失。如果需要更持久地存儲數(shù)據(jù),我們可以將數(shù)據(jù)以文件的形式存儲到外存儲設(shè)備中。“線路數(shù)據(jù)”是用文件的形式存儲在計(jì)算機(jī)的磁盤里的。文件是存儲在外存儲設(shè)備中的相關(guān)數(shù)據(jù)的集合。3、Python讀寫文本文件在Python語言中,用open函數(shù)把外存儲器里的文本文件( .txt)打開,用write方法將內(nèi)存中的數(shù)據(jù)存儲到外存儲器的文件中,文件操作結(jié)束時(shí)一定要用close方法關(guān)閉文件。Python還提供了讀寫電子文檔和電子表格等多種類型文件的模塊,可以很方便地建立起不同計(jì)算工具間的聯(lián)系。在數(shù)據(jù)管理技術(shù)的發(fā)展歷程中,文件的使用有助于長期保存數(shù)據(jù),并且實(shí)現(xiàn)由專門的軟件對數(shù)據(jù)進(jìn)行管理,從而減輕人工管理數(shù)據(jù)的負(fù)擔(dān)。數(shù)據(jù)的存儲傳統(tǒng)上是使用單獨(dú)的沒有關(guān)聯(lián)的文件。將一些文件建立關(guān)聯(lián),形成數(shù)據(jù)庫文件。4、數(shù)據(jù)庫在日常生活中,我們通常用電子表格軟件來管理數(shù)據(jù)。但電子表格軟件中的表是有行數(shù)限制的,而且在多人共享和聯(lián)表查詢方面也存在不足,因此當(dāng)數(shù)據(jù)量比較大,且管理比較復(fù)雜時(shí)便需要采用更科學(xué)的數(shù)據(jù)管理方法。數(shù)據(jù)庫是以一定的組織方式存儲在計(jì)算機(jī)中的相互關(guān)聯(lián)的數(shù)據(jù)集合。5、數(shù)據(jù)表圖3.3.4在數(shù)據(jù)庫中,數(shù)據(jù)是以二維表的形式組織存儲的稱為表。以如圖3.3.4所示的“武漢至成都車次”表為例,表中的一列稱為一個(gè)字段,一個(gè)字段對應(yīng)車次實(shí)體的一個(gè)屬性,每個(gè)字段都有一個(gè)名字,稱為字段名,如車次編號、出發(fā)站等。表中的一行稱為一條記錄, 一條記錄對應(yīng)于一個(gè)車次實(shí)體,保存有關(guān)實(shí)體屬性的數(shù)據(jù)。可以唯一確定一條記錄的字段稱為主鍵,如車次編號。若千個(gè)車次數(shù)據(jù)的集合就組成了“武漢至成都車次”表。我們可以對數(shù)據(jù)表進(jìn)行插入、刪除、更新等操作。需要指出的是,數(shù)據(jù)庫中的表與表之間也可以是相互關(guān)聯(lián)的。為不同表中的兩個(gè)字段建立關(guān)聯(lián)后,兩表中的記錄就可以通過這個(gè)關(guān)系聯(lián)系在一起。比如,在圖3.3.4所示的兩個(gè)表中,換乘站既是前段車程的到達(dá)站,又是下段車程的出發(fā)站,可以通過這一點(diǎn)建立關(guān)系。6、數(shù)據(jù)庫管理系統(tǒng)在數(shù)據(jù)庫技術(shù)中,數(shù)據(jù)是如何被科學(xué)地組織和存儲的 又是如何被高效地獲取和維護(hù)的 完成這些任務(wù)的是一個(gè)系統(tǒng)軟件一數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫管理系統(tǒng)是定義、創(chuàng)建、維護(hù)數(shù)據(jù)庫的一種工具。它允許用戶管理和控制數(shù)據(jù)庫中的數(shù)據(jù)。常見的數(shù)據(jù)庫管理系統(tǒng)有Sybase、ORACLE、MySQL、Access等 。關(guān)系就像繩子將兩個(gè)“表”聯(lián)結(jié)在一起,我們可以利用“查詢”面板中的“查詢設(shè)計(jì)”選項(xiàng)按照提示創(chuàng)建選擇查詢,得到查詢結(jié)果。但查詢結(jié)果并不一定理想,比如沒有考慮換乘時(shí)間的合理性等。武漢三個(gè)火車站之間利用地鐵換乘,大約用時(shí)半小時(shí)。為此,修改查詢表達(dá)式為:SELECT廈門至武漢車次.*,武漢至成都車次.*FROM廈門至武漢車次INNER JOIN武漢至成都車次ON廈門至武漢車次.到達(dá)時(shí)間+0.05<武漢至成都車次.出發(fā)時(shí)間式中0.05的單位為天,即0.05*24小時(shí)=1 .2小時(shí),預(yù)留了武漢三站之間的換乘時(shí)間及在火車站的出站、進(jìn)站時(shí)間。執(zhí)行查詢,結(jié)果如圖3.3.6所示。在圖中,“廈武”為“廈門至武漢”的簡稱,“武成”為“武漢至成都”的簡稱。這個(gè)結(jié)果可以作為換乘方案。7、查詢準(zhǔn)則如果只是簡單地查找某個(gè)字段為特定值的記錄,只要在該字段對應(yīng)的“條件”欄中輸入該值即可,如果不僅是查找某個(gè)特定值,在準(zhǔn)則中可以使用表達(dá)式。在表達(dá)式中可通過操作符設(shè)置查詢范圍。數(shù)據(jù)庫的建立、使用和維護(hù)等工作僅靠數(shù)據(jù)庫管理系統(tǒng)還遠(yuǎn)遠(yuǎn)不夠,還要有專門的人員來完成,這些人被稱為數(shù)據(jù)庫管理員。數(shù)據(jù)庫管理員通過數(shù)據(jù)庫管理系統(tǒng)可以對數(shù)據(jù)庫進(jìn)行操作和維護(hù)。但對于廣大普通用戶來說,很難像專業(yè)的數(shù)據(jù)庫管理員那樣操作數(shù)據(jù)庫,而具有良好交互性的數(shù)據(jù)庫應(yīng)用系統(tǒng)可以滿足人們簡單、方便地使用數(shù)據(jù)的需求。8、數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)是由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其應(yīng)用開發(fā)工具)、數(shù)據(jù)庫應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員和用戶組成的存儲、管理、處理和維護(hù)數(shù)據(jù)的系統(tǒng)。數(shù)據(jù)庫主要用于存儲數(shù)據(jù),需要足夠大的內(nèi)存儲器和外存儲器等硬件平臺的支持。軟件部分除了操作系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)外,還包括支持特定應(yīng)用環(huán)境開發(fā)的軟件工具以及開發(fā)完成的數(shù)據(jù)庫應(yīng)用系統(tǒng)。12306網(wǎng)站是一個(gè)大型數(shù)據(jù)庫應(yīng)用系統(tǒng),其他如各類財(cái)務(wù)管理系統(tǒng)、人事管理系統(tǒng)、圖書管理系統(tǒng)等軟件也都是數(shù)據(jù)庫應(yīng)用系統(tǒng)。設(shè)計(jì)數(shù)據(jù)庫應(yīng)用系統(tǒng)時(shí),我們一般自頂向下進(jìn)行。首先設(shè)計(jì)總體結(jié)構(gòu),然后再逐層深人,直至進(jìn)行每一個(gè)模塊的設(shè)計(jì)。我們需要先大體地勾畫出系統(tǒng)以及每個(gè)模塊大致的計(jì)算機(jī)處理流程,將頭腦中構(gòu)想的處理過程描述下來。比如,首先單擊“成員管理”按鈕,然后出現(xiàn)“成員管理”子窗口,利用該子窗口可以添加成員信息、修改成員信息和刪除成員信息...。 “旅行小助手系統(tǒng)”還可能包含“旅行記錄管理”“旅行線路管理”等模塊。根據(jù)處理過程,可以設(shè)計(jì)系統(tǒng)功能和相關(guān)界面。利用Python訪問Access數(shù)據(jù)庫一般可分為以下5個(gè)步驟:(1)建立與數(shù)據(jù)庫的連接;(2)根據(jù)需要產(chǎn)生記錄集;(3)訪問記錄集,處理數(shù)據(jù);(4)根據(jù)需要把處理好的數(shù)據(jù)更新到數(shù)據(jù)庫中;(5)斷開與數(shù)據(jù)庫的連接。數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)一般包括系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)、代碼設(shè)計(jì)、數(shù)據(jù)庫(文件)設(shè)計(jì)、輸人/輸出( I/O)設(shè)計(jì)、模塊功能與處理過程設(shè)計(jì)等步驟。“旅行小助手系統(tǒng)”在完成了系統(tǒng)界面設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì)之后,還需要經(jīng)過編寫應(yīng)用程序、調(diào)試等環(huán)節(jié)才能成為真正的應(yīng)用系統(tǒng)。3.4加密與解密1、密碼: 密碼是指用來核對用戶ID以驗(yàn)證用戶就是本人的一組字符。2、創(chuàng)建安全密碼的一般技巧使用長度不少于8個(gè)字符的密碼。密碼長度越長越不容易被破解。在可能的情況下,盡量使用字母、數(shù)字和特殊字符(如$、#)相結(jié)合的密碼。不要使用電話號碼、身份證號碼或生日等信息作為密碼。不要使用整個(gè)用戶ID或用戶ID的一部分作為密碼。不要使用字典中能找到的詞語作為密碼,即使是字母次序顛倒過來的常用詞語也不可以。●加密自古以來,在管理國家、指揮戰(zhàn)斗或是經(jīng)濟(jì)來往中,都需要高效、安全的數(shù)據(jù)通信系統(tǒng)。古人就已會用很多辦法將數(shù)據(jù)偽裝起來,使得只有聯(lián)絡(luò)好的數(shù)據(jù)接收者才能讀懂。比如,將數(shù)據(jù)刻在木板上,然后再覆上一層蠟,使其成為一個(gè)看上去很普通的刻寫板;使用一套尺寸不等、形狀各異的“陰符”,每支符都表示特定的含義等。這些都是數(shù)據(jù)的加密。加密就是將原始信息(數(shù)據(jù))隱匿起來,使之在缺少特殊信息(數(shù) 據(jù))時(shí)不可讀。原始信息(數(shù)據(jù))稱為明文,加密后的信息(數(shù)據(jù))稱為密文。將密文還原成明文的過程稱為解密(或解碼)●加法密碼加法密碼又被稱為移位密碼。在加法密碼算法中,明文中的所有字母都在字母表上向后(或向前)按照--個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文。例如,當(dāng)偏移量是3的時(shí)候,所有的字母A將被替換成D, B變成E,以此類推,X將變成A,Y變成B, Z變成C。愷撒密碼作為--種最為古老的對稱加密體制,在古羅馬的時(shí)候已經(jīng)很流行,它是加法密碼的典型代表。用Python語言實(shí)現(xiàn)加密算法時(shí),明文和密文都被抽象為字符串類型的數(shù)據(jù),Python中的字符串由一串字符組成,用引號引起來表示,比如“abCEd”。類似于列表的操作,我們可以指向或操作字符串中的某一個(gè)字符,比如c[0]表示字符串中的第一個(gè)字符。 我們還可以用Python系統(tǒng)函數(shù)對數(shù)據(jù)進(jìn)行特定的操作,len函數(shù)可以獲取字符串中字符的個(gè)數(shù),ord函數(shù)可以將字符類型的參數(shù)轉(zhuǎn)換為對應(yīng)的整數(shù)值,chr函數(shù)可以將整數(shù)類型的參數(shù)轉(zhuǎn)換為對應(yīng)的字符。了解密碼安全與加密、解密的技術(shù)能夠幫助我們保護(hù)個(gè)人隱私。同時(shí),我們也要從自己做起,遵守相關(guān)法律和必要的道德規(guī)范,共同維護(hù)健康、良好的數(shù)據(jù)環(huán)境。 展開更多...... 收起↑ 資源預(yù)覽 縮略圖、資源來源于二一教育資源庫