軟件工程大作業及軟件工程復習范圍_第1頁
軟件工程大作業及軟件工程復習范圍_第2頁
軟件工程大作業及軟件工程復習范圍_第3頁
軟件工程大作業及軟件工程復習范圍_第4頁
軟件工程大作業及軟件工程復習范圍_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

軟件工程大作業設計題目:宿舍管理系統學院:計算機科學與信息工程學院學生姓名:劉振帥學號業班級:計算機科學與技術(嵌入式)13-12015年12月28日宿舍管理系統摘要:本系統根據安陽工學院宿舍管理的實際情況而設計,采用VisualC++為開發工具,數據庫采用的是最為普及的小型數據庫管理系統Access,能實現宿舍管理中的添加信息、修改信息、刪除信息、查詢信息等必不可少的功能。學生宿舍管理系統是應對學生宿舍管理的現代化、網絡化,逐步擺脫當前學生宿舍管理的人工管理方式,提高學生宿舍管理效率而開發的,它包括宿舍學生基本信息管理、樓道工人基本信息管理、宿舍樓基本信息管理、宿舍基本信息管理、宿舍事故基本信息管理、宿舍樓物品出入基本信息管理、宿舍樓保衛處基本信息管理、宿舍配備物品及處理管理等八大功能模塊,并提供了對各功能模塊的查詢和更新功能,且這兩種功能基本上是通過存儲過程來實現的,其中宿舍學生基本信息管理、宿舍基本信息管理是系統開發的重點。該系統開發由系統需求分析階段、概念設計階段、邏輯設計階段、數據庫實施階段、系統調試和測試階段、參考文獻、附錄等階段組成。關鍵字:C++;宿舍管理系統;Access;數據庫;MFC編程目錄TOC\o"1-3"\u1.引言 12.設計依據及框圖 22.1設計平臺 22.2設計思想 32.3設計框圖用戶界面 52.4數據庫表結構 53模塊功能及流程圖 53.1各模塊功能簡介 63.2主要流程圖 84.軟件調試分析 95.結語及參考文獻 91引言宿舍,是大學生在高校校園里一個重要的學習、生活、交往的空間環境。隨著高校辦學規模的擴大,學生人數不斷增多,高校學生宿舍管理信息量日益龐大,如果仍采用傳統的工作方式——紙媒介的賬本化工作模式,會存在獲取信息慢、查閱困難、準確性差等問題,很難適應高水平宿舍管理的需要。而采用計算機軟件來實現信息的管理能很好的解決傳統工作方式存在的問題。因此,我們設計開發了學生宿舍管理系統,旨在提高宿舍管理的效率和準確性,減少工作的盲目性,對后勤管理的現代化建設有一定的指導意義。2設計依據及框圖2.1設計平臺開發本系統的過程中所用到的主要軟件開發工具有:VisualC++6.0、Access2000、Photoshop。現將使用情況分別介紹如下:VisualC++6.0:MFC方式設計系統界面,采用OLEDB方式訪問數據庫。Access2000:采用Access設計本系統中的數據庫。

Photoshop:用于添加學生、刪除學生、查詢學生等等按鈕圖標的美工設計。2.2設計思想(1)應用原型方法進行開發。原型方法將系統分析、設計、實施三個階段融為一體,使操作者更便于使用該系統,由中南民族大學宿舍管理的實際情況出發,講宿舍信息分層設計,有宿舍類型到樓號,由樓號到宿舍號,在找到床鋪號,便于層次化管理。(2)選用靈活、方便、友好的用戶界面。采用操作簡單的樹型圖設計,便于查找學生信息,操作快捷方便;(3)數據庫采用的是比較流行的小型數據庫管理軟件Access,與C++程序的連接方式為OLEDB,該方式可以讓開發人員不直接向數據源發出指令,而是通過OLEDB接口與數據提供者進行交互,只需要對接口進行操作,這樣簡化了程序的設計。2.3設計框圖、用戶界面本系統“宿舍管理”的設計框圖如下:

