版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第9章
數(shù)據(jù)庫應(yīng)用開發(fā)系統(tǒng)案例分析9.1需求分析9.2數(shù)據(jù)庫設(shè)計(jì)9.3數(shù)據(jù)庫接口及訪問技術(shù)9.1需求分析第9章案例的應(yīng)用背景9.1.1
機(jī)動(dòng)車駕駛員考試是由公安局車管所舉辦的資格考試,只有通過駕駛員考試才能取得駕照,才能合法的駕駛機(jī)動(dòng)車輛。隨著我國經(jīng)濟(jì)社會(huì)高速發(fā)展,機(jī)動(dòng)車保有量不斷飆升,每年參加駕駛員考試的人數(shù)也在持續(xù)增長。駕駛員理論考試是機(jī)動(dòng)車駕駛員考試的一部分,題型分為判斷題和選擇題,傳統(tǒng)紙質(zhì)化考試整個(gè)環(huán)節(jié)中有大量的重復(fù)性工作,包括出卷、印卷、安排線下考試地點(diǎn)、監(jiān)考、批改閱卷、登記分?jǐn)?shù)等等,使得駕考中心、駕校培訓(xùn)中心人工壓力巨大。借助信息化的手段和方法設(shè)計(jì)在線考試系統(tǒng),可有效提高考試效率,實(shí)現(xiàn)考試人員理論水平的準(zhǔn)確、全面的測評(píng)。
本章設(shè)計(jì)實(shí)現(xiàn)了一個(gè)簡單的駕駛員理論考試系統(tǒng)。本系統(tǒng)解決了以往出題、印試卷,批改試卷等繁瑣的工作,實(shí)現(xiàn)用戶管理、試題庫管理、試卷管理和隨機(jī)出卷、自動(dòng)閱卷等功能,降低駕考中心、駕校培訓(xùn)中心的人力、物力投入,及時(shí)、準(zhǔn)確地反映考生、學(xué)員的學(xué)習(xí)或考試情況。9.1.3數(shù)據(jù)需求分析第9章該系統(tǒng)主要提供給學(xué)員(考生)和管理員使用,系統(tǒng)功能模塊圖如圖所示。(1)學(xué)員模塊應(yīng)該實(shí)現(xiàn)的功能:查詢考試通知、考試管理、查詢成績信息、修改個(gè)人信息。(2)管理員模塊應(yīng)該實(shí)現(xiàn)的功能:通知管理、學(xué)員管理、試題管理、試卷管理、考試記錄管理、成績統(tǒng)計(jì)分析。生根據(jù)時(shí)間預(yù)約考試,考試中學(xué)員隨機(jī)抽取一張?jiān)嚲碜鞔穑粡堅(jiān)嚲碛啥嗟涝囶}組織;每位學(xué)員允許多次預(yù)約考試,即學(xué)員可作答多張?jiān)嚲怼R髲南到y(tǒng)中可以查詢以下信息。包括試題號(hào)、試題類型、題干、選項(xiàng)、難度等級(jí)、正確答案、分值、答案解析。包括試卷號(hào)、試卷名稱、考試時(shí)長、創(chuàng)建時(shí)間、科目類型。學(xué)生作答試卷可以看到所屬該試卷的所有試題。包括考試編號(hào)、學(xué)員號(hào)、試卷號(hào)、考試開始時(shí)間、考試結(jié)束時(shí)間、成績。包括考試編號(hào)和學(xué)員作答每道題的答案。學(xué)員的基本信息試題的基本信息試卷的基本信息考試的基本信息考試記錄的基本信息9.1.3數(shù)據(jù)需求分析第9章69.2數(shù)據(jù)庫設(shè)計(jì)第9章概念結(jié)構(gòu)設(shè)計(jì)9.2.1
本系統(tǒng)中抽象出來的實(shí)體有四個(gè),分別是學(xué)員、試題、試卷、考試。四個(gè)實(shí)體的實(shí)體屬性情況,如圖9-2~圖9-5所示,其中學(xué)員號(hào)是學(xué)員實(shí)體的主鍵、試題號(hào)是試題實(shí)體的主鍵、試卷號(hào)是試卷實(shí)體的屬性、考試編號(hào)是考試實(shí)體的屬性,在圖中對(duì)應(yīng)屬性下加了下劃線。
根據(jù)前面對(duì)駕駛員理論老師系統(tǒng)的需求分析,我們對(duì)分析結(jié)果中的信息進(jìn)行進(jìn)一步整理、組織,抽象成系統(tǒng)中的概念模型。9.2.1概念結(jié)構(gòu)設(shè)計(jì)第9章學(xué)員實(shí)體屬性圖試題實(shí)體屬性圖9.2.1概念結(jié)構(gòu)設(shè)計(jì)第9章試卷實(shí)體屬性圖考試實(shí)體屬性圖9.2.1概念結(jié)構(gòu)設(shè)計(jì)第9章管理員E-R圖根據(jù)需求分析的結(jié)果,可以先得到系統(tǒng)的局部E-R圖學(xué)員-考試E-R圖學(xué)員-考試E-R圖學(xué)員-考試E-R圖9.2.1概念結(jié)構(gòu)設(shè)計(jì)第9章合并分E-R圖的過程中,要合理消除各個(gè)分E-R圖中的沖突,即消除屬性沖突、命名沖突和結(jié)構(gòu)沖突,最終得到駕駛員理論考試系統(tǒng)的全局E-R圖9.2.2邏輯結(jié)構(gòu)設(shè)計(jì)第9章把系統(tǒng)的E-R圖轉(zhuǎn)換成數(shù)據(jù)庫關(guān)系模式如下:學(xué)員表(學(xué)員號(hào),姓名,性別,身份證,手機(jī)號(hào),創(chuàng)建時(shí)間,密碼,郵箱)試題表(試題號(hào),試題類型,題干,選項(xiàng),難度等級(jí),正確答案,答案解析)試卷表(試卷號(hào),試卷名稱,答卷時(shí)長,創(chuàng)建時(shí)間,科目類型,試卷狀態(tài))考試表(考試編號(hào),學(xué)員號(hào),試卷號(hào),考試開始時(shí)間,考試結(jié)束時(shí)間,成績)試卷試題表(試卷號(hào),試題號(hào),試題序號(hào),分值)考試記錄表(考試編號(hào),試題號(hào),學(xué)員答案,得分)9.2.2邏輯結(jié)構(gòu)設(shè)計(jì)第9章
學(xué)員表(t_user)字段名稱類型是否非空字段說明user_idbigint是學(xué)員號(hào),主鍵create_timetimestamp
創(chuàng)建時(shí)間passwordvarchar(64)是密碼namevarchar(30)是姓名sexchar(3)
性別telephonechar(11)
手機(jī)emailvarchar(20)
郵箱identificationchar(28)
身份證字段名稱類型是否非空字段說明subject_idbigint是試題號(hào),主鍵titlevarchar(255)
題干optionAvarchar(255)
選項(xiàng)AoptionBvarchar(255)
選項(xiàng)BoptionCvarchar(255)
選項(xiàng)CoptionDvarchar(255)
選項(xiàng)Dcorrect_answerint
正確答案answer_explanationvarchar(255)
答案解析typeint
試題類型difficulty_levelint
難度等級(jí)
試題表(subject)9.2.2邏輯結(jié)構(gòu)設(shè)計(jì)第9章
試卷表(paper)
考試表(exam)字段名稱類型是否非空字段說明paper_idbigint是試卷號(hào),主鍵create_timetimestamp
創(chuàng)建時(shí)間namevarchar(255)是試卷名稱durationint
答卷時(shí)長(分鐘)typeint
科目類型字段名稱類型是否非空字段說明exam_idbigint是考試編號(hào),主鍵start_timetimestamp
開始時(shí)間end_timetimestamp
結(jié)束時(shí)間user_idbigint
學(xué)員號(hào),外鍵paper_idbigint
試卷號(hào),外鍵scoreint
成績9.2.2邏輯結(jié)構(gòu)設(shè)計(jì)第9章
試卷試題表(exam_paper)
考試記錄表(record)字段名稱類型是否非空字段說明paper_idbigint是試卷號(hào),復(fù)合主鍵,外鍵question_idbigint是試題號(hào),復(fù)合主鍵,外鍵numberint
試題序號(hào)valueint
分值字段名稱類型是否非空字段說明exam_idbigint是考試編號(hào),復(fù)合主鍵,外鍵subject_idbigint是試題號(hào),復(fù)合主鍵,外鍵user_answerint
學(xué)員答案pointint
得分9.2.3物理結(jié)構(gòu)設(shè)計(jì)第9章
創(chuàng)建9.2.2節(jié)各個(gè)基本表的代碼如下。
CREATETABLEsubject(subject_idBIGINTNOTNULL,titleVARCHAR(255)NOTNULL,optionAVARCHAR(255),optionBVARCHAR(255),optionCVARCHAR(255),optionDVARCHAR(255),correct_answerINT,answer_explanationVARCHAR(255),typeINT,difficulty_levelINT,PRIMARYKEY(subject_id))CREATETABLEt_user(user_idBIGINTNOTNULL,create_timeTIMESTAMP,passwordVARCHAR(64)NOTNULL,nameVARCHAR(30)NOTNULL,sexCHAR(3),telephoneCHAR(11),emailVARCHAR(20),identificationCHAR(28),PRIMARYKEY(user_id))9.2.3物理結(jié)構(gòu)設(shè)計(jì)第9章
創(chuàng)建9.2.2節(jié)各個(gè)基本表的代碼如下。
CREATETABLEpaper(paper_idBIGINTNOTNULL,create_timeTIMESTAMP,nameVARCHAR(255)NOTNULL,durationINT,typeINT,PRIMARYKEY(paper_id))CREATETABLEexam(exam_idBIGINTNOTNULL,start_timeTIMESTAMP,end_timeTIMESTAMP,user_idBIGINT,paper_idBIGINT,scoreINT,PRIMARYKEY(exam_id),FOREIGNKEY(user_id)REFERENCESt_user(user_id),FOREIGNKEY(paper_id)REFERENCESpaper(paper_id))9.2.3物理結(jié)構(gòu)設(shè)計(jì)第9章
創(chuàng)建9.2.2節(jié)各個(gè)基本表的代碼如下。
CREATETABLEexam_paper(paper_idBIGINTNOTNULL,subject_idBIGINTNOTNULL,numberINT,valueINT,PRIMARYKEY(paper_id,subject_id),FOREIGNKEY(subject_id)REFERENCESsubject(subject_id),FOREIGNKEY(paper_id)REFERENCESpaper(paper_id))CREATETABLErecord(exam_idBIGINTNOTNULL,subject_idBIGINTNOTNULL,user_answerINT,pointINT,PRIMARYKEY(exam_id,subject_id),FOREIGNKEY(subject_id)REFERENCESsubject(subject_id),FOREIGNKEY(exam_id)REFERENCESexam(exam_id))9.3數(shù)據(jù)庫接口及訪問技術(shù)第9章JAVA語言訪問KingBaseES數(shù)據(jù)庫9.3.1JDBC是Java數(shù)據(jù)連接技術(shù)(JavaDatabaseConnection)的簡稱,是JAVA語言連接任何關(guān)系型數(shù)據(jù)的通用API,提供連接各種常用數(shù)據(jù)庫的能力。KingbaseESJDBC是純Java的JDBC驅(qū)動(dòng)程序,它支持SUNJDBC3.0和部分4.0API的標(biāo)準(zhǔn)。通過JDBC接口對(duì)象,應(yīng)用程序可以完成與數(shù)據(jù)庫的連接、執(zhí)行SQL語句、從數(shù)據(jù)庫中獲取結(jié)果、狀態(tài)及錯(cuò)誤信息、終止事務(wù)和連接等。9.3.1JAVA語言訪問KingBaseES數(shù)據(jù)庫第9章
在使用KingbaseESJDBC訪問和操縱KingbaseES數(shù)據(jù)庫前,首先要成功安裝驅(qū)動(dòng)程序,步驟如下:
(2)在JavaProject項(xiàng)目應(yīng)用中添加數(shù)據(jù)庫驅(qū)動(dòng)kingbase8-8.2.0.jar。(1)獲取KingbaseESJDBC驅(qū)動(dòng)程序。KingbaseESJDBC驅(qū)動(dòng)下載地址為:/KES/07-jiekouqudong/JDBC.rar,下載解壓后包括三個(gè)版本文件:kingbase8-8.2.0.jre6.jar、kingbase8-8.2.0.jre7.jar、kingbase8-8.2.0.jar,分別是對(duì)應(yīng)JDK1.6;JDK1.7;JDK1.8及以上的版本,JDK1.8及以上的版本由于相對(duì)穩(wěn)定使用最為廣泛。9.3.1JAVA語言訪問KingBaseES數(shù)據(jù)庫第9章
在使用KingbaseESJDBC訪問和操縱KingbaseES數(shù)據(jù)庫前,首先要成功安裝驅(qū)動(dòng)程序,步驟如下:
與數(shù)據(jù)庫建立連接的標(biāo)準(zhǔn)方法是調(diào)用DriverManager.getConnection方法。DriverManager類存有已注冊(cè)的Driver類清單,當(dāng)調(diào)用方法getConnection時(shí),它將檢查清單中的每個(gè)驅(qū)動(dòng)程序,直到找到可與URL(在KingbaseESJDBC中,數(shù)據(jù)庫是用URL表示的)中指定的數(shù)據(jù)庫進(jìn)行連接的驅(qū)動(dòng)程序?yàn)橹?。?)建立數(shù)據(jù)庫連接??梢酝ㄟ^DriverManager或者DataSource連接數(shù)據(jù)庫,下面介紹使用DriverManager連接數(shù)據(jù)庫。首先加載KingbaseESJDBC,數(shù)據(jù)庫驅(qū)動(dòng)類是com.kingbase8.Driver。Class.forName("com.kingbase8.Driver");
9.3.1JAVA語言訪問KingBaseES數(shù)據(jù)庫第9章
(2)創(chuàng)建語句對(duì)象。數(shù)據(jù)庫連接一旦建立,就可向數(shù)據(jù)庫傳送SQL語句。KingbaseESJDBC提供了三個(gè)類,用于向數(shù)據(jù)庫發(fā)送SQL語句,Connection接口中的三個(gè)方法可用于創(chuàng)建這些類的實(shí)例:①Statement對(duì)象:由方法createStatement所創(chuàng)建,用于發(fā)送簡單的SQL語句。②PreparedStatement對(duì)象:由方法prepareStatement所創(chuàng)建,用于發(fā)送帶有一個(gè)或多個(gè)輸入?yún)?shù)(IN參數(shù))的SQL語句。CallableStatement對(duì)象:由方法prepareCall所創(chuàng)建,用于執(zhí)行SQL存儲(chǔ)過程。9.3.1JAVA語言訪問KingBaseES數(shù)據(jù)庫第9章
(3)執(zhí)行查詢并返回結(jié)果集對(duì)象。建立服務(wù)器連接后,就可以在該連接上執(zhí)行查詢語句,并返回結(jié)果集對(duì)象。Statement接口提供了三種執(zhí)行SQL語句的方法:execute方法用于執(zhí)行返回多個(gè)結(jié)果集或更新多個(gè)元組的SQL語句。②executeQuery方法用于執(zhí)行返回單個(gè)結(jié)果集的SQL語句。③executeUpdate方法用于執(zhí)行含有INSERT、UPDATE或DELETE語句或者不返回任何內(nèi)容的SQL語句,如DDL語句。下面以使用preparedStatement對(duì)象和executeQuery方法為例:PreparedStatementpsta=conn.prepareStatement();ResultSetrs=psta.executeQuery("SELECT*FROMsubject");或:Sringsql=”SELECT*FROMsubject”;PreparedStatementpsta=conn.prepareStatement(sql);ResultSetrs=psta.executeQuery();9.3.1JAVA語言訪問KingBaseES數(shù)據(jù)庫第9章
(4)處理結(jié)果集對(duì)象。通過ResultSet中提供的各個(gè)定位函數(shù)使ResultSet指針指向?qū)嶋H要訪問的數(shù)據(jù)行,然后通過使用一套get方法讀取結(jié)果集中當(dāng)前行或列的值。while(rs.next())//next()方法將光標(biāo)從當(dāng)前位置向前移一行System.out.println(rs.getInt(1));(6)關(guān)閉與數(shù)據(jù)庫的連接。通過對(duì)連接對(duì)象conn調(diào)用close()方法,可關(guān)閉與數(shù)據(jù)庫的連接。((5)關(guān)閉結(jié)果集和語句對(duì)象。操作完成后,要將所有使用的JDBC對(duì)象全部關(guān)閉,以釋放JDBC資源。rs.close();psta.close();conn.close();9.3.2JDBC實(shí)例說明第9章
根據(jù)9.1~9.2節(jié)設(shè)計(jì)的駕駛員理論考試系統(tǒng),本節(jié)給出該系統(tǒng)部分模塊的實(shí)現(xiàn)界面代碼。
用戶登陸界面系統(tǒng)試題管理界面9.3.2JDBC實(shí)例說明第9章
根據(jù)9.1~9.2節(jié)設(shè)計(jì)的駕駛員理論考試系統(tǒng),本節(jié)給出該系統(tǒng)部分模塊的實(shí)現(xiàn)界面代碼。
系統(tǒng)試卷管理界面(1)獲取ksycopg2驅(qū)動(dòng)庫。ksycopg2驅(qū)動(dòng)庫下載地址為:/KES/07-jiekouqudong/Python.rar,下載解壓后包括四個(gè)版本文件,分別對(duì)應(yīng)Linux-x86、Linux-飛騰、Windows-64,根據(jù)系統(tǒng)配置選擇合適的版本。(2)將對(duì)應(yīng)Python版本的ksycopg2驅(qū)動(dòng)解壓后,把ksycopg2文件夾放在Python的模塊路徑中,如“/usr/lib/python36/site-packages”。9.3.3Python語言訪問KingBaseES數(shù)據(jù)庫第9章ksycopg2是Python操作Kingbase數(shù)據(jù)庫的驅(qū)動(dòng)庫,它支持完整的PythonDBAPI2.0標(biāo)準(zhǔn),擁有級(jí)別2的線程安全性能,即不同線程間可以共享模塊和連接。在使用ksycopg2庫訪問和操縱KingbaseES數(shù)據(jù)庫前,首先要成功配置驅(qū)動(dòng)庫,步驟如下:9.3.3Python語言訪問KingBaseES數(shù)據(jù)庫第9章
驅(qū)動(dòng)庫成功配置后,應(yīng)用程序使用ksycopg2來訪問和操縱KingbaseES數(shù)據(jù)庫的過程如下:
(2)創(chuàng)建語句對(duì)象,執(zhí)行查詢語句。使用cursor函數(shù)來獲取游標(biāo)對(duì)象,然后調(diào)用execute函數(shù)來發(fā)送查詢語句,并返回結(jié)果集對(duì)象。(1)建立數(shù)據(jù)庫連接。conn=ksycopg2.connect("dbname=EXAM_DBuser=SYSTEMpassword=SYSTEMhost=port=54321")或conn=ksycopg2.connect(database='EXAM_DB',user='SYSTEM',password='SYSTEM',host='54321',port='54321')cur=conn.cursor()cur.execute("SELECT*FROMsubject")//執(zhí)行查詢SQL語句或:cur=conn.cursor()cur.execute('CREATETABLEtest(idinteger,nameTEXT)')//執(zhí)行非查詢SQL語句cur.exeute("INSERTINTOtest(id,name)values(1,'John')")//執(zhí)行非查詢SQL語句9.3.3Python語言訪問KingBaseES數(shù)據(jù)庫第9章
(4)關(guān)閉結(jié)果集和與數(shù)據(jù)庫的連接。(3)處理結(jié)果集對(duì)象。使用fetchall函數(shù)可以獲取全部結(jié)果集,也可以使用fetchone函數(shù)獲取單行結(jié)果,若為空,將返回空列表。rows=cur.fetchall()forrowinrows:print(row)cur.close()conn.close();9.3.4ksycopg2實(shí)例說明第9章
//試題插入操作importksycopg2database="EXAM_DB"user="SYSTEM"password="SYSTEM"host=""port="54321"if__name__=="__
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 手機(jī)店合同協(xié)議
- 煤礦復(fù)工合同范本
- 苗木保障協(xié)議書
- 苗木運(yùn)輸協(xié)議合同
- 蔬菜供需協(xié)議書
- 認(rèn)養(yǎng)子女協(xié)議書
- 認(rèn)購更名協(xié)議書
- 設(shè)備合作協(xié)議書
- 設(shè)備競買協(xié)議書
- 設(shè)施共享協(xié)議書
- 文創(chuàng)創(chuàng)業(yè)IP打造與產(chǎn)品變現(xiàn)實(shí)戰(zhàn)方案2026年
- 2025年云南省人民檢察院聘用制書記員招聘(22人)筆試考試備考試題及答案解析
- 遼寧省名校聯(lián)盟2025年高三12月份聯(lián)合考試英語試卷(含答案詳解)
- 基于遙感技術(shù)的湘西土家族苗族自治州石漠化動(dòng)態(tài)監(jiān)測與深度解析
- 2025年本溪輔警招聘考試真題及答案詳解(典優(yōu))
- 西農(nóng)植物病理學(xué)課件
- 三級(jí)安全教育試題(公司級(jí)、部門級(jí)、班組級(jí))真題題庫
- 新生入學(xué)體檢協(xié)議書
- 鄭州鐵路職業(yè)技術(shù)學(xué)院單招網(wǎng)試題庫及答案
- 2025至2030全球及中國光學(xué)氣體成像(OGI)相機(jī)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報(bào)告
- 2025年甘肅省書記員考試試題及答案
評(píng)論
0/150
提交評(píng)論