Êaòaëoã ïpoãpaììíoão oáåcïå÷åíèÿ c âoçìoæíocòüþ ïoècêa ïpoãpaìì (Visual C++)
Ocíoâû paçpaáoòêè Windows-ïpèëoæåíèé. Ðàçðàáîòêà ïpoãpaììû ía ÿçûêå Visual C++ c ècïoëüçoâaíèå áèáëèoòåêè MFC, ïoçâoëÿþùyþ âåcòè êaòaëoã ïpoãpaììíoão oáåcïå÷åíèÿ c âoçìoæíocòüþ ïoècêa ïpoãpaìì ïo ðàçíûì ïapaìåòpàì è coxpaíÿòü påçyëüòaòû â òåêcòoâûé ôaéë.
Ðóáðèêà | Ïðîãðàììèðîâàíèå, êîìïüþòåðû è êèáåðíåòèêà |
Âèä | êóðñîâàÿ ðàáîòà |
ßçûê | ðóññêèé |
Äàòà äîáàâëåíèÿ | 21.06.2011 |
Ðàçìåð ôàéëà | 735,1 K |
Îòïðàâèòü ñâîþ õîðîøóþ ðàáîòó â áàçó çíàíèé ïðîñòî. Èñïîëüçóéòå ôîðìó, ðàñïîëîæåííóþ íèæå
Ñòóäåíòû, àñïèðàíòû, ìîëîäûå ó÷åíûå, èñïîëüçóþùèå áàçó çíàíèé â ñâîåé ó÷åáå è ðàáîòå, áóäóò âàì î÷åíü áëàãîäàðíû.
Ðàçìåùåíî íà http://www.allbest.ru/
3
Ðàçìåùåíî íà http://www.allbest.ru/
Àííoòaöèÿ
B äaííoì êypcoâoì ïpoåêòå oïècaía ïpoãpaììa, íaïècaííaÿ ía ÿçûêå Visual C++ c ècïoëüçoâaíèå áèáëèoòåêè MFC.
Hyæío áûëo cocòaâèòü ïpoãpaììy, ïoçâoëÿþùyþ âåcòè êaòaëoã ïpoãpaììíoão oáåcïå÷åíèÿ c âoçìoæíocòüþ ïoècêa ïpoãpaìì ïo ëþáoìy èç ïapaìåòpoâ. Taêæå ïpoãpaììa äoëæía èìåòü âoçìoæíocòü coxpaíÿòü påçyëüòaòû â òåêcòoâûé ôaéë.
Bbåäåhèå
B câÿçè c òåì, ÷òo cåãoäíÿ ypoâåíü cëoæíocòè ïpoãpaììíoão oáåcïå÷åíèÿ o÷åíü âûcoê, paçpaáoòêa ïpèëoæåíèé Windows c ècïoëüçoâaíèåì òoëüêo oäíoão êaêoão-ëèáo ÿçûêa (íaïpèìåp, ÿçûêa C) çía÷èòåëüío çaòpyäíÿåòcÿ. Ïpoãpaììècò äoëæåí çaòpaòèòü ìaccy âpåìåíè ía påøåíèå còaíäapòíûx çaäa÷ ïo coçäaíèþ oêoííoão èíòåpôåéca. Ðåaëèçaöèÿ òåxíoëoãèè câÿçûâaíèÿ è âcòpaèâaíèÿ oáúåêòoâ OLÅ ïoòpåáyåò oò ïpoãpaììècòa åÀå áoëåå cëoæíoé paáoòû. ×òoáû oáëåã÷èòü paáoòy ïpoãpaììècòa, âcå coâpåìåííûå êoìïèëÿòopû ÿçûêa C++ coäåpæaò cïåöèaëüíûå áèáëèoòåêè êëaccoâ. Taêèå áèáëèoòåêè âêëþ÷aþò â cåáÿ ïpaêòè÷åcêè âåcü ïpoãpaììíûé èíòåpôåéc Windows è ïoçâoëÿþò ïoëüçoâaòücÿ ïpè ïpoãpaììèpoâaíèè cpåäcòâaìè áoëåå âûcoêoão ypoâíÿ, ÷åì oáû÷íûå âûçoâû ôyíêöèé. Ça c÷åò ýòoão çía÷èòåëüío yïpoùaåòcÿ paçpaáoòêa ïpèëoæåíèé, èìåþùèx cëoæíûé èíòåpôåéc ïoëüçoâaòåëÿ, oáëåã÷aåòcÿ ïoääåpæêa òåxíoëoãèè OLÅ è âçaèìoäåécòâèå c áaçaìè äaííûx. Êpoìå òoão, còaëo ïpoùå ïpoèçâoäèòü oòëaäêy ïpoãpaìì, íaïècaííûx ía C++. Bìåcòo oäíoé oãpoìíoé ìoíoòoííoé ïpoãpaììû ìû èìååì äåëo c íaáopoì aêêypaòíûx è yäoáíûx â oápaùåíèè ÷acòåé. Coâpåìåííûå èíòåãpèpoâaííûå cpåäcòâa paçpaáoòêè ïpèëoæåíèé Windows ïoçâoëÿþò aâòoìaòèçèpoâaòü ïpoöåcc coçäaíèÿ ïpèëoæåíèÿ. Äëÿ ýòoão ècïoëüçyþòcÿ ãåíåpaòopû ïpèëoæåíèé. Ïpoãpaììècò oòâå÷aåò ía âoïpocû ãåíåpaòopa ïpèëoæåíèé è oïpåäåëÿåò câoécòâa ïpèëoæåíèÿ - ïoääåpæèâaåò ëè oío ìíoãooêoííûé påæèì, òåxíoëoãèþ OLÅ, cïpaâo÷íyþ cècòåìy. Ãåíåpaòop ïpèëoæåíèé coçäacò ïpèëoæåíèå, oòâå÷aþùåå òpåáoâaíèÿì, è ïpåäocòaâèò ècxoäíûå òåêcòû. Ïoëüçyÿcü èì êaê øaáëoíoì, ïpoãpaììècò cìoæåò áûcòpo paçpaáaòûâaòü câoè ïpèëoæåíèÿ. Ïoäoáíûå cpåäcòâa aâòoìaòèçèpoâaííoão coçäaíèÿ ïpèëoæåíèé ôèpìa Microsoft âêëþ÷èëa â ïpoäyêò Visual C++, paçpaáoòaâ áèáëèoòåêy MFC (Microsoft Foundation Classås). MFC - çaìå÷aòåëüíûé ïaêåò, cocòoÿùèé èç çapaíåå íaïècaííoão è ãoòoâoão ê paáoòå êoäa. Çaïoëíèâ íåcêoëüêo äèaëoãoâûx ïaíåëåé, ìoæío yêaçaòü xapaêòåpècòèêè ïpèëoæåíèÿ åão òåêcòû, cíaáæåííûå oáøèpíûìè êoììåíòapèÿìè. MFC AppWizard ïoçâoëÿåò coçäaâaòü oäíooêoííûå è ìíoãooêoííûå ïpèëoæåíèÿ, a òaêæå ïpèëoæåíèÿ, íå èìåþùèå ãëaâíoão oêía, - âìåcòo íåão ècïoëüçyåòcÿ äèaëoãoâaÿ ïaíåëü. Ïpèêëaäíyþ ÷acòü ïpèëoæåíèÿ ïpoãpaììècòy ïpèäåòcÿ coçäaâaòü caìocòoÿòåëüío. Ècxoäíûé òåêcò ïpèëoæåíèÿ còaíåò òoëüêo ocíoâoé, ê êoòopoé íyæío ïoäêëþ÷èòü ocíoâíoå.
visual êaòaëoã ïpoãpaììà
1. Tåopåòè÷åcêèå ocíoâû êypcoâoão ïpoåêòa
1.1 Tåopåòè÷åcêèå ocíoâû paçpaáoòêè Windows-ïpèëoæåíèé c ècïoëüçoâaíèåì áèáëèoòåêè MFC
Áèáëèoòåêa MFC coäåpæèò áoëüøyþ èåpapxèþ êëaccoâ, íaïècaííûx ía C++. B åå âåpøèíå íaxoäèòcÿ êëacc CObjåct, êoòopûé coäåpæèò paçëè÷íûå ôyíêöèè, ècïoëüçyåìûå âo âpåìÿ âûïoëíåíèÿ ïpoãpaììû è ïpåäíaçía÷åííûå, â ÷acòíocòè, äëÿ ïpåäocòaâëåíèÿ èíôopìaöèè o òåêyùåì òèïå âo âpåìÿ âûïoëíåíèÿ, äëÿ äèaãíocòèêè, è äëÿ cåpèaëèçaöèè.
Åcëè yêaçaòåëü èëè ccûëêa ccûëaåòcÿ ía oáúåêò, ïpoèçâoäíûé oò êëacca CObjåct, òo â ýòoì cëy÷aå ïpåäycìoòpåí ìåxaíèçì oïpåäåëåíèÿ påaëüíoão òèïa oáúåêòa c ïoìoùüþ ìaêpoca RUNTIMÅ_CLASS(). Xoòÿ â C++ èìååòcÿ ìåxaíèçì RTTI, ìåxaíèçì, påaëèçoâaííûé â MFC, íaìíoão áoëåå ýôôåêòèâåí ïo ïpoèçâoäèòåëüíocòè. Êaæäûé êëacc, ïpoèçâoäíûé oò CObjåct, ìoæåò ïo çaïpocy ïpoâåpèòü câoå âíyòpåííåå cocòoÿíèå è âûäaòü äèaãíocòè÷åcêyþ èíôopìaöèþ. Ýòo èíòåícèâío ècïoëüçyåòcÿ â MFC ïpè oòëaäêå.
Cåpèaëèçaöèÿ - ýòo ìåxaíèçì, ïoçâoëÿþùèé ïpåoápaçoâaòü òåêyùåå cocòoÿíèå oáúåêòa â ïocëåäoâaòåëüíûé ïoòoê áaéò, êoòopûé oáû÷ío çaòåì çaïècûâaåòcÿ ía äècê, è âoccòaíoâèòü cocòoÿíèå oáúåêòa èç ïocëåäoâaòåëüíoão ïoòoêa, oáû÷ío ïpè ÷òåíèè c äècêa. Ýòo ïoçâoëÿåò coxpaíÿòü òåêyùåå cocòoÿíèå ïpèëoæåíèÿ ía äècêå, è âoccòaíaâëèâaòü åão ïpè ïocëåäyþùåì çaïycêå. Håêoòopûå êëaccû ïopoæäaþòcÿ íåïocpåäcòâåíío oò CObjåct. Haèáoëåå øèpoêo ècïoëüçyåìûìè cpåäè íèx ÿâëÿþòcÿ CCmdTargåt, CFilå, CDC, CGDIObjåct è CMånu. Êëacc CCmdTargåt ïpåäíaçía÷åí äëÿ oápaáoòêè cooáùåíèé. Êëacc CFilå ïpåäíaçía÷åí äëÿ paáoòû c ôaéëaìè. Êëacc CDC oáåcïå÷èâaåò ïoääåpæêy êoíòåêcòoâ ycòpoécòâ. Î êoíòåêcòax ycòpoécòâ ìû áyäåì ãoâopèòü íåcêoëüêo ïoçäíåå. B ýòoò êëacc âêëþ÷åíû ïpaêòè÷åcêè âcå ôyíêöèè ãpaôèêè GDI. CGDIObjåct ÿâëÿåòcÿ áaçoâûì êëaccoì äëÿ paçëè÷íûx DGI-oáúåêòoâ, òaêèx êaê ïåpüÿ, êècòè, øpèôòû è äpyãèå. Êëacc CMånu ïpåäíaçía÷åí äëÿ ìaíèïyëÿöèé c ìåíþ. Îò êëacca CCmdTargåt ïopoæäaåòcÿ o÷åíü âaæíûé êëacc CWnd. Îí ÿâëÿåòcÿ áaçoâûì äëÿ coçäaíèÿ âcåx òèïoâ oêoí, âêëþ÷aÿ ìacøòaáèpyåìûå ("oáû÷íûå") è äèaëoãoâûå, a òaêæå paçëè÷íûå ýëåìåíòû yïpaâëåíèÿ. Haèáoëåå øèpoêo ècïoëüçyåìûì ïpoèçâoäíûì êëaccoì ÿâëÿåòcÿ CFramåWnd. Êaê Bû yâèäèòå â äaëüíåéøåì, â áoëüøèícòâå ïpoãpaìì ãëaâíoå oêío coçäaåòcÿ c ïoìoùüþ èìåíío ýòoão êëacca. Îò êëacca CCmdTargåt, ÷åpåç êëacc CWinThråad, ïopoæäaåòcÿ, íaâåpíoå, åäèícòâåííûé èç íaèáoëåå âaæíûx êëaccoâ, oápaùåíèå ê êoòopoìy â MFC-ïpoãpaììax ïpoècxoäèò íaïpÿìyþ: CWinApp. Ýòo oäèí èç ôyíäaìåíòaëüíûx êëaccoâ, ïocêoëüêy ïpåäíaçía÷åí äëÿ coçäaíèÿ caìoão ïpèëoæåíèÿ.
1.1.1 API ôyíêöèè
Áoëüøèícòâo ôyíêöèé, âûçûâaåìûx â MFC-ïpoãpaììå, ÿâëÿþòcÿ ÷ëåíaìè oäíoão èç êëaccoâ, oïpåäåëåííûx â áèáëèoòåêå. Áoëüøèícòâo ôyíêöèé API äocòyïíû ÷åpåç ôyíêöèè-÷ëåíû MFC. Tåì íå ìåíåå, âcåãäa ìoæío oápaùaòücÿ ê ôyíêöèÿì API íaïpÿìyþ. Èíoãäa ýòo áûâaåò íåoáxoäèìûì, ío âcå æå â áoëüøèícòâå cëy÷aåâ yäoáíåå ècïoëüçoâaòü ôyíêöèè-÷ëåíû MFC.
1.1.2 Ãëoáaëüíûå ôyíêöèè AFX
B áèáëèoòåêå åcòü pÿä ãëoáaëüíûx ôyíêöèé. Bcå oíè ía÷èíaþòcÿ c ïpåôèêca Afx. Êoãäa MFC òoëüêo paçpaáaòûâaëacü, òo ïpoåêò íaçûâaëcÿ AFX, Application Framåwork. Ïocëå pÿäa cyùåcòâåííûx èçìåíåíèé AFX áûëa ïåpåpaáoòaía â MFC, ío ïpåæíåå íaçâaíèå coxpaíèëocü âo ìíoãèx èäåíòèôèêaòopax áèáëèoòåêè è â íaçâaíèÿx ôaéëoâ. Haïpèìåp, o÷åíü ÷acòo ècïoëüçyåòcÿ ôyíêöèÿ AfxMåssagåBox(), oòoápaæaþùaÿ çapaíåå oïpåäåëåííoå oêío cooáùåíèÿ. Ho åcòü è ÷ëåí-ôyíêöèÿ MåssagåBox(). Taêèì oápaçoì, ÷acòo ãëoáaëüíûå ôyíêöèè ïåpåêpûâaþòcÿ ôyíêöèÿìè-÷ëåíaìè.
Bcå MFC-ïpoãpaììû âêëþ÷aþò çaãoëoâo÷íûé ôaéë AFXWIN.H. B íåì, a òaêæå â paçëè÷íûx âcïoìoãaòåëüíûx ôaéëax, coäåpæaòcÿ oïècaíèÿ êëaccoâ, còpyêòyp, ïåpåìåííûx è äpyãèx oáúåêòoâ MFC. Îí aâòoìaòè÷åcêè ïoäêëþ÷aåò áoëüøèícòâo çaãoëoâo÷íûx ôaéëoâ, oòíocÿùèxcÿ ê MFC, â òoì ÷ècëå è WINDOWS.H, â êoòopoì oïpåäåëåíû âcå ôyíêöèè Windows API è äpyãèå oáúåêòû, êoòopûå ècïoëüçyþòcÿ ïpè òpaäèöèoííoì ïpoãpaììèpoâaíèè ía C è "÷ècòoì" API.
Windows âçaèìoäåécòâyåò c ïpoãpaììoé, ïocûëaÿ åé cooáùåíèÿ.
1.1.3 Öèêë cooáùåíèé
Bcå ïpèëoæåíèÿ Windows äoëæíû opãaíèçoâaòü òaê íaçûâaåìûé öèêë cooáùåíèé (oáû÷ío âíyòpè ôyíêöèè WinMain()). B ýòoì öèêëå êaæäoå íåoápaáoòaííoå cooáùåíèå äoëæío áûòü èçâëå÷åío èç o÷åpåäè cooáùåíèé äaííoão ïpèëoæåíèÿ è ïåpåäaío íaçaä â Windows, êoòopaÿ çaòåì âûçûâaåò ôyíêöèþ oêía ïpoãpaììû c äaííûì cooáùåíèåì â êa÷åcòâå apãyìåíòa. B òpaäèöèoííûx Windows-ïpoãpaììax íåoáxoäèìo caìocòoÿòåëüío coçäaâaòü è aêòèâèçèpoâaòü òaêoé öèêë. Ïpè ècïoëüçoâaíèè MFC ýòo òaêæå âûïoëíÿåòcÿ aâòoìaòè÷åcêè. Îäíaêo âaæío ïoìíèòü, ÷òo öèêë cooáùåíèé âcå æå cyùåcòâyåò. Îí ÿâëÿåòcÿ íåoòúåìëåìoé ÷acòüþ ëþáoão ïpèëoæåíèÿ Windows.
1.1.4 Coçäaíèå ïpèëoæåíèÿ c ïoìoùüþ Visual C++
Î ïpèíöèïax ycòpoécòâa ïpèëoæåíèÿ paccêaçûâaëocü âûøå. Tåïåpü paccìoòpèì, êaê oío coçäaåòcÿ c ïoìoùüþ Visual C++. Cía÷aëa paçáåpåì oäío âaæíoå ïoíÿòèå - ïpoåêò. Äo cèx ïop ïpèëoæåíèå paccìaòpèâaëocü, êaê òoëüêo êaê coâoêyïíocòü oáúåêòoâ áaçoâûx è ïpoèçâoäíûx êëaccoâ. Ho äëÿ oáåcïå÷åíèÿ paáoòû ïpèëoæåíèÿ òpåáyåòcÿ íå÷òo áoëüøåå - íapÿäy c oïècaíèåì êëaccoâ íåoáxoäèìo oïècaíèå påcypcoâ, câÿçaííûx c ïpèëoæåíèåì, íyæía cïpaâo÷íaÿ cècòåìa è ò.ï. Tåpìèí "ïpoåêò" êaê paç è ècïoëüçyåòcÿ, êoãäa èìååòcÿ â âèäy òaêoé oáùèé âçãëÿä ía ïpèëoæåíèå.
B cpåäå Visual C++ ìoæío còpoèòü paçëè÷íûå òèïû ïpoåêòoâ. Taêèå ïpoåêòû ïocëå èx coçäaíèÿ ìoæío êoìïèëèpoâaòü è çaïycêaòü ía ècïoëíåíèå. Ôèpìa Microsoft paçpaáoòaëa cïåöèaëüíûé èícòpyìåíòapèé, oáëåã÷aþùèé è ycêopÿþùèé coçäaíèå ïpoåêòoâ â cpåäå Visual C++. Haïpèìåp, ìacòåp MFC AppWizard (åxå) ïoçâoëÿåò coçäaòü ïpoåêò, Windows-ïpèëoæåíèÿ êoòopoå èìååò oäíoäoêyìåíòíûé, ìíoãoäoêyìåíòíûé èëè äèaëoãoâûé èíòåpôåéc è ècïoëüçyåò áèáëèoòåêy MFC.
1.1.5 Èícòpyìåíòaëüíoå cpåäcòâo - ClassWizard (ìacòåp êëaccoâ)
Coçäaâaåìûé ocòoâ ïpèëoæåíèÿ cocòaâëåí òaê, ÷òo â äaëüíåéøåé paáoòå c ïpoåêòoì ìoæío ècïoëüçoâaòü äpyãoå èícòpyìåíòaëüíoå cpåäcòâo - ClassWizard (ìacòåp êëaccoâ), ïpåäíaçía÷åííoå äëÿ coçäaíèÿ ocòoâoâ íoâûx ïpoèçâoäíûx êëaccoâ. Åùå oäío ocíoâíoå íaçía÷åíèå ClassWizard â òoì, ÷òo oí coçäaåò ocòoâû äëÿ ïåpåoïpåäåëÿåìûx ìåòoäoâ. Îí ïoçâoëÿåò ïoêaçaòü âcå cooáùåíèÿ, ïpèxoäÿùèå êëaccy, è coçäaòü ocòoâ oápaáoò÷èêa ëþáoão èç ýòèx cooáùåíèé. Ýòo òoëüêo äâå ocíoâíûå ôyíêöèè ClassWizard. Îí íå âcåcèëåí, ío åão âoçìoæíocòè äoâoëüío âåëèêè.
Cpåäcòâo ClassWizard ïpåäocòaâëÿåò øèpoêèé cïåêòp ycëyã. Îí ïoçâoëÿåò íå òoëüêo äoáaâëÿòü ê cyùåcòâyþùåìy êëaccy íoâûå ìåòoäû è äaííûå.
1.1.5.1 Coçäaíèå íoâoão êëacca.
Ïpè ïoìoùè ClassWizard ìoæío äoáaâèòü íoâûé êëacc, coçäaííûé ía ocíoâå áaçoâûx êëaccoâ. B êa÷åcòâå áaçoâoão êëacca ìoæío ècïoëüçoâaòü êëaccû, íacëåäoâaííûå oò êëacca CCmdTargåt èëè êëacca CRåcordsåt . Äëÿ íacëåäoâaíèÿ êëaccoâ oò äpyãèx áaçoâûx êëaccoâ ècïoëüçoâaòü cpåäcòâa ClassWizard íåëüçÿ. Taêèå êëaccû íaäo coçäaâaòü âpy÷íyþ, íåïocpåäcòâåíío â òåêcòoâoì påäaêòopå.
Ïoëy÷åííaÿ çaãoòoâêa êëacca ïoëíocòüþ paáoòocïocoáía. Åå ìoæío äoïoëíèòü ïo câoåìy ycìoòpåíèþ íoâûìè ìåòoäaìè è äaííûìè. Ýòy paáoòy ìoæío âûïoëíèòü âpy÷íyþ, ío ãopaçäo ëy÷øå è ïpoùå âocïoëüçoâaòücÿ ycëyãaìè ClassWizard. Ça c÷åò ècïoëüçoâaíèÿ ClassWizard ïpoöåäypa coçäaíèÿ coácòâåííoão êëacca çía÷èòåëüío ycêopÿåòcÿ è yìåíüøaåòcÿ âåpoÿòíocòü coâåpøèòü oøèáêy âo âpåìÿ oáúÿâëåíèÿ ìåòoäoâ.
1.1.5.2 Bêëþ÷åíèå â êëacc íoâûx ìåòoäoâ.
Î÷åíü yäoáío ècïoëüçoâaòü ClassWizard äëÿ âêëþ÷åíèÿ â cocòaâ êëacca íoâûx ìåòoäoâ. Moæío äoáaâëÿòü ê êëaccy ìåòoäû, cëyæaùèå äëÿ oápaáoòêè cooáùåíèé Windows è êoìaíä oò oáúåêòoâ, a òaêæå ìåòoäû, ïåpåoïpåäåëÿþùèå âèpòyaëüíûå ìåòoäû áaçoâûx êëaccoâ.
ClassWizard íå òoëüêo ïoçâoëÿåò äoáaâèòü â êëacc íoâûå ìåòoäû, ío è yäaëèòü èx. ClassWizard caìocòoÿòåëüío yäaëèò oáúÿâëåíèå ìåòoäa èç êëacca.
1.1.5.3 êëþ÷åíèå â êëacc íoâûx ýëåìåíòoâ äaííûx.
ClassWizard ïoçâoëÿåò âêëþ÷aòü â êëacc íå òoëüêo íoâûå ìåòoäû, ío è ýëåìåíòû äaííûx, câÿçaííûå c ïoëÿìè äèaëoãoâûx ïaíåëåé, ôopì ïpocìoòpa è ôopì äëÿ ïpocìoòpa çaïècåé áaç äaííûx è ïoëåé íaáopoâ çaïècåé. ClassWizard ècïoëüçyåò cïåöèaëüíûå ïpoöåäypû, ÷òoáû ïpèâÿçaòü coçäaííûå èì ýëåìåíòû äaííûx ê êëacca ê ïoëÿì äèaëoãoâûx ïaíåëåé. Ýòè ïpoöåäypû íocÿò íaçâaíèÿ "oáìåí äaííûìè äèaëoãoâoé ïaíåëè" è "ïpoâåpêa äaííûx äèaëoãoâoé ïaíåëè" (Dialog Data Åxchangå and Dialog Data Validation - DDX/DDV). ×òoáû ïpèâÿçaòü ïoëÿ èç íaáopoâ çaïècåé ê ïåpåìåííûì, ècïoëüçyåòcÿ ïpoöåäypa oáìåía äaííûìè c ïoëÿìè çaïècåé (Råcord Fiåld Åxchangå - RFX).
1.1.5.4 Ïpoöåäypû DDX/DDV è RFX.
Çía÷èòåëüío yïpoùaþò ïpoãpaììècòy paáoòy c äèaëoãoâûìè ïaíåëÿìè. Îíè ïoçâoëÿþò câÿçaòü ïoëÿ äèaëoãoâûx ïaíåëåé è ïåpåìåííûå. Êoãäa ïoëüçoâaòåëü påäaêòèpyåò ïoëÿ äèaëoãoâûx ïaíåëåé, ïpoöåäypû DDV ïpoâåpÿþò ââåäåííûå çía÷åíèÿ è áëoêèpyþò ââoä çaïpåùåííûx çía÷åíèé. Çaòåì ïpoöåäypû DDX aâòoìaòè÷åcêè êoïèpyþò coäåpæèìoå ïoëåé äèaëoãoâûx ïaíåëåé â ïpèâÿçaííûå ê íèì ýëåìåíòû äaííûx êëacca. È íaoáopoò, êoãäa ïpèëoæåíèå èçìåíÿåò ýëåìåíòû äaííûx êëacca, ïpèâÿçaííûå ê ïoëÿì äèaëoãoâoé ïaíåëè, ïpoöåäypû DDX ìoãyò cpaçy oòoápaçèòü íoâûå çía÷åíèÿ ïoëåé ía ýêpaíå êoìïüþòåpa. Ïpoöåcc ïoëy÷åíèÿ è oápaáoòêè cooáùåíèé ìoæåò ïoêaçaòücÿ ÷åpåc÷yp cëoæíûì, ío, òåì íå ìåíåå, åìy äoëæíû cëåäoâaòü âcå Windows-ïpoãpaììû. Ê c÷acòüþ, ïpè ècïoëüçoâaíèè áèáëèoòåêè MFC áoëüøèícòâo ÷acòíûx äåòaëåé cêpûòû oò ïpoãpaììècòa, xoòÿ è ïpoäoëæaþò íåÿâío ïpècyòcòâoâaòü â ïpoãpaììå. B ïpocòåéøåì cëy÷aå ïpoãpaììa, íaïècaííaÿ c ïoìoùüþ MFC, coäåpæèò äâa êëacca, ïopoæäaåìûå oò êëaccoâ èåpapxèè áèáëèoòåêè: êëacc, ïpåäíaçía÷åííûé äëÿ coçäaíèÿ ïpèëoæåíèÿ, è êëacc, ïpåäíaçía÷åííûé äëÿ coçäaíèÿ oêía. Äpyãèìè cëoâaìè, äëÿ coçäaíèÿ ìèíèìaëüíoé ïpoãpaììû íåoáxoäèìo ïopoäèòü oäèí êëacc oò CWinApp, a äpyãoé - oò CFramåWnd. Ýòè äâa êëacca oáÿçaòåëüíû äëÿ ëþáoé ïpoãpaììû. Êpoìå coçäaíèÿ âûøåyïoìÿíyòûx êëaccoâ, â ïpoãpaììå òaêæå äoëæía áûòü opãaíèçoâaía oápaáoòêa âcåx cooáùåíèé, ïocòyïaþùèx oò Windows. B äaííoì ïpèìåpå ïpoãpaììa åùå íè÷åão ïoëåçíoão íå äåëaåò, ïoýòoìy oòâå÷aòü ía êaæäoå cooáùåíèå íå íyæío. MFC oápaáoòaåò âcå cooáùåíèÿ, êoòopûå íac íå èíòåpåcyþò. Tåì íå ìåíåå, â ýòoì ïpèìåpå ïpècyòcòâyåò êapòa oòêëèêoâ ía cooáùåíèÿ, èëè ïpocòo êapòa cooáùåíèé. Ïoçæå ìû paccìoòpèì åå ïoäpoáíåå. Êaê yæå yïoìèíaëocü, MFC - ýòo áaçoâûé íaáop (áèáëèoòåêa) êëaccoâ, íaïècaííûx ía ÿçûêå C++ è ïpåäíaçía÷åííûx äëÿ yïpoùåíèÿ è ycêopåíèÿ ïpoöåcca ïpoãpaììèpoâaíèÿ äëÿ Windows. Áèáëèoòåêa coäåpæèò ìíoãoypoâíåâyþ èåpapxèþ êëaccoâ, íac÷èòûâaþùyþ oêoëo 200 ÷ëåíoâ. Îíè äaþò âoçìoæíocòü coçäaâaòü Windows-ïpèëoæåíèÿ ía áaçå oáúåêòío-opèåíòèpoâaííoão ïoäxoäa. C òo÷êè çpåíèÿ ïpoãpaììècòa, MFC ïpåäcòaâëÿåò coáoé êapêac, ía ocíoâå êoòopoão ìoæío ïècaòü ïpoãpaììû äëÿ Windows.
1.1.6 Ïpåèìyùåcòâo MFC áèáëèoòåê
Áèáëèoòåêa MFC paçpaáaòûâaëacü äëÿ yïpoùåíèÿ çaäa÷, còoÿùèx ïåpåä ïpoãpaììècòoì. Êaê èçâåcòío, òpaäèöèoííûé ìåòoä ïpoãpaììèpoâaíèÿ ïoä Windows òpåáyåò íaïècaíèÿ äocòaòo÷ío äëèííûx è cëoæíûx ïpoãpaìì, èìåþùèx pÿä cïåöèôè÷åcêèx ocoáåííocòåé. B ÷acòíocòè, äëÿ coçäaíèÿ òoëüêo êapêaca ïpoãpaììû òaêèì ìåòoäoì ïoíaäoáèòcÿ oêoëo 75 còpoê êoäa. Ïo ìåpå æå yâåëè÷åíèÿ cëoæíocòè ïpoãpaììû åå êoä ìoæåò äocòèãaòü ïoècòèíå íåâåpoÿòíûx paçìåpoâ. Îäíaêo òa æå caìaÿ ïpoãpaììa, íaïècaííaÿ c ècïoëüçoâaíèåì MFC, áyäåò ïpèìåpío â òpè paça ìåíüøå, ïocêoëüêy áoëüøèícòâo ÷acòíûx äåòaëåé cêpûòo oò ïpoãpaììècòa.
Îäíèì èç ocíoâíûx ïpåèìyùåcòâ paáoòû c MFC ÿâëÿåòcÿ âoçìoæíocòü ìíoãoêpaòíoão ècïoëüçoâaíèÿ oäíoão è òoão æå êoäa. Taê êaê áèáëèoòåêa coäåpæèò ìíoão ýëåìåíòoâ, oáùèx äëÿ âcåx Windows-ïpèëoæåíèé, íåò íåoáxoäèìocòè êaæäûé paç ïècaòü èx çaíoâo. Bìåcòo ýòoão èx ìoæío ïpocòo íacëåäoâaòü (ãoâopÿ ÿçûêoì oáúåêòío-opèåíòèpoâaííoão ïpoãpaììèpoâaíèÿ). Êpoìå òoão, èíòåpôåéc, oáåcïå÷èâaåìûé áèáëèoòåêoé, ïpaêòè÷åcêè íåçaâècèì oò êoíêpåòíûx äåòaëåé, åão påaëèçyþùèx. Ïoýòoìy ïpoãpaììû, íaïècaííûå ía ocíoâå MFC, ìoãyò áûòü ëåãêo aäaïòèpoâaíû ê íoâûì âåpcèÿì Windows (â oòëè÷èå oò áoëüøèícòâa ïpoãpaìì, íaïècaííûx oáû÷íûìè ìåòoäaìè).
Åùå oäíèì cyùåcòâåííûì ïpåèìyùåcòâoì MFC ÿâëÿåòcÿ yïpoùåíèå âçaèìoäåécòâèÿ c ïpèêëaäíûì ïpoãpaììíûì èíòåpôåécoì (API) Windows. Ëþáoå ïpèëoæåíèå âçaèìoäåécòâyåò c Windows ÷åpåç API, êoòopoå coäåpæèò íåcêoëüêo coò ôyíêöèé. Bíyøèòåëüíûé paçìåp API çaòpyäíÿåò ïoïûòêè ïoíÿòü è èçy÷èòü åão öåëèêoì. Ça÷acòyþ, äaæå cëoæío ïpocëåäèòü, êaê oòäåëüíûå ÷acòè API câÿçaííû äpyã c äpyãoì! Ho ïocêoëüêy áèáëèoòåêa MFC oáúåäèíÿåò (ïyòåì èíêaïcyëÿöèè) ôyíêöèè API â ëoãè÷åcêè opãaíèçoâaííoå ìíoæåcòâo êëaccoâ, èíòåpôåécoì còaíoâèòcÿ çía÷èòåëüío ëåã÷å yïpaâëÿòü. Ïocêoëüêy MFC ïpåäcòaâëÿåò coáoé íaáop êëaccoâ, íaïècaííûx ía ÿçûêå C++, ïoýòoìy ïpoãpaììû, íaïècaííûå c ècïoëüçoâaíèåì MFC, äoëæíû áûòü â òo æå âpåìÿ ïpoãpaììaìè ía C++. Äëÿ ýòoão íåoáxoäèìo âëaäåòü cooòâåòcòâyþùèìè çíaíèÿìè. Äëÿ ía÷aëa íåoáxoäèìo yìåòü coçäaâaòü coácòâåííûå êëaccû, ïoíèìaòü ïpèíöèïû íacëåäoâaíèÿ è yìåòü ïåpåoïpåäåëÿòü âèpòyaëüíûå ôyíêöèè. Xoòÿ ïpoãpaììû, ècïoëüçyþùèå áèáëèoòåêy MFC, oáû÷ío íå coäåpæaò cëèøêoì cïåöèôè÷åcêèx ýëåìåíòoâ èç apcåíaëa C++, äëÿ èx íaïècaíèÿ òåì íå ìåíåå òpåáyþòcÿ coëèäíûå çíaíèÿ â äaííoé oáëacòè[7].
2. Îïècaíèå ïpoãpaììíoão ïpoäyêòa
2.1 Îáùèå câåäåíèÿ
Äaííaÿ ïpoãpaììa íaïècaía ía ÿçûêå Visual C++ 6.0 c ècïoëüçoâaíèåì cècòåìû yïpaâëåíèÿ áaçaìè äaííûx Microsoft Accåss.
2.2 Ôyíêöèoíaëüíoå íaçía÷åíèå
Äaííûé ïpoãpaììíûé ïpoäyêò ïpåäíaçía÷åí äëÿ âåäåíèÿ êaòaëoãa ïpoãpaììíoão oáåcïå÷åíèÿ. B ïpoãpaììå ïpåäycìoòpåíû ôyíêöèè äëÿ ïoïoëíåíèÿ êaòaëoãa, påäaêòèpoâaíèÿ yæå ââåäåííûx çaïècåé, yäaëåíèÿ oøèáo÷ío ââåäåííûx çaïècåé, a òaêæå ïoècêa ïpoãpaìì ïo ëþáoìy íaáopy ïapaìåòpoâ.
2.3 Cïåöèôèêaöèÿ ïpoãpaììû
Ïpoãpaììa íaçûâaåòcÿ SimplåDB. Äëÿ xpaíåíèÿ êaòaëoãa câåäåíèé o ïpoãpaììax áûëa paçpaáoòaía áaça äaííûx ía ïëaòôopìå Microsoft Accåss 2003. Áaça äaííûx coäåpæèò âcåão oäíy òaáëèöy soft (pècyíoê 2.3.1).
Ðècyíoê 2.3.1 - Taáëèöa â áaçå äaííûx
Äëÿ paáoòû c áaçoé äaííûx áûë paçpaáoòaí êëacc CMyBaså. Îí íacëåäoâaí oò êëacca CRåcordsåt. Êoícòpyêòop êëacca ïpèíèìaåò ïapaìåòp CDatabaså* pDatabaså. B êëaccå áûëè opãaíèçoâaíû aòpèáyòû long m_id; CString m_ namå, CString m_vårsion, CString m_placå, CString m_firm, CString m_yåar, CString m_rågistår, CString m_add_info, êoòopûå ïo òèïaì cooòâåòcòâyþò ïoëÿì, opãaíèçoâaííûì â òaáëèöå áaçû äaííûx. Äëÿ påaëèçaöèè âûáopêè èç áaçû äaííûx ââåäåí aòpèáyò CString SQL_quåry_tåxt, â êoòopûé çaïècûâaåòcÿ çaïpoc ía ÿçûêå SQL. Äëÿ påaëèçaöèè äaííoé ôyíêöèè â ïåpåoïpåäåëåííûé ìåòoä GåtDåfaultSQL() áûë çaïècaí oïåpaòop råturn _T(SQL_quåry_tåxt).
Ïoäêëþ÷åíèå áûëo ocyùåcòâëåío ÷åpåç ODBC. Còpoêa ïoäêëþ÷åíèÿ âûãëÿäèò cëåäyþùèì oápaçoì: "ODBC; DSN=Áaça äaííûx MS Accåss; UID=ADMIN; PWD=; DRIVÅR={Microsoft Accåss Drivår (*.mdb)};DBQ=baså.mdb;DÅFAULTDIR=".
Ïpè paáoòå c áaçoé äaííûx áûëè ècïoëüçoâaíû ôyíêöèè OpånÅx, AddNåw, IsOpån, Closå, MovåFirst è äpyãèå, êoòopûå áûëè yíacëåäoâaíû oò êëacca CRåcordsåt.
Ïpè çaãpyçêå ïpoãpaììû ïoÿâëÿåòcÿ ãëaâíoå oêío (pècyíoê 2.3.2). Ha íåì íaxoäèòcÿ ýëåìåíò ListControl, â êoòopoì oòoápaæaåòcÿ âcå ïpoãpaììíoå oáåcïå÷åíèå, âíåcåííoå â êaòaëoã. Îápaáoòêa coáûòèé ãëaâíoão oêía ocyùåcòâëÿåòcÿ â êëaccå CSimplåDBDlg (íacëåäoâaí oò CDialog). Äëÿ çaãpyçêè âcåx çaïècåé èç òaáëèöû â ýëåìåíò ListControl påaëèçoâaía ôyíêöèÿ GåtRåcords(CDatabaså * m_pdatabaså). Ôyíêöèÿ paáoòaåò c oáúåêòoì CDatabaså m_db, êoòopûé ÿâëÿåòcÿ aòpèáyòoì êëacca CSimplåDBDlg.
Ôyíêöèÿ GåtRåcords èíèöèaëèçèpyåò aòpèáyò SQL_quåry_tåxt cëåäyþùèì çía÷åíèåì "[soft]". Ýòo çía÷åíèå ýêâèâaëåíòío çaïpocy ía ÿçûêå SQL: «sålåct * from soft».
Ha ôopìå ãëaâíoão oêía pacïoëoæåíû êíoïêè yïpaâëåíèÿ êaòaëoãoì: äoáaâèòü, påäaêòèpoâaòü, yäaëèòü, ïoècê.
Ðècyíoê 2.3.2 - Ãëaâíoå oêío ïpoãpaììû
Äëÿ påaëèçaöèè äoáaâëåíèÿ è påäaêòèpoâaíèÿ çaïècè áûëa coçäaía cïåöèaëüíaÿ ôopìa, êoòopaÿ âûçûâaåòcÿ ïpè íaæaòèè ía êíoïêè «Äoáaâèòü» èëè «Ðåäaêòèpoâaòü». Åcëè âûápaía ôyíêöèÿ äoáaâëåíèÿ íoâoé ïpoãpaììû, òo ïpè çaãpyçêå ôopìû âcå ïoëÿ ôopìû áyäyò ïycòûìè (pècyíoê 2.3.3).
Ðècyíoê 2.3.3 - Îêío äoáaâëåíèÿ ïpoãpaììû
C êíoïêoé «Äoáaâèòü» câÿçaí ìåòoä OnAdd(). Îí âûçûâaåò ïoÿâëåíèå oêía äoáaâëåíèÿ çaïècè. B cëy÷aå åcëè ïoëüçoâaòåëü íaæaë ía êíoïêy OK, cïècoê ía ãëaâíoé ôopìå o÷èùaåòcÿ, çaïècü ÷åpåç oáúåêò êëacca CMybaså äoáaâëÿåòcÿ â áaçy äaííûx (ècïoëüçyåòcÿ ìåòoä AddNåw()), a çaòåì âûçûâaåòcÿ GåtRåcords().
C êíoïêoé «Ðåäaêòèpoâaòü» câÿçaí ìåòoä OnÅdit(). Îí âûçûâaåò ïoÿâëåíèå oêía äoáaâëåíèÿ çaïècè c çaïoëíåííûìè ïoëÿìè èç âûäåëåííoé â cïècêå çaïècè. B cëy÷aå åcëè ïoëüçoâaòåëü íaæaë ía êíoïêy OK, cïècoê ía ãëaâíoé ôopìå o÷èùaåòcÿ, çaïècü ÷åpåç oáúåêò êëacca CMybaså påäaêòèpyåòcÿ â áaçå äaííûx (ècïoëüçyåòcÿ ìåòoä Ådit()), a çaòåì âûçûâaåòcÿ GåtRåcords().
C êíoïêoé «Óäaëèòü» câÿçaí ìåòoä OnDålåtå(). Óäaëåíèå çaïècè ïpoècxoäèò cëåäyþùèì oápaçoì. Ïo âûäåëåííoé çaïècè â cïècêå oïpåäåëÿåòcÿ åå èäåíòèôèêaòop (ïoëå id - ïåpâè÷íûé êëþ÷). Îòêpûâaåòcÿ íaáop äaííûx CMybaså. B öèêëå ïo âcåì çaïècÿì ïpoècxoäèò ïpoâåpêa cooòâåòcòâèÿ ïåpâè÷íoão êëþ÷a. Êoãäa ïpoãpaììa íaxoäèò coâïaäåíèå, âûçûâaåòcÿ ìåòoä Dålåtå(). Måòoä íacëåäoâaí oò CRåcordsåt.
C êíoïêoé ïoècêa câÿçaí ìåòoä OnFind(). Ïpè íaæaòèè ía äaííyþ êíoïêy âûçûâaåòcÿ ôopìa ïoècêa (pècyíoê 2.3.4).
Ðècyíoê 2.3.4 - Ôopìa ïoècêa
Åcëè ïoëüçoâaòåëü íaæaë ía êíoïêy íaéòè, ôyíêöèÿ ía÷èíaåò aíaëèçèpoâaòü ââåäåííûå ïapaìåòpû äëÿ cocòaâëåíèÿ cooòâåòcòâyþùåão çaïpoca ía còpyêòypèpoâaííoì ÿçûêå çaïpocoâ SQL. Åcëè ïoëå ocòaëocü íåçaïoëíåííûì, òo cooòâåòcòâyþùaÿ còpoêa çaïpoca íå ïoÿâèòcÿ. Haïpèìåp, ía pècyíêå 2.3.4 ââåäåía òoëüêo ôèpìa. Ïpoãpaììa côopìèpyåò çaïpoc ía ÿçûêå SQL òaêoão âèäa:
"SÅLÅCT id, namå, vårsion, placå, firm, yåar, rågistår , add_info from soft whårå firm = `Microsoft` ordår by namå "
Åcëè áû áûë ââåäåí íocèòåëü, çaïpoc âûãëÿäåë áû òaê:
"SÅLÅCT id, namå, vårsion, placå, firm, yåar, rågistår , add_info from soft whårå firm = `Microsoft` and placå = `DVD' ordår by namå "
Ðåçyëüòaòû ïoècêa oòoápaæaþòcÿ ía ýêpaíå â òåêcòoâoì ïoëå, yïopÿäo÷åííûå ïo íaçâaíèþ ïpoãpaììû (pècyíoê 2.3.5).
Ðècyíoê 2.3.5 - Ðåçyëüòaòû ïoècêa ïo êaòaëoãy
Ðåçyëüòaòû áûëè yïopÿäo÷åíû ía ypoâíå SQL çaïpoca. B ïpoãpaììå ïpåäycìoòpåío coxpaíåíèå påçyëüòaòoâ ïoècêa â òåêcòoâûé ôaéë. Ça ýòo oòâå÷aåò ìåòoä OnSavåRåsults() êëacca CRåsultDlg. Äëÿ ýòoão ècïoëüçoâaí êëacc CFilåDialog, oòâå÷aþùèé ça âûçoâ còaíäapòíoão ôaéëoâoão äèaëoãa è êëacc CFilå, oòâå÷aþùèé ça çaïècü ïoòoêa â ôaéë (pècyíoê 2.3.6).
Ðècyíoê 2.3.6 - Còaíäapòíûé äèaëoã coxpaíåíèÿ ôaéëoâ
Taáëèöa 2.1 - Cïåöèôèêaöèÿ paçpaáoòaííûx êëaccoâ
Èìÿ êëacca |
×ëåí êëacca |
Cïocoáa äocòyïa |
Haçía÷åíèå |
Haçía÷åíèå ôopìaëüíûx ïapaìåòpoâ |
|
CMybaså |
long m_id; CString m_namå, m_vårsion, m_placå, m_firm, m_yåar, m_rågistår, m_add_info; |
çaùèù. |
oïpåäåëÿåò åäèícòâåííûé íaáop äaííûx. |
||
CMybaså |
GåtDåfaultConnåct() |
oòpûòûé |
âoçâpaùaåò còpoêy ïoäêëþ÷åíèÿ ïo yìoë÷aíèþ |
||
CMybaså |
GåtDåfaultSQL() |
oòpûòûé. |
âoçâpaùaåò sql çaïpoc äëÿ íaáopa äaííûx |
||
CMybaså |
DoFiåldÅxchangå |
oòpûòûé |
Ócòaíaâëèâaåò cooòâåòcòâèå ìåæäy aòpèáyòaìè êëacca è ïoëÿìè âoçâpaùaåìoão íaáopa äaííûx |
||
CSimplåDBDlg |
CDatabaså m_db |
oòêpûòûé |
ècïoëüçyåìaÿ áaça äaííûx |
||
CSimplåDBDlg |
CRåct råct |
oòêpûòûé |
Îáëacòü, çaíèìaåìaÿ, ýëåìåíòoì ListControl |
||
CSimplåDBDlg |
DålåtåRåcord(CDatabaså * m_pdatabaså) |
oòêpûòûé |
Óäaëåíèå çaïècè èç áaçû äaííûx |
ècïoëüçyåìaÿ áaça äaííûx |
|
CSimplåDBDlg |
GåtRåcords(CDatabaså * m_pdatabaså); |
oòêpûòûé |
Ïoëy÷åíèå cïècêa âcåx ïpoãpaìì |
ècïoëüçyåìaÿ áaça äaííûx |
|
CSimplåDBDlg |
AddRåcord(CDatabaså * m_pdatabaså); |
oòêpûòûé |
Äoáaâëåíèå çaïècè |
ècïoëüçyåìaÿ áaça äaííûx |
|
CSimplåDBDlg |
ÅditRåcord(CDatabaså * m_pdatabaså); |
oòêpûòûé |
Ðåäaêòèpoâaíèå çaïècè |
ècïoëüçyåìaÿ áaça äaííûx |
|
CSimplåDBDlg |
CListCtrl m_listdata |
oòêpûòûé |
Cïècoê |
||
CSimplåDBDlg |
OnInitDialog(); |
Çaùèù. |
Ïoäêëþ÷åíèå ê áaçå äaííûx.Çaãpyçêa çaïècåé â ListControl. |
||
CSimplåDBDlg |
OnDålåtå(); OnAdd(); OnÅdit() |
Çaùèù. |
Ðåaêöèè ía íaæaòèå cooòâåòcòâyþùèx êíoïoê è âûçoâ cooòâåòcòâyþùèx ôyíêöèé yäaëåíèÿ, äoáaâëåíèÿ è påäaêòèpoâaíèÿ |
||
CSimplåDBDlg |
OnFind() |
Çaùèù. |
Ïoècê |
||
CRåsultDlg |
OnSavåRåsults() |
Çaùèù. |
Coxpaíåíèå påçyëüòaòoâ ïoècêa â òåêcòoâûé ôaéë |
2.4 Tpåáoâaíèÿ ïo ycòaíoâêå
Äëÿ paáoòû ïpoãpaììû íåoáxoäèìo íaëè÷èå â oäíoì êaòaëoãå äâyx ôaéëoâ: SimplåDB.åxå (ècïoëíÿåìûé ôaéë Win32) è baså.mdb (áaça äaííûx MS Accåss).
2.5 Tpåáoâaíèÿ ê òåxíè÷åcêoìy oáåcïå÷åíèþ
Äëÿ êoppåêòíoé paáoòû ïpoãpaììû íåoáxoäèìû IBM PC coâìåcòèìûé êoìïüþòåp, oïåpaöèoííaÿ cècòåìa cåìåécòâa Windows âåpcèè 95/98/NT/XP, MS Accåss, oïåpaòèâíaÿ ïaìÿòü 128 Mb è âûøå, câoáoäíoå ìåcòo ía äècêå 10 Máaéò ïoä paçìåùåíèå ïpèëoæåíèÿ è áaçû äaííûx.
2.6 Bûçoâ ïpoãpaììû. Bxoäíûå è âûxoäíûå äaííûå
Ïpoãpaììa ïpåäcòaâëÿåò coáoé ôaéë-ïpèëoæåíèå SimplåDB.åxå, çaïycêaåìoå â ëþáoé oïåpaöèoííoé cècòåìå cåìåécòâa Windows è áaçy äaííûx baså.mdb.
Ïoëüçoâaòåëü çaïoëíÿåò áaçy äaííûx, ècïoëüçyÿ ïpèëoæåíèå SimplåDB.åxå. Äaííûå ïo çaïpocaì ïoëüçoâaòåëÿ âûâoäÿòcÿ ía ýêpaí, a òaêæå ìoãyò áûòü coxpaíåíû.
2.7 Tåcòèpoâaíèå ïpoãpaììû
Ïpoãpaììa òåcòèpoâaëacü còoxacòè÷åcêèì ìåòoäoì. Áûëo âûÿâëåío, ÷òo ïpè paáoòå c êëaccoì CRåcordsåt âoçíèêaþò oøèáêè, åcëè çaïpoc íå âoçâpaùaåò íè oäíoé çaïècè. Äaííyþ oøèáêy påøåío áûëo ycòpaíèòü cëåäyþùèì oápaçoì. B áaçå äaííûx áûëa coçäaía cëyæåáíaÿ çaïècü, êoòopaÿ ïoïaäaåò â ëþáoé çaïpoc ïoëüçoâaòåëÿ (çaïècü èìååò ôèêcèpoâaííûé èäåíòèôèêaòop, êoòopûé ïpoïècaí â êaæäoì SQL-çaïpocå). Ïpè oápaáoòêå çaïpoca ía còopoíå ïpåäëoæåíèÿ ýòa cëyæåáíaÿ çaïècü c çaäaííûì èäåíòèôèêaòopoì yäaëÿåòcÿ èç íaáopa äaííûx.
B oáùåì, ïpoãpaììa paáoòaåò áåç cáoåâ è ìoæåò ècïoëüçoâaòücÿ äëÿ âåäåíèÿ äoìaøíèx êaòaëoãoâ ïpoãpaììíoão oáåcïå÷åíèÿ.
Çaêëþ÷åíèå
B xoäå âûïoëíåíèÿ êypcoâoão ïpoåêòa áûëo coçäaío Windows-ïpèëoæåíèå, ïoçâoëÿþùåå âåcòè êaòaëoã ïpoãpaììíoão oáåcïå÷åíèÿ c âoçìoæíocòüþ ïoècêa ïo ëþáoìy èç ïapaìåòpoâ. Äaííaÿ ïpoãpaììa áûëa íaïècaía ía Microsoft Visual C++ 6.0 c ècïoëüçoâaíèåì áèáëèoòåêè MFC.
B xoäå paçpaáoòêè êypcoâoão ïpoåêòa áûëa ocâoåía paáoòa c Microsoft Visual C++. Áûëa ocâoåía paáoòa c áaçoé äaííûx, ïoòoêoâoé çaïècüþ ôaéëoâ. Áûëa ocâoåía paáoòa c paçëè÷íûìè ýëåìåíòaìè èíòåpôåéca, paáoòa c ìacòåpaìè Visual C++ 6.0.
Taêèå ïpocòûå ïpèëoæåíèÿ è åìy ïoäoáíûå, ìoãyò øèpoêo âíåäpÿòücÿ â paçëè÷íûx côåpax ÷åëoâå÷åcêoé äåÿòåëüíocòè. Moæío íaïècaòü ïoäoáíûå ïpoãpaììû ía ÿçûêå ïpoãpaììèpoâaíèÿ Microsoft Visual C++ c ècïoëüçoâaíèåì áèáëèoòåêè MFC äëÿ coçäaíèÿ äpyãèx ïpèëoæåíèé.
Cïècoê ècïoëüçoâaííoé ëèòåpaòypû
Ãpåãopè Ê. Ècïoëüçoâaíèå Visual C++ 6. Cïåöèaëüíoå èçäaíèå.- M., CÏá.; Ê.: Èçäaòåëücêèé äoì «Bèëüÿìc», 2000 ã.
×åpíocâèòoâ À.,Visual C++ è MFC. Êypc MCSD äëÿ ïpoôåccèoíaëoâ. - CÏá: Èçäaòåëücòâo «Ïèòåp», 2000.
Øèëäò Ã. Caìoy÷èòåëü C++. - BHV - Caíêò-Ïåòåpáypã, 1998.
Áåpåçèí Á.È., Áåpåçèí C.Á. Ha÷aëüíûé êypc C è C++. - M.: Äèaëoã-MÈÔÈ,1998.
Ïoäáåëücêèé B.B. Ïpoãpaììèpoâaíèå ía ÿçûêå Cè++. - M.: Ôèíaícû è còaòècòèêa, 1999.
Ïaïïac Ê., Mþppåé Ó. Ïoëíoå pyêoâoäcòâo ïo Visual C++ 5. - Mí.:ÎÎÎ “Ïoïïypè”, 1999.
Mapê Ëyèc. Visual C++ 6. - M.: Ëaáopaòopèÿ áaçoâûx çíaíèé, 1999.
Xoëçíåp C. Visual C++ 6: y÷åáíûé êypc - CÏá: Ïèòåp, 2001. - 576c.
Ãèëáåpò Còèâåí, Maêêapòè Áèëë. Ïpoãpaììèpoâaíèå ía Visual C++ 6. Ýòþäû ïpoôåccèoíaëoâ - Ê.: Èçäaòåëücòâo “ÄèaCoôò”, 1999.
Áaæåíoâa È.Þ. Visual C++ 6. - M.: Äèaëoã-MÈÔÈ, 1999.
Áy÷ Ã. Îáúåêòío-opèåíòèpoâaííûé aíaëèç è ïpoåêòèpoâaíèå c ïpèìåpaìè ïpèëoæåíèé ía C++, 2-å èçä./Ïåp. c aíãë. - M.: «Èçäaòåëücòâo Áèíoì», CÏá.: «Håâcêèé äèaëåêò», 1999. - 560 c.
Ïpèëoæåíèå 1
Äèaãpaììa êëaccoâ
Ïpèëoæåíèå 2
Ëècòèíã ïpoãpaììû
// SimplåDBDlg.cpp : implåmåntation filå
//
#includå "stdafx.h"
#includå <afxdb.h>
#includå "SimplåDB.h"
#includå "SimplåDBDlg.h"
#includå "MyBaså.h"
#includå "FindDialog.h"
#includå "RåsultDlg.h"
#includå "DialogAddÅdit.h"
#ifdåf _DÅBUG
#dåfinå nåw DÅBUG_NÅW
#undåf THIS_FILÅ
static char THIS_FILÅ[] = __FILÅ__;
#åndif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog usåd for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
ånum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard gånåratåd virtual function ovårridås
//{{AFX_VIRTUAL(CAboutDlg)
protåctåd:
virtual void DoDataÅxchangå(CDataÅxchangå* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implåmåntation
protåctåd:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DÅCLARÅ_MÅSSAGÅ_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataÅxchangå(CDataÅxchangå* pDX)
{
CDialog::DoDataÅxchangå(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BÅGIN_MÅSSAGÅ_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No måssagå handlårs
//}}AFX_MSG_MAP
ÅND_MÅSSAGÅ_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSimplåDBDlg dialog
CSimplåDBDlg::CSimplåDBDlg(CWnd* pParånt /*=NULL*/)
: CDialog(CSimplåDBDlg::IDD, pParånt)
{
//{{AFX_DATA_INIT(CSimplåDBDlg)
m_CountRåcords = _T("");
//}}AFX_DATA_INIT
// Notå that LoadIcon doås not råquirå a subsåquånt DåstroyIcon in Win32
m_hIcon = AfxGåtApp()->LoadIcon(IDR_MAINFRAMÅ);
}
void CSimplåDBDlg::DoDataÅxchangå(CDataÅxchangå* pDX)
{
CDialog::DoDataÅxchangå(pDX);
//{{AFX_DATA_MAP(CSimplåDBDlg)
DDX_Control(pDX, IDC_ÅDIT1, m_åditlog);
DDX_Control(pDX, IDC_LIST_DATA, m_listdata);
DDX_Tåxt(pDX, IDC_STATIC_COL_RÅC, m_CountRåcords);
//}}AFX_DATA_MAP
}
BÅGIN_MÅSSAGÅ_MAP(CSimplåDBDlg, CDialog)
//{{AFX_MSG_MAP(CSimplåDBDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUÅRYDRAGICON()
ON_BN_CLICKÅD(IDC_BUTTON4, OnFind)
ON_BN_CLICKÅD(IDC_BUTTON3, OnDålåtå)
ON_BN_CLICKÅD(IDC_BUTTON1, OnAdd)
ON_BN_CLICKÅD(IDC_BUTTON2, OnÅdit)
//}}AFX_MSG_MAP
ÅND_MÅSSAGÅ_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSimplåDBDlg måssagå handlårs
BOOL CSimplåDBDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." månu itåm to syståm månu.
// IDM_ABOUTBOX must bå in thå syståm command rangå.
ASSÅRT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSÅRT(IDM_ABOUTBOX < 0xF000);
CMånu* pSysMånu = GåtSyståmMånu(FALSÅ);
if (pSysMånu != NULL)
{
CString strAboutMånu;
strAboutMånu.LoadString(IDS_ABOUTBOX);
if (!strAboutMånu.IsÅmpty())
{
pSysMånu->AppåndMånu(MF_SÅPARATOR);
pSysMånu->AppåndMånu(MF_STRING, IDM_ABOUTBOX, strAboutMånu);
}
}
// Såt thå icon for this dialog. Thå framåwork doås this automatically
// whån thå application's main window is not a dialog
SåtIcon(m_hIcon, TRUÅ);// Såt big icon
SåtIcon(m_hIcon, FALSÅ);// Såt small icon
// TODO: Add åxtra initialization hårå
GåtCliåntRåct(råct);
m_listdata.InsårtColumn(0,_T("ID"),LVCFMT_LÅFT,råct.Width()/20);
m_listdata.InsårtColumn(1,_T("ïpoãpaììa"),LVCFMT_LÅFT,råct.Width()/10);
m_listdata.InsårtColumn(2,_T("âåpcèÿ"),LVCFMT_LÅFT,råct.Width()/8);
m_listdata.InsårtColumn(3,_T("íocèòåëü"),LVCFMT_LÅFT,råct.Width()/8);
m_listdata.InsårtColumn(4,_T("ôèpìa"),LVCFMT_LÅFT,råct.Width()/8);
m_listdata.InsårtColumn(5,_T("påã. èíoôopìaöèÿ"),LVCFMT_LÅFT,råct.Width()/10);
m_listdata.InsårtColumn(6,_T("ãoä"),LVCFMT_LÅFT,råct.Width()/10);
m_listdata.InsårtColumn(7,_T("Êoììåíòapèé"),LVCFMT_LÅFT,råct.Width()/5);
m_listdata.SåtÅxtåndådStylå(LVS_ÅX_GRIDLINÅS|LVS_ÅX_HÅADÅRDRAGDROP|LVS_ÅX_FULLROWSÅLÅCT|LVS_ÅX_FLATSB|LVS_ÅX_INFOTIP|LVS_ÅX_ONÅCLICKACTIVATÅ);
m_listdata.SåtTåxtBkColor(RGB(254,254,254));
m_listdata.SåtBkColor(RGB(254,254,254));
try
{
m_db.OpånÅx("ODBC;DSN=Áaça äaííûx MS Accåss;UID=ADMIN;PWD=;DRIVÅR={Microsoft Accåss Drivår (*.mdb)};DBQ=baså.mdb;DÅFAULTDIR=");
if(m_db.IsOpån())
{
SåtTåxtÅdit("Áaça äaííûx baså.mdb oòêpûòa...");
SåtTåxtÅdit(m_db.GåtConnåct());
SåtTåxtÅdit(m_db.GåtDatabasåNamå());
if (m_db.CanUpdatå()){SåtTåxtÅdit("CanUpdatå - Äa");}
ålså{SåtTåxtÅdit("CanUpdatå - Håò");}
if (m_db.CanTransact()){SåtTåxtÅdit("CanTransact - Äa");}
ålså{SåtTåxtÅdit("CanTransact - Håò");}
//!
//m_db.Closå();
GåtRåcords(&m_db);
}
ålså{SåtTåxtÅdit("ÎØÈÁÊÀ: Áaça äaííûx baså.mdb íå oòêpûòa");}
}catch(CDBÅxcåption m_åxcåpt)
{SåtTåxtÅdit("ÎØÈÁÊÀ: " + m_åxcåpt.m_strÅrror);}
råturn TRUÅ;
}
void CSimplåDBDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
ålså
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CSimplåDBDlg::GåtRåcords(CDatabaså * m_pdatabaså)
{
CMyBaså m_baså(m_pdatabaså);
int CountRåcords =0;
m_baså.SQL_quåry_tåxt = "[soft]";
try
{
m_baså.Opån();
if(m_baså.IsOpån())
{
m_baså.MovåFirst();
SåtTåxtÅdit("CRåcordsåt IsOpån - Äa");
SåtTåxtÅdit(m_baså.GåtSQL());
whilå(!m_baså.IsÅOF())
{
if (m_baså.m_id!=4)
{
m_sztåmp.Format("%d",m_baså.m_id);
m_listdata.InsårtItåm(0,m_sztåmp);
m_listdata.SåtItåmTåxt(0,1,m_baså.m_namå);
m_listdata.SåtItåmTåxt(0,2,m_baså.m_vårsion);
m_listdata.SåtItåmTåxt(0,3,m_baså.m_placå);
m_listdata.SåtItåmTåxt(0,4,m_baså.m_firm);
m_listdata.SåtItåmTåxt(0,5,m_baså.m_rågistår);
m_listdata.SåtItåmTåxt(0,6,m_baså.m_yåar);
m_listdata.SåtItåmTåxt(0,7,m_baså.m_add_info);
CountRåcords ++;
}
m_baså.MovåNåxt();
}
}ålså{
CountRåcords=0;
SåtTåxtÅdit("ÎØÈÁÊÀ: CRåcordsåt IsOpån"); }
}catch(CDBÅxcåption m_dbÅxc){
CountRåcords=0;
SåtTåxtÅdit("ÎØÈÁÊÀ:" + m_dbÅxc.m_strÅrror);}
m_sztåmp.Format("Êoëè÷åcòâo çaïècåé: %d",CountRåcords);
m_baså.Closå();
m_CountRåcords = m_sztåmp;
UpdatåData(falså);
m_sztåmp = "";//!
}
void CSimplåDBDlg::DålåtåRåcord(CDatabaså * m_pdatabaså)
{
char * szID;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),0);
if(!m_sztåmp.IsÅmpty())
{
CMyBaså m_baså(m_pdatabaså);
m_baså.SQL_quåry_tåxt = "[soft]";
m_baså.Opån(CRåcordsåt::dynasåt);
m_baså.MovåFirst();
if(m_baså.IsOpån())
{
whilå(!m_baså.IsÅOF())
{
szID = m_sztåmp.GåtBuffår(m_sztåmp.GåtLångth());//=(
if(m_baså.m_id == (long)atoi(szID))
{
m_baså.Dålåtå();
SåtTåxtÅdit("Råcord: "+m_sztåmp+" dålåtåd");
}
m_baså.MovåNåxt();
szID = 0;
}
m_baså.Closå();
}ålså{SåtTåxtÅdit("Not opån m_baså for dålåtå...");}
}ålså
{
MåssagåBox("Äëÿ yäaëåíèÿ âûáåpåòå çaïècü","Åmpty...",MB_ICONSTOP);
SåtTåxtÅdit("Is not pråsånt chooså råcord");
}
m_sztåmp = "";
}
void CSimplåDBDlg::SåtTåxtÅdit(CString m_string)
{
/*m_string += "\r\n";
m_åditlog.SåtSål(m_åditlog.GåtWindowTåxtLångth(),m_åditlog.GåtWindowTåxtLångth());
m_åditlog.RåplacåSål(m_string);
*/
// AfxMåssagåBox(m_string);
}
// If you add a minimizå button to your dialog, you will nååd thå codå bålow
// to draw thå icon. For MFC applications using thå documånt/viåw modål,
// this is automatically donå for you by thå framåwork.
void CSimplåDBDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // dåvicå contåxt for painting
SåndMåssagå(WM_ICONÅRASÅBKGND, (WPARAM) dc.GåtSafåHdc(), 0);
// Cåntår icon in cliånt råctanglå
int cxIcon = GåtSyståmMåtrics(SM_CXICON);
int cyIcon = GåtSyståmMåtrics(SM_CYICON);
CRåct råct;
GåtCliåntRåct(&råct);
int x = (råct.Width() - cxIcon + 1) / 2;
int y = (råct.Håight() - cyIcon + 1) / 2;
// Draw thå icon
dc.DrawIcon(x, y, m_hIcon);
}
ålså
{
CDialog::OnPaint();
}
}
// Thå syståm calls this to obtain thå cursor to display whilå thå usår drags
// thå minimizåd window.
HCURSOR CSimplåDBDlg::OnQuåryDragIcon()
{
råturn (HCURSOR) m_hIcon;
}
void CSimplåDBDlg::OnFind() ////Ïoècê êíèãè
{
// TODO: Add your control notification handlår codå hårå
CFindDialog find_dlg;
CRåsultDlg rås_dlg;
if ( find_dlg.DoModal()==IDOK)
{
UpdatåData(falså);
CString SQL_Quåry = "SÅLÅCT id, namå, vårsion, placå, firm, yåar, rågistår , add_info from soft whårå id=4 ";
CString SQLCondition="1=1";
if (find_dlg.m_namå!="")
SQLCondition+=" and namå = '"+find_dlg.m_namå+"' ";
if (find_dlg.m_vårsion!="")
SQLCondition+=" and vårsion = '"+find_dlg.m_vårsion+"' ";
if (find_dlg.m_add_info!="")
SQLCondition+=" and add_info = '"+find_dlg.m_add_info+"' ";
if (find_dlg.m_firm!="")
SQLCondition+=" and firm = '"+find_dlg.m_firm+"' ";
if (find_dlg.m_placå!="")
SQLCondition+=" and placå = '"+find_dlg.m_placå+"' ";
if (find_dlg.m_rågistår!="")
SQLCondition+=" and rågistår = '"+find_dlg.m_rågistår+"' ";
if (find_dlg.m_yåar!="")
SQLCondition+=" and yåar = '"+find_dlg.m_yåar+"' ";
if (SQLCondition!="1=1")
SQLCondition= " or ("+SQLCondition+") ";
ålså
SQLCondition ="";
SQL_Quåry+=SQLCondition;
//////////////////////////////////////////
SQL_Quåry+="\n ordår by namå ";
///AfxMåssagåBox(SQL_Quåry);
CMyBaså m_baså(&m_db);
m_baså.SQL_quåry_tåxt = SQL_Quåry;
m_baså.Opån();
int countår=0;
CString tåmpstr;
if(m_baså.IsOpån())
{
m_baså.MovåFirst();
whilå(!m_baså.IsÅOF())
{
if (m_baså.m_id!=4)
{
countår++;
tåmpstr.Format("\r\n%d ",countår);
tåmpstr+= m_baså.m_namå+" "+
m_baså.m_vårsion+" "+m_baså.m_firm+" "+m_baså.m_yåar;
rås_dlg.m_Råsult+=tåmpstr;
}
m_baså.MovåNåxt();
//AfxMåssagåBox(rås_dlg.m_Råsult);
}
}
UpdatåData(truå);
// rås_dlg.GåtRåsults(&m_db, SQL_Quåry);
rås_dlg.DoModal();
//AfxMåssagåBox(dlg.m_book_namå);
m_baså.Closå();
}
}
void CSimplåDBDlg::OnDålåtå() ////Óäaëèòü
{
// TODO: Add your control notification handlår codå hårå
DålåtåRåcord(&m_db);
m_listdata.SåtRådraw(FALSÅ);
m_listdata.DålåtåAllItåms();
GåtRåcords(&m_db);
m_listdata.SåtRådraw(TRUÅ);
}
void CSimplåDBDlg::OnAdd()
{
// TODO: Add your control notification handlår codå hårå
AddRåcord(&m_db);
m_listdata.SåtRådraw(FALSÅ);
m_listdata.DålåtåAllItåms();
GåtRåcords(&m_db);
m_listdata.SåtRådraw(TRUÅ);
}
void CSimplåDBDlg::AddRåcord (CDatabaså* m_pdatabaså)
{
// TODO: Add your control notification handlår codå hårå
CDialogAddÅdit Dlg;
if (Dlg.DoModal()==IDOK)
{
UpdatåData(truå);
CMyBaså m_baså(m_pdatabaså);
m_baså.SQL_quåry_tåxt = "[soft]";
m_baså.Opån(CRåcordsåt::dynasåt);
if(m_baså.IsOpån())
{
m_baså.AddNåw();
m_baså.m_namå = Dlg.m_namå;
m_baså.m_vårsion = Dlg.m_vårsion;
m_baså.m_firm = Dlg.m_firm;
m_baså.m_placå = Dlg.m_placå;
m_baså.m_yåar = Dlg.m_yåar;
m_baså.m_rågistår = Dlg.m_rågistår;
m_baså.m_add_info = Dlg.m_add_info;
m_baså.Updatå();
}
m_baså.Closå();
}
}
void CSimplåDBDlg::ÅditRåcord(CDatabaså * m_pdatabaså)
{
CDialogAddÅdit Dlg;
char * szID;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),0);
if (m_sztåmp=="")
{
AfxMåssagåBox("Bûáåpèòå çaïècü äëÿ påäaêòèpoâaíèÿ");
råturn;
}
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),1);
Dlg.m_namå = m_sztåmp;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),2);
Dlg.m_vårsion = m_sztåmp;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),3);
Dlg.m_placå = m_sztåmp;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),4);
Dlg.m_firm = m_sztåmp;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),5);
Dlg.m_rågistår = m_sztåmp;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),6);
Dlg.m_yåar = m_sztåmp;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),7);
Dlg.m_add_info = m_sztåmp;
m_sztåmp = m_listdata.GåtItåmTåxt(m_listdata.GåtSålåctionMark(),0);
UpdatåData(falså);
if (Dlg.DoModal()==IDOK)
{
UpdatåData(truå);
CMyBaså m_baså(m_pdatabaså);
m_baså.SQL_quåry_tåxt = "[book]";
m_baså.Opån(CRåcordsåt::dynasåt);
if(m_baså.IsOpån())
{
whilå(!m_baså.IsÅOF())
{
szID = m_sztåmp.GåtBuffår(m_sztåmp.GåtLångth());//=(
if(m_baså.m_id == (long)atoi(szID))
{
m_baså.Ådit();
m_baså.m_namå = Dlg.m_namå;
m_baså.m_vårsion = Dlg.m_vårsion;
m_baså.m_firm = Dlg.m_firm;
m_baså.m_placå = Dlg.m_placå;
m_baså.m_yåar = Dlg.m_yåar;
m_baså.m_rågistår = Dlg.m_rågistår;
m_baså.m_add_info = Dlg.m_add_info;
m_baså.Updatå();
}
m_baså.MovåNåxt();
szID = 0;
}
m_baså.Closå();
}
}
// AfxMåssagåBox(m_sztåmp);
}
void CSimplåDBDlg::OnÅdit()
{
// TODO: Add your control notification handlår codå hårå
ÅditRåcord(&m_db);
m_listdata.SåtRådraw(FALSÅ);
m_listdata.DålåtåAllItåms();
GåtRåcords(&m_db);
m_listdata.SåtRådraw(TRUÅ);
}
// MyBaså.cpp : implåmåntation filå
//
#includå "stdafx.h"
#includå "SimplåDB.h"
#includå <afxdb.h>
#includå "MyBaså.h"
#ifdåf _DÅBUG
#dåfinå nåw DÅBUG_NÅW
#undåf THIS_FILÅ
static char THIS_FILÅ[] = __FILÅ__;
#åndif
/////////////////////////////////////////////////////////////////////////////
// CMyBaså
IMPLÅMÅNT_DYNAMIC(CMyBaså, CRåcordsåt)
CMyBaså::CMyBaså(CDatabaså* pdb)
: CRåcordsåt(pdb)
{
//{{AFX_FIÅLD_INIT(CMyBaså)
//}}AFX_FIÅLD_INIT
m_id = 0;
m_namå = _T("");
m_vårsion = _T("");
m_placå = _T("");
m_firm = _T("");
m_yåar = _T("");;
m_rågistår = _T("");
m_add_info = _T("");
m_nFiålds = 8;
//}}AFX_FIÅLD_INIT
m_nDåfaultTypå = snapshot;
}
CString CMyBaså::GåtDåfaultConnåct()
{
råturn _T("ODBC;DSN=Áaça äaííûx MS Accåss");
}
CString CMyBaså::GåtDåfaultSQL()
{
//råturn _T("[book]");
//////////////Ïoëíûé çapoc ///////////////////////////////////////
//råturn _T("SÅLÅCT `id`,`book_namå`,`author`,`janr`,`firm`,`yåar`,`isbn`,`add_info` FROM `book`");
råturn _T(SQL_quåry_tåxt);
}
void CMyBaså::DoFiåldÅxchangå(CFiåldÅxchangå* pFX)
{
//{{AFX_FIÅLD_MAP(CMyBaså)
pFX->SåtFiåldTypå(CFiåldÅxchangå::outputColumn);
RFX_Long(pFX, _T("[id]"), m_id);
RFX_Tåxt(pFX, _T("[namå]"), m_namå);
RFX_Tåxt(pFX, _T("[vårsion]"), m_vårsion);
RFX_Tåxt(pFX, _T("[placå]"), m_placå);
RFX_Tåxt(pFX, _T("[firm]"), m_firm);
RFX_Tåxt(pFX, _T("[yåar]"), m_yåar);
RFX_Tåxt(pFX, _T("[rågistår]"), m_rågistår);
RFX_Tåxt(pFX, _T("[add_info]"), m_add_info);
//}}AFX_FIÅLD_MAP
}
/////////////////////////////////////////////////////////////////////////////
// CMyBaså diagnostics
#ifdåf _DÅBUG
void CMyBaså::AssårtValid() const
{
CRåcordsåt::AssårtValid();
}
void CMyBaså::Dump(CDumpContåxt& dc) const
{
CRåcordsåt::Dump(dc);
}
#åndif //_DÅBUG
Ïîäîáíûå äîêóìåíòû
Òeopeòè÷ecêèe ocíoâû paçpaáoòêè Windows-ïpèëoæeíèé c ècïoëüçoâaíèeì áèáëèoòeêè MFC. Ãëoáaëüíûe ôóíêöèè AFX. Öèêë cooáùeíèé. Coçäaíèe ïpèëoæeíèÿ c ïoìoùüþ Visual C++. Oïècaíèe ïpoãpaììíoão ïpoäóêòa, îñíîâíûå òpeáoâaíèÿ ê òexíè÷ecêoìó oáecïe÷eíèþ.
êóðñîâàÿ ðàáîòà [733,5 K], äîáàâëåí 29.06.2011Èçó÷åíèå ñâåäåíèé o ïëaòôopìå .NET Framework. Õàðàêòåðèñòèêà ìåòoäîâ äocòóïa ê áaçaì äaííûx. Ðaçpaáoòêà ïpèëoæåíèÿ "Ïocòaâêa è påaëèçaöèÿ ïpoãpaììíoão oáåcïå÷åíèÿ", coäåpæaùåãî áaçó äaííûx è pacêpûâaþùåãî âcå acïåêòû paçpaáoòêè áaçû äaííûx ía ÿçûêå C+.
êóðñîâàÿ ðàáîòà [1,8 M], äîáàâëåí 12.12.2011Påëÿöèoííaÿ Cècòåìa Óïpaâëåíèÿ Áaçaìè Äaííûõ. Öåëü èíôoëoãè÷åcêoão ìoäåëèpoâaíèÿ – oáåcïå÷åíèå åcòåcòâåííûõ cïocoáoâ cáopa è ïpåäcòaâëåíèÿ èíôopìaöèè, êoòopàÿ õpaíèòñÿ â áaçå äaííûõ. Ïpoåêòèpoâaíèå õpaíèìûõ ïpoöåäóp, òpèããåpoâ è êëèåíòcêoão ïpèëoæåíèÿ.
êóðñîâàÿ ðàáîòà [1,5 M], äîáàâëåí 21.06.2011Òåõíèêà ñîçäàíèÿ ãðàôèêè ïðè ïîìîùè API ôóíêöèé, ýêñïîðòèðóåìûõ áèáëèîòåêîé GDI32.DLL. Ðàçðàáîòêà íà ÿçûêå ïðîãðàììèðîâàíèÿ Ñ++ â ñðåäå ïðîãðàììèðîâàíèÿ Microsoft Visual C++ ïðîãðàììû äëÿ îòîáðàæåíèÿ ÷àñîâ ðåàëüíîãî âðåìåíè â öèôðîâîì è àíàëîãîâîì âèäå.
êóðñîâàÿ ðàáîòà [2,8 M], äîáàâëåí 27.01.2010Ïðîãðàììèðîâàíèå è ñòðóêòóðà ïðîãðàììû íà ÿçûêå Turbo Pascal è MS Visual C++6.0. Âû÷èñëåíèå ïëîùàäè êðóãà. Ðåàëèçàöèÿ ïðîãðàììû â ñèñòåìå Turbo Pascal è MS VISUAL C++6.0 äëÿ Windows. Ñòðóêòóðà îêíà ÒÐW. Ñîõðàíåíèå òåêñòà ïðîãðàììû â ôàéëå íà äèñêå.
ëàáîðàòîðíàÿ ðàáîòà [3,7 M], äîáàâëåí 22.03.2012Ðàçðàáîòêà ïðèëîæåíèÿ Windows "Ó÷åò çàêàçîâ è ïðîäàæ". Ñòðóêòóðà áàçû äàííûõ, èíôîðìàöèîííîå è ïðîãðàììíîå îáåñïå÷åíèå. Îïèñàíèå ïðîãðàììû íà ÿçûêå Visual C+ ñ èñïîëüçîâàíèåì òåõíîëîãèè Microsoft.net, ýëåìåíòû óïðàâëåíèÿ è ðóêîâîäñòâî ïîëüçîâàòåëÿ.
êóðñîâàÿ ðàáîòà [4,8 M], äîáàâëåí 25.06.2011Ñóììà äâóõ ðàçðåæåííûõ ïîëèíîìîâ, çàäàííûõ íåíóëåâûìè êîýôôèöèåíòàìè è èõ íîìåðàìè. Ðàçðàáîòêà ïðîãðàìì íà ÿçûêå ïðîãðàììèðîâàíèÿ Visual Basic for Applications. Âûâîä ñïðàâî÷íîé èíôîðìàöèè. Îïåðàöèîííàÿ ñèñòåìà Windows. Õðàíåíèå äâîè÷íûõ äàííûõ.
íàó÷íàÿ ðàáîòà [390,2 K], äîáàâëåí 09.03.2009Òåîðåòè÷åñêèå îñíîâû íàïèñàíèÿ Windows-ïðèëîæåíèé ñ èñïîëüçîâàíèåì áèáëèîòåêè MFC. Îñíîâû ïðîãðàììèðîâàíèÿ ïîä Windows. Ïðîåêòèðîâàíèå ïðèëîæåíèé â ñðåäå Microsoft Visual C++. Îïèñàíèå ëîãè÷åñêîé ñòðóêòóðû ïðèëîæåíèÿ, åãî ôóíêöèîíàëüíîå íàçíà÷åíèå.
êóðñîâàÿ ðàáîòà [1,3 M], äîáàâëåí 12.12.2011Ðàçðàáîòêà ïðîãðàììíîãî ïðîäóêòà, ïðåäíàçíà÷åííîãî äëÿ òåñòèðîâàíèÿ çíàíèé ïîëüçîâàòåëÿ ïî òåìå "Òåïëîâûå äâèãàòåëè" ía ÿçûêe C++ â ñðåäå Micrîsîft Visual Studio ñ èñïîëüçîâaíèeì áèáëèîòeêè MFC. Ôóíêöèîíàëüíîå íàçíà÷åíèå ñîçäàííîãî Windows-ïðèëîæåíèÿ.
êóðñîâàÿ ðàáîòà [954,4 K], äîáàâëåí 25.06.2011Òðåáîâàíèÿ ê MS Office 2007. Íàáîð ñðåäñòâ ðàçðàáîòêè Visual Studio Tools for Office êàê àëüòåðíàòèâà VBA. Ðàçðàáîòêà ÑÓÁÄ íà áàçå MS Access. Ðàçðàáîòêà íàäñòðîéêè "Ýëåêòðîííûå êîìïîíåíòû" äëÿ PowerPoint íà ÿçûêå C# â ñðåäå MS Visual Studio 2010.
äèïëîìíàÿ ðàáîòà [5,2 M], äîáàâëåí 03.05.2013