【正文】
dint4否否是引用表staff的主鍵staff_id列money money8否否否balancemoney8是否否 建立索引、視圖1.索引:本數(shù)據(jù)庫(kù)中的表除了主鍵本身生成的主索引外,沒有定義其他的索引。在查詢時(shí)即引用主索引即可。表staff的主索引列為:staff_id;表customer的主索引列為:cus_id;表order的主索引列為:order_id;表phone的主索引列為:phone_id。2.視圖:雖然關(guān)系數(shù)據(jù)模型分析的結(jié)果表示該數(shù)據(jù)庫(kù)需要定義不同的用戶視圖,但考慮到數(shù)據(jù)庫(kù)與前臺(tái)開發(fā)程序的連接比較復(fù)雜,所以該數(shù)據(jù)庫(kù)中沒有單獨(dú)定義用戶視圖,不同的用戶視圖被有選擇性的的select語(yǔ)句的結(jié)果集取代。 存儲(chǔ)過程(如果使用)的結(jié)構(gòu)和定義 主要的查詢語(yǔ)句等 1.對(duì)表staff進(jìn)行操作的語(yǔ)句有: 查詢表中所有行,并按staff_id排序:select * from staff order by staff_id;對(duì)于一定的staff_id值,查詢表中相應(yīng)列:select is_manager from staff where staff_id =39?!?9。; 對(duì)于一定的staff_id值,查詢表中所有列:select * from staff where staff_id = 39?!?9。;插入新行:insert staff (staff_id, staff_name, staff_addr, staff_password, sex, is_manager) values (…, …, …, …, …, …); 刪除某列:delete from staff where staff_id=39?!?9。; 更新表中的特定列:Update staff set staff_name = 39。…39。, staff_password = 39?!?9。, sex = 39?!?9。, staff_addr = 39?!?9。, is_manager = 39?!?9。 where staff_id = 39?!?9。 2.對(duì)表phone,customer所執(zhí)作的操作與對(duì)表staff的操作類似: 查詢:select * from phone, customer where = order by phone_id; select * from phone where cus_id is NULL order by phone_id; select cus_id from phone where phone_no = 39?!?9。; 插入:insert customer (cus_id, cus_name, ID_no, sex, cus_addr) values (39?!?9。, 39。…39。,39?!?9。,39?!?9。,39?!?9。); 刪除:delete from phone where phone_id = 39?!?9。; 更新:Update phone set phone_no = 39?!?9。, password =39?!?fee_type = 39?!?9。, balance = CAST(39。…39。 AS money) where phone_id = 39?!?9。 3.對(duì)表order所執(zhí)行的操作: 查詢:select * from [order] order by order_id;select * from phone where phone_no = 39。…39。; select phone_id from phone where phone_no = 39。…39。; 插入:insert [order] (order_id, phone_id, staff_id, money, balance) values (39。…39。, 39?!?9。,39?!?9。,CAST(39?!?9。 AS money), CAST(39?!?9。 AS money)); 4.備份恢復(fù)數(shù)據(jù)庫(kù)所需的語(yǔ)句: 建立備份文件:EXEC sp_addumpdevice 39。disk39。,39。DiskBak_MPQ39。,39?!?9。; 文件備份:BACKUP DATABASE MPhoneData to DiskBak_MPQ; 文件恢復(fù):RESTORE DATABASE MPhoneData from DiskBak_MPQ; 刪除備份文件:sp_dropdevice 39。DiskBak_MPQ39。系統(tǒng)功能1.程序的運(yùn)行環(huán)境 類別標(biāo)準(zhǔn)配置最低配置計(jì)算機(jī)硬件Pentium (R) 4 CPU,256MB內(nèi)存Pentium (R) 4 CPU ,128MB內(nèi)存軟件操作系統(tǒng)Windows XP Service Pack 1, Windows XP Service Pack 2, and Windows 2000Windows 98ODBC數(shù)據(jù)源命名為MPQ的數(shù)據(jù)源,連接本系統(tǒng)所用數(shù)據(jù)庫(kù)的MPQueryData命名為MASTER的數(shù)據(jù)源,連接系統(tǒng)數(shù)據(jù)庫(kù)master網(wǎng)絡(luò)通信其他2.開發(fā)環(huán)境類別標(biāo)準(zhǔn)配置最低配置計(jì)算機(jī)硬件Pentium (R) 4 CPU,256MB內(nèi)存Pentium (R) 4 CPU ,128MB內(nèi)存軟件操作系統(tǒng)Windows XP Service Pack 1, Windows XP Service Pack 2, and Windows 2000Windows 98數(shù)據(jù)庫(kù)后臺(tái)程序Microsoft SQL Server 2000前臺(tái)開發(fā)程序Microsoft Visual C++ ODBC數(shù)據(jù)源命名為MPQ的數(shù)據(jù)源,連接本系統(tǒng)所用數(shù)據(jù)庫(kù)的MPQueryData命名為MASTER的數(shù)據(jù)源,連接系統(tǒng)數(shù)據(jù)庫(kù)master網(wǎng)絡(luò)通信其他3.系統(tǒng)總體設(shè)計(jì)功能模塊圖 手機(jī)信息管理系統(tǒng)用戶信息管理工作人員信息管理手機(jī)充值用戶信息查看用戶信息刪除用戶信息修改工作人員信息查看工作人員信息修改工作人員信息刪除用戶信息查詢系統(tǒng)管理手機(jī)充值記錄查看手機(jī)充值手機(jī)充值記錄查詢用戶信息添加工作人員信息添加系統(tǒng)管理密碼管理用戶管理工作人員管理系統(tǒng)登陸管理備份恢復(fù)管理用戶查詢備份區(qū)分工作人員權(quán)限4.主要功能描述 由以上的功能模塊圖可以看出系統(tǒng)所具有的主要功能:5. 手機(jī)用戶可以選擇用戶查詢功能直接查詢某手機(jī)的余額。6. 全部工作人員均可以查詢用戶信息,并提供用戶充值。i) 工作人員選擇手機(jī)用戶信息查看可以統(tǒng)計(jì)所有手機(jī)及該手機(jī)持有者的信息。如果該手機(jī)沒有用戶信息,則用戶信息為空白。j) 對(duì)于所能查看到的每條手機(jī)及用戶信息,工作人員都可以對(duì)其進(jìn)行修改。k) 對(duì)于所能查看到的需要?jiǎng)h除的手機(jī)及用戶信息,工作人員均可以將其刪除,并自動(dòng)刪除相應(yīng)的手機(jī)充值紀(jì)錄。l) 工作人員可以添加新的手機(jī)及其用戶信息。m) 如果存在手機(jī)或用戶紀(jì)錄,工作人員可以通過提供手機(jī)號(hào)或用戶身份證號(hào)查詢到相應(yīng)的紀(jì)錄。n) 工作人員可以查看所有手機(jī)的所有充值紀(jì)錄。o) 工作人員填寫相應(yīng)的手機(jī)號(hào)及充值金額即可為手機(jī)提供充值,并自動(dòng)更新手機(jī)余額。p) 選擇相應(yīng)的手機(jī)號(hào)或工作人員編號(hào),可以查詢到該手機(jī)所有的充值紀(jì)錄或由該工作人員完成的充值紀(jì)錄。7. 全部工作人員均可以修改與自己的用戶名相應(yīng)的密碼,并立即生效。8. 高層管理人員還可以管理全部工作人員的信息。f) 高層管理人員選擇工作人員信息查看可以統(tǒng)計(jì)工作人員的信息。g) 對(duì)于所能查看到的每條工作人員信息,高層管理人員都可以對(duì)其進(jìn)行修改。h) 對(duì)于已離職的工作人員,高層管理人員均可以將其信息刪除。i) 高層管理人員工作人員可以添加新的工作人員信息。j) 高層管理人員可以使用工作人員的編號(hào)查詢到相應(yīng)的信息紀(jì)錄。5.主要運(yùn)行界面的圖片登陸界面:充值界面:查詢界面:程序調(diào)試情況該系統(tǒng)在調(diào)試過程中主要出現(xiàn)了以下四個(gè)問題:1.VC++連接數(shù)據(jù)庫(kù)時(shí),需要在系統(tǒng)中建立連接了該數(shù)據(jù)庫(kù)的數(shù)據(jù)源,并且保證程序中引用該數(shù)據(jù)源時(shí)使用的名稱正確。2.在對(duì)表示充值紀(jì)錄的表order執(zhí)行各種操作時(shí),總是會(huì)出現(xiàn)SQL語(yǔ)句執(zhí)行錯(cuò)誤的提示,原因是“order”是SQL語(yǔ)言中的保留字,所以如果有表的名字和order相同,則在使用表order時(shí)必須寫作“[order]”。3.在程序執(zhí)行過程中,需要進(jìn)行SQL數(shù)據(jù)類型char與money之間的轉(zhuǎn)換,此時(shí),SQL語(yǔ)言不支持這兩種語(yǔ)言之間的隱性轉(zhuǎn)換,必須使用CAST或convert函數(shù)進(jìn)行顯性轉(zhuǎn)換:如使用CAST(39。變量名39。 AS money)。4.在執(zhí)行對(duì)手機(jī)用戶信息的操作時(shí),需要將customer ,phone兩個(gè)表在cus_id列上做連接。由于phone表引用了customer表的cus_id列作為外鍵,所以對(duì)于某一手機(jī)如果出現(xiàn)新的用戶信息,必須先在customer表上添加用戶,再將phone進(jìn)行更新;反順序執(zhí)行將出現(xiàn)錯(cuò)誤。對(duì)于引用外鍵的表均需采用該種方法添加或修改表中的信息,另如staff表。總 結(jié)綜上所述,本系統(tǒng)是一個(gè)簡(jiǎn)單的用作手機(jī)用戶充值或查詢信息的系統(tǒng),它具有功能簡(jiǎn)單完整,操作方便的特點(diǎn)。通過對(duì)該系統(tǒng)的實(shí)現(xiàn),使我較好的掌握了SQL Server數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)與MS VC++,熟悉了MFC的用法,也使我進(jìn)一步熟悉了對(duì)數(shù)據(jù)庫(kù)的各種基本操作,使我受益匪淺。但是本系統(tǒng)在備份與恢復(fù)數(shù)據(jù)庫(kù)時(shí)還存在著一些問題,我希望能在以后的系統(tǒng)開發(fā)中,更好地解決該問題。[參考文獻(xiàn)][1] 朱如龍,劉焰編著 SQL Server數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開發(fā)技術(shù)實(shí)驗(yàn)指導(dǎo)及習(xí)題解答 機(jī)械工業(yè)出版社 2004年8月[2] 求是科技 SQL Server 2000 數(shù)據(jù)庫(kù)開發(fā)技術(shù)與工程實(shí)踐 人民郵電出版社2004年6月