




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
吉首大學本科生畢業(yè)論文JISHOUUNIVERSITY本科生畢業(yè)設(shè)計題目:基于C++的學生宿舍管理系統(tǒng)的設(shè)計與實現(xiàn)作者:學號:所屬學院:信息科學與工程學院專業(yè)年級:指導教師:李建鋒職稱:副教授完成時間:2014年5月23日吉首大學教務處制目錄TOC\o"1-2"\h\u76摘要 第1章緒論1.1課題設(shè)計背景及現(xiàn)狀隨著計算機產(chǎn)業(yè)的飛速發(fā)展,電子計算機已經(jīng)被廣泛的應用于文字處理、信息管理、輔助教學、輔助設(shè)計以及人們的日常生活當中。尤其是在計算機的操作系統(tǒng)具有了圖形化的界面后,使用計算機早已經(jīng)不再是某些專業(yè)人員的特權(quán),各行各業(yè)的人們不需要經(jīng)過專業(yè)化的訓練就能自如的在計算機上進行各種復雜的操作。學生宿舍管理系統(tǒng)對于一所學校來說將是必不可少的組成部分。當今社會是個飛速進步的世界,原始的記錄方式早已經(jīng)被社會所淘汰,計算機化管理正是適應時代的產(chǎn)物。21世紀的今天,信息社會占據(jù)著主流地位,計算機在各行中的運用已經(jīng)得到了普及,自動化、信息化的管理也越來越廣泛地應用于各個領(lǐng)域。目前很多學校還停留在宿舍管理人員依靠手工記錄數(shù)據(jù)的最初階段,手工記錄相對于規(guī)模較小的學校來說還可以勉強接受,但相對于學生信息量比較龐大,需要記錄存檔的數(shù)據(jù)較多的高校來說,人工記錄是相當?shù)穆闊┑?。而且當查找某條記錄的時候,由于數(shù)據(jù)量非常龐大,還只能靠人工一條一條的去查找,這樣不但麻煩而且浪費了許多時間,效率也就比較低。針對以上這些情況,設(shè)計一個學生宿舍管理系統(tǒng),使系統(tǒng)能夠解決當前存在的這些問題。此系統(tǒng)采用的是計算機化管理,系統(tǒng)做到盡量人性化,讓使用者能夠感覺到操作非常的方便,管理人員只需要做的就是將數(shù)據(jù)錄入到系統(tǒng)的數(shù)據(jù)庫中去。由于數(shù)據(jù)庫存儲容量很大,而且非常穩(wěn)定,適合長時間保存,也不易丟失。這毫無疑問可以解決學校在手工宿舍管理所存在的各種問題,能夠更方便的查詢以及統(tǒng)計各項信息。本系統(tǒng)具有安全性高、穩(wěn)定性好、運行速度快的優(yōu)點,并且能夠非??焖俚牟樵儗W校所需的各項信息[1]。第2章相關(guān)知識點介紹2.1C++知識介紹MicrosoftVisualC++,(簡稱VisualC++、MSVC、VC++或VC)微軟公司的C++開發(fā)工具,具有集成開發(fā)環(huán)境,可編輯C語言,C++以及C++/CLI等編程語言。VC++整合了非常便利的除錯工具,而且整合了微軟視窗程式設(shè)計(WindowsAPI)、三維動畫DirectXAPI,Microsoft.NET框架。目前最新的版本是MicrosoftVisualC++2013。它利用MFC類庫的強大優(yōu)勢,使其成為Windows平臺最為優(yōu)秀的開發(fā)工具之一,也是目前功能最為強大的程序開發(fā)平臺之一。MFC是采用VisualC++開發(fā)環(huán)境編寫Windows應用程序的最佳選擇,它是一組C++類,采用它可以為用戶定制特定的Windows應用程序[2]。C++這個名字是RickMascitti于1983年中所建議的,并于1983年12月首次使用。更早以前,尚在研究階段的發(fā)展中語言曾被稱為“newC”,之后是“CwithClasses”。在計算機科學中,C++仍被稱為C語言的上層結(jié)構(gòu)。它最后得名于C語言中的“++”操作符(其對變量的值進行遞增)。而且在共同的命名約定中,使用“+”以表示增強的程序。Stroustrup說:“這個名字象征著源自于C語言變化的自然演進”。C++以擁有“語法高亮”,IntelliSense(自動完成功能)以及高級除錯功能而著稱。使用它,用戶可以進行遠程調(diào)試,單步執(zhí)行等。用戶還能在調(diào)試期間重新編譯被修改的代碼,而不用重新啟動正在調(diào)試的程序。其編譯和建置系統(tǒng)以最小重建功能、預編譯頭文件及累加連結(jié)著稱[3]。C++課程是計算機專業(yè)的專業(yè)基礎(chǔ)課程,具有較強的理論性和非常高的實踐操作性。該課程的主要作用和目的是:培養(yǎng)學生面向?qū)ο缶幊趟枷?,訓練學生的編程思維,加強學生的技能訓練,培養(yǎng)學生面向?qū)ο蟮某绦蛟O(shè)計能力和團隊合作的意識,以便更好地適應將來工作崗位[4]。2.2ADO知識介紹ADO(activeXdataobjects)是基于組件的數(shù)據(jù)庫編程接口,它是一個和編程語言無關(guān)的COM組件系統(tǒng)ADO的精髓在于利用簡單的COM指令來快速方便地訪問ODBC數(shù)據(jù)源,微軟的表格、列表框等ActiveX控件,使得用戶可以簡便地利用ADO工作.ADO應用程序通過OLEDB提供程序訪問數(shù)據(jù).雖然ADO應用程序仍能對SQLServerODBC驅(qū)動程序使用ODBC的OLEDB提供程序,但使用SQLServer的OLEDB提供程序效率更高[5]。在MicrosoftVisualC++編輯器中,可以使用ADO對象以及ADO的附加組件(稱為MicrosoftADOExtensionsforDLLandSecurity(ADOX))來創(chuàng)建或修改表和查詢、檢驗數(shù)據(jù)庫、或者訪問外部數(shù)據(jù)源。還可在代碼中使用ADO來操作數(shù)據(jù)庫中的數(shù)據(jù)。2.3SQLSever2000知識介紹SQLServer2000是Microsoft公司推出的SQLServer數(shù)據(jù)庫管理系統(tǒng)的一個版本。該版本繼承了SQLServer7.0版本的優(yōu)點同時又比它增加了許多更先進的功能,具有使用方便,可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點,可跨越從運行MicrosoftWindows98的膝上型電腦到運行MicrosoftWindows2000的大型多處理器的服務器等多種平臺使用。具備以下幾個特性:1、數(shù)據(jù)結(jié)構(gòu)化2、數(shù)據(jù)共享性高、冗余度小、易擴充3、數(shù)據(jù)獨立性高4、統(tǒng)一的數(shù)據(jù)管理和控制[6]具備以下幾個優(yōu)點:1、系統(tǒng)管理先進,支持Windows圖形化管理工具,支持本地和遠程的系統(tǒng)管理和配置。2、強壯的事務處理功能,采用各種方法保證數(shù)據(jù)的完整性。3、支持對稱多處理器結(jié)構(gòu)、存儲過程、ODBC,并具有自主的SQL語言。SQLServer以其內(nèi)置的數(shù)據(jù)復制功能、強大的管理工具、與Internet的緊密集成和開放的系統(tǒng)結(jié)構(gòu)為廣大的用戶、開發(fā)人員和系統(tǒng)集成商提供了一個出眾的數(shù)據(jù)庫平臺。2.4本章小結(jié)本章重點介紹了開發(fā)“學生宿舍管理系統(tǒng)”所用到的開發(fā)工具與其應用的數(shù)據(jù)庫系統(tǒng)。對C++的說明與相關(guān)控件技術(shù)進行了系統(tǒng)的介紹。SQLServer2000作為應用最為廣泛的數(shù)據(jù)庫系統(tǒng),它最大限度的支持了系統(tǒng)的需求,實現(xiàn)了本系統(tǒng)的各項功能。通過兩種工具的有機結(jié)合開發(fā)出的系統(tǒng)充分地滿足了用戶的需求。本章通過介紹面向?qū)ο蟮木幊桃约皟煞N工具的發(fā)展與其相應的技術(shù),使大多數(shù)人明白了本系統(tǒng)的開發(fā)原理與相關(guān)技術(shù)的應用。第3章系統(tǒng)需求分析3.1功能需求3.1.1基本功能需求本課題將要實現(xiàn)的是高校學生宿舍管理系統(tǒng),因此在設(shè)計該系統(tǒng)時,要盡可能的貼近學生實際,便于用戶操作。系統(tǒng)在實現(xiàn)中應該具有如下功能:1.系統(tǒng)要求用戶必須要輸入正確的用戶名和密碼才能進入該系統(tǒng)。2.系統(tǒng)應該提供學生住宿情況的基本信息登記。3.系統(tǒng)應該提供查詢功能,以方便用戶可對學生的基本信息查詢(要實現(xiàn)可按多種條件的查詢)以及樓房信息的查詢。4.系統(tǒng)應該提供增加、刪除、修改用戶帳戶的功能以及對帳戶的權(quán)限進行設(shè)定。5.系統(tǒng)還應具有增加、刪除、修改學生基本信息的功能。6.系統(tǒng)應該具有統(tǒng)計學生人數(shù)(如總?cè)藬?shù),男女生人數(shù)等)的功能。7.系統(tǒng)應具有每學期學生入學和離校的注冊登記。8.系統(tǒng)應具有來訪人員的詳細登記。9.系統(tǒng)應具有學生個人物品進出宿舍情況的詳細登記。10.系統(tǒng)應具有對學生宿舍的衛(wèi)生和出勤進行登記[7]。3.1.2用戶界面需求學生宿舍管理系統(tǒng)應當提供簡單、明了、層次清晰的用戶操作界面,使用戶操作的時候能夠一目了然。以讓用戶在使用該系統(tǒng)錄入、查詢、修改信息的時候能夠更加的方便、快捷。3.2性能需求3.2.1系統(tǒng)安全性學生宿舍管理系統(tǒng)中的用戶管理以及學生宿舍管理中的信息是很重要的,一般不允許隨意篡改的,所以在系統(tǒng)的管理權(quán)限上應當進行嚴格控制,具體思想如下:要想對該學生宿舍管理系統(tǒng)進行操作就應當具有某些操作權(quán)限。沒有權(quán)限的用戶將不能通過任何渠道來登錄該系統(tǒng),查看該系統(tǒng)的任何信息和數(shù)據(jù),以確保系統(tǒng)的嚴密性和安全性。在上述要求基礎(chǔ)上,可以為此系統(tǒng)設(shè)定兩種登錄方式,即超級用戶登錄和普通用戶登錄,沒有超級用戶或者普通用戶的用戶名和密碼,任何人都不可以登錄該系統(tǒng),而且超級用戶可以操作很多普通用戶不能操作的模塊。3.3數(shù)據(jù)庫選擇數(shù)據(jù)庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數(shù)據(jù)集合。近年來,數(shù)據(jù)庫管理系統(tǒng)已經(jīng)從專用的應用程序包迅速地發(fā)展為通用系統(tǒng)軟件,目前有很多種數(shù)據(jù)庫,最典型的如ORACLE、MySQL、ACCESS。其中ORACLE是適用于數(shù)據(jù)量大,并發(fā)操作多的系統(tǒng),相對于學生宿舍管理系統(tǒng)這種不是特別大的管理系統(tǒng)而言,不必要選用ORACLE,而ACCESS是小型的數(shù)據(jù)庫,可存儲的數(shù)據(jù)量相對來說最少,且同時訪問客戶端不能多于4個。因此也不選用ACCESS數(shù)據(jù)庫??紤]到以上實際情況,對于學生基本信息必須的變動,還有各種數(shù)據(jù)信息的數(shù)據(jù)量的變化,故選用MySQL作為數(shù)據(jù)庫開發(fā)軟件。SQLServer2000是MySQL中一種常用的關(guān)系數(shù)據(jù)庫,能存放和讀取大量的數(shù)據(jù),管理眾多并發(fā)的用戶,故選用SQLServer2000數(shù)據(jù)庫。3.4開發(fā)環(huán)境本系統(tǒng)是用WindowsXp系統(tǒng)為開發(fā)平臺,用MicrosoftVisualC++編程語言中的MFC和SQLServer2000數(shù)據(jù)庫來對高校學生宿舍管理系統(tǒng)所需要的功能進行實現(xiàn)。3.5本章小結(jié) 本章非常具體地介紹了系統(tǒng)的需求分析,通過系統(tǒng)的需求分析而得出了系統(tǒng)的總體設(shè)計方向,確定了系統(tǒng)的開發(fā)框架。本章對系統(tǒng)的實現(xiàn)的功能作了簡單的概述,得出了系統(tǒng)的主體流程。通過對系統(tǒng)的各項分析,得出了實現(xiàn)系統(tǒng)功能的要用到的基本方法,并確定了使用的開發(fā)工具。
第4章宿舍管理系統(tǒng)詳細設(shè)計學生宿舍管理系統(tǒng)4.1系統(tǒng)功能模塊圖學生宿舍管理系統(tǒng)系統(tǒng)管理系統(tǒng)管理出入登記學生管理查詢管理宿舍管理出入登記學生管理查詢管理宿舍管理統(tǒng)計分析幫統(tǒng)計分析幫助退出系統(tǒng)用戶管理退出系統(tǒng)用戶管理空宿舍查詢新生入住宿舍來訪人員登記物品進出登記宿舍信息查詢?nèi)藬?shù)統(tǒng)計空宿舍查詢新生入住宿舍來訪人員登記物品進出登記宿舍信息查詢?nèi)藬?shù)統(tǒng)計關(guān)于物品進出查詢學生出勤查詢來訪人員查詢學生注冊查詢宿舍管理學生信息錄入物品進出查詢學生出勤查詢來訪人員查詢學生注冊查詢宿舍管理學生信息錄入學生財務登記學生注冊管理學生離校登記學生出勤管理圖1系統(tǒng)功能模塊圖在整體設(shè)計中,我們將宿舍管理系統(tǒng)分為七個大的模塊:系統(tǒng)管理模塊、宿舍管理模塊、學生管理模塊、出入登記模塊、查詢管理模塊、統(tǒng)計分析模塊、幫助模塊。每個模塊將實現(xiàn)不同的功能,下面將具體進行介紹。4.1.1系統(tǒng)管理模塊系統(tǒng)管理模塊包括:用戶管理、退出系統(tǒng)兩個部分。1、用戶管理:實現(xiàn)所有用戶信息的增刪查改功能以及顯示用戶。2、退出系統(tǒng):實現(xiàn)正常退出宿舍管理系統(tǒng)。4.1.2宿舍管理模塊宿舍管理模塊包括:宿舍管理、新生入住宿舍兩個大的部分。1、宿舍管理:實現(xiàn)對宿舍的登記。2、新生入住宿舍:實現(xiàn)對學生入住宿舍信息登記的增刪查改。4.1.3學生管理模塊學生管理模塊包括:學生信息錄入、學生財物登記、學生注冊管理、學生離校登記、學生出勤管理、來訪人員登記、物品進出登記五個部分。1、學生信息錄入:實現(xiàn)對學生基本信息的登記。2、學生財務登記:實現(xiàn)對學生所擁有財務的登記。3、學生注冊管理:實現(xiàn)對學生新學期返校的注冊。4、學生離校管理:實現(xiàn)對學生放假離校的登記。5、學生出勤管理:實現(xiàn)對學生查寢情況的登記。4.1.4出入登記模塊出入登記模塊包括:來訪人員登記和物品進出登記兩個部分。1、來訪人員登記:實現(xiàn)對來訪人員基本信息的登記。2、物品進出登記:實現(xiàn)對學生進出宿舍所攜帶貴重物品的登記。4.1.5查詢管理模塊信息查詢模塊基本上包括:宿舍信息查詢、來訪人員查詢、學生出勤查詢、物品進出查詢、學生注冊查詢、空宿舍查詢六個部分。1、宿舍信息查詢:實現(xiàn)對宿舍信息的基本查詢。2、來訪人員查詢:實現(xiàn)對來訪人員信息的查詢。3、學生出勤查詢:實現(xiàn)對學生查寢情況的查詢。4、物品進出查詢:實現(xiàn)對學生進出攜帶物品的查詢。5、學生注冊查詢:實現(xiàn)對學生新學期返校信息的查詢。6、空宿舍查詢:實現(xiàn)對學校未入住宿舍情況的查詢。4.1.6統(tǒng)計分析模塊統(tǒng)計分析模塊包括:人數(shù)統(tǒng)計。1、人數(shù)統(tǒng)計:實現(xiàn)統(tǒng)計學生總?cè)藬?shù)、男生人數(shù)、女生人數(shù)、學院人數(shù)等。4.1.7幫助模塊幫助模塊包括:關(guān)于模塊。1、關(guān)于模塊:是對學生宿舍管理系統(tǒng)開發(fā)者相關(guān)信息的一個簡單介紹。4.2系統(tǒng)E-R圖在我所設(shè)計的模塊中,主要涉及到樓房、宿舍和學生這三個實體,所以在E-R圖中我將這兩個實體的屬性進行了詳細說明。包含包含樓房樓層數(shù)房間數(shù)樓房號應住人數(shù)聯(lián)系方式宿舍實住人數(shù)住宿費用居住性別宿舍編號應住人數(shù)入住姓名性別學號學生院系交費注冊探望來訪人員進出宿舍財物1 N 11 N 1N N 1 1 N 1 1 N圖2系統(tǒng)E-R圖如上述ER圖所示,系統(tǒng)通過對樓房的管理來管理詳細的宿舍信息,其中每一棟樓都包含很多個宿舍。然后是學生入住宿舍,每一間宿舍對應入住多個學生,并且同時錄入學生的信息,學生是通過注冊交費之后入住宿舍的,沒一個學期都要注冊一次,所以是一對多的關(guān)系。另外還有一些其它的功能如親友探訪,學生攜帶財物的進出也是在學生實體上面實現(xiàn)的,親友探訪和攜帶財物進出也是一對多的關(guān)系。4.3系統(tǒng)所需表綜合以上分析,要實現(xiàn)上面的所有功能模塊,共需要設(shè)計二個表,分別是:用戶信息表、學生住宿信息表、宿舍樓房表、學生財物表、來訪人員表、學生注冊表、物品出入宿舍表、學生出勤表。對表的說明:1、用戶信息表:登記用戶名、密碼及登錄權(quán)限。2、學生住宿信息表:詳細登記學生基本信息及宿舍編號情況。3、宿舍樓房表:登記學校所有的宿舍樓房情況。4、學生財物表:登記學生開學入住時宿舍財物的情況。5、來訪人員表:登記來探訪學生的外來人員的信息。6、學生注冊表:登記學生新學期開學的注冊信息。7、物品出入宿舍表:登記學生物品出入宿舍樓的信息。8、學生出勤表:登記學生在校期間的宿舍出勤信息。表1用戶信息表(Slog)字段名描述數(shù)據(jù)類型數(shù)據(jù)長度NULLPrimarykeySname用戶名Varchar50NYSpassword用戶密碼Varchar50NNSquanxian用戶權(quán)限Varchar50NN表2學生住宿信息表(S_XINSRZ)字段名描述數(shù)據(jù)類型數(shù)據(jù)長度NULLPrimarykeysushebianhao宿舍編號Varchar50NYxingming姓名Varchar50NNxingbie性別Varchar50NNyuanxi院系Varchar50NNxuehao學號Varchar50NNlianxifangshi聯(lián)系方式Varchar50NN表3宿舍樓房表(SHOUSE)字段名描述數(shù)據(jù)類型數(shù)據(jù)長度NULLPrimarykeyLouId樓房號Varchar50NYLouNum樓層數(shù)Varchar50NNLouRom房間數(shù)Varchar50NNLouYing應住人數(shù)int4NNLouShi實住人數(shù)int4YN表4學生財物表(SCAIWU)字段名描述數(shù)據(jù)類型數(shù)據(jù)長度NULLPrimarykeySXuehao學號Varchar50NYSName姓名Varchar50NNLouId樓房號Varchar50NFsushebianhao寢室Varchar50NFBed床位號Varchar50YNStool凳子號Varchar50YNDesk桌子號Varchar50YN表5來訪人員表(SVISIT)字段名描述數(shù)據(jù)類型數(shù)據(jù)長度NULLPrimarykeyVisId自動編號Varchar10NYVisName來訪人姓名Varchar50NNVisHost被訪人姓名Varchar50NNLouId樓房號Varchar50NFsushebianhao宿舍編號Varchar50NFRelation所屬關(guān)系Varchar50NNVisData來訪時間datetime8NN表6學生注冊表(SZHUCE)字段名描述數(shù)據(jù)類型數(shù)據(jù)長度NULLPrimarykeyxuehao學號Varchar50NYxingming姓名Varchar50NFLouId樓房號Varchar50NFsushebianhao宿舍編號Varchar50NFZCDate注冊日期datetime8NYZCPrice所交費用Varchar10NN表7物品出入宿舍表(SWUPINCR)字段名描述數(shù)據(jù)類型數(shù)據(jù)長度NULLPrimarykeyWPCRId自動編號Bigint8NYxuehao學號Varchar50NNxingming姓名Varchar50NNLouId樓房號Varchar50NFsushebianhao宿舍編號Varchar50NFIn進樓物品Varchar50YNOut出樓物品Varchar50YNDate日期datetime8NN表8學生出勤表(SCHUQIN)字段名描述數(shù)據(jù)類型數(shù)據(jù)長度NULLPrimarykeyLouId樓房號Varchar50NYsushebianhao宿舍編號Varchar50NFnum缺勤人數(shù)int4YNwhy缺勤原因Varchar50YNdata日期datetime8NN4.4具體模塊設(shè)計在系統(tǒng)功能模塊介紹時,我把整個系統(tǒng)分為系統(tǒng)管理模塊、宿舍管理模塊、學生管理模塊、出入登記模塊、查詢管理模塊、統(tǒng)計分析模塊、幫助模塊七個基本模塊。如下圖3是我設(shè)計的學生宿舍管理系統(tǒng)的主界面:圖3學生宿舍管理系統(tǒng)主界面4.4.1登錄模塊功能詳細設(shè)計圖4登錄界面設(shè)計思想:當要進入學生宿舍管理系統(tǒng)時會彈出一個登錄的對話框,用戶必須在登錄對話框中按要求輸入正確的用戶名和密碼才能夠進入主窗口。具體實現(xiàn):1、在實現(xiàn)該功能模塊時,需添加一個Windows對話框,系統(tǒng)自動生成對話框的ID為IDD_ASPIRE_DIALOG,修改標題屬性為“登錄”,系統(tǒng)會自動生成2個類,分別為CASPIREApp和CASPIREDlg,在VC++操作界面的ClassView中可以看到。調(diào)整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態(tài)文本控件、編輯框控件、組合框控件和按鈕控件,其中密碼控件須在樣式屬性里面添加密碼功能,登錄按鈕控件須在樣式屬性里面添加缺省按鈕功能以設(shè)置默認按鈕,組合框控件的樣式屬性里面的所有者繪制屬性改為否以達到只讀的效果,并且修改所有控件的相關(guān)屬性使其如圖4所示界面。2、在實現(xiàn)登錄、注冊和退出功能時,需要用到用戶表Slog,通過獲取數(shù)據(jù)庫的安裝路徑,調(diào)用ADO技術(shù)來實現(xiàn)VC++和數(shù)據(jù)庫的連接,給兩個編輯框和一個組合框修改對應的ID為IDC_NAME、IDC_PASSWORD、IDC_QUANXIAN,并分別定義變量為m_name、m_password、m_quanxian,在對話框的命令按鈕的Click事件中寫入相應的程序來實現(xiàn)登錄、注冊以及退出的功能,詳細代碼請查看附錄。4.4.2系統(tǒng)管理功能詳細設(shè)計1、用戶管理圖5用戶管理界面設(shè)計思想:為了方便多人同時使用此系統(tǒng),每個人都可以用自己單獨的用戶登錄該系統(tǒng),特地添加用戶管理界面。而且能夠方便快捷的查詢、定位用戶。通過操作控件可為用戶提供新增、修改、刪除用戶功能等[8]。具體實現(xiàn):1、在實現(xiàn)該功能模塊時,需要添加一個Windows對話框,改ID為IDD_USERMANAGE,修改標題屬性為“用戶管理”,在此對話框界面按CTRL+W創(chuàng)建一個新的類CUSERMANAGE。調(diào)整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態(tài)文本控件、編輯框控件、組合框控件和按鈕控件以及列表控件,此處密碼控件無須在樣式屬性里面添加密碼功能,添加按鈕控件可在樣式屬性里面添加缺省按鈕功能以設(shè)置默認按鈕,組合框控件的樣式屬性里面的所有者繪制屬性改為否以達到只讀的效果,列表控件的樣式屬性里面的查看屬性改為報告。并修改相關(guān)的屬性使其如圖5界面所示。2、在實現(xiàn)添加、修改、刪除和退出功能時,需要用到用戶表Slog,通過獲取數(shù)據(jù)庫的安裝路徑,調(diào)用ADO技術(shù)來實現(xiàn)VC++和數(shù)據(jù)庫的連接,給三個編輯框、一個組合框和一個列表框修改對應的ID為IDC_SNAME、IDC_SPASS、IDC_SPASSWORD、IDC_SQUANXIAN,并分別定義變量為m_sname、m_spass、m_spassword、m_squanxian、m_usershow,在對話框的命令按鈕的Click事件中寫入相應的程序來實現(xiàn)添加、修改、刪除以及退出的功能,其中查詢時候,系統(tǒng)需要獲取輸入的值來和數(shù)據(jù)庫里面的值做比較,那么就需要用到強制類型轉(zhuǎn)換。強制類型轉(zhuǎn)換又稱為顯示類型轉(zhuǎn)換,其作用是將某種類型僅在當前運算中轉(zhuǎn)換成指定的數(shù)據(jù)類型,運算結(jié)束后,原類型保持不變。強制類型轉(zhuǎn)換格式為在一個數(shù)值或表達式前加上帶括號的類型名[9]。詳細代碼請查看附錄。4.4.3宿舍管理模塊詳細設(shè)計1、宿舍人員查詢圖6宿舍管理界面設(shè)計思想:宿舍管理系統(tǒng)自然是必須要有對宿舍住宿人員信息進行查詢的功能的,因此這里設(shè)計這個模塊也是理所當然的。并且能夠按照不同的查詢方式來進行必要的查詢,如:按宿舍編號,按姓名,按學號等。具體實現(xiàn):1、在實現(xiàn)該功能模塊時,需要添加一個Windows對話框,改ID為IDD_DIALOG1_CHAXUN,修改標題屬性為“查詢”,在此對話框界面按CTRL+W創(chuàng)建一個新的類CCHAXUN。調(diào)整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態(tài)文本控件、編輯框控件、組合框控件和按鈕控件以及列表控件,查詢按鈕控件可在樣式屬性里面添加缺省按鈕功能以設(shè)置默認按鈕,組合框控件的樣式屬性里面的所有者繪制屬性改為否以達到只讀的效果,列表控件的樣式屬性里面的查看屬性改為報告。并修改相關(guān)的屬性使其如圖6界面所示。2、在實現(xiàn)查詢和退出功能時,需要用到表S_XINSRZ,通過獲取數(shù)據(jù)庫的安裝路徑,調(diào)用ADO技術(shù)來實現(xiàn)VC++和數(shù)據(jù)庫的連接,給兩個編輯框、一個組合框和一個列表框修改對應的ID為IDC_EDIT_SSNUM、IDC_EDIT2_SNAME、IDC_COMBO1_CHAXUNFS、IDC_LIST1_CHAXUNXIANSHI,并分別定義變量為m_ssnum、m_sname、m_chaxunfs、m_chaxunxianshi,在對話框的命令按鈕的Click事件中寫入相應的程序來實現(xiàn)查詢以及退出的功能,詳細代碼請查看附錄。2、新生入住宿舍圖7宿舍管理界面設(shè)計思想:新生入住宿舍是將每個學生直接安排到指定的宿舍床位,如無學生入住的宿舍也要添加進去,不過不予添加其它的信息。具體實現(xiàn):1、在實現(xiàn)該功能模塊時,需要添加一個Windows對話框,改ID為IDD_XINSHENGRUZHU,修改標題屬性為“新生入住”,在此對話框界面按CTRL+W創(chuàng)建一個新的類CXINSRZ。調(diào)整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態(tài)文本控件、編輯框控件和按鈕控件以及列表控件,查詢按鈕控件可在樣式屬性里面添加缺省按鈕功能以設(shè)置默認按鈕,列表控件的樣式屬性里面的查看屬性改為報告。并修改相關(guān)的屬性使其如圖7界面所示。2、在實現(xiàn)查詢、刪除、修改和退出功能時,需要用到表S_XINSRZ,通過獲取數(shù)據(jù)庫的安裝路徑,調(diào)用ADO技術(shù)來實現(xiàn)VC++和數(shù)據(jù)庫的連接,給六個編輯框、一個列表框修改對應的ID為IDC_EDIT_SUSHEBIANHAO、IDC_EDIT_XINM、IDC_EDIT3_XIEB、IDC_EDIT4_YUANXI、IDC_EDIT5_XUEHAO、IDC_EDIT6_LIANXIFS,并分別定義變量為m_ssnum、m_xinm、m_xinb、m_yuanxi、m_xuehao、m_lianxifs、m_xinsrz,,在對話框的命令按鈕的Click事件中寫入相應的程序來實現(xiàn)所有功能,詳細代碼請查看附錄。4.4.4查詢管理模塊詳細設(shè)計1、空宿舍查詢圖8空宿舍查詢界面設(shè)計思想:當學校宿舍比較多的時候,要安排新生入住宿舍,需要清楚地知道哪些宿舍是空的,因此我做出了一個空宿舍查詢的功能。在做這個查詢的時候,我檢索數(shù)據(jù)庫表S_XINSRZ中的“xingming”是否為空,為空的話則說明對應的宿舍編號是空宿舍。具體實現(xiàn):在實現(xiàn)該功能模塊時,需要添加一個Windows對話框,改ID為IDD_DIALOG1KONGSS,修改標題屬性為“空宿舍查詢”,在此對話框界面按CTRL+W創(chuàng)建一個新的類CKONGSS。調(diào)整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態(tài)文本控件、編輯框控件和按鈕控件以及列表控件,查詢按鈕控件可在樣式屬性里面添加缺省按鈕功能以設(shè)置默認按鈕,列表控件的樣式屬性里面的查看屬性改為報告。并修改相關(guān)的屬性使其如圖8界面所示。在實現(xiàn)顯示空宿舍功能時,需要用到表S_XINSRZ,通過獲取數(shù)據(jù)庫的安裝路徑,調(diào)用ADO技術(shù)來實現(xiàn)VC++和數(shù)據(jù)庫的連接,給編輯框和列表框修改對應的ID為IDC_EDIT1_SUSHEBH、IDC_LIST1KONGSSXS,并分別定義變量為m_sushebh、m_kongss,在對話框的命令按鈕的Click事件中寫入相應的程序來實現(xiàn)顯示空宿舍的功能,詳細代碼請查看附錄。4.4.5統(tǒng)計分析模塊詳細設(shè)計1、人數(shù)統(tǒng)計圖9人數(shù)統(tǒng)計界面設(shè)計思想:當學校在住人數(shù)比較多的時候,不進行統(tǒng)計就很無法清楚總共到底有多少人,男生有多少人,女生有多少人,女生有多少人等。因此我做出了一個人數(shù)統(tǒng)計的功能。在做這個統(tǒng)計的時候,我按要求檢索數(shù)據(jù)庫表S_XINSRZ中對應的列,如須查總?cè)藬?shù)則檢索“xingming”是否為空,查男生人數(shù)則檢索“xingbie”為男的人數(shù),女生人數(shù)自然就等于總?cè)藬?shù)和男生人數(shù)的差值了,查學院人數(shù)的話則檢索“yuanxi”對應的不同學院,最后全部檢索完成之后統(tǒng)計出來顯示出來。具體實現(xiàn):1、在實現(xiàn)該功能模塊時,需要添加一個Windows對話框,改ID為IDD_DIALOG1,修改標題屬性為“人數(shù)統(tǒng)計”,在此對話框界面按CTRL+W創(chuàng)建一個新的類CTONGJI。調(diào)整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態(tài)文本控件、編輯框控件和按鈕控件,查詢按鈕控件可在樣式屬性里面添加缺省按鈕功能以設(shè)置默認按鈕。并修改相關(guān)的屬性使其如圖9界面所示。2、在實現(xiàn)顯示統(tǒng)計報表功能時,需要用到表S_XINSRZ,通過獲取數(shù)據(jù)庫的安裝路徑,調(diào)用ADO技術(shù)來實現(xiàn)VC++和數(shù)據(jù)庫的連接,給五個編輯框分別修改對應的ID為IDC_EDIT2ZONG、IDC_EDIT3NANSHENG、IDC_EDIT4NVSHENG、IDC_EDIT5XINGONG、IDC_EDIT6HUAGONG,并分別定義變量為m_zong、m_nansheng、m_nvsheng、m_xingong、m_huagong,在對話框的命令按鈕的Click事件中寫入相應的程序來實現(xiàn)顯示統(tǒng)計報表的功能,詳細代碼請查看附錄。4.4.6幫助功能詳細設(shè)計1、關(guān)于圖10關(guān)于設(shè)計思想:通過此模塊來介紹軟件的版本和設(shè)計者的一些基本信息。具體實現(xiàn):1、在實現(xiàn)該功能模塊時,需要添加一個Windows對話框,改ID為IDD_DIALOG2,修改標題屬性為“關(guān)于”,在此對話框界面按CTRL+W創(chuàng)建一個新的類CGUANYU。調(diào)整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能,添加相應的靜態(tài)文本控件和按鈕控件,確定按鈕控件可在樣式屬性里面添加缺省按鈕功能以設(shè)置默認按鈕。并修改相關(guān)的屬性使其如圖10界面所示。2、在確定按鈕的Click事件中寫入代碼“this->EndDialog(1);”即可。4.4.7其他模塊功能設(shè)計由于時間的關(guān)系,其他模塊功能未能夠在指定的時間內(nèi)完成,在此感到非常的抱歉,我會在接下來的時間努力來完成未能完成的模塊,以達到系統(tǒng)預期的完善的功能。4.5后期美化處理所有界面完成后,對用到的所有對話框進行細致的調(diào)整,并附加皮膚以及顯示權(quán)限和系統(tǒng)時間的功能。詳細代碼請查看附錄。4.6本章小結(jié)本章通過對第一章的需求分析得出的系統(tǒng)開發(fā)框架的研究,得出了本系統(tǒng)功能的具體實現(xiàn)辦法。通過對主要功能模塊的具體設(shè)計方法介紹,使系統(tǒng)的功能更加清晰,讓人更好的了解C++和其控件的使用方法。本章通過介紹系統(tǒng)的各個功能模塊的生成方法,基本上涵蓋了整個系統(tǒng)的功能,大部分功能模塊的設(shè)計類似,只是具體辦法稍有區(qū)別??梢哉f本章已經(jīng)介紹了系統(tǒng)的詳細設(shè)計過程,給人清晰明了的功能介紹。
第5章系統(tǒng)測試5.1軟件測試方法的描述測試是為了發(fā)現(xiàn)程序中的錯誤而執(zhí)行程序的過程;系統(tǒng)測試的目的,是以最少的測試資源去發(fā)現(xiàn)盡可能多的錯誤。測試任何系統(tǒng)都有兩種方法:如果已經(jīng)知道了系統(tǒng)應該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用;如果知道系統(tǒng)的內(nèi)部工作過程,可以通過測試來檢驗系統(tǒng)內(nèi)部動作是否按規(guī)格說明書的規(guī)定正常進行。前一種方法稱為黑盒測試,后一種方法稱為白盒測試[10]。對于軟件測試而言,黑盒測試方法把程序看作一個黑盒子,完全不考慮程序內(nèi)部結(jié)構(gòu)和處理過程。也就是說,黑盒測試是在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能夠很好地接收輸入的數(shù)據(jù)并且產(chǎn)生預期的正確輸出信息,程序在運行過程中是否能保持外部信息(如數(shù)據(jù)庫和文件等)的完整性。黑盒測試又可以稱做功能測試。白盒測試的方法與黑盒測試的方法相反,它的前提是能把程序看成是放在一個透明的盒子里,測試者可以完全了解程序的結(jié)構(gòu)以及處理算法。這種方法是按程序內(nèi)部的邏輯來進行程序測試,以此來檢測程序中所有的主要可執(zhí)行通路能否按照預定的要求正確地工作。白盒測試也叫做結(jié)構(gòu)測試。本系統(tǒng)的測試過程由三個步驟組成:單元測試、集成測試和系統(tǒng)測試。5.2單元測試單元測試通過檢測所設(shè)計軟件中的最小單元結(jié)構(gòu)——模塊。一般,單元測試是和編碼同時進行的。將本軟件的功能模塊直接和主窗體相連,再編譯運行工程文件,通過編譯程序來檢查可能產(chǎn)生的語法錯誤,然后在編譯最終通過后,使用白盒測試的方法去檢查模塊接口、模塊內(nèi)部的數(shù)據(jù)結(jié)構(gòu)、邏輯路徑、出錯處理、邊界條件等。這樣能夠使程序員及時發(fā)現(xiàn)錯誤并改正錯誤,減少最后集中查找錯誤的工作量。5.3集成測試集成測試是測試和組裝軟件的系統(tǒng)化技術(shù),由模塊組裝成程序時有兩種不同的方法。一種方法是先分別測試單個模塊,再把所有模塊按照設(shè)計要求結(jié)合在一起得到最終的程序,我們把這種方法叫做非漸增式法;另一種方法則是把下一個將要測試的模塊和已經(jīng)測試通過的那些模塊結(jié)合在一起進行測試,測試完以后又把下一個要測試的模塊結(jié)合在一起測試。這種方法就叫做漸增式法。集成測試以黑盒測試為主,采用漸增式法,對上層模塊采用自頂向下測試,對某些具有輸入輸出功能或復雜算法的關(guān)鍵分支,采用自底向上測試,直到整個軟件裝配完畢。測試的通過標準為“主要功能已實現(xiàn),已發(fā)現(xiàn)的重大錯誤已排除”。5.4測試報告測試報告是對測試結(jié)果進行收集和評價,軟件的可靠性所達到的定性指標可以從測試報告中明朗體現(xiàn)出來。5.4.1系統(tǒng)測試主要報告系統(tǒng)測試主要對用戶登錄、新生入住、宿舍查詢、空宿舍查詢進行了仔細的測試和詳細的測試記錄。表3用戶登錄測試報告項目名稱:ASPIRE測試項模塊名稱:用戶登錄測試人:卓政元測試時間:2014/5/19錯誤個數(shù):0序號路徑輸入理想輸出實際結(jié)果1.如果輸入正確的用戶名、密碼和權(quán)限,應該顯示登錄成功。用戶名:a密碼:a進入項目主界面進入項目主界面2.如果輸入錯誤的用戶名或密碼、或者選錯權(quán)限,應該顯示登錄失敗。用戶名:a密碼:b用戶名或密碼錯誤或權(quán)限不夠用戶名或密碼錯誤或權(quán)限不夠3.如果不輸入任何數(shù)據(jù),應該提示用戶名不能為空。用戶名:空密碼:空用戶名不能為空用戶名不能為空表4新生入住測試報告項目名稱:ASPIRE測試項模塊名稱:新生入住測試人:卓政元測試時間:2014/5/19錯誤個數(shù):1序號路徑輸入理想輸出實際結(jié)果1.輸入正確的信息宿舍編號:7#107-3-2姓名:路人甲等等正確信息添加成功添加成功2.輸入錯誤的信息宿舍編號:111姓名:123等等錯誤信息宿舍編號錯誤、姓名錯誤添加成功3.如果不輸入任何數(shù)據(jù)宿舍編號:空姓名:空等全為空宿舍編號不能為空宿舍編號不能為空表5宿舍查詢測試報告項目名稱:ASPIRE測試項模塊名稱:宿舍查詢測試人:卓政元測試時間:2014/5/19錯誤個數(shù):0序號路徑輸入理想輸出實際結(jié)果1.輸入正確的信息按宿舍編號:7#107-3-2按姓名:路人甲成功查詢成功查詢2.輸入錯誤的信息按宿舍編號:111按姓名:123查詢失敗查詢失敗3.如果不輸入任何數(shù)據(jù)按宿舍編號:空按姓名:空請輸入宿舍編號進行查詢請輸入宿舍編號進行查詢4.輸入正確,查詢方式選擇錯誤按姓名:路人甲查詢方式選擇按宿舍編號請輸入宿舍編號進行查詢請輸入宿舍編號進行查詢5.輸入正確,查詢方式錯誤按宿舍編號:7#107-3-2查詢方式選擇按姓名請輸入姓名進行查詢請輸入姓名進行查詢表6空宿舍查詢測試報告項目名稱:ASPIRE測試項模塊名稱:空宿舍查詢測試人:卓政元測試時間:2014/5/19錯誤個數(shù):0序號路徑輸入理想輸出實際結(jié)果1.顯示空宿舍不需要輸入成功顯示所有空宿舍成功顯示所有空宿舍通過對以上測試報告的分析,可以看出新生入住模塊系統(tǒng)不能夠自動檢測輸入信息是否為有效信息,因此此處還有待改進。5.5本章小結(jié)本章通過對系統(tǒng)測試方法的介紹,確定了本系統(tǒng)采用集成測試的方案。通過選取不同的人進行不同權(quán)限的測試,給出了系統(tǒng)的基本功能測試實施辦法。通過測試,調(diào)試生成可執(zhí)行的應用程序。本章基本上說明了具體的測試辦法,讓人們更明白系統(tǒng)測試對于系統(tǒng)在完成后期的重要性,充分體現(xiàn)了系統(tǒng)軟件開發(fā)的規(guī)范化。
第6章總結(jié)歷時一個半月的畢業(yè)設(shè)計現(xiàn)在已經(jīng)接近尾聲了,回想起這一個半月的日子,感覺收獲頗多。我這次畢業(yè)設(shè)計是開發(fā)一個學生宿舍管理系統(tǒng),它用到的開發(fā)工具是C++語言,SQLServer數(shù)據(jù)庫。在設(shè)計的開始階段為了盡快熟悉C++語言,我詳細翻閱有關(guān)該方面的資料,對書中的基本理論知識逐章逐節(jié)地分析,同時還用上機操作來加深理解。特別是對書中的一些典型實例,認真學習它的編程思想,吸取它的編程技巧,弄懂程序中每句話的含義。在對所要應用的技術(shù)有了一個基本認識之后,就開始構(gòu)思自己的系統(tǒng)設(shè)計。認真聽老師對設(shè)計要求的講解,根據(jù)用戶需求分析將整個系統(tǒng)分為幾個模塊,每個模塊具體又要實現(xiàn)哪些功能,然后就逐個模塊去一一詳細設(shè)計,設(shè)計的過程中不時地翻閱資料,用一些巧妙的技術(shù)來優(yōu)化程序。程序代碼完成之后,要進行運行調(diào)試,剛開始由于沒有調(diào)試經(jīng)驗和方法效率很低,最后在老師和同學的幫助下,終于順利完成了,自己也從中學到了不少東西??傊?,通過一個半月的畢業(yè)設(shè)計,讓我感受了軟件開發(fā)的整個過程。畢業(yè)設(shè)計不僅是對我在大學所學知識的一個綜合運用,也是一次增長知識和經(jīng)驗的好機會,同時也使我學會了許多處理、解決問題的方法,大大提高了自己的動手能力,為即將走上工作崗位打下了良好的基礎(chǔ)。
參考文獻[1]謝海平等.基于網(wǎng)絡(luò)的獨立學院園區(qū)管理方案研究[J].青年與社會,2012,60(2),67-69[2]鄒麗.VisualC++開發(fā)技術(shù)及面向?qū)ο筌浖こ贪咐治鯷M].遼寧:遼寧科學技術(shù)出版社,2012-02[3]張興飛.網(wǎng)絡(luò)化區(qū)域氡濃度集群監(jiān)控系統(tǒng)的研究與設(shè)計[D].西南科技大學,2011[4]李玉梅.《面向?qū)ο驝++程序設(shè)計》課程教學改革的研究與實踐[J].中國科技信息,2009,63(15),35-37[5]張鴻,熊文龍.基于C/S模式的SQL數(shù)據(jù)庫應用技術(shù)[J].武漢理工大學學報(交通科學與工程版),2003,24(6),6-8[6]徐天晟,趙丹亞.SQL數(shù)據(jù)庫使用速查手冊[M].北京:人民郵電出版社,2009-02[7]王榕.基于WEB的宿舍管理系統(tǒng)開發(fā)與實現(xiàn)[J].華章,2011,61(10),56-61[8]關(guān)雪侖.高校圖書管理系統(tǒng)的分析與設(shè)計[D].北京郵電大學,2010-10[9]寧濤.C++程序設(shè)計[M].遼寧:遼寧科學技術(shù)出版社,2012-02[10]羅洪剛.貴州師范大學學生公寓管理系統(tǒng)設(shè)計與實現(xiàn)[D].廈門大學,2011附錄高校學生宿舍管理系統(tǒng)主要源程序連接數(shù)據(jù)庫源代碼://ASPIRE.cpp:Definestheclassbehaviorsfortheapplication.#include"stdafx.h"#include"ASPIRE.h"#include"ASPIREDlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CASPIREAppconstructionCASPIREApp::CASPIREApp(){}//TheoneandonlyCASPIREAppobjectCASPIREApptheApp;//CASPIREAppinitializationBOOLCASPIREApp::InitInstance(){ AfxEnableControlContainer(); skinppLoadSkin(_T("Face\\spring.ssk")); //創(chuàng)建ADO數(shù)據(jù)庫連接 if(FAILED(::CoInitialize(NULL))) { AfxMessageBox("ADO初始化失敗?");//AfxMessageBoxAfx為主框架函數(shù)適用全局 returnFALSE; } try { m_pCon.CreateInstance("ADODB.Connection"); _bstr_tstrConnect="Provider=SQLOLEDB.1;Server=localhost;Database=ASPIRE;uid=sa;pwd=aspire"; m_pCon->Open(strConnect,"","",adModeUnknown); } catch(_com_errore) { AfxMessageBox(e.Description()); }#ifdef_AFXDLL Enable3dControls(); //CallthiswhenusingMFCinasharedDLL#else Enable3dControlsStatic(); //CallthiswhenlinkingtoMFCstatically#endif m_pRs.CreateInstance(_uuidof(Recordset));//初始化ADO記錄集 CASPIREDlgdlg; m_pMainWnd=&dlg; intnResponse=dlg.DoModal(); if(nResponse==IDOK) { } elseif(nResponse==IDCANCEL) { } returnFALSE;}boolCASPIREApp::ADOExecute(_RecordsetPtr&ADOSet,_variant_t&strSQL){ if(ADOSet->State==adStateOpen) ADOSet->Close(); try { ADOSet->Open(strSQL,m_pCon.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown); returntrue; } catch(_com_error&e) { CStringerr; err.Format("ADOError:%s",(char*)e.Description()); AfxMessageBox(err); returnfalse; }}主工程源代碼://ASPIREDlg.cpp:implementationfile#include"stdafx.h"#include"ASPIRE.h"#include"ASPIREDlg.h"#include"MAINFACE.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CASPIREDlgmessagehandlersBOOLCASPIREDlg::OnInitDialog(){ CDialog::OnInitDialog(); m_quanxian.InsertString(0,"超級用戶"); m_quanxian.InsertString(1,"普通用戶"); m_quanxian.SetCurSel(0);//設(shè)置默認值 ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX<0xF000); CMenu*pSysMenu=GetSystemMenu(FALSE); if(pSysMenu!=NULL) { CStringstrAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if(!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu); } } SetIcon(m_hIcon,TRUE); //Setbigicon SetIcon(m_hIcon,FALSE); //Setsmallicon returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCASPIREDlg::OnPaint(){ if(IsIconic()) { CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0); intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; dc.DrawIcon(x,y,m_hIcon); } else { CDialog::OnPaint(); }}voidCASPIREDlg::OnLog(){ CStringstrSql,str; _variant_tstrQuery; UpdateData(TRUE); ((CComboBox*)GetDlgItem(IDC_QUANXIAN))->GetWindowText(str); CMAINFACEdlg; if(m_name.IsEmpty())//判斷用戶名文本框是否為空 { MessageBox("用戶名不能為空","錯誤",MB_ICONHAND); GetDlgItem(IDC_NAME)->SetFocus();//設(shè)置焦點特別注意顏色不同的必須//對應好設(shè)置的ID return; } if(m_password.IsEmpty())//判斷密碼文本框是否為空 { MessageBox("密碼不能為空","錯誤",MB_ICONHAND); GetDlgItem(IDC_PASSWORD)->SetFocus(); return; } strQuery="select*fromSlogwhereSname='"+m_name+"'andSpassword='"+m_password+"'andSquanxian='"+str+"'"; //查看數(shù)據(jù)庫中的用戶名和用戶密碼這個必須一一//對應因此特別細心 //下面是從數(shù)據(jù)庫中取出密碼和用戶名不匹配清空。匹配則成功登陸。 theApp.ADOExecute(theApp.m_pRs,strQuery); intiCount=theApp.m_pRs->GetRecordCount(); if(iCount==0) { if(IDOK==(MessageBox("用戶或密碼錯誤或權(quán)限不夠,請重新輸入","錯誤",MB_ICONQUESTION|MB_OKCANCEL))) { m_name=""; m_password=""; GetDlgItem(IDC_NAME)->SetFocus(); UpdateData(false); } else { this->EndDialog(1); } } else { if(str=="普通用戶") { MessageBox("恭喜你,登錄成功!","正確",MB_ICONASTERISK); this->EndDialog(1); } else { MessageBox("恭喜你,登錄成功!","正確",MB_ICONASTERISK); this->EndDialog(1); CMAINFACEdlg; dlg.cleckstr=str; dlg.DoModal(); } UpdateData(false); } }voidCASPIREDlg::OnExit(){ MessageBox("是否退出系統(tǒng)?","退出",MB_ICONQUESTION|MB_OKCANCEL); exit(1);}voidCASPIREDlg::PreSubclassWindow(){ CDialog::PreSubclassWindow();}BOOLCASPIREDlg::PreTranslateMessage(MSG*pMsg){ if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN){ UpdateData(TRUE);if(GetFocus()->GetDlgCtrlID()==IDC_LOG)//按下回車,如果當前焦點是在自己期望的控件上{CASPIREDlg::OnLog();//添加自己的處理代碼} returnTRUE;}if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)returnTRUE; returnCDialog::PreTranslateMessage(pMsg);}查詢源代碼://CHAXUN.cpp:implementationfile#include"stdafx.h"#include"ASPIRE.h"#include"CHAXUN.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CCHAXUNmessagehandlersvoidCCHAXUN::OnButton1Chaxun(){ UpdateData(TRUE); m_chaxunxianshi.DeleteAllItems(); _variant_tHolder,strQuery; CStringtemp; inta=m_chaxunfs.GetCurSel();//獲取下拉列表選項索引值 switch(a) { case0://按姓名 strQuery="select*fromS_XINSRZwherexingminglike'%%"+m_sname+"%%'";//數(shù)據(jù)庫表中的對應字段 if(m_sname=="") { MessageBox("請輸入姓名進行查詢","錯誤",MB_ICONERROR); GetDlgItem(IDC_EDIT2_SNAME)->SetFocus(); m_ssnum=""; return; } m_ssnum=""; break; case1://按宿舍編號 strQuery="select*fromS_XINSRZwheresushebianhaolike'%%"+m_ssnum+"%%'"; if(m_ssnum=="") { MessageBox("請輸入宿舍編號進行查詢","錯誤",MB_ICONERROR); GetDlgItem(IDC_EDIT_SSNUM)->SetFocus(); m_sname=""; return; } m_sname=""; break; } theApp.ADOExecute(theApp.m_pRs,strQuery); intiCount=theApp.m_pRs->GetRecordCount(); if(0==iCount) return; theApp.m_pRs->MoveFirst(); inti=0; while(!theApp.m_pRs->adoEOF) { //MessageBox("213"); Holder=theApp.m_pRs->GetCollect("sushebianhao"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.InsertItem(i,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("xingming"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,1,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("xingbie"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,2,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("yuanxi"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,3,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("xuehao"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,4,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("lianxifangshi"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,5,(char*)(_bstr_t)Holder); theApp.m_pRs->MoveNext(); i++; } m_chaxunxianshi.SetRedraw(TRUE); m_sname=""; m_ssnum=""; UpdateData(FALSE);}BOOLCCHAXUN::OnInitDialog(){ CDialog::OnInitDialog(); m_chaxunfs.InsertString(0,"按姓名"); m_chaxunfs.InsertString(1,"按宿舍編號"); m_chaxunfs.SetCurSel(1);//設(shè)置默認值 m_chaxunxianshi.InsertColumn(0,"宿舍編號"); m_chaxunxianshi.InsertColumn(1,"姓名"); m_chaxunxianshi.InsertColumn(2,"性別"); m_chaxunxianshi.InsertColumn(3,"學院"); m_chaxunxianshi.InsertColumn(4,"學號"); m_chaxunxianshi.InsertColumn(5,"聯(lián)系方式"); RECTrect;//設(shè)置一個矩形框 m_chaxunxianshi.GetWindowRect(&rect); intwid=rect.right-rect.left; m_chaxunxianshi.SetColumnWidth(0,wid/6); m_chaxunxianshi.SetColumnWidth(1,wid/6); m_chaxunxianshi.SetColumnWidth(2,wid/6); m_chaxunxianshi.SetColumnWidth(3,wid/6); m_chaxunxianshi.SetColumnWidth(4,wid/6); m_chaxunxianshi.SetColumnWidth(5,wid/6); m_chaxunxianshi.SetExtendedStyle(LVS_EX_FULLROWSELECT); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCCHAXUN::OnButton2Tuichu(){ this->EndDialog(1);}BOOLCCHAXUN::PreTranslateMessage(MSG*pMsg){ if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN){if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN) returnTRUE;}if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)returnTRUE; returnCDialog::PreTranslateMessage(pMsg);}空宿舍查詢源代碼:#if!defined(AFX_KONGSS_H__C402B04D_ED0D_44FB_A52D_6A4BC274F5AD__INCLUDED_)#defineAFX_KONGSS_H__C402B04D_ED0D_44FB_A52D_6A4BC274F5AD__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000//CKONGSSdialogclassCKONGSS:publicCDialog{public: CKONGSS(CWnd*pParent=NULL);//standardconstructor enum{IDD=IDD_DIALOG1KONGSS}; CListCtrl m_kongss; CString m_sushebh; public: virtualBOOLPreTranslateMessage(MSG*pMsg); protected: virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupportprotected: virtualBOOLOnInitDialog(); afx_msgvoidOnButton1(); DECLARE_MESSAGE_MAP()};主界面源代碼://MAINFACE.cpp:implementationfile#include"stdafx.h"#include"ASPIRE.h"#include"MAINFACE.h"#include"USERMANAGE.h"#include"XINSRZ.h"#include"CHAXUN.h"#include"KONGSS.h"#include"TONGJI.h"#include"GUANYU.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CMAINFACEmessagehandlersvoidCMAINFACE::OnMenuitem32771Usermanage(){ CUSERMANAGEdlg; dlg.DoModal();}voidCMAINFACE::OnMenuitem32773Xinsrz(){ CXINSRZdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32774schaxun(){ CCHAXUNdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32775chaxun(){ CCHAXUNdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32776schaxun(){ CCHAXUNdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32777kongss(){ CKONGSSdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32778tongjixx(){ CTONGJIdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32779guanyu(){ CGUANYUdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32772ss(){ CCHAXUNdlg; dlg.DoModal();}BOOLCMAINFACE::PreTranslateMessage(MSG*pMsg){ if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN){if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN) returnTRUE;}if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)returnTRUE; returnCDialog::PreTranslateMessage(pMsg);}BOOLCMAINFACE::OnInitDialog(){ CDialog::OnInitDialog(); m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1USERMANAGE));//1 m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2CHAXUN));//2 m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2KONGSS));//3 m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2TONGJI));//4 UINTarr[4]; for(intk=0;k<4;k++) { arr[k]=k+1001; } m_ToolBar.Create(this); m_ToolBar.SetButtons(arr,4); m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList); m_ToolBar.SetSizes(CSize(50,60),CSize(32,32)); m_ToolBar.SetButtonText(0,"用戶管理"); m_ToolBar.SetButtonText(1,"查詢"); m_ToolBar.SetButtonText(2,"空宿舍"); m_ToolBar.SetButtonText(3,"統(tǒng)計"); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); UINTarraryx[4]; for(inti=0;i<4;i++) { arraryx[i]=1080+i; } m_Statusbr.Create(this); m_Statusbr.SetIndicators(arraryx,sizeof(arraryx)/sizeof(UINT)); for(intj=0;j<4;j++) { m_Statusbr.SetPaneInfo(j,arraryx[j],0,210); } m_Statusbr.SetPaneText(0,"當前用戶身份"); m_Statusbr.SetPaneText(1,cleckstr); m_Statusbr.SetPaneText(2,"系統(tǒng)當前時間"); SetTimer(1,1000,NULL); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); returnTRUE;}voidCMAINFACE::OnTimer(UINTnIDEvent){ CTimetime; time=CTime::GetCurrentTime(); m_Statusbr.SetPaneText(3,time.Format("%Y-%m-%d%H:%M:%S")); CDialog::OnTimer(nIDEvent);}voidCMAINFACE::OnUserSet(){ CUSERMANAGEdlg; dlg.DoModal();}voidCMAINFACE::OnUserSet1(){ CCHAXUNdlg; dlg.DoModal();}voidCMAINFACE::OnUserSet2(){ CKONGSSdlg; dlg.DoModal();}voidCMAINFACE::OnUserSet3(){ CTONGJIdlg; dlg.DoModal();}統(tǒng)計源代碼://TONGJI.cpp:implementationfile#include"stdafx.h"#include"ASPIRE.h"#include"TONGJI.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CTONGJImessagehandlersBOOLCTONGJI::OnInitDialog(){ CDialog::OnInitDialog(); returnTRUE;}voidCTONGJI::OnButton1(){ UpdateData(TRUE);//查詢總?cè)藬?shù) _variant_tHolder,strQuery; inta=0; strQuery="select*fromS_XINSRZwherexingmingisnotnullandxingming<>''";theApp.ADOExecute(theApp.m_pRs,strQuery); intiCount=theApp.m_pRs->GetRecordCount(); if(0==iCount) return; theApp.m_pRs->MoveFirst(); inti=0; while(!theApp.m_pRs->adoEOF) { Holder=theApp.m_pRs->GetCollect("xingming"); if(Holder.vt!=VT_NULL) a++
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年注冊會計師復習資料試題及答案
- 關(guān)于2025年證券從業(yè)證考試的試題及答案探討
- 項目績效提升的關(guān)鍵因素試題及答案
- 前瞻性研究2025年證券從業(yè)證考試試題及答案
- 推動新興產(chǎn)業(yè)和未來產(chǎn)業(yè)發(fā)展路徑的關(guān)鍵策略
- 企業(yè)財務報告的重要組成試題及答案
- 2025年銀行從業(yè)資格證考試復習強化試題與答案
- 理財服務中信息技術(shù)的應用試題及答案
- 項目進展報告的相關(guān)考題分析試題及答案
- 《木蘭詩》歷年中考古詩欣賞試題匯編(截至2024年)
- 2024年音樂節(jié)行業(yè)發(fā)展前景預測及投資策略研究報告
- 2024西部縣域經(jīng)濟百強研究
- 2025-2030年中國IPTV產(chǎn)業(yè)行業(yè)發(fā)展趨勢及前景調(diào)研分析報告
- 國企改革三年行動培訓
- 醫(yī)美診所院感知識培訓課件
- 河北省氣象部門招聘筆試沖刺題2025
- 上海市家庭居室裝飾裝修施工合同書
- 物聯(lián)網(wǎng)技術(shù)及應用基礎(chǔ)(第2版) -電子教案
- 新能源汽車租賃市場發(fā)展方案
- 貨架回收合同范例
評論
0/150
提交評論