數(shù)據(jù)庫課程設(shè)計(jì)基于VC的學(xué)生成績(jī)管理系統(tǒng)
2009年1月 集美大學(xué)計(jì)算機(jī)工程學(xué)院數(shù)據(jù)庫課程設(shè)計(jì) 19 學(xué)生成績(jī)管理系統(tǒng) -數(shù)據(jù)庫原理課程設(shè)計(jì)姓 名: _何祖祥_班 級(jí): _計(jì)算0611_學(xué) 號(hào): _2006810028_指導(dǎo)老師: _林穎賢_成 績(jī): _ 評(píng) 語 計(jì)算機(jī)工程學(xué)院 2008年1月16日 基于VC的學(xué)生成績(jī)管理系統(tǒng)摘要 學(xué)生成績(jī)管理工作是學(xué)校管理工作的重要組成部分,隨著學(xué)校規(guī)模的擴(kuò)大、學(xué)生人數(shù)的增加,利用計(jì)算機(jī)技術(shù)和數(shù)據(jù)庫技術(shù)設(shè)計(jì)開發(fā)學(xué)生成績(jī)管理系統(tǒng)、實(shí)現(xiàn)學(xué)生成績(jī)理工作的自動(dòng)化成為學(xué)生管理部門的迫切需要。本系統(tǒng)提供了學(xué)生的基本信息的查詢、學(xué)生成績(jī)的管理程教師的基本信息的管理等,主要包據(jù)了成績(jī)的查詢、錄入、修改、刪除和數(shù)據(jù)庫的備份等功能。好的學(xué)生成績(jī)管理系統(tǒng)為管理學(xué)生成績(jī)提供了方便,有效提高了對(duì)學(xué)生的成績(jī)的管理。本文介紹此次課程設(shè)計(jì)的選題背景和意義,相關(guān)的研究和設(shè)計(jì)的過程,以及設(shè)計(jì)思路和實(shí)現(xiàn)細(xì)節(jié)的考慮,為便于說明,文中繪制了程序結(jié)框圖、數(shù)據(jù)流程圖和部分界面圖。最后給出了我在本次課程設(shè)過中的體會(huì)。關(guān)鍵詞 VC+ SQL語言 ODBC 數(shù)據(jù)庫 存儲(chǔ)過程 觸發(fā)器 視圖目錄第一章 引言11.1 課題研究背景與意義11.2 本課題研究?jī)?nèi)容與目標(biāo)11. 開發(fā)環(huán)境11.體系結(jié)構(gòu)設(shè)計(jì)1第二章 需求分析12.1 信息要求22.2 處理要求.22.3 安全性與完整性要求.2第三章 概念結(jié)構(gòu)設(shè)計(jì)13.1 分圖23.2 總圖2第四章邏輯結(jié)構(gòu)設(shè)計(jì)1.1 關(guān)系模型2.2 數(shù)據(jù)模型優(yōu)化2.數(shù)據(jù)字典2.視圖設(shè)計(jì)2第五章 數(shù)據(jù)庫的實(shí)施和維護(hù)15.1 儲(chǔ)存過程設(shè)計(jì)25.2 觸發(fā)器設(shè)計(jì)25.3模塊設(shè)計(jì)2結(jié)論6參考文獻(xiàn)2第一章引言1.1課題研究背景與意義 學(xué)生成績(jī)管理工作是學(xué)校管理工作的重要組成部分,利用計(jì)算機(jī)技術(shù)和數(shù)據(jù)庫技術(shù)設(shè)計(jì)開發(fā)學(xué)生學(xué)籍管理系統(tǒng)、實(shí)現(xiàn)學(xué)生學(xué)籍管理工作的自動(dòng)化成為學(xué)生管理部門的迫切需要。學(xué)生的成績(jī)管理系統(tǒng)能大幅度地提高對(duì)成績(jī)管理的效率,方便教師及教務(wù)處對(duì)學(xué)生成績(jī)的管理.本系統(tǒng)主要完成對(duì)學(xué)生和教師的基本信息的錄入、查詢和刪除;對(duì)學(xué)生的成績(jī)的管理(包括成績(jī)的查詢、錄入、修改、刪除);以及數(shù)據(jù)庫的備份等操作。由于剛開始數(shù)據(jù)庫設(shè)計(jì)的不是很好以及對(duì)VC運(yùn)用的不熟練,所以有些功能想加上去,迫于水平和時(shí)間的有限,只能粗略地實(shí)現(xiàn)這些功能。1.2本課題研究?jī)?nèi)容與目標(biāo)本課題研究對(duì)學(xué)生成績(jī)管理系統(tǒng)要實(shí)現(xiàn)哪些功能才能為廣大師提供方便,應(yīng)用對(duì)數(shù)據(jù)據(jù)原理的理論學(xué)習(xí),通過上機(jī)實(shí)踐的方式將理論知識(shí)與實(shí)踐更好的給合起來,鞏固所學(xué)的知識(shí)。實(shí)踐和鞏固在課堂教學(xué)中學(xué)習(xí)的關(guān)于數(shù)據(jù)庫原理的有關(guān)知識(shí)和數(shù)據(jù)庫系統(tǒng)的建立方法,熟練掌握對(duì)于給定實(shí)際問題,為了建立一個(gè)學(xué)生成績(jī)管理系統(tǒng),必須得經(jīng)過系統(tǒng)調(diào)研、需求分析、概念設(shè)計(jì)、邏輯設(shè)計(jì)、物理設(shè)計(jì)、系統(tǒng)調(diào)試、維護(hù)以及系統(tǒng)評(píng)價(jià)的一般過程,為畢業(yè)設(shè)計(jì)打下基礎(chǔ)。1. 開發(fā)環(huán)境硬件:PC,CPU:AMD Core Processor 4000+,內(nèi)存:1.00GB,硬盤:160GB;操作系統(tǒng):Microsoft WindowsXP;軟件:Visual C+ 6.0 Server 20001.4體系結(jié)構(gòu)設(shè)計(jì)登陸界面輸入用戶名和密碼用戶名和密碼正確?執(zhí)行主菜單YN退出基本信息查看學(xué)生信息查看教師信息學(xué)生信息管理教師信息管理成績(jī)查詢學(xué)號(hào)查詢班級(jí)查詢系查詢顯示全部平均分個(gè)人平均分班級(jí)平均分成績(jī)管理添加成績(jī)修改成績(jī)刪除成績(jī)系統(tǒng)管理修改密碼退出數(shù)據(jù)庫管理數(shù)據(jù)庫完全備份數(shù)據(jù)庫差異備份刪除數(shù)據(jù)庫作者信息Author第二章 需求分析2.1 信息要求(1)學(xué)生成績(jī)管理系統(tǒng)包含學(xué)生和教師的基本信息的處理,學(xué)生成績(jī)的管理,數(shù)據(jù)庫的管理,登陸用戶的管理。(2)學(xué)生信息包括學(xué)號(hào)、姓名、性別、年齡、電話、系名、班級(jí);通過學(xué)號(hào)可查找相應(yīng)學(xué)生的各科成績(jī)。(3)課程表包括課程號(hào)、課程名稱、學(xué)時(shí)、學(xué)分、任課老師號(hào)。(4)系包括系名、系主任、系人數(shù)。(5)班級(jí)包括班級(jí)名、班主任、班級(jí)人數(shù)、系名。(6)教師表包括教師號(hào)、教師名、學(xué)歷、聯(lián)系方式。0層數(shù)據(jù)流圖:1層數(shù)據(jù)流圖:2.2 處理要求能對(duì)學(xué)生和教師的信息進(jìn)行查詢、錄入、修改、刪除;能夠查詢學(xué)生的各科成績(jī)、平均分,并能對(duì)其進(jìn)行修改、刪除等操作。2.3 安全性與完整性要求安全性:(1) 管理員能夠方便的對(duì)信息進(jìn)行添加、修改、刪除、查詢、匯總、統(tǒng)計(jì)等操作。(2)教師可以在自己的權(quán)限內(nèi),對(duì)學(xué)生的成績(jī)進(jìn)行錄入、修改、刪除操作。(3) 學(xué)生可以在自己的權(quán)限內(nèi)對(duì)信息進(jìn)行訪問,查詢相關(guān)信息。完整性:(1) 能夠防止合法用戶使用數(shù)據(jù)庫向數(shù)據(jù)庫中添加不合語義的數(shù)據(jù)。(2) 通過各個(gè)表之間的聯(lián)系來實(shí)現(xiàn)數(shù)據(jù)完整性約束。第三章 概念結(jié)構(gòu)設(shè)計(jì)3.1 分圖登陸表E-R圖 主鍵:用戶名,用戶類型學(xué)生信息表E-R圖 主鍵:學(xué)號(hào) 外鍵:系名,班級(jí)系表E-R圖 主鍵:系名成績(jī)表E-R圖 主鍵:學(xué)號(hào),課程號(hào) 外鍵:學(xué)號(hào),課程號(hào)班級(jí)表E-R圖 主鍵:班級(jí) 外鍵:系名課程表E-R圖 主鍵:課程號(hào) 外鍵:任課老師教師表E-R圖 主鍵:教師號(hào)3.2 總圖 合并E-R圖第四章邏輯結(jié)構(gòu)設(shè)計(jì)4.1 關(guān)系模型將總體概念結(jié)構(gòu)E-R圖轉(zhuǎn)化成關(guān)系模型登陸(用戶類型,用戶名,密碼)學(xué)生信息(學(xué)號(hào),姓名,性別,年齡,電話,系名,班級(jí))系(系名,系主任,系人數(shù))成績(jī)(學(xué)號(hào),課程號(hào),學(xué)年學(xué)期,成績(jī))班級(jí)(班級(jí),班主任,班人數(shù),系名)課程表(課程號(hào),課程名稱,學(xué)時(shí),學(xué)分,任課老師)教師(教師號(hào),教師名,學(xué)歷,聯(lián)系方式)4.2 數(shù)據(jù)模型優(yōu)化將轉(zhuǎn)化的關(guān)系模型進(jìn)行優(yōu)化,最終達(dá)到第三范式(1) 確定數(shù)據(jù)依賴登陸(用戶類型,用戶名,密碼)(用戶類型,用戶名)->密碼學(xué)生信息(學(xué)號(hào),姓名,性別,年齡,電話,系名,班級(jí))學(xué)號(hào)->姓名,學(xué)號(hào)->性別,學(xué)號(hào)->年齡,學(xué)號(hào)->電話,學(xué)號(hào)->系名,學(xué)號(hào)->班級(jí),(學(xué)號(hào),姓名)->性別,班級(jí)->系名,系(系名,系主任,系人數(shù))系名->系主任,系名->系人數(shù)成績(jī)(學(xué)號(hào),課程號(hào),學(xué)年學(xué)期,成績(jī))(學(xué)號(hào),課程號(hào))->學(xué)年學(xué)期,(學(xué)號(hào),課程號(hào))->成績(jī),班級(jí)(班級(jí),班主任,班人數(shù),系名)班級(jí)->班主任,班級(jí)->班人數(shù),班級(jí)->系名,(班級(jí),班主任)->班人數(shù)課程表(課程號(hào),課程名稱,學(xué)時(shí),學(xué)分,任課老師)課程號(hào)->課程名稱,課程號(hào)->學(xué)時(shí),課程號(hào)->學(xué)分,課程號(hào)->任課老師教師(教師號(hào),教師名,學(xué)歷,聯(lián)系方式)教師號(hào)->教師名,教師號(hào)->學(xué)歷,教師號(hào)->聯(lián)系方式(2) 這些關(guān)系都符合要求,屬于第三范式,所以不用再對(duì)這些模式進(jìn)行分解了.4.3數(shù)據(jù)字典 表1:學(xué)生信息表字段名稱數(shù)據(jù)類型長(zhǎng)度約束課程號(hào)varchar20不為空課程名稱varchar20不為空學(xué)時(shí)float8不為空學(xué)分float8不為空任課老師varchar10不為空 表2系表字段名稱數(shù)據(jù)類型長(zhǎng)度約束系名varchar20不為空系主任varchar10不為空系人數(shù)int 4 表3登陸表字段名稱數(shù)據(jù)類型長(zhǎng)度約束用戶類型varchar10不為空用戶名varchar10不為空密碼varchar10不為空 表4班級(jí)表字段名稱數(shù)據(jù)類型長(zhǎng)度約束班級(jí)varchar20不為空班主任varchar10班人數(shù)int 4系名varchar20不為空 表5教師字段名稱數(shù)據(jù)類型長(zhǎng)度約束教師號(hào)varchar10不為空教師名char10不為空學(xué)歷varchar20聯(lián)系方式varchar20 表6成績(jī)字段名稱數(shù)據(jù)類型長(zhǎng)度約束學(xué)號(hào)char10不為空課程號(hào)varchar20不為空學(xué)年學(xué)期varchar20不為空成績(jī)float80150 表7學(xué)生信息字段名稱數(shù)據(jù)類型長(zhǎng)度約束學(xué)號(hào)char10不為空姓名varchar10不為空性別char2不為空年齡int 4不為空電話varchar20系名varchar20不為空班級(jí)varchar20不為空4.4視圖設(shè)計(jì)(1)打印成績(jī)>60分的學(xué)生create view V_gradeasselect A.學(xué)號(hào),A.姓名,A.性別,B.課程號(hào),C.課程名稱,B.成績(jī)from 學(xué)生信息 A,成績(jī) B,課程表 Cwhere A.學(xué)號(hào)=B.學(xué)號(hào) and B.課程號(hào)=C.課程號(hào) and 成績(jī)>60執(zhí)行:select * from V_grade(2) 查看計(jì)算機(jī)工程學(xué)院的考試情況create view V_computerasselect B.學(xué)年學(xué)期,A.學(xué)號(hào),A.姓名,A.班級(jí),C.課程名稱,B.成績(jī)from 學(xué)生信息 A,成績(jī) B,課程表 Cwhere A.學(xué)號(hào)=B.學(xué)號(hào) and B.課程號(hào)=C.課程號(hào) and A.系名=計(jì)算機(jī)工程學(xué)院執(zhí)行: select * from V_computer第五章 數(shù)據(jù)庫的實(shí)施和維護(hù)5.1約束關(guān)系:(1)為成績(jī)表添加約束 成績(jī)只能在0150之內(nèi)alter table 成績(jī)add constraint CK_成績(jī) check (成績(jī) between 0 and 150)(2)為成績(jī)表創(chuàng)建索引create index IX_成績(jī) on 成績(jī)(學(xué)年學(xué)期 ASC)5.2 儲(chǔ)存過程設(shè)計(jì)(1)根據(jù)輸入的參數(shù)刪除學(xué)生信息create proc DeleteNum_procnumber char(10)as delete 學(xué)生信息 from 學(xué)生信息where 學(xué)號(hào)=number(2) 根據(jù)參數(shù)添加教師信息create proc AddTeacher_procteanumber varchar(10),teaname char(10),teasc varchar(20),teaphone varchar(20)asinsert into 教師values(teanumber,teaname,teasc,teaphone)(3) 根據(jù)傳入的參數(shù)刪除相應(yīng)的教師信息create proc DeleteTea_procteanumber varchar(10)asdelete 教師from 教師where 教師號(hào)=teanumber(4)添加學(xué)生的信息create proc AddStu_procstunum char(10),stuname varchar(10),stusex char(2),stuyear int,stuphone varchar(20),stuxi varchar(20),stuclass varchar(20)asinsert into 學(xué)生信息values(stunum,stuname,stusex,stuyear,stuphone,stuxi,stuclass)5.3 觸發(fā)器設(shè)計(jì)(1) 為學(xué)生信息表創(chuàng)建觸發(fā)器,當(dāng)刪除學(xué)生信息時(shí),刪除相應(yīng)的成績(jī)表中的內(nèi)容。create trigger tri_學(xué)生信息on 學(xué)生信息 for delete asdelete 成績(jī) from 成績(jī) A,deleted Bwhere A.學(xué)號(hào)=B.學(xué)號(hào)(2)當(dāng)教師退休后,刪除其資料,并將其從課程表中刪除,所以創(chuàng)建一個(gè)觸發(fā)器create trigger tri_教師on 教師 for delete asdelete 課程表 from 課程表 as A,deleted as Bwhere B.教師號(hào)=A.任課老師(3) 添加學(xué)生信息時(shí),就為其添加登入信息create trigger tri_login on 學(xué)生信息 for insertasdeclare name varchar(2)declare password varchar(10)select name=姓名 from inserted select password from insertedinsert into 登陸values(學(xué)生,name,password)(4)刪除學(xué)生信息時(shí),也刪除登陸表中的信息create trigger tri_destuon 學(xué)生信息 for deleteasdeclare name varchar(2)declare password varchar(10)select name=姓名 from deletedselect password=學(xué)號(hào) from deleteddelete 登陸 from 登陸where 用戶名=name and 密碼=password5.4模塊設(shè)計(jì)(1)模塊一:基本信息該模塊主要完成對(duì)學(xué)生及教師的查詢、添加、以及刪除等功能,在添加學(xué)生信息時(shí),自動(dòng)將其添加到登陸列表中,為其添加登陸的權(quán)限.先在SQL分析器中創(chuàng)建一個(gè)觸發(fā)器,在向?qū)W生信息表中添加信息時(shí),就會(huì)觸發(fā).建四個(gè)對(duì)話框,兩個(gè)對(duì)話框用來顯示學(xué)生信息和教師信息,另外兩個(gè)對(duì)話框用來實(shí)現(xiàn)對(duì)學(xué)生和教師信息的管理.在顯示基本信息對(duì)話框中,為其添加CLIST CONTRL控件,弄成報(bào)表的形式,在程序中調(diào)用建立的幾個(gè)記錄集.利用滾動(dòng)記錄的幾個(gè)函數(shù),實(shí)現(xiàn)向報(bào)表控件中添加數(shù)據(jù),這樣就可以把學(xué)生和老師的信息給顯示出來.而在對(duì)學(xué)生和教師信息管理的對(duì)話框中,設(shè)立幾個(gè)變量與對(duì)話框中的EDIT編輯框相關(guān)聯(lián).調(diào)用UpateData(),可以把輸入的值傳給變量,這樣就可以實(shí)現(xiàn)所想要的功能.(2)成績(jī)查詢模塊. 該模塊主要用于查詢學(xué)生的成績(jī),實(shí)現(xiàn)學(xué)生成績(jī)的查詢.按學(xué)號(hào)查詢?cè)搶W(xué)生的全部考試信息.按班級(jí)查詢,可以獲得該班級(jí)學(xué)生的考試信息,不分學(xué)期.按系查詢,可以獲得某系的全部考試信息.另外兩個(gè)對(duì)話框?qū)崿F(xiàn)查詢個(gè)人平均分和班級(jí)成績(jī)情況的查詢.前兩個(gè)對(duì)話框就不再敘述了,原理與前面的一樣,在求平均分時(shí),根據(jù)輸入的學(xué)年學(xué)期和學(xué)號(hào),可以查詢?cè)搶W(xué)生在這個(gè)學(xué)年的考試平均分,考試門數(shù)程不及格的門數(shù).在實(shí)現(xiàn)求平均分過程中,本想用存儲(chǔ)過程進(jìn)行實(shí)現(xiàn)的,但由于在MFC中不知道如何調(diào)用有返回值的存儲(chǔ)過程,所以用一個(gè)個(gè)比較過去,記錄總和和考試課程數(shù).這樣就可以求出相應(yīng)的平均分.不及格數(shù)也呼之欲出.求班級(jí)成績(jī)也同理可得。(3) 成績(jī)管理模塊 該模塊實(shí)現(xiàn)對(duì)成績(jī)的錄入、修改、刪除功能。三個(gè)模塊的功能是類似的,所以只要實(shí)現(xiàn)一個(gè),其他的兩個(gè)就相當(dāng)容易了,在這里,我是調(diào)用SQL語句進(jìn)行添加、修改和刪除的。首先把幾個(gè)編輯框與幾個(gè)變量進(jìn)行關(guān)聯(lián),其實(shí)不用關(guān)聯(lián)也是可以的,可以利用GetDlgItem(ID號(hào))->GetWindowText(字符串變量),這樣也可以把值傳送給變量。建立一個(gè)數(shù)據(jù)類對(duì)象CDatabase m_db,用這個(gè)對(duì)象打開相對(duì)應(yīng)的數(shù)據(jù)庫,用str.Format(“SQL語名”),對(duì)字符串進(jìn)行格式化成SQL語句,這樣就可以用m_db.ExecuteSQL(str),執(zhí)行SQL語句,這樣相寫一個(gè)函數(shù)進(jìn)行查詢,省了很多的代碼,比較簡(jiǎn)潔。也可以調(diào)用存儲(chǔ)過程進(jìn)行實(shí)現(xiàn),因?yàn)楂@取返回值的存儲(chǔ)過程不會(huì),所以這里有調(diào)用的存儲(chǔ)過程是沒有返回值的。(4) 系統(tǒng)管理模塊和數(shù)據(jù)庫管理模塊這兩個(gè)模塊,一個(gè)用于修改用戶的密碼,一個(gè)用于數(shù)據(jù)庫的備份與刪除。在修改密碼這個(gè)對(duì)話框中,把用戶登陸名給顯示出來,舊密碼保存在全局變量中,用來檢驗(yàn)用戶輸入的舊密碼是否正確,如果正確的話,調(diào)用SQL語句的Update對(duì)數(shù)據(jù)庫中的相應(yīng)元組進(jìn)行修改。數(shù)據(jù)庫備份這個(gè)模塊,用了一個(gè)CCOMBOX控件,用來讓用戶選擇進(jìn)行哪種數(shù)據(jù)操作,有數(shù)據(jù)庫完全備份,差異備份和移除設(shè)備。這三個(gè)都是調(diào)用數(shù)據(jù)庫的相應(yīng)命令進(jìn)行操作。如完作備份,剛調(diào)用如下語句:sql.Format("backup database student to disk=%s",m_getpathname);此處是利用CFileDlg進(jìn)行相應(yīng)的操作。不過這段內(nèi)容有點(diǎn)缺陷,就是在退出程序后,原來保存的那個(gè)路徑名會(huì)清空,所以還得再選擇路徑進(jìn)行備份。結(jié)論 在本次課程設(shè)計(jì)過程中,學(xué)到了很多知識(shí),由于課程設(shè)計(jì)起草的比較晚,所以功能比較差些,功能也未能進(jìn)行更深入的思考,自己也對(duì)VC涉足不深,所以在運(yùn)用方面有所欠缺,數(shù)據(jù)庫方面,整體考慮也不周到。在課設(shè)的前一周有對(duì)課設(shè)考慮了一下,本來有考慮了好幾個(gè)模塊,像成績(jī)錄入模塊、班級(jí)統(tǒng)計(jì)模塊、年級(jí)統(tǒng)計(jì)模塊。在成績(jī)錄入模塊中再分別進(jìn)行錄入、修改、增加、刪除、查詢、打印等功能。班級(jí)統(tǒng)計(jì)模塊又分別有學(xué)生總成績(jī)、平均成績(jī)、班級(jí)排名、統(tǒng)計(jì)班級(jí)某分?jǐn)?shù)段內(nèi)的學(xué)生成績(jī)?nèi)藬?shù)、各學(xué)生該科成績(jī)、班級(jí)排名等功能(只相對(duì)于某個(gè)學(xué)期)。還有年級(jí)統(tǒng)計(jì)模塊,分為各年級(jí)各專業(yè)學(xué)生總成績(jī)還有排名、各學(xué)生各科成績(jī)年級(jí)排名,各班各分?jǐn)?shù)段人數(shù)等功能。不過在考完試之后再開始真正做課程設(shè)計(jì),時(shí)間有些傖促,所以只是實(shí)現(xiàn)其中的一部分功能。在用VC與SERVER 2000進(jìn)行學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)時(shí),開始對(duì)用ODBC連接數(shù)據(jù)庫時(shí),經(jīng)過了一天的時(shí)間,本打算用ADO進(jìn)行連接,不過對(duì)我來說有點(diǎn)眼高手低,對(duì)ADO與ODBC都是一點(diǎn)都不懂,最后還是決定用ODBC進(jìn)行連接,相對(duì)比較容易上手。通過本次課程設(shè)計(jì),對(duì)在VC+中如何編寫基本的ODBC數(shù)據(jù)庫等有了初步的認(rèn)識(shí),還有也提高了Windows編程技術(shù),進(jìn)一步提高了Visual C+的操作能力,雖然在之前看過孫鑫的一些視頻,由于很少進(jìn)行操作,忘了差不多了,只記得些基本的操作。就比如在求平均分時(shí),就花了我一個(gè)下午的時(shí)間進(jìn)行實(shí)現(xiàn)這個(gè)功能,主要是對(duì)屬性表單的創(chuàng)建不知道,所以要查找資料,翻出孫鑫的視頻,進(jìn)行摸索,在程序中把屬性表單的類建成基于對(duì)話框的類,在改過來的過程中經(jīng)歷了不少挫折,最后通過對(duì)比基于對(duì)話框的類和基于屬性頁的類,把程序給改了過來,總算是完成了這項(xiàng)功能,進(jìn)一步回顧了這部分的知識(shí).而對(duì)于SQL語句如何在MFC中實(shí)現(xiàn),則完全不懂,所以剛開始建的那些查找之類的功能,都是用CRecordset提供的幾個(gè)成員函數(shù)進(jìn)行滾動(dòng)查找,操作有些繁瑣,代碼有些冗余.在快把課程設(shè)計(jì)給初步做完時(shí),才弄懂如何把SQL語句在MFC中運(yùn)行,雖然知道的有些晚,但還是學(xué)會(huì)了如何運(yùn)用,所以把之前的有些代碼,弄成運(yùn)用存儲(chǔ)過程或查詢、更新的那幾個(gè)SQL語句進(jìn)行執(zhí)行.進(jìn)行測(cè)試后,可以運(yùn)行.在弄登陸框時(shí),也出現(xiàn)了一些麻煩,比如點(diǎn)右上角的那個(gè)X,程序會(huì)進(jìn)入主頁面,通過這條路徑不用輸入密碼,這是一大漏洞,本來以為點(diǎn)X時(shí),會(huì)跟點(diǎn)退出是響應(yīng)同一個(gè)函數(shù)的,百思不得其解,最終通過一個(gè)網(wǎng)友的解答,說是用DOModal()時(shí)應(yīng)該加一句判斷,這樣就可以解決那個(gè)問題了.現(xiàn)在講講數(shù)據(jù)庫設(shè)計(jì)方向的一些感言,經(jīng)過幾天的不眠不休的備斗,不過數(shù)據(jù)庫還是設(shè)計(jì)的不好.像數(shù)據(jù)庫的對(duì)象命名,我就沒按標(biāo)準(zhǔn)來對(duì)對(duì)象進(jìn)行命名,用了漢字,這樣在程序中建立數(shù)據(jù)集時(shí),就出現(xiàn)了一大堆m_column的字樣,這些表示屬性,給寫程序帶來了不便,不過相信以后我不會(huì)再犯這個(gè)錯(cuò)誤了.建表時(shí),那些主外鍵也未考慮周到,導(dǎo)致在添加數(shù)據(jù)過程中老是出現(xiàn)些問題,像觸發(fā)器的建立,由于主外鍵沒設(shè)計(jì)好,導(dǎo)致內(nèi)部錯(cuò)誤,這樣花費(fèi)了我很多時(shí)間查找錯(cuò)誤原,都是由于前期工作沒做好,正所謂”磨刀不誤砍柴工”,這下我完全體會(huì)到了這句話的深義.在做好數(shù)據(jù)庫設(shè)計(jì)之前,首先得對(duì)數(shù)據(jù)庫中各種概念有所理解,然后在實(shí)施過程中,對(duì)數(shù)據(jù)庫管理軟件創(chuàng)建的各個(gè)部分有個(gè)整體的認(rèn)識(shí).通過本次課程設(shè)計(jì),學(xué)到了很多知識(shí),不僅是數(shù)據(jù)庫方面的,還有對(duì)軟件設(shè)計(jì)過程中應(yīng)該注意哪些問題也有了初步的認(rèn)識(shí),相信在以后的設(shè)計(jì)過程中,我會(huì)做得更好.參考文獻(xiàn)<<Visual C+數(shù)據(jù)庫編程技術(shù)與實(shí)例>><<數(shù)據(jù)庫原理實(shí)驗(yàn)指導(dǎo)>><<數(shù)據(jù)庫原理>>