數(shù)據(jù)庫(kù)課程設(shè)計(jì)--設(shè)計(jì)一個(gè)訂戶訂閱報(bào)刊的應(yīng)用系統(tǒng)_第1頁(yè)
數(shù)據(jù)庫(kù)課程設(shè)計(jì)--設(shè)計(jì)一個(gè)訂戶訂閱報(bào)刊的應(yīng)用系統(tǒng)_第2頁(yè)
數(shù)據(jù)庫(kù)課程設(shè)計(jì)--設(shè)計(jì)一個(gè)訂戶訂閱報(bào)刊的應(yīng)用系統(tǒng)_第3頁(yè)
數(shù)據(jù)庫(kù)課程設(shè)計(jì)--設(shè)計(jì)一個(gè)訂戶訂閱報(bào)刊的應(yīng)用系統(tǒng)_第4頁(yè)
數(shù)據(jù)庫(kù)課程設(shè)計(jì)--設(shè)計(jì)一個(gè)訂戶訂閱報(bào)刊的應(yīng)用系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)庫(kù)課程設(shè)計(jì) 班 級(jí) 軟件1001 學(xué) 號(hào) 3100608024 姓 名 張建彬 指導(dǎo)老師 辛燕 二零一二年 六 月 一、引言1目的課程設(shè)計(jì)為學(xué)生提供了一個(gè)既動(dòng)手又動(dòng)腦,獨(dú)立實(shí)踐的機(jī)會(huì),將課本上的理論知識(shí)和實(shí)際有機(jī)的結(jié)合起來,鍛煉學(xué)生的分析解決實(shí)際問題的能力。提高學(xué)生適應(yīng)實(shí)際,實(shí)踐編程的能力。課程設(shè)計(jì)的目的:1. 加深對(duì)數(shù)據(jù)庫(kù)系統(tǒng)、軟件工程、程序設(shè)計(jì)語(yǔ)言的理論知識(shí)的理解和應(yīng)用水平;2. 在理論和實(shí)驗(yàn)教學(xué)基礎(chǔ)上進(jìn)一步鞏固已學(xué)基本理論及應(yīng)用知識(shí)并加以綜合提高;3. 學(xué)會(huì)將知識(shí)應(yīng)用于實(shí)際的方法,提高分析和解決問題的能力,增強(qiáng)動(dòng)手能力;4. 為畢業(yè)設(shè)計(jì)和以后工作打下必要基礎(chǔ)。2題目設(shè)計(jì)一個(gè)訂戶訂閱報(bào)

2、刊的應(yīng)用系統(tǒng)。1. 處理要求l 接收并且處理訂戶的訂閱要求l 回答訂戶的查詢l 統(tǒng)計(jì)報(bào)刊的訂閱情況2. 信息要求l 訂單l 訂戶l 報(bào)刊目錄l 投遞卡具體數(shù)據(jù)參見附表數(shù)據(jù)語(yǔ)義:l 一個(gè)客戶可以訂閱多份報(bào)刊,一種報(bào)刊可以為多個(gè)客戶訂閱(客戶-訂閱-報(bào)刊,m:n)l 一種報(bào)刊可以投遞給多個(gè)客戶,一個(gè)客戶一次可以接受多種報(bào)刊的投遞(報(bào)刊-投遞-客戶,m:n)3. 系統(tǒng)功能包括:(在查詢和管理中各選一題)l 訂戶管理:訂戶的增加、修改、刪除;l 報(bào)刊目錄管理:報(bào)刊目錄的增加、刪除、修改;l 訂單管理:訂單的增加、刪除、修改;l 查詢訂單:按訂戶查詢訂單的詳細(xì)情況;l 統(tǒng)計(jì)查詢:統(tǒng)計(jì)報(bào)刊的訂閱數(shù)量及金額

