版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.PAGE.學(xué)科代碼:學(xué)號(hào):XX師范大學(xué)〔本科畢業(yè)論文題目:學(xué)生檔案管理系統(tǒng)學(xué)院:數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)年級(jí):2007級(jí)____指導(dǎo)完成時(shí)間:2011年3月2學(xué)生檔案管理系統(tǒng)摘要[摘要]隨著辦學(xué)規(guī)模的擴(kuò)大,學(xué)校的學(xué)籍檔案管理工作則變得更加復(fù)雜,檔案的完整性、安全性等問題也顯得更加重要,日益引起了人們的關(guān)注。面對(duì)龐大的信息量,需要有學(xué)籍檔案管理系統(tǒng)來提高學(xué)籍檔案管理工作的效率。學(xué)生檔案管理系統(tǒng)使用VisualC++6.0開發(fā)了一個(gè)簡(jiǎn)單的管理系統(tǒng),通過該系統(tǒng),可以對(duì)學(xué)生的基本檔案信息進(jìn)行管理。另外,本系統(tǒng)的另一個(gè)重要功能是能夠?qū)崿F(xiàn)對(duì)學(xué)生的考試成績(jī)進(jìn)行管理,同時(shí)也能對(duì)成績(jī)進(jìn)行各種統(tǒng)計(jì)查詢工作。關(guān)鍵詞:學(xué)生檔案管理數(shù)據(jù)庫VisualC++6.0AccessAbstractWiththeexpansionofthescaleofrunningschool,theenrollmentfilesmanagementisbecomingmorecomplex,fileintegrity,securityproblemsalsoappearsmoreimportant,increasinglydrawnpeople'sattention.Facingthehugeamountofinformation,needhasenrollmentfilesmanagementsystemtoimprovetheefficiencyofenrollmentfilesmanagementwork.ThesystemofmanagingstudentfileusingVisualc++6.0developedasimplemanagementsystem,throughthissystem,canonstudents'basicfileinformationmanagement.Inaddition,thissystemisanotherimportantfunctioncanbemetonstudents'examinationresultforthemanagement,andatthesametimealsocancarryoutvariousstatisticalinquirestotheresult.Keywords:studentsarchivesmanagementdatabaseVisualc++6.0Access目錄1引言41.1開發(fā)背景42系統(tǒng)分析52.1需求分析53系統(tǒng)設(shè)計(jì)73.1繪制用例圖設(shè)計(jì)系統(tǒng)功能73.2繪制系統(tǒng)流程圖73.3開發(fā)工具和開發(fā)技術(shù)的選擇94數(shù)據(jù)庫分析與設(shè)計(jì)104.1數(shù)據(jù)可分析104.2數(shù)據(jù)庫概念設(shè)計(jì)10圖4-9登錄用戶實(shí)體圖124.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)134.4數(shù)據(jù)庫的創(chuàng)建155公共類〔數(shù)據(jù)記錄類設(shè)計(jì)185.1創(chuàng)建ODBC數(shù)據(jù)源185.2創(chuàng)建數(shù)據(jù)記錄類186登錄模塊與界面設(shè)計(jì)216.1登錄模塊設(shè)計(jì)216.2主界面設(shè)計(jì)227學(xué)生檔案管理模塊設(shè)計(jì)257.1系、專業(yè)、班級(jí)的管理設(shè)計(jì)257.2學(xué)生檔案信息管理設(shè)計(jì)288學(xué)生成績(jī)管理模塊設(shè)計(jì)308.1考試課程信息設(shè)置308.2考試成績(jī)查詢?cè)O(shè)計(jì)328.3考試成績(jī)錄入設(shè)計(jì)338.4班級(jí)成績(jī)的匯總統(tǒng)計(jì)設(shè)計(jì)338.5學(xué)生總分名次統(tǒng)計(jì)設(shè)計(jì)348.6學(xué)生單科名次統(tǒng)計(jì)設(shè)計(jì)359系統(tǒng)管理模塊設(shè)計(jì)379.1用戶注冊(cè)設(shè)計(jì)379.2備份/恢復(fù)數(shù)據(jù)庫38參考文獻(xiàn)40致謝411引言1.1開發(fā)背景學(xué)生檔案管理系統(tǒng)是一個(gè)教育單位不可缺少的部分,它的內(nèi)容對(duì)于學(xué)校的決策者和管理者來說都至關(guān)重要,所以學(xué)生檔案管理系統(tǒng)應(yīng)該能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?。但一直以來人們使用傳統(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點(diǎn),如:效率低、保密性差,另外時(shí)間一長(zhǎng),將產(chǎn)生大量的文件和數(shù)據(jù),這對(duì)于查找、更新和維護(hù)都帶來了不少的困難。 隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),它已進(jìn)入人類社會(huì)的各個(gè)領(lǐng)域并發(fā)揮著越來越重要的作用。使用計(jì)算機(jī)對(duì)學(xué)生檔案信息進(jìn)行管理,具有著手工管理所無法比擬的優(yōu)點(diǎn)。例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、保密性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高學(xué)生檔案管理的效率。作為一般小型的教育機(jī)構(gòu),以往對(duì)學(xué)生檔案的管理采用的是人工的方式管理文件檔案,無論是效率還是準(zhǔn)確性都受到很大的限制。因此,開發(fā)一套學(xué)生檔案管理軟件成為很有必要的事情。同時(shí),通過本系統(tǒng)的開發(fā),數(shù)據(jù)的整理,也為學(xué)校將來接入Inter網(wǎng)作好先期的準(zhǔn)備工作。2系統(tǒng)分析2.1需求分析對(duì)學(xué)生檔案的管理,目前最主要的需求有兩部分,一是學(xué)生基本信息的管理,另一個(gè)就是學(xué)生成績(jī)的管理與統(tǒng)計(jì)。對(duì)學(xué)生的基本檔案,按照系、專業(yè)、班級(jí)和學(xué)生的四級(jí)模式進(jìn)行管理,要包含學(xué)生的基本信息,如姓名、性別、民族、年齡、入學(xué)、畢業(yè)時(shí)間等等。要求便于檔案的錄入和管理,同時(shí)有靈活、快捷的查詢功能。學(xué)生成績(jī)的管理與統(tǒng)計(jì),則要求能對(duì)學(xué)生所有科目的考試成績(jī)進(jìn)行入檔,重要的是具有查詢統(tǒng)計(jì)功能。如用戶按照班級(jí)統(tǒng)計(jì)學(xué)生的平均成績(jī)、及格率、優(yōu)秀率等,統(tǒng)計(jì)學(xué)生個(gè)人的總成績(jī)及排名,統(tǒng)計(jì)學(xué)生個(gè)人的單科成績(jī)排名等。2.2功能分析為了維護(hù)數(shù)據(jù)系統(tǒng)的安全性和數(shù)據(jù)的準(zhǔn)確性,設(shè)置了兩種用戶角色:管理員和普通用戶。普通用戶可以在現(xiàn)有班級(jí)設(shè)置的基礎(chǔ)上,對(duì)學(xué)生基本信息進(jìn)行管理,另外,還可以查詢統(tǒng)計(jì)學(xué)生成績(jī)。具體功能如下:查詢學(xué)生基本信息,可以查看現(xiàn)有系、專業(yè)、班級(jí)的所有學(xué)生個(gè)人信息添加、修改現(xiàn)有系、專業(yè)、班級(jí)的所有學(xué)生個(gè)人信息查詢學(xué)生的成績(jī)對(duì)成績(jī)進(jìn)行統(tǒng)計(jì)匯總系統(tǒng)管理員角色,則可以對(duì)整個(gè)系統(tǒng)進(jìn)行管理操作,其在普通用戶功能的基礎(chǔ)上,還增加了如下功能:行政設(shè)置,包括設(shè)置系、系下屬的專業(yè)以及專業(yè)下屬的班級(jí)考試科目的設(shè)置,包括設(shè)置考試類型、時(shí)間段以及科目名稱學(xué)生成績(jī)的錄入與管理數(shù)據(jù)庫的管理,包括數(shù)據(jù)庫的備份與恢復(fù)用戶的管理,包括新用戶的注冊(cè)以及用戶角色的設(shè)置3系統(tǒng)設(shè)計(jì)3.1繪制用例圖設(shè)計(jì)系統(tǒng)功能 學(xué)生檔案管理系統(tǒng)一共包含兩種用戶角色,分別是普通用戶和管理員。 普通用戶只具有基本的學(xué)生信息管理和學(xué)生成績(jī)查詢功能。該角色只可以在現(xiàn)有的班級(jí)中查詢、添加、刪除、修改學(xué)生的基本信息,查詢、統(tǒng)計(jì)所有學(xué)生的考試成績(jī)。圖3-1管理員角色相比普通用戶,還具有設(shè)置院系、設(shè)置考試信息、錄入成績(jī)、用戶管理和數(shù)據(jù)庫管理功能。圖3-23.2繪制系統(tǒng)流程圖本系統(tǒng)需要對(duì)用戶身份進(jìn)行驗(yàn)證,驗(yàn)證通過后再判斷用戶是管理員還是普通用戶,根據(jù)角色判斷用戶可以使用系統(tǒng)中的相應(yīng)操作功能。 另外,對(duì)操作者的操作順序也有一定的要求。如,要添加學(xué)生記錄,首先需要查看該學(xué)生所在的系、所學(xué)專業(yè)以及所在班級(jí)在數(shù)據(jù)庫中是否存在,如果不存在,則首先需要添加設(shè)置這些信息。同樣,要錄入學(xué)生成績(jī),其前提是該學(xué)生的基本信息在系統(tǒng)中已經(jīng)存在。這里以管理員角色為例,其系統(tǒng)功能模塊圖如圖3-3:圖3-33.3開發(fā)工具和開發(fā)技術(shù)的選擇 本系統(tǒng)的設(shè)計(jì)是在WindowsXP中文版操作系統(tǒng)環(huán)境下,使用VisualC++6.0中文版開發(fā)成功的。 VisualC++是一種可視化的、面向?qū)ο蠛褪褂檬录?qū)動(dòng)方式的結(jié)構(gòu)化高級(jí)程序設(shè)計(jì),可用于開發(fā)Windows環(huán)境下的各種應(yīng)用程序。它簡(jiǎn)單易學(xué)、效率高,且功能強(qiáng)大,可以與Windows的專業(yè)開發(fā)工具SDK相媲美。 數(shù)據(jù)庫系統(tǒng)采用的是Micorsoft的Access,采用Access2003開發(fā)工具3.4系統(tǒng)的運(yùn)行環(huán)境 系統(tǒng)可以直接在Win98、Win2000、WinXP環(huán)境下運(yùn)行。注意,系統(tǒng)運(yùn)行時(shí),不必手工設(shè)置ODBC數(shù)據(jù)源,只需將該數(shù)據(jù)庫文件"StudentInfoManage.mdb"拷貝到與系統(tǒng)的可執(zhí)行文件"StudentInfoManage.exe"同一目錄下即可。3.5系統(tǒng)類庫設(shè)計(jì) 學(xué)生檔案管理系統(tǒng)的系統(tǒng)類庫設(shè)計(jì)如下:數(shù)據(jù)庫操作類:數(shù)據(jù)庫中的每一個(gè)表都定義了一個(gè)操作類,包括CDepartmentSet、CExamSubjectSet等。他們從CRecordSet類繼承而來。對(duì)話框類:用戶與系統(tǒng)的交互、數(shù)據(jù)的顯示都是通過對(duì)話框窗口來實(shí)現(xiàn),因此需要定義一些對(duì)話框類,與相應(yīng)的對(duì)話框資源進(jìn)行關(guān)聯(lián),包括CClassDlg、CDepartmentDlg、CExamSubjectDlg等。系統(tǒng)本身提供的框架類:因?yàn)橄到y(tǒng)采用的是MFC單文檔工程框架,因此其包括的系統(tǒng)類有CMainFrame、CStudentInfoManageApp等。4數(shù)據(jù)庫分析與設(shè)計(jì)4.1數(shù)據(jù)可分析考慮到系統(tǒng)的數(shù)據(jù)量較少,為了便于項(xiàng)目開發(fā)和維護(hù),這里后臺(tái)的數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)采用的是Micorsoft的Access數(shù)據(jù)庫系統(tǒng)。Access2000就是關(guān)系數(shù)據(jù)庫開發(fā)工具,數(shù)據(jù)庫能匯集各種信息以供查詢、存儲(chǔ)和檢索。Access的優(yōu)點(diǎn)在于它能使用數(shù)據(jù)表示圖或自定義窗體手機(jī)信息,數(shù)據(jù)表示圖提供了一種類似于Excel的電子表格,可以使數(shù)據(jù)庫一目了然。另外,Access允許創(chuàng)建自定義報(bào)表用于打印或輸出數(shù)據(jù)庫中的信息。Access也提供了數(shù)據(jù)存儲(chǔ)庫,可以使用左面數(shù)據(jù)庫文件把數(shù)據(jù)庫文件置于網(wǎng)絡(luò)文件服務(wù)器,與其他網(wǎng)絡(luò)用戶共享數(shù)據(jù)庫。Access是一種關(guān)系數(shù)據(jù)庫工具,關(guān)系數(shù)據(jù)庫使以開發(fā)的最通用的數(shù)據(jù)庫之一。4.2數(shù)據(jù)庫概念設(shè)計(jì)數(shù)據(jù)庫需要存儲(chǔ)的主要是兩方面的內(nèi)容,學(xué)生的基本檔案和學(xué)生的成績(jī)。為了維護(hù)數(shù)據(jù)完整性和準(zhǔn)確性,將學(xué)生基本信息實(shí)體中的系別,專業(yè)和班級(jí)提取出來,用單獨(dú)的表來存儲(chǔ)這些信息。系統(tǒng)涉及實(shí)體圖如下:系的代碼系的代碼系的名稱系別的描述學(xué)院的系圖4-1系別實(shí)體圖學(xué)生所在的專業(yè)學(xué)生所在的專業(yè)專業(yè)的代碼專業(yè)的名稱專業(yè)所在的系專業(yè)的描述圖4-2專業(yè)實(shí)體圖學(xué)生所在的班級(jí)學(xué)生所在的班級(jí)班級(jí)的代碼班級(jí)的名稱班級(jí)所在專業(yè)班級(jí)所在的系班級(jí)的輔導(dǎo)員班級(jí)的描述圖4-3班級(jí)實(shí)體圖學(xué)生的基本信息學(xué)生的基本信息學(xué)號(hào)姓名所在的系班級(jí)專業(yè)性別名族籍貫入學(xué)時(shí)間、、、、、、圖4-4學(xué)生信息實(shí)體圖科目代碼考試科目科目代碼考試科目考試科目考試類型類型代碼考試類型圖4-5考試類型實(shí)體圖圖4-6考試科目實(shí)體圖時(shí)間段代碼時(shí)間段代碼考試時(shí)間段考試時(shí)間段圖4-7考試時(shí)間段實(shí)體圖編號(hào)編號(hào)學(xué)生姓名學(xué)號(hào)班級(jí)考試類型考試科目考試時(shí)間段補(bǔ)考成績(jī)?nèi)笨贾甘究荚嚦煽?jī)考試成績(jī)考試成績(jī)圖4-8考試成績(jī)實(shí)體圖登錄用戶登錄用戶是否為管理員用戶名用戶密碼圖4-9登錄用戶實(shí)體圖4.3數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)系別信息表用來記錄學(xué)院中所有系的基本信息,包括代碼、名稱及簡(jiǎn)介等信息,該表的邏輯結(jié)構(gòu)如表4-1表4-1department表專業(yè)信息表用來記錄學(xué)院中各系設(shè)置的專業(yè)信息,包括代碼、名稱、簡(jiǎn)介及所屬系的信息,該表的邏輯結(jié)構(gòu)如表4-2表4-2major表班級(jí)信息表用來記錄各專業(yè)所分班級(jí)信息,包含代碼、名稱、簡(jiǎn)介及所屬專業(yè)的信息,該表的邏輯結(jié)構(gòu)如表4-3表4-3class表學(xué)生信息表用了記錄學(xué)生的基本檔案,包括學(xué)生的姓名、學(xué)號(hào)、性別、出生年月、家庭地址的基本信息。另外,還必須包含學(xué)生所在的班級(jí)、所的專業(yè)及所在的系,該表的邏輯結(jié)構(gòu)如表4-4表4-4student表考試類型信息表用來記錄所有的考試類型,如期中考試、期末考試、平日測(cè)試、過級(jí)考試等。包含類型代碼和考試類型兩個(gè)字段,其邏輯結(jié)構(gòu)如表4-5表4-5examtype表考試科目信息表用來記錄所有的考試科目,包含科目代碼和考試科目?jī)蓚€(gè)字段,其邏輯結(jié)構(gòu)如表4-6表4-6examsubject表考試時(shí)間段信息表用來記錄所有的考試時(shí)間段,如2009上學(xué)期、2009下學(xué)期,包含代碼和考試時(shí)間段兩個(gè)字段,其邏輯結(jié)構(gòu)如表4-7表4-7examtime表考試成績(jī)信息記錄表記錄了所有的學(xué)生所有科目的考試成績(jī),搞好記錄代碼、學(xué)號(hào)、姓名、所在班級(jí)、考試類型、考試科目、考試時(shí)間段、考試成績(jī)、補(bǔ)考成績(jī),以及是否缺考等字段,其邏輯結(jié)構(gòu)如表4-8表4-8score表用戶登錄信息表用來記錄系統(tǒng)的所有使用用戶信息,包含用戶名、密碼及權(quán)限三個(gè)字段,其邏輯結(jié)構(gòu)如表4-9表4-9user表4.4數(shù)據(jù)庫的創(chuàng)建各表設(shè)計(jì)完畢后就可以創(chuàng)建數(shù)據(jù)庫。在Access2000中,新建數(shù)據(jù)庫,名稱為"StudentInfoManage.mdb",然后通過創(chuàng)建向?qū)?chuàng)建各表,如圖4-10:圖4-10創(chuàng)建完畢后,即得到了數(shù)據(jù)庫文件:"StudentInfoManage.mdb"。為了維護(hù)數(shù)據(jù)庫中數(shù)據(jù)的準(zhǔn)確性和完整性,對(duì)表中一些字段做了一定的限制。對(duì)student表而言,其class字段〔所屬班級(jí)的記錄必須在class表中存在。同樣,class表中的major字段〔所屬專業(yè)必須在major表中存在,而major表中的department字段〔所屬專業(yè)必須在department表中存在。對(duì)score表而言,其subject字段〔考試科目、type字段〔考試類型、time字段〔考試時(shí)間段的記錄必須在examsubject、examtype和examtime中存在,而code〔學(xué)號(hào)、name〔姓名、class〔班級(jí)字段,必須在student表中存在。各表的關(guān)系圖如下圖4-11:5公共類〔數(shù)據(jù)記錄類設(shè)計(jì)程序開發(fā)中,對(duì)數(shù)據(jù)庫訪問與操作時(shí)通過MFCODBC類來實(shí)現(xiàn)的。從CRecordSet類繼承了CDepartmenfSet、CExamSubjectSet、CExamtimeset、CExamtypeSet、CmajorSet、CScoreSet、和CUserSet類,分別用于操作數(shù)據(jù)庫中對(duì)應(yīng)的表。5.1創(chuàng)建ODBC數(shù)據(jù)源要?jiǎng)?chuàng)建這些類,首先要定義ODBC數(shù)據(jù)源,可以通過手工方式"控制面板"→"管理工具"→"數(shù)據(jù)源〔ODBC"來設(shè)置,也可以在程序中通過編程來實(shí)現(xiàn)。這里使用后者,類系統(tǒng)類CStudentImfoManageSpp的InitInstance函數(shù)中,添加如下代碼:BOOLCStudentInfoManageApp::InitInstance<>{ AfxEnableControlContainer<>; SQLConfigDataSource<NULL,ODBC_ADD_DSN, "MicrosoftAccessDriver<*.mdb>", "DSN=StudentInfoManage\0" "Description=Student\0""FileType=Access\0""DBQ=.\\StudentInfoManage.mdb\0">; //數(shù)據(jù)庫文件、、、在第4行代碼中通過API函數(shù)SQLConfigDataSource設(shè)置ODBC數(shù)據(jù)源,第5~9行代碼分別設(shè)置相關(guān)參數(shù),第9行代碼將數(shù)據(jù)庫文件的路徑設(shè)置為默認(rèn)目錄,即VC工程所在的目錄。因此,編譯運(yùn)行程序前,需要將是數(shù)據(jù)文件"StudentInfoManage.mdb"復(fù)制到工程的根目錄下,程序運(yùn)行后,即實(shí)現(xiàn)了ODBC數(shù)據(jù)源的自動(dòng)設(shè)置。5.2創(chuàng)建數(shù)據(jù)記錄類設(shè)置了ODBC數(shù)據(jù)源后,就可以創(chuàng)建數(shù)據(jù)記錄類。以CScoreSet類為例,它與數(shù)據(jù)庫中的表score表關(guān)聯(lián),具體創(chuàng)建過程如下:在VC窗口中,執(zhí)行"Insert"→"NiwClass"菜單命令,在彈出的對(duì)話框中,選擇CRecordset作為基礎(chǔ),如圖5-1:圖5-1單擊"確定"按鈕,彈出"DatabaseOptions"對(duì)話框,在ODBC下拉列表框中,會(huì)發(fā)現(xiàn)新創(chuàng)建的數(shù)據(jù)源"StudentInfoManage",如圖5-2:圖5-2選擇數(shù)據(jù)源,單擊"OK"按鈕,彈出"SelectDatabaseTables"對(duì)話框,其中列出了數(shù)據(jù)庫中的所有表,如圖5-3:圖5-36登錄模塊與界面設(shè)計(jì)系統(tǒng)啟動(dòng)首先進(jìn)入登錄模塊,即創(chuàng)建"用戶登錄"對(duì)話框,在下拉列表框中選擇登錄用戶名,只有輸入正確的密碼偶,才能進(jìn)入系統(tǒng)界面。6.1登錄模塊設(shè)計(jì)登錄對(duì)話框的關(guān)聯(lián)類為CLoginDlg,在對(duì)話框的初始化函數(shù)OnInitDialog中,讀取user表中的所有用戶記錄,將用戶名添加到登錄對(duì)話框的下拉列表中,代碼如下:BOOLCLoginDlg::OnInitDialog<>{ CDialog::OnInitDialog<>; CUserSetrecordset; CStringstrSQL; UpdateData<TRUE>; strSQL="select*fromuser"; if<!recordset.Open<AFX_DB_USE_DEFAULT_TYPE,strSQL>> { MessageBox<"打開數(shù)據(jù)庫失敗!","數(shù)據(jù)庫錯(cuò)誤",MB_OK>; returnFALSE; } while<!recordset.IsEOF<>> { m_ctrUser.AddString<recordset.m_user>; recordset.MoveNext<>; } recordset.Close<>; returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION:OCXPropertyPagesshouldreturnFALSE}在第7、8行代碼中通過CUwerSet對(duì)象實(shí)現(xiàn)查詢user表的所有記錄,第13——17行代碼實(shí)現(xiàn)遍歷查詢結(jié)果記錄集,將用戶名添加到下拉組合框中。6.2主界面設(shè)計(jì)系統(tǒng)主界面為標(biāo)準(zhǔn)的Windows窗口界面,所有操作通過菜單項(xiàng)來實(shí)現(xiàn)。為了美好界面,在視圖窗口添加了圖片,該圖片的大小可以隨著視圖窗口的大小的改變而縮放,具體在視圖類CStudentInfoManageView的OnPaint函數(shù)中實(shí)現(xiàn),代碼如下:voidCStudentInfoManageView::OnPaint<>{ CPaintDC*pDC=newCPaintDC<this>;//創(chuàng)建設(shè)備上下文 CBitmapbmp; RECT Rect; RECT RectView; POINT ptSize; CDC dcmem; BITMAP bm; intb=bmp.LoadBitmap<IDB_BITMAP_BG>;//將位圖取出; dcmem.CreateCompatibleDC<pDC>;//創(chuàng)建兼容設(shè)備上下文。 dcmem.SelectObject<&bmp>;//用設(shè)備上下文選擇位圖; dcmem.SetMapMode<pDC->GetMapMode<>>;//設(shè)置映射方式; GetObject<bmp.m_hObject,sizeof<BITMAP>,<LPSTR>&bm>;//映射位圖; GetClientRect<&Rect>; ptSize.x=bm.bmWidth; ptSize.y=bm.bmHeight; pDC->DPtoLP<<LPPOINT>&ptSize,1>;//設(shè)備單元to邏輯單元; GetClientRect<&RectView>; CRectRectBmp=RectView; //當(dāng)位圖寬度容納不下的處理 if<<RectView.right-RectView.left>>bm.bmWidth> { RectBmp.left=RectView.left+<RectView.right-RectView.left-bm.bmWidth>/2; RectBmp.right=bm.bmWidth; } else { RectBmp.left=RectView.left; RectBmp.right=RectView.right-RectBmp.left; } //當(dāng)位圖高度容納不下的處理 if<<RectView.bottom-RectView.top>>bm.bmHeight> { RectBmp.top=RectView.top+<RectView.bottom-RectView.top-bm.bmHeight>/2; RectBmp.bottom=bm.bmHeight; } else { RectBmp.top=RectView.top; RectBmp.bottom=RectView.bottom-RectBmp.top; } //加載視圖到設(shè)備上下文中 pDC->StretchBlt<RectBmp.left,RectBmp.top,RectBmp.right,\ RectBmp.bottom,&dcmem,0,0,bm.bmWidth,bm.bmHeight,\ SRCCOPY>; //刪除設(shè)備上下文 dcmem.DeleteDC<>;}7學(xué)生檔案管理模塊設(shè)計(jì)學(xué)生檔案管理模塊包括基礎(chǔ)信息〔如系、專業(yè)、班級(jí)等的管理和檔案信息的管理。7.1系、專業(yè)、班級(jí)的管理設(shè)計(jì)要添加學(xué)生檔案首頁需要一次設(shè)置系、專業(yè)和班級(jí)信息,它們都是通過對(duì)話框窗口來實(shí)現(xiàn)。這里以設(shè)置專業(yè)為例,說明其實(shí)現(xiàn)過程。當(dāng)用戶執(zhí)行"基礎(chǔ)設(shè)置"→"專業(yè)設(shè)置"菜單命令后,會(huì)彈出如圖7-1所示的"專業(yè)設(shè)置"對(duì)話框,其中可以添加、修改和刪除專業(yè)記錄。圖7-1在CMainFrame類中為"專業(yè)設(shè)置"菜單項(xiàng)添加ON_COMMAND響應(yīng)函數(shù),實(shí)現(xiàn)創(chuàng)建專業(yè)設(shè)置對(duì)話框,同時(shí)為"專業(yè)設(shè)置"菜單項(xiàng)添加ON_UJPDATE_COMMAND_UI響應(yīng)函數(shù),帶么如下:voidCMainFrame::OnUpdateBaseDepartment<CCmdUI*pCmdUI>{ //TODO:AddyourcommandupdateUIhandlercodehere CStudentInfoManageApp*ptheApp=<CStudentInfoManageApp*>AfxGetApp<>; pCmdUI->Enable<ptheApp->m_bIsAdmin>;}函數(shù)在第3行代碼獲取主程序?qū)ο?然后根據(jù)主程序?qū)ο笾杏涗浀挠脩魴?quán)限設(shè)置菜單選項(xiàng)是否可用〔第4行代碼。專業(yè)設(shè)置對(duì)話框?qū)?yīng)的對(duì)話框類為CMajorDlg。在對(duì)話框的初始化函數(shù)OnInitDialog中,首先讀取數(shù)據(jù)庫department表中的數(shù)據(jù),將數(shù)據(jù)庫中現(xiàn)有的系別記錄添加到對(duì)話框系別下拉列表框中,即用戶只能在數(shù)據(jù)庫中現(xiàn)有系中添加專業(yè)。然后,讀取數(shù)據(jù)庫major表中的數(shù)據(jù),將數(shù)據(jù)庫中現(xiàn)有的專業(yè)記錄添加到對(duì)話框的列表框中顯示。當(dāng)用戶單擊"增加"按鈕,用戶就可以在對(duì)話框中添加新的專業(yè)記錄,任何點(diǎn)擊"保存"按鈕,即將該專業(yè)信息添加到數(shù)據(jù)庫中。"保存"按鈕的想要函數(shù)為OnButtonSave,代碼如下:voidCMajorDlg::OnButtonSave<>{ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData<>; if<m_strName==""> { AfxMessageBox<"請(qǐng)輸入專業(yè)名稱!">; return; } if<m_strCode==""> { AfxMessageBox<"請(qǐng)輸入專業(yè)代碼!">; return; } if<m_strDepartment==""> { AfxMessageBox<"請(qǐng)輸入所屬系別!">; return; } CStringstrSQL; strSQL.Format<"select*frommajorwherecode='%s'",m_strCode>; if<!m_recordset.Open<AFX_DB_USE_DEFAULT_TYPE,strSQL>> { MessageBox<"打開數(shù)據(jù)庫失敗!","數(shù)據(jù)庫錯(cuò)誤",MB_OK>; return; } if< m_recordset.GetRecordCount<>!=0> { AfxMessageBox<"當(dāng)前編碼已經(jīng)存在!請(qǐng)重新輸入!">; m_strCode=""; UpdateData<FALSE>; m_recordset.Close<>; return; } m_recordset.AddNew<>; m_recordset.m_name=m_strName ; m_recordset.m_code=m_strCode ; m_recordset.m_department= m_strDepartment; m_recordset.m_brief=m_strInfo; m_recordset.Update<>; m_recordset.Close<>; RefreshData<>; }7.2學(xué)生檔案信息管理設(shè)計(jì)當(dāng)用戶執(zhí)行"學(xué)生管理"→"學(xué)生檔案管理"菜單命令后,菜單命令響應(yīng)函數(shù)會(huì)創(chuàng)建學(xué)生檔案信息管理對(duì)話框。在該對(duì)話框中,用戶可以查詢,添加,修改,刪除學(xué)生檔案信息。學(xué)生檔案管理對(duì)話框?qū)?yīng)的對(duì)話框類為CStudentDlg,下面以添加新的用戶檔案管理為列,解釋其代碼開發(fā)。添加按鈕響應(yīng)函數(shù)為OnButtonNew,函數(shù)代碼如下:voidCStudentDlg::OnButtonNew<>{ //TODO:Addyourcontrolnotificationhandlercodehere CStudentInfoDlgDlg; if<IDOK==Dlg.DoModal<>> {//添加新記錄 if<!m_recordset.Open<AFX_DB_USE_DEFAULT_TYPE>> { AfxMessageBox<"打開數(shù)據(jù)庫失敗!">; return; } m_recordset.AddNew<>; m_recordset.m_class=Dlg.m_strClass ; m_recordset.m_department=Dlg.m_strDept ; m_recordset.m_sex =Dlg.m_strSex; m_recordset.m_major=Dlg.m_strMajor; m_recordset.m_birthday =Dlg.m_tmBirth ; m_recordset.m_enroll_date=Dlg.m_tmEnroll; m_recordset.m_graduate_date=Dlg.m_tmGraduate ; m_recordset.m_address =Dlg.m_strAddress; m_recordset.m_edu_sys =Dlg.m_strEdusys; m_recordset.m_family=Dlg.m_strFamily; m_recordset.m_folk=Dlg.m_strFolk ; m_recordset.m_IDCard =Dlg.m_strIDCard; m_recordset.m_native=Dlg.m_strNative; m_recordset.m_oldname =Dlg.m_strOldName ; m_recordset.m_phone=Dlg.m_strPhone; m_recordset.m_political =Dlg.m_strPolitical ; m_recordset.m_postcode=Dlg.m_strPostCode ; m_recordset.m_code=Dlg.m_strCode ; m_recordset.m_name=Dlg.m_strName ; m_recordset.Update<>; m_recordset.Close<>; CStringstrSQL="select*fromstudent"; RefreshData<strSQL>; }}函數(shù)的第3、4行代碼首先創(chuàng)建學(xué)生信息對(duì)話框,供用戶輸入相關(guān)的學(xué)生檔案信息,然后在第6—17行代碼將對(duì)話框輸入的學(xué)生檔案添加到數(shù)據(jù)庫的student表中,在第18、19行代碼實(shí)現(xiàn)將student表中的所有記錄添加到列表控件中顯示。8學(xué)生成績(jī)管理模塊設(shè)計(jì)學(xué)生成績(jī)管理模塊包括基本考試課程信息的設(shè)置,考試成績(jī)查詢,考試成績(jī)錄入及考試成績(jī)的統(tǒng)計(jì)匯總等幾個(gè)子模塊。8.1考試課程信息設(shè)置在錄入學(xué)生成績(jī)之前,首先需要設(shè)置考試課程信息??荚囌n程信息設(shè)計(jì)包括考試類型,考試科目和考試時(shí)間的設(shè)計(jì)。這里以考試科目設(shè)計(jì)為例,介紹開發(fā)過程。當(dāng)用戶執(zhí)行"成績(jī)管理"→"基礎(chǔ)設(shè)置"→"考試科目設(shè)置"菜單后,會(huì)彈出如圖8-1所示對(duì)話框,通過該對(duì)話框用戶可以添加,修改,和刪除考試科目信息。圖8-1在"考試科目設(shè)置"對(duì)話框中,單擊"增加"按鈕,在編輯框中輸入科目信息,單擊"保存"按鈕,即完成了考試科目的添加設(shè)置。"保存"按鈕在對(duì)話框類CExamSubjectDlg中響應(yīng)函數(shù)為OnButtonSave,代碼如下:voidCExamSubjectDlg::OnButtonSave<>{ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData<>; if<m_strName==""> { AfxMessageBox<"請(qǐng)輸入考試科目!">; return; } if<m_strCode==""> { AfxMessageBox<"請(qǐng)輸入科目代碼!">; return; } CStringstrSQL; strSQL.Format<"select*fromexamsubjectwherecode='%s'",m_strCode>; if<!m_recordset.Open<AFX_DB_USE_DEFAULT_TYPE,strSQL>> { MessageBox<"打開數(shù)據(jù)庫失敗!","數(shù)據(jù)庫錯(cuò)誤",MB_OK>; return; } if< m_recordset.GetRecordCount<>!=0> { AfxMessageBox<"當(dāng)前編碼已經(jīng)存在!請(qǐng)重新輸入!">; m_strCode=""; UpdateData<FALSE>; m_recordset.Close<>; return; } m_recordset.AddNew<>; m_recordset.m_name=m_strName ; m_recordset.m_code=m_strCode ; m_recordset.Update<>; m_recordset.Close<>; RefreshData<>; }首先判斷用戶輸入信息的有效性,然后將其寫入數(shù)據(jù)庫對(duì)應(yīng)的表中,最后更新顯示對(duì)話框列表中記錄。8.2考試成績(jī)查詢?cè)O(shè)計(jì)系統(tǒng)用戶可以查詢學(xué)生的所有考試成績(jī)。當(dāng)用戶執(zhí)行"成績(jī)管理"→"學(xué)生成績(jī)查詢"菜單項(xiàng)后,會(huì)彈出如圖8-2所示對(duì)話框。通過該對(duì)話框,用戶可以選擇班級(jí),查看班級(jí)中學(xué)生的各科成績(jī),也可以直接按姓名搜索學(xué)生的沉寂。圖8-2在"成績(jī)查詢"對(duì)話框中,通過班級(jí)下拉列表框選擇班級(jí),單擊"顯示學(xué)生列表"按鈕,在對(duì)話左側(cè)的列表中,顯示該該班級(jí)所有學(xué)生的信息。在列表框中選擇學(xué)生,在右側(cè)列表框中將列出該學(xué)生的所有考試成績(jī)。在"成績(jī)查詢"對(duì)話框類CScoreQueryDlg的初始化函數(shù)OnInitDialog中,查詢數(shù)據(jù)庫中所有班級(jí),并添加到班級(jí)列表框中,另外對(duì)列表框做一些基本的初始化工作。在"顯示學(xué)生列表"按鈕響應(yīng)函數(shù)OnButtonList中,從數(shù)據(jù)庫中查詢所選班級(jí)的學(xué)生記錄,并添加到左側(cè)窗口的列表控件中。8.3考試成績(jī)錄入設(shè)計(jì)系統(tǒng)管理員可以錄入學(xué)生成績(jī)。當(dāng)執(zhí)行"成績(jī)管理"→"學(xué)生成績(jī)錄入"菜單項(xiàng)后,會(huì)彈出如圖8-3所示的對(duì)話框。通過該對(duì)話框,用戶選擇班級(jí),考試類型,考試時(shí)間段,以及考試科目等信息后,單擊"開始錄入"按鈕,在列表框中會(huì)列出該班級(jí)所有學(xué)生的該科目成績(jī)〔初始為0。鼠標(biāo)左鍵雙擊每條記錄,會(huì)彈出學(xué)生成績(jī)錄入對(duì)話框,供管理員錄入或修改成績(jī)。圖8-3在成績(jī)錄入對(duì)話框類CScoreInputDlg的初始化函數(shù)OnINetDialog中,查詢數(shù)據(jù)庫中的所有班級(jí),考試類型,考試時(shí)間段和考試類型記錄,并添加到相應(yīng)的列表框中。在"開始錄入"按鈕響應(yīng)函數(shù)OnButtonInput中,根據(jù)用戶輸入的信息,從數(shù)據(jù)庫查找該班級(jí)學(xué)生的成績(jī),并在成績(jī)列表框中顯示。8.4班級(jí)成績(jī)的匯總統(tǒng)計(jì)設(shè)計(jì)系統(tǒng)用戶可以通過班級(jí)成績(jī)的匯總統(tǒng)計(jì),查看某一班級(jí)某門考試的平均成績(jī)、及格率、優(yōu)秀率等信息。當(dāng)執(zhí)行"成績(jī)管理"→"班級(jí)成績(jī)匯總統(tǒng)計(jì)菜單項(xiàng)后,會(huì)彈出如圖8-4所示對(duì)話框。當(dāng)用戶選中班級(jí)、考試時(shí)間段和考試類型信息后,單擊"統(tǒng)計(jì)"按鈕,在列表框中會(huì)列出所有考試科目的統(tǒng)計(jì)信息。圖8-4對(duì)話框?qū)?yīng)的對(duì)話框類為CScoreClassStatDlg,在對(duì)話列表框的初始化函數(shù)中,初始化下拉列表框和統(tǒng)計(jì)列表框。在"統(tǒng)計(jì)"按鈕消息響應(yīng)函數(shù)OnButtonStat中,通過創(chuàng)建信息的記錄集,使用SQL語句統(tǒng)計(jì)匯總班級(jí)學(xué)生的各科成績(jī),并在列表框中顯示。8.5學(xué)生總分名次統(tǒng)計(jì)設(shè)計(jì)系統(tǒng)用戶可以同學(xué)生總分名次統(tǒng)計(jì),查看某一班級(jí)所有學(xué)生的總成績(jī)、平均分,以及班級(jí)排名。當(dāng)執(zhí)行"成績(jī)管理"→"學(xué)生總分名次查詢"菜單命令后,會(huì)彈出如圖8-5所示對(duì)話框。當(dāng)用戶選中班級(jí),考試時(shí)間段和考試類型信息后,單擊"統(tǒng)計(jì)"按鈕,在列表框總會(huì)列出該班級(jí)所有的學(xué)生的總分、平均分和排名。圖8-5對(duì)話框?qū)?yīng)的對(duì)話框類為CScoreTotaIDlg,在對(duì)話框的初始化函數(shù)中,初始化下拉列表框和統(tǒng)計(jì)列表框。在"統(tǒng)計(jì)"按鈕消息響應(yīng)函數(shù)OnButtonStat中,通過創(chuàng)建消息的記錄集,是用SQL語句統(tǒng)計(jì)綁架個(gè)學(xué)生的總成績(jī)、平均成績(jī),并在列表框中顯示。8.6學(xué)生單科名次統(tǒng)計(jì)設(shè)計(jì)系統(tǒng)用戶可以同過學(xué)生單科名次統(tǒng)計(jì),查詢某一班級(jí)所有學(xué)生的某一科目的分?jǐn)?shù)及排名情況。當(dāng)執(zhí)行"成績(jī)管理"→"學(xué)生單科名次查詢"菜單命令后,會(huì)彈出如圖8-6所示對(duì)話框。當(dāng)用戶選中班級(jí)、考試時(shí)間段、考試類型和考試科目信息后,單擊"統(tǒng)計(jì)"按鈕,在列表框中會(huì)列出該班級(jí)所有的學(xué)生該學(xué)科的成績(jī)及排名。圖8-6對(duì)話框?qū)?yīng)的對(duì)話框類為
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房子銷售與綠色環(huán)保標(biāo)準(zhǔn)合同3篇
- 2025年度天然氣管道運(yùn)輸與供用氣合同詳細(xì)版2篇
- 二零二五年度教育機(jī)構(gòu)招生資源共享合同3篇
- 二零二五年度成都租賃市場(chǎng)房源信息服務(wù)平臺(tái)合同3篇
- 二零二五年度電動(dòng)手車轉(zhuǎn)讓及電池更換服務(wù)合同2篇
- 二零二五年度房屋地基打樁與建筑廢棄物無害化處理合同3篇
- 2025年度建筑工程合同策劃與建筑節(jié)能評(píng)估3篇
- 2025年度建筑工程景觀綠化質(zhì)量檢測(cè)服務(wù)合同3篇
- 2025年二手房過戶環(huán)保安全及拆除協(xié)議3篇
- 2025年度房屋租賃使用安全責(zé)任及租戶信用評(píng)估合同3篇
- 中東及非洲注塑成型模具行業(yè)現(xiàn)狀及發(fā)展機(jī)遇分析2024-2030
- 牡丹江2024年黑龍江牡丹江醫(yī)科大學(xué)招聘109人筆試歷年典型考題及考點(diǎn)附答案解析
- 貴州省黔西南布依族苗族自治州2023-2024學(xué)年六年級(jí)下學(xué)期6月期末語文試題
- 泰州市2022-2023學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題【帶答案】
- JGJ276-2012 建筑施工起重吊裝安全技術(shù)規(guī)范 非正式版
- QCT1067.4-2023汽車電線束和電器設(shè)備用連接器第4部分:設(shè)備連接器(插座)的型式和尺寸
- 2019電子保單業(yè)務(wù)規(guī)范
- 學(xué)堂樂歌 說課課件-2023-2024學(xué)年高中音樂人音版(2019) 必修 音樂鑒賞
- 幕墻工程材料組織、運(yùn)輸裝卸和垂直運(yùn)輸方案
- 灌溉用水循環(huán)利用技術(shù)
- 泌尿科一科一品匯報(bào)課件
評(píng)論
0/150
提交評(píng)論