




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
吉首大學本科生畢業論文JISHOUUNIVERSITY本科生畢業設計題目:基于C++的學生宿舍管理系統的設計與實現作者:學號:所屬學院:信息科學與工程學院專業年級:指導教師:李建鋒職稱:副教授完成時間:2014年5月23日吉首大學教務處制目錄TOC\o"1-2"\h\u76摘要 第1章緒論1.1課題設計背景及現狀隨著計算機產業的飛速發展,電子計算機已經被廣泛的應用于文字處理、信息管理、輔助教學、輔助設計以及人們的日常生活當中。尤其是在計算機的操作系統具有了圖形化的界面后,使用計算機早已經不再是某些專業人員的特權,各行各業的人們不需要經過專業化的訓練就能自如的在計算機上進行各種復雜的操作。學生宿舍管理系統對于一所學校來說將是必不可少的組成部分。當今社會是個飛速進步的世界,原始的記錄方式早已經被社會所淘汰,計算機化管理正是適應時代的產物。21世紀的今天,信息社會占據著主流地位,計算機在各行中的運用已經得到了普及,自動化、信息化的管理也越來越廣泛地應用于各個領域。目前很多學校還停留在宿舍管理人員依靠手工記錄數據的最初階段,手工記錄相對于規模較小的學校來說還可以勉強接受,但相對于學生信息量比較龐大,需要記錄存檔的數據較多的高校來說,人工記錄是相當的麻煩的。而且當查找某條記錄的時候,由于數據量非常龐大,還只能靠人工一條一條的去查找,這樣不但麻煩而且浪費了許多時間,效率也就比較低。針對以上這些情況,設計一個學生宿舍管理系統,使系統能夠解決當前存在的這些問題。此系統采用的是計算機化管理,系統做到盡量人性化,讓使用者能夠感覺到操作非常的方便,管理人員只需要做的就是將數據錄入到系統的數據庫中去。由于數據庫存儲容量很大,而且非常穩定,適合長時間保存,也不易丟失。這毫無疑問可以解決學校在手工宿舍管理所存在的各種問題,能夠更方便的查詢以及統計各項信息。本系統具有安全性高、穩定性好、運行速度快的優點,并且能夠非??焖俚牟樵儗W校所需的各項信息[1]。第2章相關知識點介紹2.1C++知識介紹MicrosoftVisualC++,(簡稱VisualC++、MSVC、VC++或VC)微軟公司的C++開發工具,具有集成開發環境,可編輯C語言,C++以及C++/CLI等編程語言。VC++整合了非常便利的除錯工具,而且整合了微軟視窗程式設計(WindowsAPI)、三維動畫DirectXAPI,Microsoft.NET框架。目前最新的版本是MicrosoftVisualC++2013。它利用MFC類庫的強大優勢,使其成為Windows平臺最為優秀的開發工具之一,也是目前功能最為強大的程序開發平臺之一。MFC是采用VisualC++開發環境編寫Windows應用程序的最佳選擇,它是一組C++類,采用它可以為用戶定制特定的Windows應用程序[2]。C++這個名字是RickMascitti于1983年中所建議的,并于1983年12月首次使用。更早以前,尚在研究階段的發展中語言曾被稱為“newC”,之后是“CwithClasses”。在計算機科學中,C++仍被稱為C語言的上層結構。它最后得名于C語言中的“++”操作符(其對變量的值進行遞增)。而且在共同的命名約定中,使用“+”以表示增強的程序。Stroustrup說:“這個名字象征著源自于C語言變化的自然演進”。C++以擁有“語法高亮”,IntelliSense(自動完成功能)以及高級除錯功能而著稱。使用它,用戶可以進行遠程調試,單步執行等。用戶還能在調試期間重新編譯被修改的代碼,而不用重新啟動正在調試的程序。其編譯和建置系統以最小重建功能、預編譯頭文件及累加連結著稱[3]。C++課程是計算機專業的專業基礎課程,具有較強的理論性和非常高的實踐操作性。該課程的主要作用和目的是:培養學生面向對象編程思想,訓練學生的編程思維,加強學生的技能訓練,培養學生面向對象的程序設計能力和團隊合作的意識,以便更好地適應將來工作崗位[4]。2.2ADO知識介紹ADO(activeXdataobjects)是基于組件的數據庫編程接口,它是一個和編程語言無關的COM組件系統ADO的精髓在于利用簡單的COM指令來快速方便地訪問ODBC數據源,微軟的表格、列表框等ActiveX控件,使得用戶可以簡便地利用ADO工作.ADO應用程序通過OLEDB提供程序訪問數據.雖然ADO應用程序仍能對SQLServerODBC驅動程序使用ODBC的OLEDB提供程序,但使用SQLServer的OLEDB提供程序效率更高[5]。在MicrosoftVisualC++編輯器中,可以使用ADO對象以及ADO的附加組件(稱為MicrosoftADOExtensionsforDLLandSecurity(ADOX))來創建或修改表和查詢、檢驗數據庫、或者訪問外部數據源。還可在代碼中使用ADO來操作數據庫中的數據。2.3SQLSever2000知識介紹SQLServer2000是Microsoft公司推出的SQLServer數據庫管理系統的一個版本。該版本繼承了SQLServer7.0版本的優點同時又比它增加了許多更先進的功能,具有使用方便,可伸縮性好與相關軟件集成程度高等優點,可跨越從運行MicrosoftWindows98的膝上型電腦到運行MicrosoftWindows2000的大型多處理器的服務器等多種平臺使用。具備以下幾個特性:1、數據結構化2、數據共享性高、冗余度小、易擴充3、數據獨立性高4、統一的數據管理和控制[6]具備以下幾個優點:1、系統管理先進,支持Windows圖形化管理工具,支持本地和遠程的系統管理和配置。2、強壯的事務處理功能,采用各種方法保證數據的完整性。3、支持對稱多處理器結構、存儲過程、ODBC,并具有自主的SQL語言。SQLServer以其內置的數據復制功能、強大的管理工具、與Internet的緊密集成和開放的系統結構為廣大的用戶、開發人員和系統集成商提供了一個出眾的數據庫平臺。2.4本章小結本章重點介紹了開發“學生宿舍管理系統”所用到的開發工具與其應用的數據庫系統。對C++的說明與相關控件技術進行了系統的介紹。SQLServer2000作為應用最為廣泛的數據庫系統,它最大限度的支持了系統的需求,實現了本系統的各項功能。通過兩種工具的有機結合開發出的系統充分地滿足了用戶的需求。本章通過介紹面向對象的編程以及兩種工具的發展與其相應的技術,使大多數人明白了本系統的開發原理與相關技術的應用。第3章系統需求分析3.1功能需求3.1.1基本功能需求本課題將要實現的是高校學生宿舍管理系統,因此在設計該系統時,要盡可能的貼近學生實際,便于用戶操作。系統在實現中應該具有如下功能:1.系統要求用戶必須要輸入正確的用戶名和密碼才能進入該系統。2.系統應該提供學生住宿情況的基本信息登記。3.系統應該提供查詢功能,以方便用戶可對學生的基本信息查詢(要實現可按多種條件的查詢)以及樓房信息的查詢。4.系統應該提供增加、刪除、修改用戶帳戶的功能以及對帳戶的權限進行設定。5.系統還應具有增加、刪除、修改學生基本信息的功能。6.系統應該具有統計學生人數(如總人數,男女生人數等)的功能。7.系統應具有每學期學生入學和離校的注冊登記。8.系統應具有來訪人員的詳細登記。9.系統應具有學生個人物品進出宿舍情況的詳細登記。10.系統應具有對學生宿舍的衛生和出勤進行登記[7]。3.1.2用戶界面需求學生宿舍管理系統應當提供簡單、明了、層次清晰的用戶操作界面,使用戶操作的時候能夠一目了然。以讓用戶在使用該系統錄入、查詢、修改信息的時候能夠更加的方便、快捷。3.2性能需求3.2.1系統安全性學生宿舍管理系統中的用戶管理以及學生宿舍管理中的信息是很重要的,一般不允許隨意篡改的,所以在系統的管理權限上應當進行嚴格控制,具體思想如下:要想對該學生宿舍管理系統進行操作就應當具有某些操作權限。沒有權限的用戶將不能通過任何渠道來登錄該系統,查看該系統的任何信息和數據,以確保系統的嚴密性和安全性。在上述要求基礎上,可以為此系統設定兩種登錄方式,即超級用戶登錄和普通用戶登錄,沒有超級用戶或者普通用戶的用戶名和密碼,任何人都不可以登錄該系統,而且超級用戶可以操作很多普通用戶不能操作的模塊。3.3數據庫選擇數據庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。近年來,數據庫管理系統已經從專用的應用程序包迅速地發展為通用系統軟件,目前有很多種數據庫,最典型的如ORACLE、MySQL、ACCESS。其中ORACLE是適用于數據量大,并發操作多的系統,相對于學生宿舍管理系統這種不是特別大的管理系統而言,不必要選用ORACLE,而ACCESS是小型的數據庫,可存儲的數據量相對來說最少,且同時訪問客戶端不能多于4個。因此也不選用ACCESS數據庫。考慮到以上實際情況,對于學生基本信息必須的變動,還有各種數據信息的數據量的變化,故選用MySQL作為數據庫開發軟件。SQLServer2000是MySQL中一種常用的關系數據庫,能存放和讀取大量的數據,管理眾多并發的用戶,故選用SQLServer2000數據庫。3.4開發環境本系統是用WindowsXp系統為開發平臺,用MicrosoftVisualC++編程語言中的MFC和SQLServer2000數據庫來對高校學生宿舍管理系統所需要的功能進行實現。3.5本章小結 本章非常具體地介紹了系統的需求分析,通過系統的需求分析而得出了系統的總體設計方向,確定了系統的開發框架。本章對系統的實現的功能作了簡單的概述,得出了系統的主體流程。通過對系統的各項分析,得出了實現系統功能的要用到的基本方法,并確定了使用的開發工具。
第4章宿舍管理系統詳細設計學生宿舍管理系統4.1系統功能模塊圖學生宿舍管理系統系統管理系統管理出入登記學生管理查詢管理宿舍管理出入登記學生管理查詢管理宿舍管理統計分析幫統計分析幫助退出系統用戶管理退出系統用戶管理空宿舍查詢新生入住宿舍來訪人員登記物品進出登記宿舍信息查詢人數統計空宿舍查詢新生入住宿舍來訪人員登記物品進出登記宿舍信息查詢人數統計關于物品進出查詢學生出勤查詢來訪人員查詢學生注冊查詢宿舍管理學生信息錄入物品進出查詢學生出勤查詢來訪人員查詢學生注冊查詢宿舍管理學生信息錄入學生財務登記學生注冊管理學生離校登記學生出勤管理圖1系統功能模塊圖在整體設計中,我們將宿舍管理系統分為七個大的模塊:系統管理模塊、宿舍管理模塊、學生管理模塊、出入登記模塊、查詢管理模塊、統計分析模塊、幫助模塊。每個模塊將實現不同的功能,下面將具體進行介紹。4.1.1系統管理模塊系統管理模塊包括:用戶管理、退出系統兩個部分。1、用戶管理:實現所有用戶信息的增刪查改功能以及顯示用戶。2、退出系統:實現正常退出宿舍管理系統。4.1.2宿舍管理模塊宿舍管理模塊包括:宿舍管理、新生入住宿舍兩個大的部分。1、宿舍管理:實現對宿舍的登記。2、新生入住宿舍:實現對學生入住宿舍信息登記的增刪查改。4.1.3學生管理模塊學生管理模塊包括:學生信息錄入、學生財物登記、學生注冊管理、學生離校登記、學生出勤管理、來訪人員登記、物品進出登記五個部分。1、學生信息錄入:實現對學生基本信息的登記。2、學生財務登記:實現對學生所擁有財務的登記。3、學生注冊管理:實現對學生新學期返校的注冊。4、學生離校管理:實現對學生放假離校的登記。5、學生出勤管理:實現對學生查寢情況的登記。4.1.4出入登記模塊出入登記模塊包括:來訪人員登記和物品進出登記兩個部分。1、來訪人員登記:實現對來訪人員基本信息的登記。2、物品進出登記:實現對學生進出宿舍所攜帶貴重物品的登記。4.1.5查詢管理模塊信息查詢模塊基本上包括:宿舍信息查詢、來訪人員查詢、學生出勤查詢、物品進出查詢、學生注冊查詢、空宿舍查詢六個部分。1、宿舍信息查詢:實現對宿舍信息的基本查詢。2、來訪人員查詢:實現對來訪人員信息的查詢。3、學生出勤查詢:實現對學生查寢情況的查詢。4、物品進出查詢:實現對學生進出攜帶物品的查詢。5、學生注冊查詢:實現對學生新學期返校信息的查詢。6、空宿舍查詢:實現對學校未入住宿舍情況的查詢。4.1.6統計分析模塊統計分析模塊包括:人數統計。1、人數統計:實現統計學生總人數、男生人數、女生人數、學院人數等。4.1.7幫助模塊幫助模塊包括:關于模塊。1、關于模塊:是對學生宿舍管理系統開發者相關信息的一個簡單介紹。4.2系統E-R圖在我所設計的模塊中,主要涉及到樓房、宿舍和學生這三個實體,所以在E-R圖中我將這兩個實體的屬性進行了詳細說明。包含包含樓房樓層數房間數樓房號應住人數聯系方式宿舍實住人數住宿費用居住性別宿舍編號應住人數入住姓名性別學號學生院系交費注冊探望來訪人員進出宿舍財物1 N 11 N 1N N 1 1 N 1 1 N圖2系統E-R圖如上述ER圖所示,系統通過對樓房的管理來管理詳細的宿舍信息,其中每一棟樓都包含很多個宿舍。然后是學生入住宿舍,每一間宿舍對應入住多個學生,并且同時錄入學生的信息,學生是通過注冊交費之后入住宿舍的,沒一個學期都要注冊一次,所以是一對多的關系。另外還有一些其它的功能如親友探訪,學生攜帶財物的進出也是在學生實體上面實現的,親友探訪和攜帶財物進出也是一對多的關系。4.3系統所需表綜合以上分析,要實現上面的所有功能模塊,共需要設計二個表,分別是:用戶信息表、學生住宿信息表、宿舍樓房表、學生財物表、來訪人員表、學生注冊表、物品出入宿舍表、學生出勤表。對表的說明:1、用戶信息表:登記用戶名、密碼及登錄權限。2、學生住宿信息表:詳細登記學生基本信息及宿舍編號情況。3、宿舍樓房表:登記學校所有的宿舍樓房情況。4、學生財物表:登記學生開學入住時宿舍財物的情況。5、來訪人員表:登記來探訪學生的外來人員的信息。6、學生注冊表:登記學生新學期開學的注冊信息。7、物品出入宿舍表:登記學生物品出入宿舍樓的信息。8、學生出勤表:登記學生在校期間的宿舍出勤信息。表1用戶信息表(Slog)字段名描述數據類型數據長度NULLPrimarykeySname用戶名Varchar50NYSpassword用戶密碼Varchar50NNSquanxian用戶權限Varchar50NN表2學生住宿信息表(S_XINSRZ)字段名描述數據類型數據長度NULLPrimarykeysushebianhao宿舍編號Varchar50NYxingming姓名Varchar50NNxingbie性別Varchar50NNyuanxi院系Varchar50NNxuehao學號Varchar50NNlianxifangshi聯系方式Varchar50NN表3宿舍樓房表(SHOUSE)字段名描述數據類型數據長度NULLPrimarykeyLouId樓房號Varchar50NYLouNum樓層數Varchar50NNLouRom房間數Varchar50NNLouYing應住人數int4NNLouShi實住人數int4YN表4學生財物表(SCAIWU)字段名描述數據類型數據長度NULLPrimarykeySXuehao學號Varchar50NYSName姓名Varchar50NNLouId樓房號Varchar50NFsushebianhao寢室Varchar50NFBed床位號Varchar50YNStool凳子號Varchar50YNDesk桌子號Varchar50YN表5來訪人員表(SVISIT)字段名描述數據類型數據長度NULLPrimarykeyVisId自動編號Varchar10NYVisName來訪人姓名Varchar50NNVisHost被訪人姓名Varchar50NNLouId樓房號Varchar50NFsushebianhao宿舍編號Varchar50NFRelation所屬關系Varchar50NNVisData來訪時間datetime8NN表6學生注冊表(SZHUCE)字段名描述數據類型數據長度NULLPrimarykeyxuehao學號Varchar50NYxingming姓名Varchar50NFLouId樓房號Varchar50NFsushebianhao宿舍編號Varchar50NFZCDate注冊日期datetime8NYZCPrice所交費用Varchar10NN表7物品出入宿舍表(SWUPINCR)字段名描述數據類型數據長度NULLPrimarykeyWPCRId自動編號Bigint8NYxuehao學號Varchar50NNxingming姓名Varchar50NNLouId樓房號Varchar50NFsushebianhao宿舍編號Varchar50NFIn進樓物品Varchar50YNOut出樓物品Varchar50YNDate日期datetime8NN表8學生出勤表(SCHUQIN)字段名描述數據類型數據長度NULLPrimarykeyLouId樓房號Varchar50NYsushebianhao宿舍編號Varchar50NFnum缺勤人數int4YNwhy缺勤原因Varchar50YNdata日期datetime8NN4.4具體模塊設計在系統功能模塊介紹時,我把整個系統分為系統管理模塊、宿舍管理模塊、學生管理模塊、出入登記模塊、查詢管理模塊、統計分析模塊、幫助模塊七個基本模塊。如下圖3是我設計的學生宿舍管理系統的主界面:圖3學生宿舍管理系統主界面4.4.1登錄模塊功能詳細設計圖4登錄界面設計思想:當要進入學生宿舍管理系統時會彈出一個登錄的對話框,用戶必須在登錄對話框中按要求輸入正確的用戶名和密碼才能夠進入主窗口。具體實現:1、在實現該功能模塊時,需添加一個Windows對話框,系統自動生成對話框的ID為IDD_ASPIRE_DIALOG,修改標題屬性為“登錄”,系統會自動生成2個類,分別為CASPIREApp和CASPIREDlg,在VC++操作界面的ClassView中可以看到。調整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態文本控件、編輯框控件、組合框控件和按鈕控件,其中密碼控件須在樣式屬性里面添加密碼功能,登錄按鈕控件須在樣式屬性里面添加缺省按鈕功能以設置默認按鈕,組合框控件的樣式屬性里面的所有者繪制屬性改為否以達到只讀的效果,并且修改所有控件的相關屬性使其如圖4所示界面。2、在實現登錄、注冊和退出功能時,需要用到用戶表Slog,通過獲取數據庫的安裝路徑,調用ADO技術來實現VC++和數據庫的連接,給兩個編輯框和一個組合框修改對應的ID為IDC_NAME、IDC_PASSWORD、IDC_QUANXIAN,并分別定義變量為m_name、m_password、m_quanxian,在對話框的命令按鈕的Click事件中寫入相應的程序來實現登錄、注冊以及退出的功能,詳細代碼請查看附錄。4.4.2系統管理功能詳細設計1、用戶管理圖5用戶管理界面設計思想:為了方便多人同時使用此系統,每個人都可以用自己單獨的用戶登錄該系統,特地添加用戶管理界面。而且能夠方便快捷的查詢、定位用戶。通過操作控件可為用戶提供新增、修改、刪除用戶功能等[8]。具體實現:1、在實現該功能模塊時,需要添加一個Windows對話框,改ID為IDD_USERMANAGE,修改標題屬性為“用戶管理”,在此對話框界面按CTRL+W創建一個新的類CUSERMANAGE。調整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態文本控件、編輯框控件、組合框控件和按鈕控件以及列表控件,此處密碼控件無須在樣式屬性里面添加密碼功能,添加按鈕控件可在樣式屬性里面添加缺省按鈕功能以設置默認按鈕,組合框控件的樣式屬性里面的所有者繪制屬性改為否以達到只讀的效果,列表控件的樣式屬性里面的查看屬性改為報告。并修改相關的屬性使其如圖5界面所示。2、在實現添加、修改、刪除和退出功能時,需要用到用戶表Slog,通過獲取數據庫的安裝路徑,調用ADO技術來實現VC++和數據庫的連接,給三個編輯框、一個組合框和一個列表框修改對應的ID為IDC_SNAME、IDC_SPASS、IDC_SPASSWORD、IDC_SQUANXIAN,并分別定義變量為m_sname、m_spass、m_spassword、m_squanxian、m_usershow,在對話框的命令按鈕的Click事件中寫入相應的程序來實現添加、修改、刪除以及退出的功能,其中查詢時候,系統需要獲取輸入的值來和數據庫里面的值做比較,那么就需要用到強制類型轉換。強制類型轉換又稱為顯示類型轉換,其作用是將某種類型僅在當前運算中轉換成指定的數據類型,運算結束后,原類型保持不變。強制類型轉換格式為在一個數值或表達式前加上帶括號的類型名[9]。詳細代碼請查看附錄。4.4.3宿舍管理模塊詳細設計1、宿舍人員查詢圖6宿舍管理界面設計思想:宿舍管理系統自然是必須要有對宿舍住宿人員信息進行查詢的功能的,因此這里設計這個模塊也是理所當然的。并且能夠按照不同的查詢方式來進行必要的查詢,如:按宿舍編號,按姓名,按學號等。具體實現:1、在實現該功能模塊時,需要添加一個Windows對話框,改ID為IDD_DIALOG1_CHAXUN,修改標題屬性為“查詢”,在此對話框界面按CTRL+W創建一個新的類CCHAXUN。調整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態文本控件、編輯框控件、組合框控件和按鈕控件以及列表控件,查詢按鈕控件可在樣式屬性里面添加缺省按鈕功能以設置默認按鈕,組合框控件的樣式屬性里面的所有者繪制屬性改為否以達到只讀的效果,列表控件的樣式屬性里面的查看屬性改為報告。并修改相關的屬性使其如圖6界面所示。2、在實現查詢和退出功能時,需要用到表S_XINSRZ,通過獲取數據庫的安裝路徑,調用ADO技術來實現VC++和數據庫的連接,給兩個編輯框、一個組合框和一個列表框修改對應的ID為IDC_EDIT_SSNUM、IDC_EDIT2_SNAME、IDC_COMBO1_CHAXUNFS、IDC_LIST1_CHAXUNXIANSHI,并分別定義變量為m_ssnum、m_sname、m_chaxunfs、m_chaxunxianshi,在對話框的命令按鈕的Click事件中寫入相應的程序來實現查詢以及退出的功能,詳細代碼請查看附錄。2、新生入住宿舍圖7宿舍管理界面設計思想:新生入住宿舍是將每個學生直接安排到指定的宿舍床位,如無學生入住的宿舍也要添加進去,不過不予添加其它的信息。具體實現:1、在實現該功能模塊時,需要添加一個Windows對話框,改ID為IDD_XINSHENGRUZHU,修改標題屬性為“新生入住”,在此對話框界面按CTRL+W創建一個新的類CXINSRZ。調整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態文本控件、編輯框控件和按鈕控件以及列表控件,查詢按鈕控件可在樣式屬性里面添加缺省按鈕功能以設置默認按鈕,列表控件的樣式屬性里面的查看屬性改為報告。并修改相關的屬性使其如圖7界面所示。2、在實現查詢、刪除、修改和退出功能時,需要用到表S_XINSRZ,通過獲取數據庫的安裝路徑,調用ADO技術來實現VC++和數據庫的連接,給六個編輯框、一個列表框修改對應的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事件中寫入相應的程序來實現所有功能,詳細代碼請查看附錄。4.4.4查詢管理模塊詳細設計1、空宿舍查詢圖8空宿舍查詢界面設計思想:當學校宿舍比較多的時候,要安排新生入住宿舍,需要清楚地知道哪些宿舍是空的,因此我做出了一個空宿舍查詢的功能。在做這個查詢的時候,我檢索數據庫表S_XINSRZ中的“xingming”是否為空,為空的話則說明對應的宿舍編號是空宿舍。具體實現:在實現該功能模塊時,需要添加一個Windows對話框,改ID為IDD_DIALOG1KONGSS,修改標題屬性為“空宿舍查詢”,在此對話框界面按CTRL+W創建一個新的類CKONGSS。調整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態文本控件、編輯框控件和按鈕控件以及列表控件,查詢按鈕控件可在樣式屬性里面添加缺省按鈕功能以設置默認按鈕,列表控件的樣式屬性里面的查看屬性改為報告。并修改相關的屬性使其如圖8界面所示。在實現顯示空宿舍功能時,需要用到表S_XINSRZ,通過獲取數據庫的安裝路徑,調用ADO技術來實現VC++和數據庫的連接,給編輯框和列表框修改對應的ID為IDC_EDIT1_SUSHEBH、IDC_LIST1KONGSSXS,并分別定義變量為m_sushebh、m_kongss,在對話框的命令按鈕的Click事件中寫入相應的程序來實現顯示空宿舍的功能,詳細代碼請查看附錄。4.4.5統計分析模塊詳細設計1、人數統計圖9人數統計界面設計思想:當學校在住人數比較多的時候,不進行統計就很無法清楚總共到底有多少人,男生有多少人,女生有多少人,女生有多少人等。因此我做出了一個人數統計的功能。在做這個統計的時候,我按要求檢索數據庫表S_XINSRZ中對應的列,如須查總人數則檢索“xingming”是否為空,查男生人數則檢索“xingbie”為男的人數,女生人數自然就等于總人數和男生人數的差值了,查學院人數的話則檢索“yuanxi”對應的不同學院,最后全部檢索完成之后統計出來顯示出來。具體實現:1、在實現該功能模塊時,需要添加一個Windows對話框,改ID為IDD_DIALOG1,修改標題屬性為“人數統計”,在此對話框界面按CTRL+W創建一個新的類CTONGJI。調整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能。添加相應的靜態文本控件、編輯框控件和按鈕控件,查詢按鈕控件可在樣式屬性里面添加缺省按鈕功能以設置默認按鈕。并修改相關的屬性使其如圖9界面所示。2、在實現顯示統計報表功能時,需要用到表S_XINSRZ,通過獲取數據庫的安裝路徑,調用ADO技術來實現VC++和數據庫的連接,給五個編輯框分別修改對應的ID為IDC_EDIT2ZONG、IDC_EDIT3NANSHENG、IDC_EDIT4NVSHENG、IDC_EDIT5XINGONG、IDC_EDIT6HUAGONG,并分別定義變量為m_zong、m_nansheng、m_nvsheng、m_xingong、m_huagong,在對話框的命令按鈕的Click事件中寫入相應的程序來實現顯示統計報表的功能,詳細代碼請查看附錄。4.4.6幫助功能詳細設計1、關于圖10關于設計思想:通過此模塊來介紹軟件的版本和設計者的一些基本信息。具體實現:1、在實現該功能模塊時,需要添加一個Windows對話框,改ID為IDD_DIALOG2,修改標題屬性為“關于”,在此對話框界面按CTRL+W創建一個新的類CGUANYU。調整對話框大小,在樣式屬性里面添加最小化功能,無須添加最大化功能,添加相應的靜態文本控件和按鈕控件,確定按鈕控件可在樣式屬性里面添加缺省按鈕功能以設置默認按鈕。并修改相關的屬性使其如圖10界面所示。2、在確定按鈕的Click事件中寫入代碼“this->EndDialog(1);”即可。4.4.7其他模塊功能設計由于時間的關系,其他模塊功能未能夠在指定的時間內完成,在此感到非常的抱歉,我會在接下來的時間努力來完成未能完成的模塊,以達到系統預期的完善的功能。4.5后期美化處理所有界面完成后,對用到的所有對話框進行細致的調整,并附加皮膚以及顯示權限和系統時間的功能。詳細代碼請查看附錄。4.6本章小結本章通過對第一章的需求分析得出的系統開發框架的研究,得出了本系統功能的具體實現辦法。通過對主要功能模塊的具體設計方法介紹,使系統的功能更加清晰,讓人更好的了解C++和其控件的使用方法。本章通過介紹系統的各個功能模塊的生成方法,基本上涵蓋了整個系統的功能,大部分功能模塊的設計類似,只是具體辦法稍有區別??梢哉f本章已經介紹了系統的詳細設計過程,給人清晰明了的功能介紹。
第5章系統測試5.1軟件測試方法的描述測試是為了發現程序中的錯誤而執行程序的過程;系統測試的目的,是以最少的測試資源去發現盡可能多的錯誤。測試任何系統都有兩種方法:如果已經知道了系統應該具有的功能,可以通過測試來檢驗是否每個功能都能正常使用;如果知道系統的內部工作過程,可以通過測試來檢驗系統內部動作是否按規格說明書的規定正常進行。前一種方法稱為黑盒測試,后一種方法稱為白盒測試[10]。對于軟件測試而言,黑盒測試方法把程序看作一個黑盒子,完全不考慮程序內部結構和處理過程。也就是說,黑盒測試是在程序接口進行的測試,它只檢查程序功能是否能按照規格說明書的規定正常使用,程序是否能夠很好地接收輸入的數據并且產生預期的正確輸出信息,程序在運行過程中是否能保持外部信息(如數據庫和文件等)的完整性。黑盒測試又可以稱做功能測試。白盒測試的方法與黑盒測試的方法相反,它的前提是能把程序看成是放在一個透明的盒子里,測試者可以完全了解程序的結構以及處理算法。這種方法是按程序內部的邏輯來進行程序測試,以此來檢測程序中所有的主要可執行通路能否按照預定的要求正確地工作。白盒測試也叫做結構測試。本系統的測試過程由三個步驟組成:單元測試、集成測試和系統測試。5.2單元測試單元測試通過檢測所設計軟件中的最小單元結構——模塊。一般,單元測試是和編碼同時進行的。將本軟件的功能模塊直接和主窗體相連,再編譯運行工程文件,通過編譯程序來檢查可能產生的語法錯誤,然后在編譯最終通過后,使用白盒測試的方法去檢查模塊接口、模塊內部的數據結構、邏輯路徑、出錯處理、邊界條件等。這樣能夠使程序員及時發現錯誤并改正錯誤,減少最后集中查找錯誤的工作量。5.3集成測試集成測試是測試和組裝軟件的系統化技術,由模塊組裝成程序時有兩種不同的方法。一種方法是先分別測試單個模塊,再把所有模塊按照設計要求結合在一起得到最終的程序,我們把這種方法叫做非漸增式法;另一種方法則是把下一個將要測試的模塊和已經測試通過的那些模塊結合在一起進行測試,測試完以后又把下一個要測試的模塊結合在一起測試。這種方法就叫做漸增式法。集成測試以黑盒測試為主,采用漸增式法,對上層模塊采用自頂向下測試,對某些具有輸入輸出功能或復雜算法的關鍵分支,采用自底向上測試,直到整個軟件裝配完畢。測試的通過標準為“主要功能已實現,已發現的重大錯誤已排除”。5.4測試報告測試報告是對測試結果進行收集和評價,軟件的可靠性所達到的定性指標可以從測試報告中明朗體現出來。5.4.1系統測試主要報告系統測試主要對用戶登錄、新生入住、宿舍查詢、空宿舍查詢進行了仔細的測試和詳細的測試記錄。表3用戶登錄測試報告項目名稱:ASPIRE測試項模塊名稱:用戶登錄測試人:卓政元測試時間:2014/5/19錯誤個數:0序號路徑輸入理想輸出實際結果1.如果輸入正確的用戶名、密碼和權限,應該顯示登錄成功。用戶名:a密碼:a進入項目主界面進入項目主界面2.如果輸入錯誤的用戶名或密碼、或者選錯權限,應該顯示登錄失敗。用戶名:a密碼:b用戶名或密碼錯誤或權限不夠用戶名或密碼錯誤或權限不夠3.如果不輸入任何數據,應該提示用戶名不能為空。用戶名:空密碼:空用戶名不能為空用戶名不能為空表4新生入住測試報告項目名稱:ASPIRE測試項模塊名稱:新生入住測試人:卓政元測試時間:2014/5/19錯誤個數:1序號路徑輸入理想輸出實際結果1.輸入正確的信息宿舍編號:7#107-3-2姓名:路人甲等等正確信息添加成功添加成功2.輸入錯誤的信息宿舍編號:111姓名:123等等錯誤信息宿舍編號錯誤、姓名錯誤添加成功3.如果不輸入任何數據宿舍編號:空姓名:空等全為空宿舍編號不能為空宿舍編號不能為空表5宿舍查詢測試報告項目名稱:ASPIRE測試項模塊名稱:宿舍查詢測試人:卓政元測試時間:2014/5/19錯誤個數:0序號路徑輸入理想輸出實際結果1.輸入正確的信息按宿舍編號:7#107-3-2按姓名:路人甲成功查詢成功查詢2.輸入錯誤的信息按宿舍編號:111按姓名:123查詢失敗查詢失敗3.如果不輸入任何數據按宿舍編號:空按姓名:空請輸入宿舍編號進行查詢請輸入宿舍編號進行查詢4.輸入正確,查詢方式選擇錯誤按姓名:路人甲查詢方式選擇按宿舍編號請輸入宿舍編號進行查詢請輸入宿舍編號進行查詢5.輸入正確,查詢方式錯誤按宿舍編號:7#107-3-2查詢方式選擇按姓名請輸入姓名進行查詢請輸入姓名進行查詢表6空宿舍查詢測試報告項目名稱:ASPIRE測試項模塊名稱:空宿舍查詢測試人:卓政元測試時間:2014/5/19錯誤個數:0序號路徑輸入理想輸出實際結果1.顯示空宿舍不需要輸入成功顯示所有空宿舍成功顯示所有空宿舍通過對以上測試報告的分析,可以看出新生入住模塊系統不能夠自動檢測輸入信息是否為有效信息,因此此處還有待改進。5.5本章小結本章通過對系統測試方法的介紹,確定了本系統采用集成測試的方案。通過選取不同的人進行不同權限的測試,給出了系統的基本功能測試實施辦法。通過測試,調試生成可執行的應用程序。本章基本上說明了具體的測試辦法,讓人們更明白系統測試對于系統在完成后期的重要性,充分體現了系統軟件開發的規范化。
第6章總結歷時一個半月的畢業設計現在已經接近尾聲了,回想起這一個半月的日子,感覺收獲頗多。我這次畢業設計是開發一個學生宿舍管理系統,它用到的開發工具是C++語言,SQLServer數據庫。在設計的開始階段為了盡快熟悉C++語言,我詳細翻閱有關該方面的資料,對書中的基本理論知識逐章逐節地分析,同時還用上機操作來加深理解。特別是對書中的一些典型實例,認真學習它的編程思想,吸取它的編程技巧,弄懂程序中每句話的含義。在對所要應用的技術有了一個基本認識之后,就開始構思自己的系統設計。認真聽老師對設計要求的講解,根據用戶需求分析將整個系統分為幾個模塊,每個模塊具體又要實現哪些功能,然后就逐個模塊去一一詳細設計,設計的過程中不時地翻閱資料,用一些巧妙的技術來優化程序。程序代碼完成之后,要進行運行調試,剛開始由于沒有調試經驗和方法效率很低,最后在老師和同學的幫助下,終于順利完成了,自己也從中學到了不少東西。總之,通過一個半月的畢業設計,讓我感受了軟件開發的整個過程。畢業設計不僅是對我在大學所學知識的一個綜合運用,也是一次增長知識和經驗的好機會,同時也使我學會了許多處理、解決問題的方法,大大提高了自己的動手能力,為即將走上工作崗位打下了良好的基礎。
參考文獻[1]謝海平等.基于網絡的獨立學院園區管理方案研究[J].青年與社會,2012,60(2),67-69[2]鄒麗.VisualC++開發技術及面向對象軟件工程案例分析[M].遼寧:遼寧科學技術出版社,2012-02[3]張興飛.網絡化區域氡濃度集群監控系統的研究與設計[D].西南科技大學,2011[4]李玉梅.《面向對象C++程序設計》課程教學改革的研究與實踐[J].中國科技信息,2009,63(15),35-37[5]張鴻,熊文龍.基于C/S模式的SQL數據庫應用技術[J].武漢理工大學學報(交通科學與工程版),2003,24(6),6-8[6]徐天晟,趙丹亞.SQL數據庫使用速查手冊[M].北京:人民郵電出版社,2009-02[7]王榕.基于WEB的宿舍管理系統開發與實現[J].華章,2011,61(10),56-61[8]關雪侖.高校圖書管理系統的分析與設計[D].北京郵電大學,2010-10[9]寧濤.C++程序設計[M].遼寧:遼寧科學技術出版社,2012-02[10]羅洪剛.貴州師范大學學生公寓管理系統設計與實現[D].廈門大學,2011附錄高校學生宿舍管理系統主要源程序連接數據庫源代碼://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")); //創建ADO數據庫連接 if(FAILED(::CoInitialize(NULL))) { AfxMessageBox("ADO初始化失敗?");//AfxMessageBoxAfx為主框架函數適用全局 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);//設置默認值 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();//設置焦點特別注意顏色不同的必須//對應好設置的ID return; } if(m_password.IsEmpty())//判斷密碼文本框是否為空 { MessageBox("密碼不能為空","錯誤",MB_ICONHAND); GetDlgItem(IDC_PASSWORD)->SetFocus(); return; } strQuery="select*fromSlogwhereSname='"+m_name+"'andSpassword='"+m_password+"'andSquanxian='"+str+"'"; //查看數據庫中的用戶名和用戶密碼這個必須一一//對應因此特別細心 //下面是從數據庫中取出密碼和用戶名不匹配清空。匹配則成功登陸。 theApp.ADOExecute(theApp.m_pRs,strQuery); intiCount=theApp.m_pRs->GetRecordCount(); if(iCount==0) { if(IDOK==(MessageBox("用戶或密碼錯誤或權限不夠,請重新輸入","錯誤",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("是否退出系統?","退出",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+"%%'";//數據庫表中的對應字段 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);//設置默認值 m_chaxunxianshi.InsertColumn(0,"宿舍編號"); m_chaxunxianshi.InsertColumn(1,"姓名"); m_chaxunxianshi.InsertColumn(2,"性別"); m_chaxunxianshi.InsertColumn(3,"學院"); m_chaxunxianshi.InsertColumn(4,"學號"); m_chaxunxianshi.InsertColumn(5,"聯系方式"); RECTrect;//設置一個矩形框 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,"統計"); 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,"系統當前時間"); 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();}統計源代碼://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);//查詢總人數 _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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 委托冷凍協議書范本
- 林地調解協議書模板
- 汽車代工協議書模板
- 平臺運營管理協議書
- 私企聘用員工協議書
- 投資合伙協議書樣本
- 醫院供貨誠信協議書
- 童裝租賃協議書范本
- 社區定點醫療協議書
- 委托養老培訓協議書
- 深入解析SAS(數據處理、分析優化與商業應用)
- CJJ 122-2017 游泳池給水排水工程技術規程
- 2024年咨詢工程師之工程項目組織與管理題庫含完整答案(歷年真題)
- (正式版)JBT 14682-2024 多關節機器人用伺服電動機技術規范
- 國內外化工發展情況及安全形勢
- 2018年高考數學全國1卷第12題出處及變式
- 設備維修費用月度分析報告
- 土豆的介紹課件
- 人民法院第一審行政判決書及范例
- 南京大學儀器分析習題集
- 《中國名山介紹模板》課件
評論
0/150
提交評論