3、。3要求運(yùn)用數(shù)據(jù)庫(kù)基本理論與應(yīng)用知識(shí),在微機(jī)RDBMS(SQL Server)的環(huán)境上建立一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。要求把現(xiàn)實(shí)世界的事物及事物之間的復(fù)雜關(guān)系抽象為信息世界的實(shí)體及實(shí)體之間聯(lián)系的信息模型,再轉(zhuǎn)換為機(jī)器世界的數(shù)據(jù)模型和數(shù)據(jù)文件,并對(duì)數(shù)據(jù)文件實(shí)施檢索、更新和控制等操作。 1. 用E-R圖設(shè)計(jì)選定題目的信息模型;2. 設(shè)計(jì)相應(yīng)的關(guān)系模型,確定數(shù)據(jù)庫(kù)結(jié)構(gòu);3. 分析關(guān)系模式各屬于第幾范式,闡明理由;4. 設(shè)計(jì)應(yīng)用系統(tǒng)的系統(tǒng)結(jié)構(gòu)圖,確定系統(tǒng)功能;5. 通過設(shè)計(jì)關(guān)系的主碼約束、外碼約束和使用CHECK實(shí)現(xiàn)完整性控制;6. 為參照關(guān)系設(shè)計(jì)插入、刪除、修改觸發(fā)器;7. 實(shí)現(xiàn)應(yīng)用程序設(shè)計(jì)、編程、優(yōu)化功能

4、;8. 對(duì)系統(tǒng)的各個(gè)應(yīng)用程序進(jìn)行集成和調(diào)試,進(jìn)一步優(yōu)化系統(tǒng)功能、改善系統(tǒng)用戶界面完成實(shí)驗(yàn)內(nèi)容所指定的各項(xiàng)要求;9. 分析遇到的問題,總結(jié)并寫出課程設(shè)計(jì)報(bào)告;10. 自我評(píng)價(jià)4開發(fā)工具及技術(shù)Mmicrosoft visual C+ 6.0Microsoft SQL server 2005系統(tǒng)的功能分析圖: 報(bào)刊訂閱系統(tǒng)訂戶管理報(bào)刊目錄管理訂單管理查詢訂單統(tǒng)計(jì)查詢?cè)黾佑啈魟h除訂戶更改訂戶增加報(bào)刊目錄刪除報(bào)刊目錄更改報(bào)刊目錄增加訂單刪除訂單更改訂單按訂戶查詢統(tǒng)計(jì)訂閱數(shù)量統(tǒng)計(jì)金額程序流程:本次實(shí)驗(yàn)的報(bào)刊預(yù)訂系統(tǒng)總體上可以分為5個(gè)功能模塊:訂戶管理,報(bào)刊目錄管理,訂單管理,查詢預(yù)訂,統(tǒng)計(jì)查詢。其中每一個(gè)

5、管理模塊包括了三個(gè)數(shù)據(jù)庫(kù)的操作,分別是增加 刪除 更改;查詢分為單用戶查詢和統(tǒng)計(jì)查詢。用戶可以根據(jù)功能選擇來按照自己的需要進(jìn)行操作。程序開始主菜單輸入選擇訂戶管理報(bào)刊目錄管理訂單管理統(tǒng)計(jì)查詢?cè)黾佑啈魟h除訂戶修改訂戶查詢訂戶退出增加報(bào)刊刪除報(bào)刊修改報(bào)刊查詢報(bào)刊退出增加訂單刪除訂單修改訂單查詢訂單退出按訂戶統(tǒng)計(jì)統(tǒng)計(jì)訂單概念結(jié)構(gòu)設(shè)計(jì)(E-R)圖l 說明:一個(gè)客戶可以訂閱多份報(bào)刊,一種報(bào)刊可以為多個(gè)客戶訂閱(客戶-訂閱-報(bào)刊,m:n)l 一種報(bào)刊可以投遞給多個(gè)客戶,一個(gè)客戶一次可以接受多種報(bào)刊的投遞(報(bào)刊-投遞-客戶,m:n)邏輯設(shè)計(jì)階段訂戶(編號(hào),姓名,住址)報(bào)刊目錄(代號(hào),名稱,刊期,單價(jià))訂單(

6、訂戶號(hào),報(bào)刊代號(hào),日期,起定期,終定期,份數(shù))投遞卡(訂戶號(hào),報(bào)刊代號(hào),期號(hào),份數(shù))在關(guān)系模型中,候選碼都用下劃線和加粗標(biāo)出。外碼用斜體標(biāo)出。其中訂單和投遞卡是訂戶表和報(bào)刊目錄的兩個(gè)聯(lián)系,都是多對(duì)多聯(lián)系。一個(gè)用戶可以訂閱不同報(bào)刊,同一種報(bào)刊可以被不同用戶訂閱。在訂戶關(guān)系中,訂戶號(hào)是主碼,非主屬性對(duì)碼完全依賴,不存在傳遞依賴,決定因素是碼,所以訂戶關(guān)系屬于BCNF范式。報(bào)刊目錄表中,報(bào)刊代號(hào)是主碼,非主屬性對(duì)碼完全依賴,不存在傳遞依賴,決定因素是碼,所以報(bào)刊目錄關(guān)系屬于BCNF范式。訂單表中,訂戶號(hào),日期,報(bào)刊代號(hào)共同組成其候選碼,一個(gè)用戶可以在不同時(shí)間訂閱同一本報(bào)刊,而其中,訂戶號(hào)和報(bào)刊代號(hào)均