主界面“查看學生詳細信息”界面“添加學生”界面“學生查詢”界面2.4數據庫表結構本系統采用Access作為數據庫,使用OLEDB訪問數據庫。根據系統功能與需求分析,只需要創建一個數據表House,該表包含學生姓名,性別,入學時間,學號,專業,宿舍類型,樓號,房間號,床鋪號,宿舍電話,備注等信息項,自然的形成了一個樹型結構。不設置主鍵(PRIMARYKEY),由程序根據地址唯一確定用戶信息的不二性。表結構如右所示:3各模塊功能及主要模塊的流程圖3.1各模塊功能簡介1、羅列學生信息在左邊的樹試圖中,通過鼠標或者鍵盤選擇宿舍類型、樓號或者房間號等樹項,右邊的列表視圖就會羅列出相應宿舍類型、樓或者房間中的所有學生的簡要信息。對這些羅列出來的學生可以對它們進行刪除或者查看詳細信息的操作。2、查看學生詳細信息選擇左邊樹視圖中的房間號,或者雙擊右邊列表視圖中的某一學生,右邊的視圖就會顯示該用戶的詳細信息(見“查看學生詳細信息”界面)。

3、添加學生單擊工具條的【添加學生】按鈕,或者選擇菜單【系統維護】->【添加學生】,彈出“添加學生”對話框,見“添加學生”界面。在該對話框中填寫完相應的信息,單擊【確定】按鈕完成添加。其中“學生姓名”和“宿舍地址”是必須填寫完整的,如果不完整單擊【確定】按鈕后系統會提示用戶。4、刪除學生當程序的輸入焦點在左邊的樹視圖時,選擇要刪除的項,單擊工具條的【刪除學生】按鈕,或者選擇菜單【系統維護】->【刪除學生】,彈出詢問用戶確認刪除操作的對話框,見“刪除學生”界面。如果刪除的是宿舍類型,則該宿舍類型中的所有學生都被刪除;如果刪除是樓號,則該樓中的所有學生被刪除,如果刪除的是房間號,則該房間中的所有學生都被刪除;如果刪除的是學生,則該學生信息被刪除。當主窗口的右邊是學生的列表視圖時,并且輸入焦點在其中,選擇其中要刪除的學生(可以選擇多個),單擊工具條的【刪除學生】按鈕,或者選擇菜單【系統維護】->【刪除學生】,彈出詢問用戶確認刪除操作的對話框,單擊【是】按鈕刪除選擇的學生信息。5、學生查詢單擊工具條中的【學生查詢】按鈕,或者選擇菜單【系統維護】->【學生查詢】,彈出“查詢學生”對話框,見“學生查詢”界面。在該對話框中填寫完查詢條件,單擊【確定】按鈕。如果有符合條件的學生,在右邊的學生列表中就會全部羅列出來,可以對這些學生進行刪除或者查看詳細信息的操作。3.2主要流程圖本軟件系統對學生信息的管理主要流程圖:在樹視圖中羅列學生信息的程序流程,如圖所示:查詢和羅列的程序流程,如圖所示:填充樹視圖的程序流程查詢和羅列的程序流程增加學生的程序流程,如下圖所示:4軟件調試分析本軟件是基于Windows的編程開發,所以,軟件調試必須在Windows環境下進行。調試前須做好以下準備工作:(1)需要文件MFC42.DLL、MSVCRT.DLL,如果沒有,則安裝VisualC++6.0環境;(2)需要安裝Access2000的OLEDB驅動,如果沒有,可以安裝Access2000以上版本;(3)需要將StuDormMS.mdb數據庫文件與可執行文件StuDormMS.exe放在同一目錄下,才能運行成功。配置好之后,在VisualC++6.0環境下進行軟件的調試。調試分析如下:

(1)首先進行數據庫的導入,加入ATL產生的模板類,生成包含數據庫的House.H[見附]頭文件,該頭文件是與數據庫的接口,經過測試,數據庫鏈接成功;

(2)實現界面框架,使用類CSplitterWnd切分視圖和動態切換視圖的類型,通過包含該類的單文件調試發現無錯誤后,整體系統運行能成功切換試圖。

