版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 課程設(shè)計(jì)說明書 設(shè)計(jì)題目:_小雨點(diǎn)學(xué)生成績(jī)管理系統(tǒng) 設(shè)計(jì)時(shí)間: 2011.1.10 至 2011.1.21 評(píng) 語:_評(píng)閱成績(jī): 評(píng)閱教師: 目錄設(shè)計(jì)總說明4關(guān)鍵詞5緒論6第1章 數(shù)據(jù)庫設(shè)計(jì)71.1 需求分析71.1.1 數(shù)據(jù)需求71.1.2數(shù)據(jù)字典71.1.3數(shù)據(jù)流程圖81.2概念分析81.3邏輯結(jié)構(gòu)設(shè)計(jì)91.4物理實(shí)施91.4.1 創(chuàng)建數(shù)據(jù)庫101.4.2 創(chuàng)建數(shù)據(jù)表101.4.3 像數(shù)據(jù)表中插入數(shù)據(jù)111.4.4 創(chuàng)建視圖121.4.5 觸發(fā)器和完整性約束121.4.6 存儲(chǔ)過程13第2章 系統(tǒng)界面設(shè)置及主要功能142.1 添加主菜單和功能按鈕142.2 登錄界面設(shè)置162.3 學(xué)生信
2、息增、刪、改界面182.4 對(duì)學(xué)生信息多角度查詢21總結(jié)27參考文獻(xiàn)28附錄 程序代碼291 StuConStr.h頭文件的代碼292 登錄界面“確定”按鈕代碼293 添加登錄界面背景圖片的代碼294 使控件變?yōu)橥该鞯拇a305 主界面“添加”按鈕代碼306 主界面“查找”按鈕代碼317 主界面“修改”按鈕代碼338 主界面“刪除”按鈕代碼359 添加菜單欄和工具欄代碼3510 信息查詢界面“查詢”按鈕代碼3611 成績(jī)錄入界面“查詢”代碼3612 成績(jī)錄入界面“添加”代碼3713 成績(jī)錄入界面“修改”3714 成績(jī)錄入界面“刪除”按鈕代碼38小雨點(diǎn)學(xué)生成績(jī)管理系統(tǒng)設(shè)計(jì)總說明:在當(dāng)今社會(huì),無論
3、中小學(xué)還是大學(xué),成績(jī)管理是一項(xiàng)必要而且很關(guān)鍵的工作?,F(xiàn)在隨著學(xué)生數(shù)量的急劇增加,處理學(xué)生的成績(jī)數(shù)據(jù)變的越來越煩瑣艱巨。在當(dāng)今社會(huì),計(jì)算機(jī)已經(jīng)普及到了幾乎每個(gè)學(xué)校、家庭,我們的學(xué)習(xí)和生活已經(jīng)處處離不開計(jì)算機(jī)的存在。按照傳統(tǒng)的管理方法,學(xué)生成績(jī)都是登錄在紙質(zhì)的成績(jī)冊(cè)上,使用很不方便,在進(jìn)行查詢、修改、插入和刪除操作時(shí),可能由于人為的失誤,使這些數(shù)據(jù)很容易丟失。另一方面,傳統(tǒng)的管理方法在面對(duì)大量的數(shù)據(jù)時(shí),工作量非常大,效率非常低。所以要設(shè)計(jì)出一套高效的、合理的學(xué)生成績(jī)管理系統(tǒng)是很有必要的。本系統(tǒng)依據(jù)開發(fā)要求主要應(yīng)用于教育系統(tǒng),完成對(duì)日常的教育工作中學(xué)生成績(jī)檔案的數(shù)字化管理。開發(fā)本系統(tǒng)可使老師減輕工作
4、壓力,比較系統(tǒng)地對(duì)學(xué)生的信息和成績(jī)進(jìn)行管理,查詢、增添、修改、刪除都變的非常簡(jiǎn)便,節(jié)省了大量的工作量。本課程設(shè)計(jì)是在學(xué)習(xí)了數(shù)據(jù)庫系統(tǒng)A和相關(guān)開發(fā)軟件課程之后,讓學(xué)生通過實(shí)際項(xiàng)目的設(shè)計(jì)、開發(fā),培養(yǎng)學(xué)生獨(dú)立進(jìn)行數(shù)據(jù)庫軟件的建模、在計(jì)算機(jī)中進(jìn)行數(shù)據(jù)庫設(shè)計(jì)、并通過相關(guān)軟件開發(fā)系統(tǒng)的能力。輸入一個(gè)班級(jí)的學(xué)生基本信息(包括學(xué)號(hào),姓名,性別,科目),對(duì)N門考試的成績(jī)進(jìn)行管理(例N=5) ,要求 :1、用戶錄入每個(gè)學(xué)生每門課程的分?jǐn)?shù); 2、能夠計(jì)算每個(gè)學(xué)生的各門功課總分和平均分,并按總分將成績(jī)排序,顯示每個(gè)學(xué)生的總分和排名; 3、計(jì)算全班各門功課的平均分,顯示沒門課程中低于平均分的每一個(gè)學(xué)生的學(xué)號(hào),姓名,性別
5、,科目,成績(jī)等信息; 4、顯示每門科目中,成績(jī)?cè)?0分以上的學(xué)生信息。另外還輸出每門科目中不及格的學(xué)生信息; 5、能按姓名或者學(xué)號(hào)查找,增加,刪除和保存各個(gè)學(xué)生的信息。本系統(tǒng)主要用于對(duì)學(xué)生成績(jī)進(jìn)行管理,能夠進(jìn)行插入、刪除、修改、查詢和顯示學(xué)生的信息。登錄該系統(tǒng)時(shí),用戶需要輸入口令和密碼,以確保數(shù)據(jù)的安全性,成功登錄的用戶,可以插入學(xué)生的信息和成績(jī),并對(duì)學(xué)生的信息和成績(jī)進(jìn)行增、刪、改操作?;谏鲜鱿敕?,我們將學(xué)生數(shù)據(jù)保存到數(shù)據(jù)庫中,以C+為前臺(tái)進(jìn)行系統(tǒng)的設(shè)計(jì)。因?yàn)槌煽?jī)管理系統(tǒng)是一項(xiàng)很實(shí)用的系統(tǒng),所面對(duì)的數(shù)據(jù)量很大,所以我們要求系統(tǒng)能夠高效快速的處理這些數(shù)據(jù),并且要保證數(shù)據(jù)的正確性、相容性和安全性
6、。所以在數(shù)據(jù)庫中需要定義很多觸發(fā)器,比如刪除了某位同學(xué)的信息則刪除對(duì)應(yīng)的所有成績(jī)信息、活著刪除了某門課程則刪除該門課所有的成績(jī)等。C+作為前臺(tái)是將數(shù)據(jù)庫中的數(shù)據(jù)讀取出來,有助于用戶對(duì)這些數(shù)據(jù)進(jìn)行相應(yīng)的操作,使操作更方便,更符合用戶的要求。所以該系統(tǒng)應(yīng)該要有一個(gè)良好的界面,使用戶感覺很直觀,使用快捷,這就是用C+所要實(shí)現(xiàn)的功能。既然在一個(gè)系統(tǒng)中同時(shí)涉及到數(shù)據(jù)庫和C+,所以我們要從數(shù)據(jù)庫中讀取數(shù)據(jù),并且和界面聯(lián)系起來,同時(shí)也能將用戶界面上的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。以上是設(shè)計(jì)此系統(tǒng)應(yīng)該注意的地方和設(shè)計(jì)原則,以下就是遵循這些原則和標(biāo)準(zhǔn)設(shè)計(jì)出的一套完整的管理系統(tǒng)。關(guān)鍵詞:SQL Server;成績(jī)管理;MF
7、C緒論本課程設(shè)計(jì)是在學(xué)習(xí)了數(shù)據(jù)庫系統(tǒng)A和以前學(xué)過的C+等相關(guān)軟件課程后,通過實(shí)際的操作來熟悉數(shù)據(jù)庫和相關(guān)軟件的應(yīng)用,培養(yǎng)獨(dú)立的完成對(duì)相關(guān)課題或者項(xiàng)目的分析能力、設(shè)計(jì)能力和調(diào)試能力。這次的課程設(shè)計(jì)是繼大二開設(shè)的C+面向?qū)ο笳n程設(shè)計(jì)之后的,同樣是運(yùn)用MFC程序來設(shè)計(jì)。與上次課程設(shè)計(jì)唯一不同的就是數(shù)據(jù)的存儲(chǔ)位置不同。在大二下學(xué)期開設(shè)的課程設(shè)計(jì)中,我們主要是將數(shù)據(jù)保存到數(shù)據(jù)文件當(dāng)中,而這次課程設(shè)計(jì)我們要將數(shù)據(jù)保存到數(shù)據(jù)庫中。所以我們要解決的首要問題就是如何將數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)出來,這也是我們這次課程設(shè)計(jì)的關(guān)鍵,因?yàn)槠渌牟僮魑覀冊(cè)趯W(xué)面向?qū)ο蟪绦蛟O(shè)計(jì)C+時(shí)已經(jīng)練習(xí)過。這次的課程設(shè)計(jì)中,著重培養(yǎng)的是學(xué)生的自
8、學(xué)能力,以及獨(dú)立分析互聯(lián)網(wǎng)上和圖書館里的各種資料,用來豐富自己的知識(shí)并且提高對(duì)SQL、VC+等軟件的實(shí)際操作能力。通過這次的課程設(shè)計(jì),使我們對(duì)已經(jīng)學(xué)習(xí)過的數(shù)據(jù)庫課程的進(jìn)一步的掌握,對(duì)知識(shí)進(jìn)行最大程度的消化融匯。因此這次的課程設(shè)計(jì)對(duì)我們來說具有非常重要的作用:為以后學(xué)生工作做必要的準(zhǔn)備和實(shí)踐,提高自身對(duì)數(shù)據(jù)庫開發(fā)的能力。學(xué)生成績(jī)管理系統(tǒng),在系統(tǒng)中分為大的兩個(gè)個(gè)方面:一是學(xué)生信息的增刪改,二是學(xué)生成績(jī)的增刪改。(1)用戶進(jìn)入系統(tǒng)后,可以查詢相應(yīng)學(xué)號(hào)的學(xué)生的信息,可以增加、刪除、修改學(xué)生信息。(2)用戶可以錄入學(xué)生的成績(jī),只需輸入對(duì)應(yīng)的學(xué)號(hào)和課程號(hào)以及成績(jī),簡(jiǎn)單易操作,并且可以對(duì)記錄進(jìn)行增、刪、改操
9、作。此次設(shè)計(jì)的學(xué)生成績(jī)管理系統(tǒng),雖然簡(jiǎn)單,但是卻十分實(shí)用,極大的方便了用戶對(duì)學(xué)生信息和成績(jī)的操作,節(jié)省了大量的工作量。第1章 數(shù)據(jù)庫設(shè)計(jì)1.1 需求分析1.1.1 數(shù)據(jù)需求學(xué)生成績(jī)管理系統(tǒng)需要完成的主要功能有:1.學(xué)生的基本信息錄入,包括學(xué)號(hào)、姓名、性別、出生時(shí)間、專業(yè)、總學(xué)分、備注、地址。2.課程信息表的錄入,包括課程號(hào)、課程名,學(xué)分。3.成績(jī)信息表的查詢、插入、修改、刪除等操作,包括課程號(hào)、學(xué)號(hào)、成績(jī)。1.1.2 數(shù)據(jù)字典表1 學(xué)生信息表(XSB)結(jié)構(gòu)項(xiàng)目名列名數(shù)據(jù)類型可空默認(rèn)值說明學(xué)號(hào)XHChar6NOT NULL無主鍵姓名XMChar8NOT NULL無性別XBChar2NULL無出生
10、時(shí)間CSSJDatetimeNULL無專業(yè)ZYCharNULL無總學(xué)分ZXFIntNULL00總學(xué)分160備注BZVarchar500NULL無地址DZxmlNULL無表2 課程信息表(KCB)結(jié)構(gòu)項(xiàng)目名列名數(shù)據(jù)類型可空默認(rèn)值說明課程號(hào)KCHChar3NOT NULL無主鍵課程名KCMChar16NOT NULL無學(xué)分XFtinyintNULL0表3 成績(jī)表(CJB)結(jié)構(gòu)項(xiàng)目名列名數(shù)據(jù)類型可空默認(rèn)值說明學(xué)號(hào)XHChar6NOT NULL無主鍵課程號(hào)KCHChar3NOT NULL無主鍵成績(jī)CJintNULL01.1.3 數(shù)據(jù)流程圖圖1 數(shù)據(jù)流程圖1.2 概念分析在以上需求分析的基礎(chǔ)上,設(shè)計(jì)出該
11、系統(tǒng)的E-R圖以及各數(shù)據(jù)項(xiàng)之間的關(guān)系模式,則得出學(xué)生表E-R圖:圖2 學(xué)生表E-R圖課程表E-R圖:圖3 課程表E-R圖成績(jī)表E-R圖圖4 成績(jī)表E-R圖所以得出總的E-R圖:圖5 總E-R圖1.3 邏輯結(jié)構(gòu)設(shè)計(jì)關(guān)系模型:學(xué)生表 (XH, XM, XB, CSSJ, ZY, ZXF, BZ, DZ);課程表 (KCH, KCM, XF);成績(jī)表 (XH, KCH, CJ)1.4 物理實(shí)施1.4.1 創(chuàng)建數(shù)據(jù)庫CREATE DATABASE PXSCJON PRIMARY (NAME= 'PXSCJ_data', FILENAME='F:數(shù)據(jù)庫課程設(shè)計(jì)數(shù)據(jù)源PXSCJ.m
12、df', SIZE=10 , MAXSIZE=UNLIMITED , FILEGROWTH=5) LOG ON (NAME= 'PXSCJ_log', FILENAME='F:數(shù)據(jù)庫課程設(shè)計(jì)數(shù)據(jù)源PXSCJ.LDF', SIZE=5 , MAXSIZE=UNLIMITED , FILEGROWTH=20%)1.4.2 創(chuàng)建數(shù)據(jù)表創(chuàng)建學(xué)生信息表:USE PXSCJGOCREATE TABLE XSB(XH CHAR(6) NOT NULL PRIMARY KEY,XM CHAR(8) NOT NULL,XB CHAR(2) NULL CHECK(XB=
13、39;男' OR XB='女'),CSSJ DATETIME NULL,ZY CHAR(12) NULL,ZXF INT NULL DEFAULT 0 CHECK(ZXF>=0 AND ZXF<160),BZ VARCHAR(500)NULL,DZ VARCHAR(500)NULL創(chuàng)建課程信息表:CREATE TABLE KCB(KCH CHAR(3) NOT NULL PRIMARY KEY,KCM CHAR(16) NOT NULL,XF TINYINT NOT NULL DEFAULT 0)創(chuàng)建成績(jī)表:CREATE TABLE CJB(XH CHAR(
14、6) NOT NULL ,KCH CHAR(3) NOT NULL ,CJ INT NULL DEFAULT 0 CHECK(CJ>=0 AND CJ<=100)1.4.3 像數(shù)據(jù)表中插入數(shù)據(jù)學(xué)生信息表部分?jǐn)?shù)據(jù)如圖6:圖:6 學(xué)生信息表部分?jǐn)?shù)據(jù)課程信息表數(shù)據(jù)如圖7:圖7 課程信息表數(shù)據(jù)成績(jī)表部分?jǐn)?shù)據(jù)如圖8:圖8 成績(jī)表部分?jǐn)?shù)據(jù)1.4.4 創(chuàng)建視圖USE PXSCJGOCREATE VIEW XS_KC_CJASSELECT XSB.XH,XSB.XM,KCB.KCH,KCB.KCM,CJB.CJFROM KCBINNER JOIN CJB ON KCB.KCH=CJB.KCHINN
15、ER JOIN XSB ON XSB.XH=CJB.XH1.4.5 觸發(fā)器和完整性約束刪除學(xué)生對(duì)應(yīng)成績(jī)記錄(使用觸發(fā)器實(shí)現(xiàn))實(shí)現(xiàn)功能:當(dāng)刪除學(xué)生記錄后,同步刪除成績(jī)表(CJB)該學(xué)生的成績(jī)記錄??梢酝ㄟ^創(chuàng)建學(xué)生表(XSB)的DELETE觸發(fā)器實(shí)現(xiàn)此功能。觸發(fā)器語句如下:CREATE TRIGGER CHECK_XSB_CJB ON XSBFOR DELETEASDELETE FROM CJB WHERE XH IN(SELECT XH FROM DELETED)刪除課程對(duì)應(yīng)成績(jī)記錄(使用完整性約束實(shí)現(xiàn))實(shí)現(xiàn)功能:當(dāng)刪除課程記錄后,同步刪除成績(jī)表(CJB)中所有學(xué)生該課程的成績(jī)記錄。語句如下:A
16、LTER TABLE CJB WITH CHECK ADD CONSTRAINT FK_CJB_KCB FOREIGN KEY(KCH)REFERENCES KCB(KCH)ON DELETE CASCADE用觸發(fā)器驗(yàn)證輸入數(shù)據(jù)實(shí)現(xiàn)功能:當(dāng)向成績(jī)表(CJB)表插入一條記錄時(shí),檢查該記錄的“學(xué)號(hào)”在學(xué)生表中是否存在,檢查“課程號(hào)”在課程表(KCB)中是否存在。若有一項(xiàng)為否,則不允許插入。觸發(fā)器語句如下:CREATE TRIGGER DBO.CHECK_XSB_KCB ON DBO.CJBFOR INSERTASIF EXISTS (SELECT XH FROM INSERTED WHERE NO
17、T EXISTS(SELECT XH FROM XSB WHERE INSERTED.XH=XSB.XH)OR EXISTS (SELECT KCH FROM INSERTED WHERE NOT EXISTS(SELECT KCH FROM KCB WHERE INSERTED.KCH=KCB.KCH)ROLLBACK TRANSACTION1.4.6 存儲(chǔ)過程存儲(chǔ)過程名為CJ_Data。參數(shù):學(xué)號(hào)(in_xh)、課程號(hào)(in_kch)和成績(jī)(in_cj)。實(shí)現(xiàn)功能:根據(jù)存儲(chǔ)過程的3個(gè)參數(shù),對(duì)指定學(xué)號(hào)、課程號(hào)的學(xué)生成績(jī)進(jìn)行增、刪、改。編寫思路:(1) 根據(jù)課程號(hào)查詢?cè)撜n程對(duì)應(yīng)的學(xué)分。(2)
18、根據(jù)學(xué)號(hào)和課程號(hào)查詢?cè)摮煽?jī)記錄,刪除原來成績(jī)記錄。如果成績(jī)>=60,則該學(xué)生總學(xué)分減去該課程的學(xué)分。(3) 如果新成績(jī)=-1(表示刪除該成績(jī)記錄),則儲(chǔ)存過程結(jié)束。(4) 增加成績(jī)記錄,如果成績(jī)>=60,則該學(xué)生總學(xué)分加上該課程的學(xué)分。存儲(chǔ)過程如下:CREATE PROCEDURE CJ_Date(in_xh CHAR(6),in_kch CHAR(3),in_cj INT)ASSET NOCOUNT ONDECLARE in_count INTDECLARE in_xf TINYINTDECLARE in_cjb_cj INTSET in_xf=(SELECT XF FROM K
19、CB WHERE KCH=in_kch)SET in_count=(SELECT COUNT(*) FROM CJB WHERE XH=in_xh AND KCH=in_kch)SET in_cjb_cj=(SELECT CJ FROM CJB WHERE XH=in_xh AND KCH=in_kch)IF(in_count>0)BEGINDELETE FROM CJB WHERE XH=in_xh AND KCH=in_kchIF(in_cjb_cj>60)BEGINUPDATE XSB SET ZXF=ZXF-in_xf WHERE XH=in_xhENDENDIF(in_c
20、j!=-1)BEGININSERT INTO CJB VALUES(in_xh,in_kch,in_cj)IF(in_cj>60)BEGINUPDATE XSB SET ZXF=ZXF+in_xf WHERE XH=in_xhENDEND第2章 系統(tǒng)界面設(shè)置及主要功能2.1 添加主菜單和功能按鈕在項(xiàng)目工作區(qū)窗口中選擇ResourceView頁面,雙擊資源“Menu”項(xiàng)中的“IDR_MAINFRAME”,則菜單編輯窗口出現(xiàn)在主頁面的右面,如圖9所示。相應(yīng)的XSCJ項(xiàng)目的菜單資源被顯示出來,在菜單的最后一項(xiàng),Visual C+為用戶留出了一個(gè)空位置,用來輸入新的菜單項(xiàng)。在此可輸入“學(xué)生信息管
21、理”“學(xué)生成績(jī)管理”和“成績(jī)輸入”圖9 XSCJ菜單資源同理,雙級(jí)資源“Toolbar”項(xiàng)中的IDR_MAINFRAME,則工具條編輯器窗口出現(xiàn)在主界面的右面,如圖10所示。在此可以添加新的按鈕:圖10 工具欄編輯窗口2.2 登錄界面設(shè)置:登錄界面設(shè)置如圖11所示:圖11 登錄界面登錄界面的控件ID和標(biāo)題設(shè)置如表4所示:表4 登陸界面設(shè)置ID和標(biāo)題添加的控件ID號(hào)標(biāo)題其他屬性編輯框(用戶名)IDC_EDIT1默認(rèn)編輯框(密碼)IDC_EDIT2選中選項(xiàng)password按鈕IDOK確定默認(rèn)按鈕IDCANCEL退出默認(rèn)打開MFC ClassWizad,切換到Member Variables頁下添加
22、成員變量,詳見表5:表5 登錄界面設(shè)置控件關(guān)聯(lián)變量ID號(hào)變量類型變量名IDOKCstringm_usernameIDCANCELCStringm_passkey背景圖片的添加過程為:打開MFC ClassWizad,在Message Maps里添加WM_PAINT和WM_CTLCOLOR函數(shù),函數(shù)代碼見附錄。添加圖片的過程如下:在ResourceView中選中一項(xiàng),單擊右鍵:選擇Insert,在“插入資源”中選擇Bitmap,單擊導(dǎo)入,選擇格式為bmp的圖片,則在項(xiàng)目工作區(qū)窗口會(huì)出現(xiàn)一個(gè)Bitmap選項(xiàng),里面又要加入的圖片,見圖12:圖12 插入圖片如果用戶名或密碼錯(cuò)誤,則會(huì)出現(xiàn)如圖13的提示
23、:圖13 用戶名或密碼錯(cuò)誤提示如果用戶名密碼正確,則成功登錄系統(tǒng),如圖14:圖14 成功登錄提示如果點(diǎn)擊退出,則有如圖15提示:圖15 退出系統(tǒng)提示2.3 學(xué)生信息增、刪、改界面界面設(shè)置如圖16所示:登錄界面的控件ID和標(biāo)題設(shè)置如表6所示:打開MFC ClassWizad,切換到Member Variables頁下添加成員變量,詳見圖17圖16 學(xué)生信息增、刪、改界面表6 登陸界面設(shè)置ID和標(biāo)題添加的控件ID號(hào)標(biāo)題其他屬性編輯框(學(xué)號(hào))IDC_XH默認(rèn)編輯框(姓名)IDC_XM默認(rèn)編輯框(性別)默認(rèn)男選中“組”編輯框(性別)默認(rèn)女默認(rèn)編輯框(出生時(shí)間)默認(rèn)默認(rèn)編輯框(專業(yè))IDC_ZY默認(rèn)編輯
24、框(備注)IDC_BZ默認(rèn)編輯框(地址)IDC_DZ默認(rèn)按鈕IDC_ADD添加默認(rèn)按鈕IDC_SEARCH查找默認(rèn)按鈕IDC_DELETE刪除默認(rèn)按鈕IDC_EXIT退出默認(rèn)按鈕IDC_CHECK檢查您輸入的學(xué)號(hào)是否存在默認(rèn)圖17 為控件添加數(shù)據(jù)成員建立頭文件StuConStr.h,在其定義本應(yīng)用系統(tǒng)在后續(xù)編程中一直要用使用的連接字符串宏常量SQLCONSTR。具體代碼見附錄。輸入學(xué)號(hào)對(duì)學(xué)生進(jìn)行添加功能,若學(xué)號(hào)已存在,則彈出系統(tǒng)消息,如圖18圖18 重復(fù)添加相同學(xué)號(hào)學(xué)生信息的系統(tǒng)提示若輸入數(shù)據(jù)表中不存在的學(xué)號(hào)的學(xué)生信息,則彈出“添加成功”的系統(tǒng)信息,如圖19:圖19 添加成功系統(tǒng)消息對(duì)學(xué)生信息
25、進(jìn)行查詢時(shí),如果不存在要查詢的學(xué)號(hào),則彈出如圖20系統(tǒng)消息:圖20 查詢非數(shù)據(jù)表中學(xué)號(hào)的學(xué)生信息的系統(tǒng)消息如果要查詢的學(xué)生的學(xué)號(hào)存在,則直接在顯示在各個(gè)控件中,如查詢學(xué)號(hào)為081106的學(xué)生,得到圖21:圖21 查詢結(jié)果在對(duì)學(xué)生信息進(jìn)行修改時(shí),可以先查詢?cè)搶W(xué)生的信息,再點(diǎn)擊修改按鈕,修改成功,出現(xiàn)圖22提示:圖22 修改成功提示在對(duì)學(xué)生信息進(jìn)行刪改成功,則出現(xiàn)圖23提示:圖23 修改成功系統(tǒng)消息2.4 對(duì)學(xué)生信息多角度查詢點(diǎn)擊菜單欄上的“學(xué)生信息管理”或工具欄上的“信”,可以對(duì)學(xué)生信息進(jìn)行多角度查詢。在此界面中,可以按學(xué)號(hào)查詢學(xué)生信息,也可以按姓名查找學(xué)生信息,并且可以按系部來看全系學(xué)生的基本
26、信息情況。基本界面如圖24所示:圖24 學(xué)生信息多角度查詢界面設(shè)置此對(duì)話框的方法為:在Dialog下插入一個(gè)新對(duì)話框,有機(jī)對(duì)話框打開屬性,在ID中輸入“IDD_STUINFO_MODIFY”,標(biāo)題為:”學(xué)生成績(jī)管理系統(tǒng)學(xué)生信息查詢修改”。按Ctrl+W快捷鍵,彈出“添加新類”對(duì)話框,單擊OK按鈕,類名輸入“CStuInfoModify”。設(shè)置ADODC的屬性,在“Command Type”中選擇“1-adCmdText”,表示命令為SQL語句。打開DataGrid控件的屬性對(duì)話框,定位到“全部”頁。將DataGrid一欄右邊的“DataSource”綁定為ADODC的ID,這里是“IDC_St
27、uADODC”。以后的操作類似,不再重復(fù)敘述。登錄界面的控件ID和標(biāo)題設(shè)置如表7所示:表7 登陸界面設(shè)置ID和標(biāo)題添加的控件ID號(hào)標(biāo)題其他屬性編輯框(學(xué)號(hào))IDC_XH默認(rèn)編輯框(姓名)IDC_XM默認(rèn)編輯框(專業(yè))IDC_COMBOZY默認(rèn)DataGrid默認(rèn)默認(rèn)見步驟ADODCIDC_StuADODC默認(rèn)見步驟按鈕IDC_BUTSearch查詢默認(rèn)按鈕IDOK保存默認(rèn)按鈕IDCANCEL退出默認(rèn)打開MFC ClassWizad,切換到Member Variables頁下添加成員變量,詳見圖25:圖25為控件添加數(shù)據(jù)成員運(yùn)行程序,例如查詢學(xué)號(hào)為081101,專業(yè)為基礎(chǔ)部的學(xué)生,點(diǎn)擊查詢,顯示
28、結(jié)果如圖26所示:圖26 查詢結(jié)果如果系部中不存在要查詢的學(xué)號(hào)或姓名,則出現(xiàn)如圖27提示:圖27 未找到記錄提示2.5 學(xué)生成績(jī)的增刪改和查詢點(diǎn)擊菜單欄上的“學(xué)生成績(jī)管理”下拉菜單中的“成績(jī)錄入”或工具欄上的“成績(jī)錄入”,即可進(jìn)入學(xué)生成績(jī)?cè)鰟h改和查詢的界面,如圖28所示:圖28 學(xué)生成績(jī)?cè)鰟h改和查詢的界面登錄界面的控件ID和標(biāo)題設(shè)置如表8所示:表8 登陸界面設(shè)置ID和標(biāo)題添加的控件ID號(hào)標(biāo)題其他屬性編輯框(按查找)IDC_COMBO1默認(rèn)編輯框(請(qǐng)輸入)IDC_EDIT1默認(rèn)編輯框(學(xué)號(hào))IDC_EDIT2默認(rèn)編輯框(課程號(hào))IDC_EDIT3默認(rèn)編輯框(成績(jī))IDC_EDIT4默認(rèn)DataG
29、ridIDC_DATAGRID1見步驟ADODCIDC_ADODC1見步驟按鈕IDC_BUTTON1查詢默認(rèn)按鈕IDC_BUTTON2添加默認(rèn)按鈕IDC_BUTTON3修改默認(rèn)按鈕IDC_BUTTON4刪除默認(rèn)按鈕IDC_BUTTON5退出默認(rèn)打開MFC ClassWizad,切換到Member Variables頁下添加成員變量,詳見圖29。圖29 為控件添加數(shù)據(jù)成員對(duì)學(xué)生成績(jī)的查詢,可以按照不同的方式:姓名、學(xué)號(hào)、課程名、課程號(hào),極大的方便了用戶的使用,如按照課程名“計(jì)算機(jī)基礎(chǔ)”進(jìn)行查詢時(shí),課得到如圖30所示的結(jié)果:圖30 成績(jī)查詢結(jié)果對(duì)學(xué)生成績(jī)添加時(shí),如果學(xué)號(hào)或課程號(hào)為空,則出現(xiàn)如圖31
30、的提示:圖31 添加成績(jī)錯(cuò)誤提示如果添加的記錄存在,則出現(xiàn)圖32提示:圖32 添加記錄存在提示若添加成功,則出現(xiàn)圖33提示,并且記錄更新到該界面左邊的表格中:圖33 添加成功提示對(duì)成績(jī)進(jìn)行修改時(shí),如果修改的記錄不存在,則彈出圖34提示圖34 修改記錄不存在提示如果修改成功,則出現(xiàn)圖35提示,點(diǎn)擊確定后,系統(tǒng)更新到左邊的表格中:圖35 修改成功提示對(duì)成績(jī)記錄進(jìn)行刪除時(shí),如果記錄不存在,則彈出如圖36的消息:圖36 刪除記錄不存在的系統(tǒng)消息如果刪除成功,則彈出“刪除成功”的系統(tǒng)消息,并且更新到左邊的表中,如圖37:圖37 刪除成功系統(tǒng)消息總結(jié)通過兩周時(shí)間做出來的學(xué)生管理系統(tǒng),基本的功能已經(jīng)實(shí)現(xiàn),如
31、對(duì)學(xué)生信息的增加、刪除、修改、查詢以及對(duì)學(xué)生成績(jī)的增加、刪除、修改等,還可以對(duì)學(xué)生信息和成績(jī)進(jìn)行多角度查詢,節(jié)省了大量的工作量。而且設(shè)置界面清爽干凈,功能及操作一目了然,并且通過對(duì)觸發(fā)器的定義,可以在刪除學(xué)生信息的同時(shí)刪除該學(xué)生對(duì)應(yīng)的成績(jī),減少了系統(tǒng)大量的冗余數(shù)據(jù)。當(dāng)然,系統(tǒng)也有一些不足之處需要改進(jìn),比如系統(tǒng)在運(yùn)行過程中如果有的地方操作不當(dāng),會(huì)造成運(yùn)行錯(cuò)誤,這是由于代碼中存在一些不合理的地方,以我們現(xiàn)在的知識(shí)也許還不知道錯(cuò)誤出在哪里,但是相信在不斷的學(xué)習(xí)和積累的過程中我們會(huì)慢慢了解。在這兩周做課程設(shè)計(jì)中,收獲了很多。因?yàn)檫@次課程設(shè)計(jì)設(shè)計(jì)的知識(shí)面非常廣。從數(shù)據(jù)庫方面來說,涉及到數(shù)據(jù)庫設(shè)計(jì)的五個(gè)步
32、驟:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)和運(yùn)行調(diào)試,對(duì)于常用的SQL語句如查詢語句、創(chuàng)建視圖、定義觸發(fā)器、定義完整性約束和存儲(chǔ)過程等都進(jìn)行了一次系統(tǒng)的訓(xùn)練;對(duì)于VC+來說,這次進(jìn)行MFC編程,實(shí)現(xiàn)學(xué)生成績(jī)管理的各個(gè)功能,通過增加對(duì)話框、控件、菜單、工具按鈕等,對(duì)MFC又了進(jìn)一步的理解,第一次用MFC編程時(shí)對(duì)MFC的功能等都非常模糊,現(xiàn)在已經(jīng)系統(tǒng)的了解其控件功能以及程序代碼等,而且此次成績(jī)管理系統(tǒng)中首次用到了菜單欄和工具按鈕,是以前都沒有接觸的。而且以前設(shè)計(jì)MFC都是照著書抄,對(duì)其代碼的意思完全不懂,現(xiàn)在經(jīng)過了練習(xí),已經(jīng)可以達(dá)到了舉一反三的效果,根據(jù)網(wǎng)上或者書籍上的內(nèi)容,可以自己嘗
33、試著編寫并運(yùn)行程序,達(dá)到了創(chuàng)新的目的。但是此次課程設(shè)計(jì)最大的收獲不只只是對(duì)SQL和MFC更加熟悉和理解了,而是充分鍛煉了我們的實(shí)際動(dòng)手操作能力,這是現(xiàn)在大學(xué)生最缺乏的能力。平時(shí)我們看著書上的實(shí)例覺得編程也不過如此,都覺得很簡(jiǎn)單就可以編好運(yùn)行,造成了眼高手低的局面。而在實(shí)際操作中,會(huì)遇到各種各樣的問題,而這些問題是書上沒有介紹的,這就需要我們獨(dú)立思考,查詢各種資料,嘗試著去找出哪里出錯(cuò)了,并且找到解決得辦法。鍛煉我們獨(dú)立思考的同時(shí),也培養(yǎng)了我們團(tuán)結(jié)合作的精神,有些問題需要去和周圍的同學(xué)一起探討,這樣可以得到更好的解決方法。這些獨(dú)立思考和團(tuán)隊(duì)合作精神是我們?cè)趯W(xué)習(xí)和工作中必不可少的精神,讓我們?cè)趯W(xué)習(xí)
34、和工作中取得更高的成就。這也是我們這次課程設(shè)計(jì)真正的目的所在。經(jīng)過這次課程設(shè)計(jì),提高了我的能力,也讓我明白了自己的不足,在今后的學(xué)習(xí)工作中一定會(huì)努力改正。參考文獻(xiàn)1 鄭阿奇,劉啟芬,顧韻華.SQL Server 實(shí)用教程.第3版.北京:電子工業(yè)出版社,20092 周啟濤,高英.Visual C+ 數(shù)據(jù)庫開發(fā)基礎(chǔ)與應(yīng)用.第1版.北京:人民郵電出版社,2005附錄 程序代碼1 StuConStr.h頭文件的代碼#ifndef _STUCONSTR_H_#define _STUCONSTR_H_#define SQLCONSTR "Provider=SQLOLEDB.1;Integrate
35、d Security=SSPI;Persist Security Info=False;Initial Catalog=PXSCJ;Data Source=."#endif2 登錄界面“確定”按鈕代碼void CLoginDlg:OnOK() / TODO: Add extra validation hereUpdateData(true);if(m_username="")MessageBox("用戶名不能為空!請(qǐng)重新輸入!","系統(tǒng)消息");return;if(m_username!="李曉媛"|m_
36、passkey!="lixiaoyuan")MessageBox("用戶名或密碼錯(cuò)誤!請(qǐng)重新輸入!","系統(tǒng)消息");m_username=""m_passkey=""UpdateData(false);return;elseCDialog:OnOK();3 添加登錄界面背景圖片的代碼void CLoginDlg:OnPaint() CPaintDC dc(this); / device context for painting/ TODO: Add your message handler c
37、ode here /CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP11); /IDB_BITMAP是你自己的圖對(duì)應(yīng)的ID BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBack
38、ground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); / Do not call COleDBRecordView:OnPaint() for painting messages4 使控件變?yōu)橥该鞯拇aHBRUSH CLoginDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) /HBRUSH hbr = COleDBRecordView:OnCtlColor(pDC, pW
39、nd, nCtlColor);/ TODO: Change any attributes of the DC here HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor); / TODO: Change any attributes of the DC here / TODO: Return a different brush if the default is not desired if(nCtlColor=CTLCOLOR_STATIC)/對(duì)所有的STATIC控件的屬性進(jìn)行設(shè)定 pDC->SetBkMode(TRANSPARE
40、NT); return (HBRUSH):GetStockObject(NULL_BRUSH); return hbr;/ TODO: Return a different brush if the default is not desired/return hbr;5 主界面“添加”按鈕代碼void CXSCJView:OnAdd() / TODO: Add your control notification handler code hereCString strname;strname.Format("Provider=SQLOLEDB.1;Integrated Securit
41、y=SSPI;Persist Security Info=False;Initial Catalog=PXSCJ;Data Source=.");_bstr_t strCnn=strname;tryUpdateData(TRUE);pConnection.CreateInstance (_uuidof(Connection);pConnection->Open(strCnn,"","",NULL);pRs.CreateInstance (_uuidof(Recordset);CString SqlStr;SqlStr.Format (&q
42、uot;select * from XSB where XH='%s'",m_stuXH);pRs->Open (_variant_t(SqlStr),_variant_t(IDispatch*)pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);if(!pRs->RecordCount=0)MessageBox("您輸入的學(xué)號(hào)已存在,請(qǐng)重新添加!","系統(tǒng)消息");elsepRs->AddNew();pRs->PutCollect(&qu
43、ot;XH",_variant_t(m_stuXH);pRs->PutCollect("XM",_variant_t(m_stuXM);pRs->PutCollect("CSSJ",_variant_t(DATE)m_stuCSSJ);pRs->PutCollect("ZY",_variant_t(m_stuZY);pRs->PutCollect("BZ",_variant_t(m_stuBZ);pRs->PutCollect("DZ",_variant_
44、t(m_stuDZ);if(m_stuXBN=atoi("男")pRs->PutCollect("XB",_variant_t("男");elsepRs->PutCollect("XB",_variant_t("女");pRs->Update();MessageBox("添加成功!","系統(tǒng)消息");pRs->Close();pConnection->Close();catch(_com_error &e)_bstr_
45、t bstrSource(e.Source ();_bstr_t bstrDescription(e.Description ();CString sError;sError.Format ("Source:%Description:%s",(LPCSTR)bstrSource,(LPCSTR)bstrDescription);AfxMessageBox(sError);6 主界面“查找”按鈕代碼void CXSCJView:OnSearch() _variant_t varFld;CString strname;strname.Format("Provider=
46、SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=PXSCJ;Data Source=.");_bstr_t strCnn=strname;UpdateData(TRUE);pConnection.CreateInstance(_uuidof(Connection);pConnection->Open(strCnn,"","",NULL);pRs.CreateInstance(_uuidof(Recordset);CString
47、SqlStr;SqlStr.Format ("select * from XSB where XH ='%s'",m_stuXH);pRs->Open(_variant_t(SqlStr),_variant_t(IDispatch*)pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);if(!pRs->RecordCount=0)varFld=pRs->Fields->GetItem("XH")->Value;CString strXH(_T(
48、varFld.bstrVal );strXH.TrimRight();m_stuXH=strXH;varFld=pRs->Fields->GetItem("XM")->Value;CString strXM(_T(varFld.bstrVal );strXM.TrimRight();m_stuXM=strXM;varFld=pRs->Fields->GetItem("ZY")->Value;CString strZY(_T(varFld.bstrVal );strZY.TrimRight();m_stuZY=strZY
49、;varFld=pRs->Fields->GetItem("BZ")->Value;CString strBZ(_T(varFld.bstrVal );strBZ.TrimRight();varFld=pRs->Fields->GetItem("DZ")->Value;CString strDZ(_T(varFld.bstrVal );strDZ.TrimRight();m_stuDZ=strDZ;m_stuBZ=strBZ;varFld=pRs->Fields->GetItem("CSSJ&qu
50、ot;)->Value;CString strCSSJ(_T(varFld.bstrVal );strCSSJ.TrimRight();m_stuCSSJ=varFld.date ;varFld=pRs->Fields->GetItem("XB")->Value;CString sql;sql=(LPCTSTR)(_bstr_t)varFld;if(sql="女") m_stuXBN=1;else m_stuXBN=0;/m_stuXBN=atoi(sql);/AfxMessageBox(sql);UpdateData(FALSE
51、);elseMessageBox("沒有您要查找的學(xué)號(hào)信息!","系統(tǒng)消息");7 主界面“修改”按鈕代碼void CXSCJView:Onxiugai() UpdateData(TRUE);if(m_stuXH=""|m_stuXM="")MessageBox("學(xué)號(hào)和姓名不能為空!請(qǐng)重新輸入!","系統(tǒng)消息");return;_CommandPtr pCmd=NULL;_variant_t vNULL;vNULL.vt=VT_ERROR;vNULL.scode =DISP
52、_E_PARAMNOTFOUND;CString strname;strname.Format("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=PXSCJ;Data Source=.");_bstr_t strCnn=strname;UpdateData(TRUE);pConnection.CreateInstance(_uuidof(Connection);pConnection->Open(strCnn,"",&q
53、uot;",NULL);pCmd.CreateInstance (_uuidof(Command);pCmd->ActiveConnection =pConnection;CString SqlStr;SqlStr.Format("delete from XSB where XH='%s'",m_stuXH);pCmd->CommandText =(_bstr_t)SqlStr;pCmd->Execute (&vNULL,&vNULL,adCmdText);pConnection->Close();trypC
54、onnection.CreateInstance (_uuidof(Connection);pConnection->Open(strCnn,"","",NULL);pRs.CreateInstance (_uuidof(Recordset);CString SqlStr;SqlStr.Format ("select * from XSB where XH='%s'",m_stuXH);pRs->Open (_variant_t(SqlStr),_variant_t(IDispatch*)pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);if(!pRs->RecordCount=0)MessageBox(&qu
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年網(wǎng)絡(luò)安全工程師考試模擬題及答案
- 2026年食品安全專家食品檢測(cè)與質(zhì)量控制題庫
- 2026年新能源企業(yè)環(huán)境監(jiān)測(cè)技術(shù)與設(shè)備操作題庫
- 2026年文娛行業(yè)新媒體運(yùn)營(yíng)筆試寶典
- 2026年建筑設(shè)計(jì)規(guī)范及施工安全模擬測(cè)試題
- 2026年漢語言文學(xué)碩士研究生入學(xué)考試模擬題
- 2026年企業(yè)管理與創(chuàng)新實(shí)踐工商管理學(xué)生練習(xí)題
- 2026年健康飲食指南營(yíng)養(yǎng)烹飪課程試題集
- 2026年稅務(wù)師專業(yè)實(shí)務(wù)筆試模擬題
- 項(xiàng)目質(zhì)量驗(yàn)收管理制度
- GB/T 7122-2025高強(qiáng)度膠粘劑剝離強(qiáng)度的測(cè)定浮輥法
- 人教版七年級(jí)數(shù)學(xué)上冊(cè) 第四章《整式的加減》單元測(cè)試卷(含答案)
- 五常市水稻種植技術(shù)規(guī)程
- 2025年公務(wù)員類社區(qū)禁毒專職員參考題庫含答案解析
- 軍考真題數(shù)學(xué)試卷
- 集團(tuán)財(cái)務(wù)經(jīng)理年終總結(jié)
- 晶界遷移規(guī)律-洞察及研究
- 水站轉(zhuǎn)讓合同協(xié)議書
- 《新媒體廣告設(shè)計(jì)》教學(xué)課件 第1章 走近新媒體廣告
- CNAS管理評(píng)審報(bào)告
評(píng)論
0/150
提交評(píng)論