7、是其外碼。非主屬性對(duì)碼完全依賴,不存在傳遞依賴,決定因素都包含碼,所以訂單冠以關(guān)系屬于BCNF范式。投遞卡表中,訂戶號(hào),報(bào)刊目錄,期號(hào)共同組成其候選碼。一個(gè)用戶可以訂閱同意報(bào)刊的不同期報(bào)刊。而其中訂戶號(hào)和報(bào)刊代號(hào)均是其外碼。非主屬性對(duì)碼完全依賴,不存在傳遞依賴,決定因素是碼,所以投遞卡關(guān)系屬于BCNF范式。3完整性設(shè)計(jì)在四個(gè)關(guān)系中都保持了實(shí)體完整性,主碼的唯一性。外碼沒有采用級(jí)聯(lián)刪除,保證了其參照完整新CHECK約束,限制了份數(shù)QTY必須大于等于0,價(jià)錢必須大于等于0; 開發(fā)工具簡(jiǎn)單說明:本次的實(shí)驗(yàn)是通過ODBC連接數(shù)據(jù)庫(kù),通過對(duì)數(shù)據(jù)庫(kù)的應(yīng)用程序的操作實(shí)現(xiàn)對(duì)數(shù)據(jù)源內(nèi)部的數(shù)據(jù)的查詢和更新,大大提

8、高了應(yīng)用系統(tǒng)與數(shù)據(jù)庫(kù)平臺(tái)的獨(dú)立性,使用ODBC使得應(yīng)用系統(tǒng)的移植變得更加容易,當(dāng)一個(gè)應(yīng)用系統(tǒng)從一個(gè)數(shù)據(jù)庫(kù)平臺(tái)移到另一個(gè)數(shù)據(jù)庫(kù)平臺(tái)只要更換ODBC的RDBMS的驅(qū)動(dòng)程序就可以。 配置數(shù)據(jù)源ODBC工作流程圖如下 初始化環(huán)境 建立連接 分配語(yǔ)句句柄 執(zhí)行SQL語(yǔ)句有無(wú)結(jié)果集有 中止 結(jié)果處理無(wú)報(bào)刊訂閱數(shù)據(jù)庫(kù)數(shù)據(jù)關(guān)系圖如下:系統(tǒng)主要功能實(shí)現(xiàn)(控制臺(tái)程序截圖):1. 修改訂戶2.增加訂戶3.增加報(bào)刊目錄5.統(tǒng)計(jì)查詢6.按用戶查詢7.修改報(bào)刊目錄程序代碼: #include #include #include #include / This is the the main include for ODB