(3)系統框架的左側為樹視圖,采用CLeftTreeView類來實現;右側學生信息羅列采用類CUsersListView來實現,成功調試后能正常顯示信息。(4)“增加學生”模塊,單模塊調試通過后,需要在整理系統編寫完后,再進行操作測試,添加一條記錄后,發現在數據庫中有保存該記錄,如果錯誤輸入,觀察是否能正常提示信息。否則修改程序再進行調試。(5)“查詢學生”模塊,該模塊可以實現單項查詢和組合查詢,單項查詢調試通過后,編寫組合查詢的代碼,再進行調試,看是否能滿足要求,并且能正常提示非法查詢請求。(6)“刪除學生”模塊,可以進行不同層次的刪除操作,例如刪除宿舍將會刪除該宿舍的所有成員,如果只刪除某一學生,不會影響到其他成員。本模塊測試通過。經過調試,以上各部分運行正常,能實現預期的功能。 5結語5.1結論與討論結論:本文介紹的宿舍管理系統具有界面友好、操作簡單、實用性強等特點,并已開發完畢,使用效果良好,初步取得了以下效果:(1)操作簡單,實用性強,能夠快速地提供住宿學生的各種基本信息供管理者參考和使用,大大提高了工作效率;(2)瀏覽、查詢、添加實現數據庫管理,紙質文件的流轉被電子郵件代替,節約了辦公經費;(3)實現了對數據的智能處理,為領導決策起到了一定的輔助作用;(4)使宿舍管理工作更加科學化和規范化。討論:本文介紹的實現方法適合與小型的數據管理,而且功能比較簡單,在一定程度上能解決實際中宿舍管理中的問題。但也存在一些不完善的地方,如需要保存更多的信息,實現更多的功能,需要采用較大型的數據庫管理系統,而且未來的管理以網絡化為趨勢,開發一套可以聯網管理的軟件系統能給宿舍管理工作帶來更大的方便。參考文獻求是科技.VisualC++6.0數據庫開發技術與工程實踐.北京:人民郵電出版社,2004鄭莉,董淵,張瑞豐.C++語言程序設計.北京:清華大學出版社,2003(美)PaulJ.Fortier等著.數據庫技術大全.林瑤等譯.北京:電子工業出版社,1999附錄各功能函數的核心代碼文件列表如下:文件名稱功能說明AddUserDlg.cpp添加學生信息LeftTreeView.cpp顯示樹視圖,完成刪除操作UsersListView.cpp實現單項、組合查詢功能UserinfoView.cpp學生詳細信息顯示由于篇幅限制,現只列舉部分代碼,完整源代碼見電子文檔。BeganingofAddUserDlg.cppvoidCAddUserDlg::OnOK(){ //判斷輸入信息的合法性 UpdateData(TRUE); CEdit*p; if(m_strStudentname=="") { AfxMessageBox("請填學生姓名"); p=(CEdit*)GetDlgItem(IDC_EDIT_STUDENTNAME); p->SetFocus(); return; } if(m_strStudentName=="") { AfxMessageBox("請填宿舍類型"); p=(CEdit*)GetDlgItem(IDC_EDIT_ROOMTYPE); p->SetFocus(); return; } if(m_nBuildingNum==0) { AfxMessageBox("樓號不能為零"); p=(CEdit*)GetDlgItem(IDC_EDIT_BUILDINGNUM); p->SetFocus(); return; } if(m_nRoomNum==0) { AfxMessageBox("房間號不能為零"); p=(CEdit*)GetDlgItem(IDC_EDIT_ROOMNUM); p->SetFocus(); return; } if(m_nBedNum==0) { AfxMessageBox("床鋪號不能為零"); p=(CEdit*)GetDlgItem(IDC_EDIT_BED); p->SetFocus(); return; } CMainFrame*pFrame=(CMainFrame*)AfxGetApp()->m_pMainWnd; CInhabitantsDoc*pDoc=(CInhabitantsDoc*)pFrame->GetActiveDocument(); //讓用戶確認操作 if(this->MessageBox("你真的要添加這條記錄?", "安陽工學院宿舍管理系統",MB_YESNO)==IDNO) { CDialog::OnCancel(); return; } //增加學生到數據庫中 USERuser; user.strRoomtype=m_strStudentName; user.nBuildingnum=m_nBuildingNum; user.nRoomnum=m_nRoomNum; user.nBednum=m_nBedNum; user.strName=m_strStudentname; user.strHouseTel=m_strHomeTel; user.strSex=m_strSex; user.strNationNal=m_strNationNal; user.strMajor=m_strMajor; user.strId=m_strId; user.strRemarks=m_strRemarks; switch(pDoc->AddUser(user)) { case0: { //已經存在該學生了 CStringstr; str.Format("%s%d號樓%d號房間%d號床鋪已有學生入住!", m_strStudentName,m_nBuildingNum,m_nRoomNum,m_nBedNum); AfxMessageBox(str); CEdit*p=(CEdit*)GetDlgItem(IDC_EDIT_BED); p->SetFocus(); return; break; } case1: { //增加成功后刷新左邊的樹視圖 pFrame->m_pLeftView->AddUserToTree(m_strStudentName, m_nBuildingNum,m_nRoomNum,m_nBedNum); break; } default: return; break; } CDialog::OnOK();}ENDINGofAddUserDlg.cppBeganingofUsersListView.cppvoidCUsersListView::ShowUsers(CStringstrSql){ CListCtrl*p=&GetListCtrl(); //清空列表 p->DeleteAllItems(); if(strSql=="") return; CInhabitantsDoc*pDoc=(CInhabitantsDoc*)GetDocument(); CCommand<CAccessor<CHouseAccessor>>dbHouse; long*pCount=newlong; //按照strSql查詢符合條件的學生 if(dbHouse.Open(pDoc->m_dbHouse.m_session,strSql,NULL,pCount)!=S_OK) { AfxMessageBox("error"); deletepCount; return; } intiItem=0; LV_ITEMlvitem; intiActualItem=0; //將查詢得到的學生都逐個加入列表中 if(dbHouse.MoveFirst()==S_OK) { do { for(intiSubItem=0;iSubItem<5;iSubItem++) { lvitem.mask=LVIF_TEXT|(iSubItem==0?LVIF_IMAGE:0); lvitem.iItem=(iSubItem==0)?iItem:iActualItem; lvitem.iSubItem=iSubItem; lvitem.iImage=(iItem%2)?0:2; CStringstr=""; switch(iSubItem) { case0://學生 str=dbHouse.m_studentname; lvitem.pszText=(LPTSTR)(LPCTSTR)str; break; case1://宿舍類型 { str=dbHouse.m_roomtype; lvitem.pszText=(LPTSTR)(LPCTSTR)str; break; } case2://樓號 { str.Format("%d",dbHouse.m_buildingnum); lvitem.pszText=(LPTSTR)(LPCTSTR)str; break; } case3://房間號 { str.Format("%d",dbHouse.m_roomnum); lvitem.pszText=(LPTSTR)(LPCTSTR)str; break; } case4://床鋪號 { str.Format("%d",dbHouse.m_bednum); lvitem.pszText=(LPTSTR)(LPCTSTR)str; } } if(iSubItem==0) iActualItem=GetListCtrl().InsertItem(&lvitem); else GetListCtrl().SetItem(&lvitem); } iItem++; } while(dbHouse.MoveNext()==S_OK); } dbHouse.Close();}ENDINGofUsersListView.cpp.cppBeganingofUserinfoView.cpp.cpp//顯示住址為strStudentName宿舍類型nBuildingNum號樓nRoomNum房間號nBedNum床鋪的住戶的詳細信息voidCUserinfoView::UpdateUserInfo(CStringstrStudentName,intnBuildingNum,intnRoomNum,intnBedNum){ //查詢該學生 CStringstrSql; strSql.Format("select*fromhousewhereroomtype='%s'andbuildingnum=%dandroomnum=%dandbednum=%d", strStudentName,nBuildingNum,nRoomNum,nBedNum); CInhabitantsDoc*pDoc=(CInhabitantsDoc*)GetDocument(); CCommand<CAccessor<CHouseAccessor>>dbHouse; long*pCount=newlong; if(dbHouse.Open(pDoc->m_dbHouse.m_session,strSql,NULL,pCount)!=S_OK) { AfxMessageBox("error"); deletepCount; return; } //顯示信息 if(dbHouse.MoveFirst()==S_OK) { m_strStudentname=dbHouse.m_studentname; m_strRoomtype=dbHouse.m_roomtype; m_nBuildingnum=dbHouse.m_buildingnum; m_nRoomnum=dbHouse.m_roomnum; m_nBednum=dbHouse.m_bednum; m_strHouseTel=dbHouse.m_housetel; m_strSex=dbHouse.m_sex; m_strNationNal=dbHouse.m_national; m_strMajor=dbHouse.m_major; m_strId=dbHouse.m_id; m_strRemarks=dbHouse.m_remarks; } dbHouse.Close(); UpdateData(FALSE);}voidCUserinfoView::OnChangeEditRemarks(){ //TODO:IfthisisaRICHEDITcontrol,thecontrolwillnot //sendthisnotificationunlessyouoverridetheCFormView::OnInitDialog() //functionandcallCRichEditCtrl().SetEventMask() //withtheENM_CHANGEflagORedintothemask. //TODO:Addyourcontrolnotificationhandlercodehere }ENDINGofUserinfoView.cpp.cpp《軟件工程》復習范圍注意事項:每個學生必須寫上本人的學號、任課教師姓名、姓名、班級,另外所有的答案必須全部寫在答卷紙上請不要寫的試卷上,試題及答卷一同交上。第一部分: 選擇題(請選擇最合適的一個答案)。(1*15=15)1.從功能角度來定義,軟件是D。為人類提供普適計算的邏輯產品為人類提供邏輯計算的邏輯產品為人類提供數值計算的邏輯產品為人類提供計算服務的邏輯產品2.關于軟件危機描述不正確的是D。軟件危機是軟件開發和維護過程中所遇到的一系列嚴重問題軟件危機的表現是開發成本高、軟件質量不高、軟件交付經常延期軟件工程是為了解決軟件危機而產生的軟件工程的出現徹底解決了軟件危機3.下列屬于瀑布型方法缺點的是A。a)將軟件過程進行僵化劃分、缺少靈活性b)強調了文檔的作用,保護了軟件開發商的利益c)促進了軟件開發的工程化d)加強了軟件開發的管理過程4.下面關于軟件描述不對的是A。軟件不同于硬件,不存在磨損,可以永久使用,不需要升級也不存在報廢軟件是客觀世界中問題空間與解空間的具體描述,是追求表達能力強、更符合人類思維模式的計算模型軟件是具有構造性和演化性的邏輯產品軟件是由程序、構造數據和相關文檔組成的5.關于軟件工程描述不正確的是D。軟件工程是為了經濟地獲得能夠在實際機器上高效運行的可靠軟件而建立和使用的一系列好的工程化原則軟件工程是指導計算機軟件開發和維護的工程學科軟件工程是指導計算機軟件構造和演化的工程學科軟件工程是從方法和工具兩個方面來研究如何提高軟件生產效率和質量,降低生產成本6.下列關于瀑布型方法描述不正確的是D。a)瀑布型方法是一種軟件過程的固化,也稱為軟件生命周期模型b)在眾多的軟件開發方法中,瀑布型方法是最著名和最有影響力的模型,其他模型往往是對它的補充或者改進c)瀑布型方法是一種文檔驅動的模型,每個階段結束之后形成文檔,待文檔經過雙方簽字確認后,再進入下一個階段的活動d)瀑布型方法是一種柔性靈活的軟件開發方法第二部分: 判斷題(對的打√,錯的打×)(1*15=15)客戶通常難以清楚地描述需求,在沒有實際系統呈現在客戶面前的時候,客戶無法表達細致的需求。瀑布模型的階段是軟件工程早期的重要發展成果,高校以瀑布模型來組織教材,企業以瀑布型模型來設置部門和崗位,使得軟件工程同其他傳統工程一樣得到發展和認可。快速原型方法可以誘導用戶的需求和驗證用戶的需求。軟件的模塊化就是盡可能地將模塊設計小。X人機界面的設計質量對整個軟件的競爭力影響不大。X第三部分: 填空題:(1*15=15)1.根據我國國家標準《計算機軟件開發規范》(GB8566-8),軟件過程包含:軟件定義、軟件開發、軟件運行維護2.軟件維護可具體分為改正性維護、適應性維護、完善性維護、預防性維護這幾項活動。3.只用3種基本的控制結構就能實現任何單入口單出口的程序,這三種結構是順序、選擇、循環。4.為屏蔽計算機硬件之間的異構性發展了操作系統,為屏蔽之間的異構性出現了支撐軟件和中間件,為屏蔽不同中間件之間的異構性發展了SOA。5.由于軟件項目具有一定程度的不確定性,天生具有很高的風險。因此軟件項目必須進行風險管理具體包括:風險識別、風險分析、風險規劃、風險監控。模塊間的耦合可分為:數據耦合、控制耦合、特征耦合、公共環境耦合、內容耦合軟件項目管理是一個龐大的系統工程,它是為了使軟件項目能夠按照預定的成本、進度、質量順利完成,軟件項目管理的主要內容包括:人員管理、進度管理、成本管理、質量管理、風險管理第四部分 簡答題(5*4=20)為什么要進行軟件需求分析?請敘述軟件需求分析的主要過程。 軟件需求分析在軟件開發過程中具有舉足輕重的地位,它是開發出正確的高質量的軟件系統的保證。有數據表明,更正需求分析階段的一個錯誤所花費的是工作量是更正測試階段的一個錯誤的一百倍。 軟件需求分析的主要過程為獲取用戶需求、分析用戶需求、編寫需求文檔、需求評審衡量模塊獨立性的兩個標準是什么?它們各表示什么含義?這兩個標準分別是耦合性和內聚性。(1)耦合性,也稱塊間聯系,指軟件系統結構

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論