9、C Core functions.#include / This is the include for applications using the Microsoft SQL Extensions#include / This file defines the types used in ODBC#include / This is the unicode include for ODBC Core functions#include / This is the application include file for the SQL Server driver specific defin

10、es.#include #include #include using namespace std;#define CNO_LEN 10#define NMNO_LEN 10#define ISSUE_LEN 10#define QTY_LEN 4#define DATE_LEN 10#define START_LEN 10#define TERM_LEN 10#define TITLE_LEN 20#define PERIOD_LEN 10#define PRICE_LEN 8#define NAME_LEN 10#define ADDR_LEN 20void back()int main(

11、)/*Step 1 定義句柄括和變量*/以wang開頭的表示的是連接wangjian的變量 SQLHENV dinghenv; /環(huán)境句柄括 SQLHDBC dinghdbc; /連接句柄括 SQLHSTMT dinghstmt; /語(yǔ)句句柄括 SQLRETURN ret;SQLDOUBLE PRICE;SQLINTEGER QTY;SQLCHAR CNOCNO_LEN,NMNONMNO_LEN,ISSUEISSUE_LEN,DATE1DATE_LEN,STARTSTART_LEN,TERMTERM_LEN, TITLETITLE_LEN,PERIODPERIOD_LEN,NAMENAME_L

12、EN,ADDRADDR_LEN;SQLINTEGER cbCNO=SQL_NTS,cbNMNO=SQL_NTS,cbISSUE=SQL_NTS,cbQTY=0,cbDATE1=SQL_NTS,cbSTART=SQL_NTS,cbTERM=SQL_NTS, cbTITLE=SQL_NTS,cbPERIOD=SQL_NTS,cbNAME=SQL_NTS,cbADDR=SQL_NTS;SQLINTEGER cbPRICE=0;int w,x,y,m,n;/*Step 2 初始化環(huán)境3*/loop:ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&d

13、inghenv);ret=SQLSetEnvAttr(dinghenv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);/*Step 3 建立連接*/ret=SQLAllocHandle(SQL_HANDLE_DBC,dinghenv,&dinghdbc);ret=SQLConnect(dinghdbc,(SQLWCHAR*)(_T(SQLServe),SQL_NTS,(SQLWCHAR*)(_T(sa),SQL_NTS,(SQLWCHAR*)(_T(123),SQL_NTS);if(!SQL_SUCCEEDED(ret) return -1;/*St

14、ep 4 初始化語(yǔ)句句柄括*/ret=SQLAllocHandle(SQL_HANDLE_STMT,dinghdbc,&dinghstmt);ret=SQLSetStmtAttr(dinghstmt,SQL_ATTR_ROW_BIND_TYPE,(SQLPOINTER)SQL_BIND_BY_COLUMN,SQL_IS_INTEGER);/*Step 5 執(zhí)行語(yǔ)句*/cout+訂戶訂閱報(bào)刊的應(yīng)用系統(tǒng)+endl;cout輸入需要操作的序號(hào)?endl;cout1、訂戶管理endl;cout2、報(bào)刊目錄管理endl;cout3、訂單管理endl;cout4、查詢訂單endl;cout5、統(tǒng)計(jì)查詢en

15、dl;cout6、退出w;switch(w)case 1:w=1; /*訂?戶管理?/ loop1:cout+訂戶管理+endl;cout1、增加訂戶endl;cout2、修改訂戶endl;cout3、刪除訂戶endl;cout4、返回上級(jí)x;switch(x)case 1:x=1; /*增?加訂?戶*/ SQLWCHAR CNO1CNO_LEN,NAME1NAME_LEN,ADDR1ADDR_LEN;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(INSERT INTO CUSTOMER(CNO,NAME,ADDR) VALUES(?,?,?), SQL_NT

16、S); /*輸?入?數(shù)簓據(jù)Y*/cout輸入插入數(shù)據(jù)(NO,NAME,ADDR)?CNO1;scanf(%s,NAME1); /cinNAME1;scanf(%s,ADDR1); /cinADDR1; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbCNO=SQL_NTS;cbNAME=SQL_NTS;cbADDR=SQL_NTS;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO1,0,&cbCNO);ret=SQLBindParam

17、eter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NAME_LEN,0,NAME1,0,&cbNAME);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,ADDR_LEN,0,ADDR1,0,&cbADDR);/*Step 6 處理結(jié)果集并執(zhí)行預(yù)編譯后的語(yǔ)句*/ret=SQLExecute(dinghstmt); goto loop1;case 2:x=2;/*修改訂戶*/ SQLWCHAR CNO2CNO_LEN,NAME2NAME_LEN,ADD

18、R2ADDR_LEN;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(UPDATE CUSTOMER SET NAME=?, ADDR=? WHERE CNO=?), SQL_NTS); /*輸入數(shù)據(jù)*/cout輸入修改數(shù)據(jù)(NO,NAME,ADDR)?CNO2;scanf(%s,NAME2); /cinNAME2;scanf(%s,ADDR2); /cinADDR2; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbCNO=SQL_NTS;cbNAME=SQL_NTS;cbADDR=SQL_NTS;ret=SQLB

19、indParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NAME_LEN,0,NAME2,0,&cbNAME);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,ADDR_LEN,0,ADDR2,0,&cbADDR);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO2,0,&cbCNO);/*Step 6 處理結(jié)果集并執(zhí)行預(yù)編譯

20、后的語(yǔ)句*/ret=SQLExecute(dinghstmt); goto loop1;case 3:x=3;/*刪除訂戶*/ SQLCHAR CNO3CNO_LEN; ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(DELETE FROM CUSTOMER WHERE CNO=?), SQL_NTS); /*輸入數(shù)據(jù)*/ cout輸入要?jiǎng)h除的訂戶號(hào)CNO3; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO) cbCNO=SQL_NTS; ret=SQLBindParameter(dinghstmt,1,SQL_PARA

21、M_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO3,0,&cbCNO); ret=SQLExecute(dinghstmt); goto loop1;case 4:x=4;goto loop; case 2:w=2;/*報(bào)刊目錄管理*/ loop2 :cout+報(bào)刊目錄管理+endl; cout1、增加報(bào)刊目錄endl; cout2、修改報(bào)刊目錄?endl; cout3、刪除報(bào)刊目錄endl; cout4、返回上級(jí)y; switch(y)case 1:y=1; /*增加報(bào)刊目錄*/ SQLWCHAR NMNO1NMNO_LEN,TITLE1TITLE_LEN,

22、PERIOD1PERIOD_LEN;SQLDOUBLE PRICE1;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(INSERT INTO NMTABLE(NMNO,TITLE,PERIOD,PRICE) VALUES(?,?,?,?), SQL_NTS); /*輸入數(shù)據(jù)*/cout輸入插入數(shù)據(jù)(MNO,TITLE,PERIOD,PRICE)?NMNO1;scanf(%s,TITLE1); /cinTITLE1;scanf(%s,PERIOD1); /cinPERIOD1;cinPRICE1; if(ret=SQL_SUCCESS|ret=SQL_SUCCES

23、S_WITH_INFO)cbNMNO=SQL_NTS;cbTITLE=SQL_NTS;cbPERIOD=SQL_NTS;cbPRICE=0;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO1,0,&cbNMNO);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,TITLE_LEN,0,TITLE1,0,&cbTITLE);ret=SQLBindParameter(dinghstmt,3,

24、SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,PERIOD_LEN,0,PERIOD1,0,&cbPERIOD);ret=SQLBindParameter(dinghstmt,4,SQL_PARAM_INPUT,SQL_C_DOUBLE,SQL_DOUBLE,0,0,&PRICE1,0,&cbPRICE);/*Step 6 處理結(jié)果集并執(zhí)行預(yù)編譯后的語(yǔ)句*/ret=SQLExecute(dinghstmt); goto loop2;case 2:y=2;/*修改報(bào)刊目錄*/ SQLCHAR NMNO2NMNO_LEN,TITLE2TITLE_LEN,PERIOD2PE

25、RIOD_LEN; SQLDOUBLE PRICE2;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(UPDATE NMTABLE SET TITLE=?,PERIOD=?,PRICE=? WHERE NMNO=?), SQL_NTS); /*輸入數(shù)據(jù)*/cout輸入修改數(shù)據(jù)(MNO,TITLE,PERIOD,PRICE)?NMNO2;cinTITLE2;cinPERIOD2;cinPRICE2; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbNMNO=SQL_NTS;cbTITLE=SQL_NTS;cbPERIO

26、D=SQL_NTS;cbPRICE=SQL_NTS;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,TITLE_LEN,0,TITLE2,0,&cbTITLE);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,PERIOD_LEN,0,PERIOD2,0,&cbPERIOD);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_DOUBLE,SQL_DOUBL

27、E,0,0,&PRICE2,0,&cbPRICE);ret=SQLBindParameter(dinghstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO2,0,&cbNMNO);/*Step 6 處理結(jié)果集并執(zhí)行預(yù)編譯后的語(yǔ)句*/ret=SQLExecute(dinghstmt); goto loop2;case 3:y=3;/*刪除報(bào)饋刊目錄*/ SQLCHAR NMNO3NMNO_LEN; ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(DELETE FROM NMTABLE WHERE N

28、MNO=?), SQL_NTS); /*輸?入?數(shù)簓據(jù)Y*/ cout輸入要?jiǎng)h除的報(bào)刊號(hào)?NMNO3; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO) cbCNO=SQL_NTS; ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO3,0,&cbNMNO); ret=SQLExecute(dinghstmt); goto loop2;case 4:y=4;goto loop; case 3:w=3;/*訂單管理*/ loop3:cou

29、t+訂單管理+endl; cout1、增加訂單endl; cout2、修改訂單endl; cout3、刪除訂單endl; cout4、返回上級(jí)m; switch(m)case 1:m=1; /*增加訂單*/ SQLCHAR CNO4CNO_LEN,DATE4DATE_LEN,NMNO4NMNO_LEN,START4START_LEN,TERM4TERM_LEN;SQLINTEGER QTY4;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(INSERT INTO dbo.ORDER(CNO,DATE1,NMNO,START,TERM,QTY) VALUES(?,

30、?,?,?,?,?), SQL_NTS); cout輸入插入數(shù)據(jù)(CNO,DATE1,NMNO,START,TERM,QTY)?CNO4;cinDATE4;cinNMNO4;cinSTART4;cinTERM4;cinQTY4; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbCNO=SQL_NTS;cbDATE1=SQL_NTS;cbNMNO=SQL_NTS;cbSTART=SQL_NTS;cbTERM=SQL_NTS;cbQTY=0;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_C

31、HAR,SQL_CHAR,CNO_LEN,0,CNO4,0,&cbCNO);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,DATE_LEN,0,DATE4,0,&cbDATE1);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO4,0,&cbNMNO);ret=SQLBindParameter(dinghstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHA

32、R,START_LEN,0,START4,0,&cbSTART);ret=SQLBindParameter(dinghstmt,5,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,TERM_LEN,0,TERM4,0,&cbTERM);ret=SQLBindParameter(dinghstmt,6,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER,0,0,&QTY4,0,&cbQTY);/*Step 6 處理結(jié)果集并執(zhí)行預(yù)編譯后的語(yǔ)句*/ret=SQLExecute(dinghstmt); goto loop3;case 2:m=2;/*修

33、改訂單*/ SQLCHAR CNO5CNO_LEN,DATE5DATE_LEN,NMNO5NMNO_LEN,START5START_LEN,TERM5TERM_LEN;SQLINTEGER QTY5;ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(UPDATE dbo.ORDER SET DATE1=?,START=?,TERM=?,QTY=? WHERE CNO=? AND NMNO=?), SQL_NTS); /*輸入數(shù)據(jù)*/cout輸入修改數(shù)據(jù),CNO,DATE1,NMNO,START,TERM,QTY)?CNO5;cinDATE5;cinNMNO5;ci

34、nSTART5;cinTERM5;cinQTY5; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)cbCNO=SQL_NTS;cbDATE1=SQL_NTS;cbNMNO=SQL_NTS;cbSTART=SQL_NTS;cbTERM=SQL_NTS;cbQTY=0;ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,DATE_LEN,0,DATE5,0,&cbDATE1);ret=SQLBindParameter(dinghstmt,2,SQL_PARAM_INPU

35、T,SQL_C_CHAR,SQL_CHAR,START_LEN,0,START5,0,&cbSTART);ret=SQLBindParameter(dinghstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,TERM_LEN,0,TERM5,0,&cbTERM);ret=SQLBindParameter(dinghstmt,4,SQL_PARAM_INPUT,SQL_C_LONG,SQL_INTEGER,0,0,&QTY5,0,&cbQTY);ret=SQLBindParameter(dinghstmt,5,SQL_PARAM_INPUT,SQL_C_CHA

36、R,SQL_CHAR,CNO_LEN,0,CNO5,0,&cbCNO);ret=SQLBindParameter(dinghstmt,6,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO5,0,&cbNMNO);/*Step 6 處理結(jié)果集并執(zhí)行預(yù)編譯后的語(yǔ)句*/ret=SQLExecute(dinghstmt); goto loop3;case 3:m=3;/*刪除訂單*/ SQLCHAR CNO6CNO_LEN,NMNO6NMNO_LEN; ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(DELETE F

37、ROM dbo.ORDER WHERE CNO=? AND NMNO=?), SQL_NTS); /*輸入數(shù)據(jù)*/ cout輸入要?jiǎng)h除的用戶號(hào)與報(bào)刊號(hào)CNO6; cinNMNO6; if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO) cbCNO=SQL_NTS;cbNMNO=SQL_NTS; ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO6,0,&cbCNO); ret=SQLBindParameter(dinghstmt,2,SQL_P

38、ARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NMNO_LEN,0,NMNO6,0,&cbNMNO); ret=SQLExecute(dinghstmt); goto loop3;case 4:m=4;goto loop; case 4:w=4;/*查詢訂單*/ SQLCHAR CNO7CNO_LEN,DATE7DATE_LEN,NMNO7NMNO_LEN,START7START_LEN,TERM7TERM_LEN; SQLINTEGER QTY7; ret=SQLPrepare(dinghstmt,(SQLWCHAR*)(_T(SELECT * FROM dbo.ORDER

39、WHERE CNO=?),SQL_NTS);/*if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO)ret=SQLBindParameter(bingmouhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO7,0,&cbCNO);*/ cout查詢的用戶號(hào)endl; scanf(%s,CNO7); if(ret=SQL_SUCCESS|ret=SQL_SUCCESS_WITH_INFO) cbCNO=SQL_NTS;cbDATE1=SQL_NTS;cbNMNO=SQL_NTS;cbSTART=

40、SQL_NTS;cbTERM=SQL_NTS;cbQTY=0; ret=SQLBindParameter(dinghstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,CNO_LEN,0,CNO7,0,&cbCNO);ret=SQLBindCol(dinghstmt,1,SQL_C_CHAR,CNO7,CNO_LEN,&cbCNO); ret=SQLBindCol(dinghstmt,2,SQL_C_CHAR,DATE7,DATE_LEN,&cbDATE1); ret=SQLBindCol(dinghstmt,3,SQL_C_CHAR,NMNO7,NMNO_LEN,&cbNMNO);ret=SQLBindCol(dinghstmt,4,SQL_C_CHAR,START7,START_LEN,&cbSTART);ret=SQLBindCol(dinghstmt,5,SQL_C_CHAR,TERM7,TERM_LEN,&cbTERM);ret=SQLBindCol(dinghstmt,6,SQL_C_LONG,&QTY7,0,&cbQTY); ret=SQLExecute(dinghstmt); while(SQLFetch(dinghstmt) != SQL_NO_DATA

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論